🌐 AI搜索 & 代理 主页
Release v1.55.2 (2024-07-24) (#5317)

Release v1.55.2 (2024-07-24)
===

### Service Client Updates
* `service/cleanrooms`: Updates service API and documentation
* `service/dynamodb`: Updates service API, documentation, waiters, paginators, and examples
  * DynamoDB doc only update for July
* `service/iotsitewise`: Updates service API and documentation
* `service/mediapackagev2`: Updates service API
* `service/medical-imaging`: Updates service API and documentation
* `service/pinpoint-sms-voice-v2`: Updates service API and documentation

### SDK Bugs
* Add missing bool error matching.
  * This enables waiters defined to match on presence/absence of errors.
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 568094b..96fbce6 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,19 @@
+Release v1.55.2 (2024-07-24)
+===
+
+### Service Client Updates
+* `service/cleanrooms`: Updates service API and documentation
+* `service/dynamodb`: Updates service API, documentation, waiters, paginators, and examples
+  * DynamoDB doc only update for July
+* `service/iotsitewise`: Updates service API and documentation
+* `service/mediapackagev2`: Updates service API
+* `service/medical-imaging`: Updates service API and documentation
+* `service/pinpoint-sms-voice-v2`: Updates service API and documentation
+
+### SDK Bugs
+* Add missing bool error matching.
+  * This enables waiters defined to match on presence/absence of errors.
+
 Release v1.55.1 (2024-07-23)
 ===
 
diff --git a/CHANGELOG_PENDING.md b/CHANGELOG_PENDING.md
index d10c153..8a1927a 100644
--- a/CHANGELOG_PENDING.md
+++ b/CHANGELOG_PENDING.md
@@ -3,5 +3,3 @@
 ### SDK Enhancements
 
 ### SDK Bugs
-* Add missing bool error matching.
-  * This enables waiters defined to match on presence/absence of errors.
diff --git a/aws/endpoints/defaults.go b/aws/endpoints/defaults.go
index d517a35..069debf 100644
--- a/aws/endpoints/defaults.go
+++ b/aws/endpoints/defaults.go
@@ -46412,6 +46412,9 @@
 				endpointKey{
 					Region: "us-iso-east-1",
 				}: endpoint{},
+				endpointKey{
+					Region: "us-iso-west-1",
+				}: endpoint{},
 			},
 		},
 		"appconfig": service{
@@ -47725,6 +47728,13 @@
 				}: endpoint{},
 			},
 		},
+		"apigateway": service{
+			Endpoints: serviceEndpoints{
+				endpointKey{
+					Region: "us-isob-east-1",
+				}: endpoint{},
+			},
+		},
 		"appconfig": service{
 			Endpoints: serviceEndpoints{
 				endpointKey{
diff --git a/aws/version.go b/aws/version.go
index ae3853d..e09a67a 100644
--- a/aws/version.go
+++ b/aws/version.go
@@ -5,4 +5,4 @@
 const SDKName = "aws-sdk-go"
 
 // SDKVersion is the version of this SDK
-const SDKVersion = "1.55.1"
+const SDKVersion = "1.55.2"
diff --git a/models/apis/cleanrooms/2022-02-17/api-2.json b/models/apis/cleanrooms/2022-02-17/api-2.json
index e948d80..21967c8 100644
--- a/models/apis/cleanrooms/2022-02-17/api-2.json
+++ b/models/apis/cleanrooms/2022-02-17/api-2.json
@@ -324,6 +324,41 @@
         "shape": "CreateConfiguredTableAssociationOutput"
       }
     },
+    "CreateConfiguredTableAssociationAnalysisRule": {
+      "errors": [
+        {
+          "shape": "ConflictException"
+        },
+        {
+          "shape": "ResourceNotFoundException"
+        },
+        {
+          "shape": "InternalServerException"
+        },
+        {
+          "shape": "ValidationException"
+        },
+        {
+          "shape": "ThrottlingException"
+        },
+        {
+          "shape": "AccessDeniedException"
+        }
+      ],
+      "http": {
+        "method": "POST",
+        "requestUri": "/memberships/{membershipIdentifier}/configuredTableAssociations/{configuredTableAssociationIdentifier}/analysisRule",
+        "responseCode": 200
+      },
+      "idempotent": true,
+      "input": {
+        "shape": "CreateConfiguredTableAssociationAnalysisRuleInput"
+      },
+      "name": "CreateConfiguredTableAssociationAnalysisRule",
+      "output": {
+        "shape": "CreateConfiguredTableAssociationAnalysisRuleOutput"
+      }
+    },
     "CreateIdMappingTable": {
       "errors": [
         {
@@ -630,6 +665,41 @@
         "shape": "DeleteConfiguredTableAssociationOutput"
       }
     },
+    "DeleteConfiguredTableAssociationAnalysisRule": {
+      "errors": [
+        {
+          "shape": "ConflictException"
+        },
+        {
+          "shape": "ResourceNotFoundException"
+        },
+        {
+          "shape": "InternalServerException"
+        },
+        {
+          "shape": "ValidationException"
+        },
+        {
+          "shape": "ThrottlingException"
+        },
+        {
+          "shape": "AccessDeniedException"
+        }
+      ],
+      "http": {
+        "method": "DELETE",
+        "requestUri": "/memberships/{membershipIdentifier}/configuredTableAssociations/{configuredTableAssociationIdentifier}/analysisRule/{analysisRuleType}",
+        "responseCode": 204
+      },
+      "idempotent": true,
+      "input": {
+        "shape": "DeleteConfiguredTableAssociationAnalysisRuleInput"
+      },
+      "name": "DeleteConfiguredTableAssociationAnalysisRule",
+      "output": {
+        "shape": "DeleteConfiguredTableAssociationAnalysisRuleOutput"
+      }
+    },
     "DeleteIdMappingTable": {
       "errors": [
         {
@@ -1072,6 +1142,37 @@
         "shape": "GetConfiguredTableAssociationOutput"
       }
     },
+    "GetConfiguredTableAssociationAnalysisRule": {
+      "errors": [
+        {
+          "shape": "ResourceNotFoundException"
+        },
+        {
+          "shape": "InternalServerException"
+        },
+        {
+          "shape": "ValidationException"
+        },
+        {
+          "shape": "ThrottlingException"
+        },
+        {
+          "shape": "AccessDeniedException"
+        }
+      ],
+      "http": {
+        "method": "GET",
+        "requestUri": "/memberships/{membershipIdentifier}/configuredTableAssociations/{configuredTableAssociationIdentifier}/analysisRule/{analysisRuleType}",
+        "responseCode": 200
+      },
+      "input": {
+        "shape": "GetConfiguredTableAssociationAnalysisRuleInput"
+      },
+      "name": "GetConfiguredTableAssociationAnalysisRule",
+      "output": {
+        "shape": "GetConfiguredTableAssociationAnalysisRuleOutput"
+      }
+    },
     "GetIdMappingTable": {
       "errors": [
         {
@@ -2164,6 +2265,40 @@
         "shape": "UpdateConfiguredTableAssociationOutput"
       }
     },
+    "UpdateConfiguredTableAssociationAnalysisRule": {
+      "errors": [
+        {
+          "shape": "ConflictException"
+        },
+        {
+          "shape": "ResourceNotFoundException"
+        },
+        {
+          "shape": "InternalServerException"
+        },
+        {
+          "shape": "ValidationException"
+        },
+        {
+          "shape": "ThrottlingException"
+        },
+        {
+          "shape": "AccessDeniedException"
+        }
+      ],
+      "http": {
+        "method": "PATCH",
+        "requestUri": "/memberships/{membershipIdentifier}/configuredTableAssociations/{configuredTableAssociationIdentifier}/analysisRule/{analysisRuleType}",
+        "responseCode": 200
+      },
+      "input": {
+        "shape": "UpdateConfiguredTableAssociationAnalysisRuleInput"
+      },
+      "name": "UpdateConfiguredTableAssociationAnalysisRule",
+      "output": {
+        "shape": "UpdateConfiguredTableAssociationAnalysisRuleOutput"
+      }
+    },
     "UpdateIdMappingTable": {
       "errors": [
         {
@@ -2328,6 +2463,20 @@
       "pattern": "\\d+",
       "type": "string"
     },
+    "AdditionalAnalyses": {
+      "enum": [
+        "ALLOWED",
+        "REQUIRED",
+        "NOT_ALLOWED"
+      ],
+      "type": "string"
+    },
+    "AdditionalAnalysesResourceArn": {
+      "max": 256,
+      "min": 0,
+      "pattern": "arn:aws:cleanrooms:[\\w]{2}-[\\w]{4,9}-[\\d]:([\\d]{12}|\\*):membership/[\\*\\d\\w-]+/configuredaudiencemodelassociation/[\\*\\d\\w-]+",
+      "type": "string"
+    },
     "AggregateColumn": {
       "members": {
         "columnNames": {
@@ -2398,6 +2547,14 @@
       ],
       "type": "string"
     },
+    "AllowedAdditionalAnalyses": {
+      "max": 25,
+      "member": {
+        "shape": "AdditionalAnalysesResourceArn"
+      },
+      "min": 0,
+      "type": "list"
+    },
     "AllowedColumnList": {
       "max": 225,
       "member": {
@@ -2406,6 +2563,12 @@
       "min": 1,
       "type": "list"
     },
+    "AllowedResultReceivers": {
+      "member": {
+        "shape": "AccountId"
+      },
+      "type": "list"
+    },
     "AnalysisFormat": {
       "enum": [
         "SQL"
@@ -2478,6 +2641,9 @@
     },
     "AnalysisRuleAggregation": {
       "members": {
+        "additionalAnalyses": {
+          "shape": "AdditionalAnalyses"
+        },
         "aggregateColumns": {
           "shape": "AnalysisRuleAggregationAggregateColumnsList"
         },
@@ -2530,6 +2696,9 @@
     },
     "AnalysisRuleCustom": {
       "members": {
+        "additionalAnalyses": {
+          "shape": "AdditionalAnalyses"
+        },
         "allowedAnalyses": {
           "shape": "AnalysisRuleCustomAllowedAnalysesList"
         },
@@ -2538,6 +2707,9 @@
         },
         "differentialPrivacy": {
           "shape": "DifferentialPrivacyConfiguration"
+        },
+        "disallowedOutputColumns": {
+          "shape": "AnalysisRuleColumnList"
         }
       },
       "required": [
@@ -2587,6 +2759,9 @@
     },
     "AnalysisRuleList": {
       "members": {
+        "additionalAnalyses": {
+          "shape": "AdditionalAnalyses"
+        },
         "allowedJoinOperators": {
           "shape": "JoinOperatorsList"
         },
@@ -2872,6 +3047,13 @@
       ],
       "type": "string"
     },
+    "AnalysisType": {
+      "enum": [
+        "DIRECT_ANALYSIS",
+        "ADDITIONAL_ANALYSIS"
+      ],
+      "type": "string"
+    },
     "BatchGetCollaborationAnalysisTemplateError": {
       "members": {
         "arn": {
@@ -3644,6 +3826,15 @@
       "pattern": "[\\u0020-\\uD7FF\\uE000-\\uFFFD\\uD800\\uDBFF-\\uDC00\\uDFFF\\t]*",
       "type": "string"
     },
+    "ConfigurationDetails": {
+      "members": {
+        "directAnalysisConfigurationDetails": {
+          "shape": "DirectAnalysisConfigurationDetails"
+        }
+      },
+      "type": "structure",
+      "union": true
+    },
     "ConfiguredAudienceModelArn": {
       "max": 2048,
       "min": 20,
@@ -3901,6 +4092,9 @@
     },
     "ConfiguredTableAssociation": {
       "members": {
+        "analysisRuleTypes": {
+          "shape": "ConfiguredTableAssociationAnalysisRuleTypeList"
+        },
         "arn": {
           "shape": "ConfiguredTableAssociationArn"
         },
@@ -3949,6 +4143,112 @@
       ],
       "type": "structure"
     },
+    "ConfiguredTableAssociationAnalysisRule": {
+      "members": {
+        "configuredTableAssociationArn": {
+          "shape": "ConfiguredTableAssociationArn"
+        },
+        "configuredTableAssociationId": {
+          "shape": "ConfiguredTableAssociationIdentifier"
+        },
+        "createTime": {
+          "shape": "Timestamp"
+        },
+        "membershipIdentifier": {
+          "shape": "MembershipIdentifier"
+        },
+        "policy": {
+          "shape": "ConfiguredTableAssociationAnalysisRulePolicy"
+        },
+        "type": {
+          "shape": "ConfiguredTableAssociationAnalysisRuleType"
+        },
+        "updateTime": {
+          "shape": "Timestamp"
+        }
+      },
+      "required": [
+        "membershipIdentifier",
+        "configuredTableAssociationId",
+        "configuredTableAssociationArn",
+        "policy",
+        "type",
+        "createTime",
+        "updateTime"
+      ],
+      "type": "structure"
+    },
+    "ConfiguredTableAssociationAnalysisRuleAggregation": {
+      "members": {
+        "allowedAdditionalAnalyses": {
+          "shape": "AllowedAdditionalAnalyses"
+        },
+        "allowedResultReceivers": {
+          "shape": "AllowedResultReceivers"
+        }
+      },
+      "type": "structure"
+    },
+    "ConfiguredTableAssociationAnalysisRuleCustom": {
+      "members": {
+        "allowedAdditionalAnalyses": {
+          "shape": "AllowedAdditionalAnalyses"
+        },
+        "allowedResultReceivers": {
+          "shape": "AllowedResultReceivers"
+        }
+      },
+      "type": "structure"
+    },
+    "ConfiguredTableAssociationAnalysisRuleList": {
+      "members": {
+        "allowedAdditionalAnalyses": {
+          "shape": "AllowedAdditionalAnalyses"
+        },
+        "allowedResultReceivers": {
+          "shape": "AllowedResultReceivers"
+        }
+      },
+      "type": "structure"
+    },
+    "ConfiguredTableAssociationAnalysisRulePolicy": {
+      "members": {
+        "v1": {
+          "shape": "ConfiguredTableAssociationAnalysisRulePolicyV1"
+        }
+      },
+      "type": "structure",
+      "union": true
+    },
+    "ConfiguredTableAssociationAnalysisRulePolicyV1": {
+      "members": {
+        "aggregation": {
+          "shape": "ConfiguredTableAssociationAnalysisRuleAggregation"
+        },
+        "custom": {
+          "shape": "ConfiguredTableAssociationAnalysisRuleCustom"
+        },
+        "list": {
+          "shape": "ConfiguredTableAssociationAnalysisRuleList"
+        }
+      },
+      "type": "structure",
+      "union": true
+    },
+    "ConfiguredTableAssociationAnalysisRuleType": {
+      "enum": [
+        "AGGREGATION",
+        "LIST",
+        "CUSTOM"
+      ],
+      "type": "string"
+    },
+    "ConfiguredTableAssociationAnalysisRuleTypeList": {
+      "member": {
+        "shape": "ConfiguredTableAssociationAnalysisRuleType"
+      },
+      "type": "list"
+    },
     "ConfiguredTableAssociationArn": {
       "max": 100,
       "min": 0,
@@ -4253,6 +4553,44 @@
       ],
       "type": "structure"
     },
+    "CreateConfiguredTableAssociationAnalysisRuleInput": {
+      "members": {
+        "analysisRulePolicy": {
+          "shape": "ConfiguredTableAssociationAnalysisRulePolicy"
+        },
+        "analysisRuleType": {
+          "shape": "ConfiguredTableAssociationAnalysisRuleType"
+        },
+        "configuredTableAssociationIdentifier": {
+          "location": "uri",
+          "locationName": "configuredTableAssociationIdentifier",
+          "shape": "ConfiguredTableAssociationIdentifier"
+        },
+        "membershipIdentifier": {
+          "location": "uri",
+          "locationName": "membershipIdentifier",
+          "shape": "MembershipIdentifier"
+        }
+      },
+      "required": [
+        "membershipIdentifier",
+        "configuredTableAssociationIdentifier",
+        "analysisRuleType",
+        "analysisRulePolicy"
+      ],
+      "type": "structure"
+    },
+    "CreateConfiguredTableAssociationAnalysisRuleOutput": {
+      "members": {
+        "analysisRule": {
+          "shape": "ConfiguredTableAssociationAnalysisRule"
+        }
+      },
+      "required": [
+        "analysisRule"
+      ],
+      "type": "structure"
+    },
     "CreateConfiguredTableAssociationInput": {
       "members": {
         "configuredTableIdentifier": {
@@ -4589,6 +4927,35 @@
       "members": {},
       "type": "structure"
     },
+    "DeleteConfiguredTableAssociationAnalysisRuleInput": {
+      "members": {
+        "analysisRuleType": {
+          "location": "uri",
+          "locationName": "analysisRuleType",
+          "shape": "ConfiguredTableAssociationAnalysisRuleType"
+        },
+        "configuredTableAssociationIdentifier": {
+          "location": "uri",
+          "locationName": "configuredTableAssociationIdentifier",
+          "shape": "ConfiguredTableAssociationIdentifier"
+        },
+        "membershipIdentifier": {
+          "location": "uri",
+          "locationName": "membershipIdentifier",
+          "shape": "MembershipIdentifier"
+        }
+      },
+      "required": [
+        "membershipIdentifier",
+        "configuredTableAssociationIdentifier",
+        "analysisRuleType"
+      ],
+      "type": "structure"
+    },
+    "DeleteConfiguredTableAssociationAnalysisRuleOutput": {
+      "members": {},
+      "type": "structure"
+    },
     "DeleteConfiguredTableAssociationInput": {
       "members": {
         "configuredTableAssociationIdentifier": {
@@ -4972,6 +5339,14 @@
       },
       "type": "structure"
     },
+    "DirectAnalysisConfigurationDetails": {
+      "members": {
+        "receiverAccountIds": {
+          "shape": "ReceiverAccountIds"
+        }
+      },
+      "type": "structure"
+    },
     "DisplayName": {
       "max": 100,
       "min": 1,
@@ -5228,6 +5603,42 @@
       ],
       "type": "structure"
     },
+    "GetConfiguredTableAssociationAnalysisRuleInput": {
+      "members": {
+        "analysisRuleType": {
+          "location": "uri",
+          "locationName": "analysisRuleType",
+          "shape": "ConfiguredTableAssociationAnalysisRuleType"
+        },
+        "configuredTableAssociationIdentifier": {
+          "location": "uri",
+          "locationName": "configuredTableAssociationIdentifier",
+          "shape": "ConfiguredTableAssociationIdentifier"
+        },
+        "membershipIdentifier": {
+          "location": "uri",
+          "locationName": "membershipIdentifier",
+          "shape": "MembershipIdentifier"
+        }
+      },
+      "required": [
+        "membershipIdentifier",
+        "configuredTableAssociationIdentifier",
+        "analysisRuleType"
+      ],
+      "type": "structure"
+    },
+    "GetConfiguredTableAssociationAnalysisRuleOutput": {
+      "members": {
+        "analysisRule": {
+          "shape": "ConfiguredTableAssociationAnalysisRule"
+        }
+      },
+      "required": [
+        "analysisRule"
+      ],
+      "type": "structure"
+    },
     "GetConfiguredTableAssociationInput": {
       "members": {
         "configuredTableAssociationIdentifier": {
@@ -7279,6 +7690,17 @@
       "pattern": "[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}",
       "type": "string"
     },
+    "ProtectedQueryMemberOutputConfiguration": {
+      "members": {
+        "accountId": {
+          "shape": "AccountId"
+        }
+      },
+      "required": [
+        "accountId"
+      ],
+      "type": "structure"
+    },
     "ProtectedQueryMemberOutputList": {
       "member": {
         "shape": "ProtectedQuerySingleMemberOutput"
@@ -7299,6 +7721,9 @@
     },
     "ProtectedQueryOutputConfiguration": {
       "members": {
+        "member": {
+          "shape": "ProtectedQueryMemberOutputConfiguration"
+        },
         "s3": {
           "shape": "ProtectedQueryS3OutputConfiguration"
         }
@@ -7428,6 +7853,9 @@
         "membershipId": {
           "shape": "UUID"
         },
+        "receiverConfigurations": {
+          "shape": "ReceiverConfigurationsList"
+        },
         "status": {
           "shape": "ProtectedQueryStatus"
         }
@@ -7437,7 +7865,8 @@
         "membershipId",
         "membershipArn",
         "createTime",
-        "status"
+        "status",
+        "receiverConfigurations"
       ],
       "type": "structure"
     },
@@ -7495,6 +7924,32 @@
       },
       "type": "list"
     },
+    "ReceiverAccountIds": {
+      "member": {
+        "shape": "AccountId"
+      },
+      "type": "list"
+    },
+    "ReceiverConfiguration": {
+      "members": {
+        "analysisType": {
+          "shape": "AnalysisType"
+        },
+        "configurationDetails": {
+          "shape": "ConfigurationDetails"
+        }
+      },
+      "required": [
+        "analysisType"
+      ],
+      "type": "structure"
+    },
+    "ReceiverConfigurationsList": {
+      "member": {
+        "shape": "ReceiverConfiguration"
+      },
+      "type": "list"
+    },
     "ResourceAlias": {
       "max": 128,
       "min": 0,
@@ -7682,11 +8137,7 @@
     },
     "SchemaConfiguration": {
       "enum": [
-        "DIFFERENTIAL_PRIVACY",
-        "CUSTOM_ANALYSIS_NOT_ALLOWED",
-        "NO_MEMBER_ACCOUNT_ALLOWED_TO_PROVIDE_ANALYSIS",
-        "DIFFERENTIAL_PRIVACY_BUDGET_NOT_CONFIGURED",
-        "ID_MAPPING_TABLE_NOT_POPULATED"
+        "DIFFERENTIAL_PRIVACY"
       ],
       "type": "string"
     },
@@ -7716,6 +8167,9 @@
         "analysisRuleType": {
           "shape": "AnalysisRuleType"
         },
+        "analysisType": {
+          "shape": "AnalysisType"
+        },
         "configurations": {
           "shape": "SchemaConfigurationList"
         },
@@ -7727,7 +8181,8 @@
         }
       },
       "required": [
-        "status"
+        "status",
+        "analysisType"
       ],
       "type": "structure"
     },
@@ -7758,7 +8213,13 @@
         "ANALYSIS_TEMPLATES_NOT_CONFIGURED",
         "ANALYSIS_PROVIDERS_NOT_CONFIGURED",
         "DIFFERENTIAL_PRIVACY_POLICY_NOT_CONFIGURED",
-        "ID_MAPPING_TABLE_NOT_POPULATED"
+        "ID_MAPPING_TABLE_NOT_POPULATED",
+        "COLLABORATION_ANALYSIS_RULE_NOT_CONFIGURED",
+        "ADDITIONAL_ANALYSES_NOT_CONFIGURED",
+        "RESULT_RECEIVERS_NOT_CONFIGURED",
+        "ADDITIONAL_ANALYSES_NOT_ALLOWED",
+        "RESULT_RECEIVERS_NOT_ALLOWED",
+        "ANALYSIS_RULE_TYPES_NOT_COMPATIBLE"
       ],
       "type": "string"
     },
@@ -8155,6 +8616,46 @@
       ],
       "type": "structure"
     },
+    "UpdateConfiguredTableAssociationAnalysisRuleInput": {
+      "members": {
+        "analysisRulePolicy": {
+          "shape": "ConfiguredTableAssociationAnalysisRulePolicy"
+        },
+        "analysisRuleType": {
+          "location": "uri",
+          "locationName": "analysisRuleType",
+          "shape": "ConfiguredTableAssociationAnalysisRuleType"
+        },
+        "configuredTableAssociationIdentifier": {
+          "location": "uri",
+          "locationName": "configuredTableAssociationIdentifier",
+          "shape": "ConfiguredTableAssociationIdentifier"
+        },
+        "membershipIdentifier": {
+          "location": "uri",
+          "locationName": "membershipIdentifier",
+          "shape": "MembershipIdentifier"
+        }
+      },
+      "required": [
+        "membershipIdentifier",
+        "configuredTableAssociationIdentifier",
+        "analysisRuleType",
+        "analysisRulePolicy"
+      ],
+      "type": "structure"
+    },
+    "UpdateConfiguredTableAssociationAnalysisRuleOutput": {
+      "members": {
+        "analysisRule": {
+          "shape": "ConfiguredTableAssociationAnalysisRule"
+        }
+      },
+      "required": [
+        "analysisRule"
+      ],
+      "type": "structure"
+    },
     "UpdateConfiguredTableAssociationInput": {
       "members": {
         "configuredTableAssociationIdentifier": {
diff --git a/models/apis/cleanrooms/2022-02-17/docs-2.json b/models/apis/cleanrooms/2022-02-17/docs-2.json
index b458191..b3cc202 100644
--- a/models/apis/cleanrooms/2022-02-17/docs-2.json
+++ b/models/apis/cleanrooms/2022-02-17/docs-2.json
@@ -11,6 +11,7 @@
     "CreateConfiguredTable": "<p>Creates a new configured table resource.</p>",
     "CreateConfiguredTableAnalysisRule": "<p>Creates a new analysis rule for a configured table. Currently, only one analysis rule can be created for a given configured table.</p>",
     "CreateConfiguredTableAssociation": "<p>Creates a configured table association. A configured table association links a configured table with a collaboration.</p>",
+    "CreateConfiguredTableAssociationAnalysisRule": "<p> Creates a new analysis rule for an associated configured table.</p>",
     "CreateIdMappingTable": "<p>Creates an ID mapping table.</p>",
     "CreateIdNamespaceAssociation": "<p>Creates an ID namespace association.</p>",
     "CreateMembership": "<p>Creates a membership for a specific collaboration identifier and joins the collaboration.</p>",
@@ -21,6 +22,7 @@
     "DeleteConfiguredTable": "<p>Deletes a configured table.</p>",
     "DeleteConfiguredTableAnalysisRule": "<p>Deletes a configured table analysis rule.</p>",
     "DeleteConfiguredTableAssociation": "<p>Deletes a configured table association.</p>",
+    "DeleteConfiguredTableAssociationAnalysisRule": "<p>Deletes an analysis rule for a configured table association.</p>",
     "DeleteIdMappingTable": "<p>Deletes an ID mapping table.</p>",
     "DeleteIdNamespaceAssociation": "<p>Deletes an ID namespace association.</p>",
     "DeleteMember": "<p>Removes the specified member from a collaboration. The removed member is placed in the Removed status and can't interact with the collaboration. The removed member's data is inaccessible to active members of the collaboration.</p>",
@@ -36,6 +38,7 @@
     "GetConfiguredTable": "<p>Retrieves a configured table.</p>",
     "GetConfiguredTableAnalysisRule": "<p>Retrieves a configured table analysis rule.</p>",
     "GetConfiguredTableAssociation": "<p>Retrieves a configured table association.</p>",
+    "GetConfiguredTableAssociationAnalysisRule": "<p> Retrieves the analysis rule for a configured table association.</p>",
     "GetIdMappingTable": "<p>Retrieves an ID mapping table.</p>",
     "GetIdNamespaceAssociation": "<p>Retrieves an ID namespace association.</p>",
     "GetMembership": "<p>Retrieves a specified membership for an identifier.</p>",
@@ -73,6 +76,7 @@
     "UpdateConfiguredTable": "<p>Updates a configured table.</p>",
     "UpdateConfiguredTableAnalysisRule": "<p>Updates a configured table analysis rule.</p>",
     "UpdateConfiguredTableAssociation": "<p>Updates a configured table association.</p>",
+    "UpdateConfiguredTableAssociationAnalysisRule": "<p> Updates the analysis rule for a configured table association.</p>",
     "UpdateIdMappingTable": "<p>Provides the details that are necessary to update an ID mapping table.</p>",
     "UpdateIdNamespaceAssociation": "<p>Provides the details that are necessary to update an ID namespace association.</p>",
     "UpdateMembership": "<p>Updates a membership.</p>",
@@ -94,12 +98,13 @@
     "AccountId": {
       "base": null,
       "refs": {
+        "AllowedResultReceivers$member": null,
         "AnalysisRuleCustomAllowedAnalysisProvidersList$member": null,
         "Collaboration$creatorAccountId": "<p>The identifier used to reference members of the collaboration. Currently only supports Amazon Web Services account ID.</p>",
         "CollaborationAnalysisTemplate$creatorAccountId": "<p>The identifier used to reference members of the collaboration. Currently only supports Amazon Web Services account ID.</p>",
         "CollaborationAnalysisTemplateSummary$creatorAccountId": "<p>The identifier used to reference members of the collaboration. Currently only supports Amazon Web Services account ID.</p>",
-        "CollaborationConfiguredAudienceModelAssociation$creatorAccountId": "<p>The identifier used to reference members of the collaboration. Only supports Amazon Web Services account ID.</p>",
-        "CollaborationConfiguredAudienceModelAssociationSummary$creatorAccountId": "<p>The identifier used to reference members of the collaboration. Only supports Amazon Web Services account ID.</p>",
+        "CollaborationConfiguredAudienceModelAssociation$creatorAccountId": "<p>The identifier used to reference members of the collaboration. Only supports AWS account ID.</p>",
+        "CollaborationConfiguredAudienceModelAssociationSummary$creatorAccountId": "<p>The identifier used to reference members of the collaboration. Only supports AWS account ID.</p>",
         "CollaborationIdNamespaceAssociation$creatorAccountId": "<p>The unique identifier of the Amazon Web Services account that created the collaboration ID namespace association.</p>",
         "CollaborationIdNamespaceAssociationSummary$creatorAccountId": "<p>The Amazon Web Services account that created this collaboration ID namespace association.</p>",
         "CollaborationPrivacyBudgetSummary$creatorAccountId": "<p>The unique identifier of the account that created this privacy budget.</p>",
@@ -111,11 +116,27 @@
         "MemberSummary$accountId": "<p>The identifier used to reference members of the collaboration. Currently only supports Amazon Web Services account ID.</p>",
         "Membership$collaborationCreatorAccountId": "<p>The identifier used to reference members of the collaboration. Currently only supports Amazon Web Services account ID.</p>",
         "MembershipSummary$collaborationCreatorAccountId": "<p>The identifier of the Amazon Web Services principal that created the collaboration. Currently only supports Amazon Web Services account ID.</p>",
+        "ProtectedQueryMemberOutputConfiguration$accountId": "<p>The unique identifier for the account.</p>",
         "ProtectedQuerySingleMemberOutput$accountId": "<p>The Amazon Web Services account ID of the member in the collaboration who can receive results for the query.</p>",
+        "ReceiverAccountIds$member": null,
         "Schema$creatorAccountId": "<p>The unique account ID for the Amazon Web Services account that owns the schema.</p>",
         "SchemaSummary$creatorAccountId": "<p>The unique account ID for the Amazon Web Services account that owns the schema.</p>"
       }
     },
+    "AdditionalAnalyses": {
+      "base": null,
+      "refs": {
+        "AnalysisRuleAggregation$additionalAnalyses": "<p> An indicator as to whether additional analyses (such as Clean Rooms ML) can be applied to the output of the direct query. </p> <p>The <code>additionalAnalyses</code> parameter is currently supported for the list analysis rule (<code>AnalysisRuleList</code>) and the custom analysis rule (<code>AnalysisRuleCustom</code>).</p>",
+        "AnalysisRuleCustom$additionalAnalyses": "<p> An indicator as to whether additional analyses (such as Clean Rooms ML) can be applied to the output of the direct query.</p>",
+        "AnalysisRuleList$additionalAnalyses": "<p> An indicator as to whether additional analyses (such as Clean Rooms ML) can be applied to the output of the direct query.</p>"
+      }
+    },
+    "AdditionalAnalysesResourceArn": {
+      "base": null,
+      "refs": {
+        "AllowedAdditionalAnalyses$member": null
+      }
+    },
     "AggregateColumn": {
       "base": "<p>Column in configured table that can be used in aggregate function in query.</p>",
       "refs": {
@@ -158,6 +179,14 @@
         "AggregationConstraint$type": "<p>The type of aggregation the constraint allows. The only valid value is currently `COUNT_DISTINCT`.</p>"
       }
     },
+    "AllowedAdditionalAnalyses": {
+      "base": null,
+      "refs": {
+        "ConfiguredTableAssociationAnalysisRuleAggregation$allowedAdditionalAnalyses": "<p> The list of resources or wildcards (ARNs) that are allowed to perform additional analysis on query output.</p> <p>The <code>allowedAdditionalAnalyses</code> parameter is currently supported for the list analysis rule (<code>AnalysisRuleList</code>) and the custom analysis rule (<code>AnalysisRuleCustom</code>).</p>",
+        "ConfiguredTableAssociationAnalysisRuleCustom$allowedAdditionalAnalyses": "<p> The list of resources or wildcards (ARNs) that are allowed to perform additional analysis on query output.</p>",
+        "ConfiguredTableAssociationAnalysisRuleList$allowedAdditionalAnalyses": "<p> The list of resources or wildcards (ARNs) that are allowed to perform additional analysis on query output.</p>"
+      }
+    },
     "AllowedColumnList": {
       "base": null,
       "refs": {
@@ -165,6 +194,14 @@
         "CreateConfiguredTableInput$allowedColumns": "<p>The columns of the underlying table that can be used by collaborations or analysis rules.</p>"
       }
     },
+    "AllowedResultReceivers": {
+      "base": null,
+      "refs": {
+        "ConfiguredTableAssociationAnalysisRuleAggregation$allowedResultReceivers": "<p> The list of collaboration members who are allowed to receive results of queries run with this configured table.</p>",
+        "ConfiguredTableAssociationAnalysisRuleCustom$allowedResultReceivers": "<p> The list of collaboration members who are allowed to receive results of queries run with this configured table.</p>",
+        "ConfiguredTableAssociationAnalysisRuleList$allowedResultReceivers": "<p> The list of collaboration members who are allowed to receive results of queries run with this configured table.</p>"
+      }
+    },
     "AnalysisFormat": {
       "base": null,
       "refs": {
@@ -179,7 +216,7 @@
         "ConfiguredTable$analysisMethod": "<p>The analysis method for the configured table. The only valid value is currently `DIRECT_QUERY`.</p>",
         "ConfiguredTableSummary$analysisMethod": "<p>The analysis method for the configured tables. The only valid value is currently `DIRECT_QUERY`.</p>",
         "CreateConfiguredTableInput$analysisMethod": "<p>The analysis method for the configured tables. The only valid value is currently `DIRECT_QUERY`.</p>",
-        "Schema$analysisMethod": "<p>The analysis method for the schema. The only valid value is currently <code>DIRECT_QUERY</code>.</p>",
+        "Schema$analysisMethod": "<p>The analysis method for the schema. The only valid value is currently DIRECT_QUERY.</p>",
         "SchemaSummary$analysisMethod": "<p>The analysis method for the associated schema. The only valid value is currently `DIRECT_QUERY`.</p>"
       }
     },
@@ -222,6 +259,7 @@
       "refs": {
         "AnalysisRuleAggregation$joinColumns": "<p>Columns in configured table that can be used in join statements and/or as aggregate columns. They can never be outputted directly.</p>",
         "AnalysisRuleAggregation$dimensionColumns": "<p>The columns that query runners are allowed to select, group by, or filter by.</p>",
+        "AnalysisRuleCustom$disallowedOutputColumns": "<p> A list of columns that aren't allowed to be shown in the query output.</p>",
         "AnalysisRuleIdMappingTable$dimensionColumns": "<p>The columns that query runners are allowed to select, group by, or filter by.</p>",
         "AnalysisRuleList$listColumns": "<p>Columns that can be listed in the output.</p>",
         "QueryConstraintRequireOverlap$columns": "<p>The columns that are required to overlap.</p>"
@@ -307,7 +345,7 @@
     "AnalysisRuleTypeList": {
       "base": null,
       "refs": {
-        "Schema$analysisRuleTypes": "<p>The analysis rule types that are associated with the schema. Currently, only one entry is present.</p>",
+        "Schema$analysisRuleTypes": "<p>The analysis rule types associated with the schema. Currently, only one entry is present.</p>",
         "SchemaSummary$analysisRuleTypes": "<p>The types of analysis rules that are associated with this schema object.</p>"
       }
     },
@@ -426,6 +464,13 @@
         "AnalysisTemplateValidationStatusDetail$type": "<p>The type of validation that was performed.</p>"
       }
     },
+    "AnalysisType": {
+      "base": null,
+      "refs": {
+        "ReceiverConfiguration$analysisType": "<p> The type of analysis for the protected query. The results of the query can be analyzed directly (<code>DIRECT_ANALYSIS</code>) or used as input into additional analyses (<code>ADDITIONAL_ANALYSIS</code>), such as a query that is a seed for a lookalike ML model.</p>",
+        "SchemaStatusDetail$analysisType": "<p>The type of analysis that can be performed on the schema.</p> <p>A schema can have an <code>analysisType</code> of <code>DIRECT_ANALYSIS</code>, <code>ADDITIONAL_ANALYSIS_FOR_AUDIENCE_GENERATION</code>, or both.</p>"
+      }
+    },
     "BatchGetCollaborationAnalysisTemplateError": {
       "base": "<p>Details of errors thrown by the call to retrieve multiple analysis templates within a collaboration by their identifiers.</p>",
       "refs": {
@@ -519,7 +564,7 @@
     "Collaboration": {
       "base": "<p>The multi-party data share environment. The collaboration contains metadata about its purpose and participants.</p>",
       "refs": {
-        "CreateCollaborationOutput$collaboration": "<p>The entire created collaboration object.</p>",
+        "CreateCollaborationOutput$collaboration": "<p>The collaboration.</p>",
         "GetCollaborationOutput$collaboration": "<p>The entire collaboration for this identifier.</p>",
         "UpdateCollaborationOutput$collaboration": "<p>The entire collaboration that has been updated.</p>"
       }
@@ -576,7 +621,7 @@
         "PrivacyBudgetSummary$collaborationArn": "<p>The ARN of the collaboration that contains this privacy budget.</p>",
         "PrivacyBudgetTemplate$collaborationArn": "<p>The ARN of the collaboration that contains this privacy budget template.</p>",
         "PrivacyBudgetTemplateSummary$collaborationArn": "<p>The ARN of the collaboration that contains this privacy budget template.</p>",
-        "Schema$collaborationArn": "<p>The unique Amazon Resource Name (ARN) for the collaboration that the schema belongs to.</p>",
+        "Schema$collaborationArn": "<p>The unique ARN for the collaboration that the schema belongs to.</p>",
         "SchemaSummary$collaborationArn": "<p>The unique ARN for the collaboration that the schema belongs to.</p>"
       }
     },
@@ -721,7 +766,7 @@
     "ColumnList": {
       "base": null,
       "refs": {
-        "Schema$columns": "<p>The columns for the relation that this schema represents.</p>",
+        "Schema$columns": "<p>The columns for the relation this schema represents.</p>",
         "Schema$partitionKeys": "<p>The partition keys for the dataset underlying this schema.</p>"
       }
     },
@@ -738,6 +783,12 @@
         "Column$type": "<p>The type of the column.</p>"
       }
     },
+    "ConfigurationDetails": {
+      "base": "<p> The configuration details.</p>",
+      "refs": {
+        "ReceiverConfiguration$configurationDetails": "<p> The configuration details of the receiver configuration.</p>"
+      }
+    },
     "ConfiguredAudienceModelArn": {
       "base": null,
       "refs": {
@@ -810,7 +861,7 @@
     "ConfiguredTableAnalysisRule": {
       "base": "<p>A configured table analysis rule, which limits how data for this table can be used.</p>",
       "refs": {
-        "CreateConfiguredTableAnalysisRuleOutput$analysisRule": "<p>The entire created analysis rule.</p>",
+        "CreateConfiguredTableAnalysisRuleOutput$analysisRule": "<p>The analysis rule that was created for the configured table.</p>",
         "GetConfiguredTableAnalysisRuleOutput$analysisRule": "<p>The entire analysis rule output.</p>",
         "UpdateConfiguredTableAnalysisRuleOutput$analysisRule": "<p>The entire updated analysis rule.</p>"
       }
@@ -819,7 +870,7 @@
       "base": "<p>Controls on the query specifications that can be run on a configured table.</p>",
       "refs": {
         "ConfiguredTableAnalysisRule$policy": "<p>The policy that controls SQL query rules.</p>",
-        "CreateConfiguredTableAnalysisRuleInput$analysisRulePolicy": "<p>The entire created configured table analysis rule object.</p>",
+        "CreateConfiguredTableAnalysisRuleInput$analysisRulePolicy": "<p>The analysis rule policy that was created for the configured table.</p>",
         "UpdateConfiguredTableAnalysisRuleInput$analysisRulePolicy": "<p>The new analysis rule policy for the configured table analysis rule.</p>"
       }
     },
@@ -859,23 +910,86 @@
     "ConfiguredTableAssociation": {
       "base": "<p>A configured table association links a configured table to a collaboration.</p>",
       "refs": {
-        "CreateConfiguredTableAssociationOutput$configuredTableAssociation": "<p>The entire configured table association object.</p>",
+        "CreateConfiguredTableAssociationOutput$configuredTableAssociation": "<p>The configured table association.</p>",
         "GetConfiguredTableAssociationOutput$configuredTableAssociation": "<p>The entire configured table association object.</p>",
         "UpdateConfiguredTableAssociationOutput$configuredTableAssociation": "<p>The entire updated configured table association.</p>"
       }
     },
+    "ConfiguredTableAssociationAnalysisRule": {
+      "base": "<p>An analysis rule for a configured table association. This analysis rule specifies how data from the table can be used within its associated collaboration. In the console, the <code>ConfiguredTableAssociationAnalysisRule</code> is referred to as the <i>collaboration analysis rule</i>.</p>",
+      "refs": {
+        "CreateConfiguredTableAssociationAnalysisRuleOutput$analysisRule": "<p>The analysis rule for the configured table association. In the console, the <code>ConfiguredTableAssociationAnalysisRule</code> is referred to as the <i>collaboration analysis rule</i>.</p>",
+        "GetConfiguredTableAssociationAnalysisRuleOutput$analysisRule": "<p>The analysis rule for the configured table association. In the console, the <code>ConfiguredTableAssociationAnalysisRule</code> is referred to as the <i>collaboration analysis rule</i>.</p>",
+        "UpdateConfiguredTableAssociationAnalysisRuleOutput$analysisRule": "<p> The updated analysis rule for the configured table association. In the console, the <code>ConfiguredTableAssociationAnalysisRule</code> is referred to as the <i>collaboration analysis rule</i>.</p>"
+      }
+    },
+    "ConfiguredTableAssociationAnalysisRuleAggregation": {
+      "base": "<p> The configured table association analysis rule applied to a configured table with the aggregation analysis rule.</p>",
+      "refs": {
+        "ConfiguredTableAssociationAnalysisRulePolicyV1$aggregation": "<p> Analysis rule type that enables only aggregation queries on a configured table.</p>"
+      }
+    },
+    "ConfiguredTableAssociationAnalysisRuleCustom": {
+      "base": "<p> The configured table association analysis rule applied to a configured table with the custom analysis rule.</p>",
+      "refs": {
+        "ConfiguredTableAssociationAnalysisRulePolicyV1$custom": "<p> Analysis rule type that enables the table owner to approve custom SQL queries on their configured tables. It supports differential privacy.</p>"
+      }
+    },
+    "ConfiguredTableAssociationAnalysisRuleList": {
+      "base": "<p> The configured table association analysis rule applied to a configured table with the list analysis rule.</p>",
+      "refs": {
+        "ConfiguredTableAssociationAnalysisRulePolicyV1$list": "<p> Analysis rule type that enables only list queries on a configured table.</p>"
+      }
+    },
+    "ConfiguredTableAssociationAnalysisRulePolicy": {
+      "base": "<p> Controls on the query specifications that can be run on an associated configured table.</p>",
+      "refs": {
+        "ConfiguredTableAssociationAnalysisRule$policy": "<p> The policy of the configured table association analysis rule.</p>",
+        "CreateConfiguredTableAssociationAnalysisRuleInput$analysisRulePolicy": "<p>The analysis rule policy that was created for the configured table association.</p>",
+        "UpdateConfiguredTableAssociationAnalysisRuleInput$analysisRulePolicy": "<p> The updated analysis rule policy for the configured table association.</p>"
+      }
+    },
+    "ConfiguredTableAssociationAnalysisRulePolicyV1": {
+      "base": "<p> Controls on the query specifications that can be run on an associated configured table.</p>",
+      "refs": {
+        "ConfiguredTableAssociationAnalysisRulePolicy$v1": "<p> The policy for the configured table association analysis rule.</p>"
+      }
+    },
+    "ConfiguredTableAssociationAnalysisRuleType": {
+      "base": null,
+      "refs": {
+        "ConfiguredTableAssociationAnalysisRule$type": "<p> The type of the configured table association analysis rule.</p>",
+        "ConfiguredTableAssociationAnalysisRuleTypeList$member": null,
+        "CreateConfiguredTableAssociationAnalysisRuleInput$analysisRuleType": "<p> The type of analysis rule.</p>",
+        "DeleteConfiguredTableAssociationAnalysisRuleInput$analysisRuleType": "<p>The type of the analysis rule that you want to delete.</p>",
+        "GetConfiguredTableAssociationAnalysisRuleInput$analysisRuleType": "<p> The type of analysis rule that you want to retrieve.</p>",
+        "UpdateConfiguredTableAssociationAnalysisRuleInput$analysisRuleType": "<p> The analysis rule type that you want to update.</p>"
+      }
+    },
+    "ConfiguredTableAssociationAnalysisRuleTypeList": {
+      "base": null,
+      "refs": {
+        "ConfiguredTableAssociation$analysisRuleTypes": "<p> The analysis rule types for the configured table association.</p>"
+      }
+    },
     "ConfiguredTableAssociationArn": {
       "base": null,
       "refs": {
         "ConfiguredTableAssociation$arn": "<p>The unique ARN for the configured table association.</p>",
+        "ConfiguredTableAssociationAnalysisRule$configuredTableAssociationArn": "<p> The Amazon Resource Name (ARN) of the configured table association.</p>",
         "ConfiguredTableAssociationSummary$arn": "<p>The unique ARN for the configured table association.</p>"
       }
     },
     "ConfiguredTableAssociationIdentifier": {
       "base": null,
       "refs": {
+        "ConfiguredTableAssociationAnalysisRule$configuredTableAssociationId": "<p> The unique identifier for the configured table association.</p>",
+        "CreateConfiguredTableAssociationAnalysisRuleInput$configuredTableAssociationIdentifier": "<p> The unique ID for the configured table association. Currently accepts the configured table association ID.</p>",
+        "DeleteConfiguredTableAssociationAnalysisRuleInput$configuredTableAssociationIdentifier": "<p>The identifier for the configured table association that's related to the analysis rule that you want to delete.</p>",
         "DeleteConfiguredTableAssociationInput$configuredTableAssociationIdentifier": "<p>The unique ID for the configured table association to be deleted. Currently accepts the configured table ID.</p>",
+        "GetConfiguredTableAssociationAnalysisRuleInput$configuredTableAssociationIdentifier": "<p> The identifier for the configured table association that's related to the analysis rule.</p>",
         "GetConfiguredTableAssociationInput$configuredTableAssociationIdentifier": "<p>The unique ID for the configured table association to retrieve. Currently accepts the configured table ID.</p>",
+        "UpdateConfiguredTableAssociationAnalysisRuleInput$configuredTableAssociationIdentifier": "<p> The identifier for the configured table association to update.</p>",
         "UpdateConfiguredTableAssociationInput$configuredTableAssociationIdentifier": "<p>The unique identifier for the configured table association to update. Currently accepts the configured table association ID.</p>"
       }
     },
@@ -968,6 +1082,16 @@
       "refs": {
       }
     },
+    "CreateConfiguredTableAssociationAnalysisRuleInput": {
+      "base": null,
+      "refs": {
+      }
+    },
+    "CreateConfiguredTableAssociationAnalysisRuleOutput": {
+      "base": null,
+      "refs": {
+      }
+    },
     "CreateConfiguredTableAssociationInput": {
       "base": null,
       "refs": {
@@ -1075,6 +1199,16 @@
       "refs": {
       }
     },
+    "DeleteConfiguredTableAssociationAnalysisRuleInput": {
+      "base": null,
+      "refs": {
+      }
+    },
+    "DeleteConfiguredTableAssociationAnalysisRuleOutput": {
+      "base": null,
+      "refs": {
+      }
+    },
     "DeleteConfiguredTableAssociationInput": {
       "base": null,
       "refs": {
@@ -1279,6 +1413,12 @@
         "PrivacyBudgetTemplateUpdateParameters$differentialPrivacy": "<p>An object that specifies the new values for the epsilon and noise parameters.</p>"
       }
     },
+    "DirectAnalysisConfigurationDetails": {
+      "base": "<p> The direct analysis configuration details.</p>",
+      "refs": {
+        "ConfigurationDetails$directAnalysisConfigurationDetails": "<p> The direct analysis configuration details.</p>"
+      }
+    },
     "DisplayName": {
       "base": null,
       "refs": {
@@ -1421,6 +1561,16 @@
       "refs": {
       }
     },
+    "GetConfiguredTableAssociationAnalysisRuleInput": {
+      "base": null,
+      "refs": {
+      }
+    },
+    "GetConfiguredTableAssociationAnalysisRuleOutput": {
+      "base": null,
+      "refs": {
+      }
+    },
     "GetConfiguredTableAssociationInput": {
       "base": null,
       "refs": {
@@ -1920,30 +2070,30 @@
     "Long": {
       "base": null,
       "refs": {
-        "ProtectedQueryStatistics$totalDurationInMillis": "<p>The duration of the Protected Query, from creation until query completion.</p>"
+        "ProtectedQueryStatistics$totalDurationInMillis": "<p>The duration of the protected query, from creation until query completion.</p>"
       }
     },
     "MaxResults": {
       "base": null,
       "refs": {
-        "ListAnalysisTemplatesInput$maxResults": "<p>The maximum number of results that are returned for an API request call. The service chooses a default number if you don't set one. The service might return a `nextToken` even if the `maxResults` value has not been met.</p>",
-        "ListCollaborationAnalysisTemplatesInput$maxResults": "<p>The maximum number of results that are returned for an API request call. The service chooses a default number if you don't set one. The service might return a `nextToken` even if the `maxResults` value has not been met.</p>",
-        "ListCollaborationConfiguredAudienceModelAssociationsInput$maxResults": "<p>The maximum number of results that are returned for an API request call. The service chooses a default number if you don't set one. The service might return a `nextToken` even if the `maxResults` value has not been met.</p>",
+        "ListAnalysisTemplatesInput$maxResults": "<p>The maximum size of the results that is returned per call.</p>",
+        "ListCollaborationAnalysisTemplatesInput$maxResults": "<p>The maximum size of the results that is returned per call.</p>",
+        "ListCollaborationConfiguredAudienceModelAssociationsInput$maxResults": "<p>The maximum size of the results that is returned per call.</p>",
         "ListCollaborationIdNamespaceAssociationsInput$maxResults": "<p>The maximum size of the results that is returned per call. Service chooses a default if it has not been set. Service may return a nextToken even if the maximum results has not been met.&gt;</p>",
-        "ListCollaborationPrivacyBudgetTemplatesInput$maxResults": "<p>The maximum number of results that are returned for an API request call. The service chooses a default number if you don't set one. The service might return a `nextToken` even if the `maxResults` value has not been met.</p>",
-        "ListCollaborationPrivacyBudgetsInput$maxResults": "<p>The maximum number of results that are returned for an API request call. The service chooses a default number if you don't set one. The service might return a `nextToken` even if the `maxResults` value has not been met.</p>",
-        "ListCollaborationsInput$maxResults": "<p>The maximum number of results that are returned for an API request call. The service chooses a default number if you don't set one. The service might return a `nextToken` even if the `maxResults` value has not been met.</p>",
-        "ListConfiguredAudienceModelAssociationsInput$maxResults": "<p>The maximum number of results that are returned for an API request call. The service chooses a default number if you don't set one. The service might return a `nextToken` even if the `maxResults` value has not been met.</p>",
-        "ListConfiguredTableAssociationsInput$maxResults": "<p>The maximum number of results that are returned for an API request call. The service chooses a default number if you don't set one. The service might return a `nextToken` even if the `maxResults` value has not been met.</p>",
-        "ListConfiguredTablesInput$maxResults": "<p>The maximum number of results that are returned for an API request call. The service chooses a default number if you don't set one. The service might return a `nextToken` even if the `maxResults` value has not been met.</p>",
+        "ListCollaborationPrivacyBudgetTemplatesInput$maxResults": "<p>The maximum size of the results that is returned per call. Service chooses a default if it has not been set. Service may return a nextToken even if the maximum results has not been met.</p>",
+        "ListCollaborationPrivacyBudgetsInput$maxResults": "<p>The maximum size of the results that is returned per call. Service chooses a default if it has not been set. Service may return a nextToken even if the maximum results has not been met.</p>",
+        "ListCollaborationsInput$maxResults": "<p>The maximum size of the results that is returned per call. Service chooses a default if it has not been set. Service may return a nextToken even if the maximum results has not been met.</p>",
+        "ListConfiguredAudienceModelAssociationsInput$maxResults": "<p>The maximum size of the results that is returned per call. Service chooses a default if it has not been set. Service may return a nextToken even if the maximum results has not been met.</p>",
+        "ListConfiguredTableAssociationsInput$maxResults": "<p>The maximum size of the results that is returned per call.</p>",
+        "ListConfiguredTablesInput$maxResults": "<p>The maximum size of the results that is returned per call.</p>",
         "ListIdMappingTablesInput$maxResults": "<p>The maximum size of the results that is returned per call. Service chooses a default if it has not been set. Service may return a nextToken even if the maximum results has not been met.</p>",
         "ListIdNamespaceAssociationsInput$maxResults": "<p>The maximum size of the results that is returned per call. Service chooses a default if it has not been set. Service may return a nextToken even if the maximum results has not been met.</p>",
-        "ListMembersInput$maxResults": "<p>The maximum number of results that are returned for an API request call. The service chooses a default number if you don't set one. The service might return a `nextToken` even if the `maxResults` value has not been met.</p>",
-        "ListMembershipsInput$maxResults": "<p>The maximum number of results that are returned for an API request call. The service chooses a default number if you don't set one. The service might return a `nextToken` even if the `maxResults` value has not been met.</p>",
-        "ListPrivacyBudgetTemplatesInput$maxResults": "<p>The maximum number of results that are returned for an API request call. The service chooses a default number if you don't set one. The service might return a `nextToken` even if the `maxResults` value has not been met.</p>",
-        "ListPrivacyBudgetsInput$maxResults": "<p>The maximum number of results that are returned for an API request call. The service chooses a default number if you don't set one. The service might return a `nextToken` even if the `maxResults` value has not been met.</p>",
-        "ListProtectedQueriesInput$maxResults": "<p>The maximum number of results that are returned for an API request call. The service chooses a default number if you don't set one. The service might return a `nextToken` even if the `maxResults` value has not been met. </p>",
-        "ListSchemasInput$maxResults": "<p>The maximum number of results that are returned for an API request call. The service chooses a default number if you don't set one. The service might return a `nextToken` even if the `maxResults` value has not been met.</p>"
+        "ListMembersInput$maxResults": "<p>The maximum size of the results that is returned per call.</p>",
+        "ListMembershipsInput$maxResults": "<p>The maximum size of the results that is returned per call.</p>",
+        "ListPrivacyBudgetTemplatesInput$maxResults": "<p>The maximum size of the results that is returned per call. Service chooses a default if it has not been set. Service may return a nextToken even if the maximum results has not been met.</p>",
+        "ListPrivacyBudgetsInput$maxResults": "<p>The maximum size of the results that is returned per call. Service chooses a default if it has not been set. Service may return a nextToken even if the maximum results has not been met.</p>",
+        "ListProtectedQueriesInput$maxResults": "<p>The maximum size of the results that is returned per call. Service chooses a default if it has not been set. Service can return a nextToken even if the maximum results has not been met. </p>",
+        "ListSchemasInput$maxResults": "<p>The maximum size of the results that is returned per call.</p>"
       }
     },
     "MemberAbilities": {
@@ -2031,15 +2181,18 @@
       "base": null,
       "refs": {
         "ConfiguredAudienceModelAssociationSummary$membershipId": "<p>A unique identifier of the membership that contains the configured audience model association.</p>",
+        "ConfiguredTableAssociationAnalysisRule$membershipIdentifier": "<p> The membership identifier for the configured table association analysis rule.</p>",
         "ConfiguredTableAssociationSummary$membershipId": "<p>The unique ID for the membership that the configured table association belongs to.</p>",
         "CreateAnalysisTemplateInput$membershipIdentifier": "<p>The identifier for a membership resource.</p>",
         "CreateConfiguredAudienceModelAssociationInput$membershipIdentifier": "<p>A unique identifier for one of your memberships for a collaboration. The configured audience model is associated to the collaboration that this membership belongs to. Accepts a membership ID.</p>",
+        "CreateConfiguredTableAssociationAnalysisRuleInput$membershipIdentifier": "<p> A unique identifier for the membership that the configured table association belongs to. Currently accepts the membership ID.</p>",
         "CreateConfiguredTableAssociationInput$membershipIdentifier": "<p>A unique identifier for one of your memberships for a collaboration. The configured table is associated to the collaboration that this membership belongs to. Currently accepts a membership ID.</p>",
         "CreateIdMappingTableInput$membershipIdentifier": "<p>The unique identifier of the membership that contains the ID mapping table.</p>",
         "CreateIdNamespaceAssociationInput$membershipIdentifier": "<p>The unique identifier of the membership that contains the ID namespace association.</p>",
         "CreatePrivacyBudgetTemplateInput$membershipIdentifier": "<p>A unique identifier for one of your memberships for a collaboration. The privacy budget template is created in the collaboration that this membership belongs to. Accepts a membership ID.</p>",
         "DeleteAnalysisTemplateInput$membershipIdentifier": "<p>The identifier for a membership resource.</p>",
         "DeleteConfiguredAudienceModelAssociationInput$membershipIdentifier": "<p>A unique identifier of the membership that contains the audience model association that you want to delete.</p>",
+        "DeleteConfiguredTableAssociationAnalysisRuleInput$membershipIdentifier": "<p> A unique identifier for the membership that the configured table association belongs to. Currently accepts the membership ID.</p>",
         "DeleteConfiguredTableAssociationInput$membershipIdentifier": "<p>A unique identifier for the membership that the configured table association belongs to. Currently accepts the membership ID.</p>",
         "DeleteIdMappingTableInput$membershipIdentifier": "<p>The unique identifier of the membership that contains the ID mapping table that you want to delete.</p>",
         "DeleteIdNamespaceAssociationInput$membershipIdentifier": "<p>The unique identifier of the membership that contains the ID namespace association that you want to delete.</p>",
@@ -2047,6 +2200,7 @@
         "DeletePrivacyBudgetTemplateInput$membershipIdentifier": "<p>A unique identifier for one of your memberships for a collaboration. The privacy budget template is deleted from the collaboration that this membership belongs to. Accepts a membership ID.</p>",
         "GetAnalysisTemplateInput$membershipIdentifier": "<p>The identifier for a membership resource.</p>",
         "GetConfiguredAudienceModelAssociationInput$membershipIdentifier": "<p>A unique identifier for the membership that contains the configured audience model association that you want to retrieve.</p>",
+        "GetConfiguredTableAssociationAnalysisRuleInput$membershipIdentifier": "<p> A unique identifier for the membership that the configured table association belongs to. Currently accepts the membership ID.</p>",
         "GetConfiguredTableAssociationInput$membershipIdentifier": "<p>A unique identifier for the membership that the configured table association belongs to. Currently accepts the membership ID.</p>",
         "GetIdMappingTableInput$membershipIdentifier": "<p>The unique identifier of the membership that contains the ID mapping table that you want to retrieve.</p>",
         "GetIdNamespaceAssociationInput$membershipIdentifier": "<p>The unique identifier of the membership that contains the ID namespace association that you want to retrieve.</p>",
@@ -2069,6 +2223,7 @@
         "StartProtectedQueryInput$membershipIdentifier": "<p>A unique identifier for the membership to run this query against. Currently accepts a membership ID.</p>",
         "UpdateAnalysisTemplateInput$membershipIdentifier": "<p>The identifier for a membership resource.</p>",
         "UpdateConfiguredAudienceModelAssociationInput$membershipIdentifier": "<p>A unique identifier of the membership that contains the configured audience model association that you want to update.</p>",
+        "UpdateConfiguredTableAssociationAnalysisRuleInput$membershipIdentifier": "<p> A unique identifier for the membership that the configured table association belongs to. Currently accepts the membership ID.</p>",
         "UpdateConfiguredTableAssociationInput$membershipIdentifier": "<p>The unique ID for the membership that the configured table association belongs to.</p>",
         "UpdateIdMappingTableInput$membershipIdentifier": "<p>The unique identifier of the membership that contains the ID mapping table that you want to update.</p>",
         "UpdateIdNamespaceAssociationInput$membershipIdentifier": "<p>The unique identifier of the membership that contains the ID namespace association that you want to update.</p>",
@@ -2136,42 +2291,42 @@
     "PaginationToken": {
       "base": null,
       "refs": {
-        "ListAnalysisTemplatesInput$nextToken": "<p>The pagination token that's used to fetch the next set of results.</p>",
-        "ListAnalysisTemplatesOutput$nextToken": "<p>The pagination token that's used to fetch the next set of results.</p>",
-        "ListCollaborationAnalysisTemplatesInput$nextToken": "<p>The pagination token that's used to fetch the next set of results.</p>",
-        "ListCollaborationAnalysisTemplatesOutput$nextToken": "<p>The pagination token that's used to fetch the next set of results.</p>",
-        "ListCollaborationConfiguredAudienceModelAssociationsInput$nextToken": "<p>The pagination token that's used to fetch the next set of results.</p>",
-        "ListCollaborationConfiguredAudienceModelAssociationsOutput$nextToken": "<p>The pagination token that's used to fetch the next set of results.</p>",
+        "ListAnalysisTemplatesInput$nextToken": "<p>The token value retrieved from a previous call to access the next page of results.</p>",
+        "ListAnalysisTemplatesOutput$nextToken": "<p>The token value retrieved from a previous call to access the next page of results.</p>",
+        "ListCollaborationAnalysisTemplatesInput$nextToken": "<p>The token value retrieved from a previous call to access the next page of results.</p>",
+        "ListCollaborationAnalysisTemplatesOutput$nextToken": "<p>The token value retrieved from a previous call to access the next page of results.</p>",
+        "ListCollaborationConfiguredAudienceModelAssociationsInput$nextToken": "<p>The token value retrieved from a previous call to access the next page of results.</p>",
+        "ListCollaborationConfiguredAudienceModelAssociationsOutput$nextToken": "<p>The token value retrieved from a previous call to access the next page of results.</p>",
         "ListCollaborationIdNamespaceAssociationsInput$nextToken": "<p>The pagination token that's used to fetch the next set of results.</p>",
         "ListCollaborationIdNamespaceAssociationsOutput$nextToken": "<p>The token value provided to access the next page of results.</p>",
-        "ListCollaborationPrivacyBudgetTemplatesInput$nextToken": "<p>The pagination token that's used to fetch the next set of results.</p>",
-        "ListCollaborationPrivacyBudgetTemplatesOutput$nextToken": "<p>The pagination token that's used to fetch the next set of results.</p>",
-        "ListCollaborationPrivacyBudgetsInput$nextToken": "<p>The pagination token that's used to fetch the next set of results.</p>",
-        "ListCollaborationPrivacyBudgetsOutput$nextToken": "<p>The pagination token that's used to fetch the next set of results.</p>",
-        "ListCollaborationsInput$nextToken": "<p>The pagination token that's used to fetch the next set of results.</p>",
-        "ListCollaborationsOutput$nextToken": "<p>The pagination token that's used to fetch the next set of results.</p>",
-        "ListConfiguredAudienceModelAssociationsInput$nextToken": "<p>The pagination token that's used to fetch the next set of results.</p>",
+        "ListCollaborationPrivacyBudgetTemplatesInput$nextToken": "<p>The token value retrieved from a previous call to access the next page of results.</p>",
+        "ListCollaborationPrivacyBudgetTemplatesOutput$nextToken": "<p>The token value retrieved from a previous call to access the next page of results.</p>",
+        "ListCollaborationPrivacyBudgetsInput$nextToken": "<p>The token value retrieved from a previous call to access the next page of results.</p>",
+        "ListCollaborationPrivacyBudgetsOutput$nextToken": "<p>The token value retrieved from a previous call to access the next page of results.</p>",
+        "ListCollaborationsInput$nextToken": "<p>The token value retrieved from a previous call to access the next page of results.</p>",
+        "ListCollaborationsOutput$nextToken": "<p>The token value retrieved from a previous call to access the next page of results.</p>",
+        "ListConfiguredAudienceModelAssociationsInput$nextToken": "<p>The token value retrieved from a previous call to access the next page of results.</p>",
         "ListConfiguredAudienceModelAssociationsOutput$nextToken": "<p>The token value provided to access the next page of results.</p>",
-        "ListConfiguredTableAssociationsInput$nextToken": "<p>The pagination token that's used to fetch the next set of results.</p>",
-        "ListConfiguredTableAssociationsOutput$nextToken": "<p>The pagination token that's used to fetch the next set of results.</p>",
-        "ListConfiguredTablesInput$nextToken": "<p>The pagination token that's used to fetch the next set of results.</p>",
-        "ListConfiguredTablesOutput$nextToken": "<p>The pagination token that's used to fetch the next set of results.</p>",
+        "ListConfiguredTableAssociationsInput$nextToken": "<p>The token value retrieved from a previous call to access the next page of results.</p>",
+        "ListConfiguredTableAssociationsOutput$nextToken": "<p>The token value retrieved from a previous call to access the next page of results.</p>",
+        "ListConfiguredTablesInput$nextToken": "<p>The token value retrieved from a previous call to access the next page of results.</p>",
+        "ListConfiguredTablesOutput$nextToken": "<p>The token value retrieved from a previous call to access the next page of results.</p>",
         "ListIdMappingTablesInput$nextToken": "<p>The pagination token that's used to fetch the next set of results.</p>",
         "ListIdMappingTablesOutput$nextToken": "<p>The token value provided to access the next page of results.</p>",
         "ListIdNamespaceAssociationsInput$nextToken": "<p>The pagination token that's used to fetch the next set of results.</p>",
         "ListIdNamespaceAssociationsOutput$nextToken": "<p>The token value provided to access the next page of results.</p>",
-        "ListMembersInput$nextToken": "<p>The pagination token that's used to fetch the next set of results.</p>",
-        "ListMembersOutput$nextToken": "<p>The pagination token that's used to fetch the next set of results.</p>",
-        "ListMembershipsInput$nextToken": "<p>The pagination token that's used to fetch the next set of results.</p>",
-        "ListMembershipsOutput$nextToken": "<p>The pagination token that's used to fetch the next set of results.</p>",
-        "ListPrivacyBudgetTemplatesInput$nextToken": "<p>The pagination token that's used to fetch the next set of results.</p>",
-        "ListPrivacyBudgetTemplatesOutput$nextToken": "<p>The pagination token that's used to fetch the next set of results.</p>",
-        "ListPrivacyBudgetsInput$nextToken": "<p>The pagination token that's used to fetch the next set of results.</p>",
-        "ListPrivacyBudgetsOutput$nextToken": "<p>The pagination token that's used to fetch the next set of results.</p>",
-        "ListProtectedQueriesInput$nextToken": "<p>The pagination token that's used to fetch the next set of results.</p>",
-        "ListProtectedQueriesOutput$nextToken": "<p>The pagination token that's used to fetch the next set of results.</p>",
-        "ListSchemasInput$nextToken": "<p>The pagination token that's used to fetch the next set of results.</p>",
-        "ListSchemasOutput$nextToken": "<p>The pagination token that's used to fetch the next set of results.</p>"
+        "ListMembersInput$nextToken": "<p>The token value retrieved from a previous call to access the next page of results.</p>",
+        "ListMembersOutput$nextToken": "<p>The token value retrieved from a previous call to access the next page of results.</p>",
+        "ListMembershipsInput$nextToken": "<p>The token value retrieved from a previous call to access the next page of results.</p>",
+        "ListMembershipsOutput$nextToken": "<p>The token value retrieved from a previous call to access the next page of results.</p>",
+        "ListPrivacyBudgetTemplatesInput$nextToken": "<p>The token value retrieved from a previous call to access the next page of results.</p>",
+        "ListPrivacyBudgetTemplatesOutput$nextToken": "<p>The token value retrieved from a previous call to access the next page of results.</p>",
+        "ListPrivacyBudgetsInput$nextToken": "<p>The token value retrieved from a previous call to access the next page of results.</p>",
+        "ListPrivacyBudgetsOutput$nextToken": "<p>The token value retrieved from a previous call to access the next page of results.</p>",
+        "ListProtectedQueriesInput$nextToken": "<p>The token value retrieved from a previous call to access the next page of results.</p>",
+        "ListProtectedQueriesOutput$nextToken": "<p>The token value retrieved from a previous call to access the next page of results.</p>",
+        "ListSchemasInput$nextToken": "<p>The token value retrieved from a previous call to access the next page of results.</p>",
+        "ListSchemasOutput$nextToken": "<p>The token value retrieved from a previous call to access the next page of results.</p>"
       }
     },
     "ParameterMap": {
@@ -2368,6 +2523,12 @@
         "UpdateProtectedQueryInput$protectedQueryIdentifier": "<p>The identifier for a protected query instance.</p>"
       }
     },
+    "ProtectedQueryMemberOutputConfiguration": {
+      "base": "<p> Contains configuration details for the protected query member output.</p>",
+      "refs": {
+        "ProtectedQueryOutputConfiguration$member": "<p> Required configuration for a protected query with a <code>member</code> output type.</p>"
+      }
+    },
     "ProtectedQueryMemberOutputList": {
       "base": null,
       "refs": {
@@ -2409,7 +2570,7 @@
       "base": "<p>Contains the configuration to write the query results to S3.</p>",
       "refs": {
         "MembershipProtectedQueryOutputConfiguration$s3": null,
-        "ProtectedQueryOutputConfiguration$s3": "<p>Required configuration for a protected query with an `S3` output type.</p>"
+        "ProtectedQueryOutputConfiguration$s3": "<p>Required configuration for a protected query with an <code>s3</code> output type.</p>"
       }
     },
     "ProtectedQueryS3OutputConfigurationBucketString": {
@@ -2499,6 +2660,24 @@
         "AnalysisSchema$referencedTables": "<p>The tables referenced in the analysis schema.</p>"
       }
     },
+    "ReceiverAccountIds": {
+      "base": null,
+      "refs": {
+        "DirectAnalysisConfigurationDetails$receiverAccountIds": "<p> The account IDs for the member who received the results of a protected query.</p>"
+      }
+    },
+    "ReceiverConfiguration": {
+      "base": "<p> The receiver configuration for a protected query.</p>",
+      "refs": {
+        "ReceiverConfigurationsList$member": null
+      }
+    },
+    "ReceiverConfigurationsList": {
+      "base": null,
+      "refs": {
+        "ProtectedQuerySummary$receiverConfigurations": "<p> The receiver configuration.</p>"
+      }
+    },
     "ResourceAlias": {
       "base": null,
       "refs": {
@@ -2623,7 +2802,7 @@
     "SchemaStatus": {
       "base": null,
       "refs": {
-        "SchemaStatusDetail$status": "<p>The status of the schema.</p>"
+        "SchemaStatusDetail$status": "<p>The status of the schema, indicating if it is ready to query.</p>"
       }
     },
     "SchemaStatusDetail": {
@@ -2671,9 +2850,9 @@
     "SchemaType": {
       "base": null,
       "refs": {
-        "ListSchemasInput$schemaType": "<p>If present, filter schemas by schema type.</p>",
-        "Schema$type": "<p>The type of schema.</p>",
-        "SchemaSummary$type": "<p>The type of schema object.</p>"
+        "ListSchemasInput$schemaType": "<p>If present, filter schemas by schema type. The only valid schema type is currently `TABLE`.</p>",
+        "Schema$type": "<p>The type of schema. The only valid value is currently `TABLE`.</p>",
+        "SchemaSummary$type": "<p>The type of schema object. The only valid schema type is currently `TABLE`.</p>"
       }
     },
     "SchemaTypeProperties": {
@@ -2868,6 +3047,8 @@
         "ConfiguredTableAnalysisRule$updateTime": "<p>The time the configured table analysis rule was last updated.</p>",
         "ConfiguredTableAssociation$createTime": "<p>The time the configured table association was created.</p>",
         "ConfiguredTableAssociation$updateTime": "<p>The time the configured table association was last updated.</p>",
+        "ConfiguredTableAssociationAnalysisRule$createTime": "<p> The creation time of the configured table association analysis rule.</p>",
+        "ConfiguredTableAssociationAnalysisRule$updateTime": "<p> The update time of the configured table association analysis rule.</p>",
         "ConfiguredTableAssociationSummary$createTime": "<p>The time the configured table association was created.</p>",
         "ConfiguredTableAssociationSummary$updateTime": "<p>The time the configured table association was last updated.</p>",
         "ConfiguredTableSummary$createTime": "<p>The time the configured table was created.</p>",
@@ -2894,8 +3075,8 @@
         "PrivacyBudgetTemplateSummary$updateTime": "<p>The most recent time at which the privacy budget template was updated.</p>",
         "ProtectedQuery$createTime": "<p>The time at which the protected query was created.</p>",
         "ProtectedQuerySummary$createTime": "<p>The time the protected query was created.</p>",
-        "Schema$createTime": "<p>The time at which the schema was created.</p>",
-        "Schema$updateTime": "<p>The most recent time at which the schema was updated.</p>",
+        "Schema$createTime": "<p>The time the schema was created.</p>",
+        "Schema$updateTime": "<p>The time the schema was last updated.</p>",
         "SchemaSummary$createTime": "<p>The time the schema object was created.</p>",
         "SchemaSummary$updateTime": "<p>The time the schema object was last updated.</p>"
       }
@@ -3014,6 +3195,16 @@
       "refs": {
       }
     },
+    "UpdateConfiguredTableAssociationAnalysisRuleInput": {
+      "base": null,
+      "refs": {
+      }
+    },
+    "UpdateConfiguredTableAssociationAnalysisRuleOutput": {
+      "base": null,
+      "refs": {
+      }
+    },
     "UpdateConfiguredTableAssociationInput": {
       "base": null,
       "refs": {
diff --git a/models/apis/dynamodb/2012-08-10/docs-2.json b/models/apis/dynamodb/2012-08-10/docs-2.json
index 42ebea0..872fd24 100644
--- a/models/apis/dynamodb/2012-08-10/docs-2.json
+++ b/models/apis/dynamodb/2012-08-10/docs-2.json
@@ -2,16 +2,16 @@
   "version": "2.0",
   "service": "<fullname>Amazon DynamoDB</fullname> <p>Amazon DynamoDB is a fully managed NoSQL database service that provides fast and predictable performance with seamless scalability. DynamoDB lets you offload the administrative burdens of operating and scaling a distributed database, so that you don't have to worry about hardware provisioning, setup and configuration, replication, software patching, or cluster scaling.</p> <p>With DynamoDB, you can create database tables that can store and retrieve any amount of data, and serve any level of request traffic. You can scale up or scale down your tables' throughput capacity without downtime or performance degradation, and use the Amazon Web Services Management Console to monitor resource utilization and performance metrics.</p> <p>DynamoDB automatically spreads the data and traffic for your tables over a sufficient number of servers to handle your throughput and storage requirements, while maintaining consistent and fast performance. All of your data is stored on solid state disks (SSDs) and automatically replicated across multiple Availability Zones in an Amazon Web Services Region, providing built-in high availability and data durability.</p>",
   "operations": {
-    "BatchExecuteStatement": "<p>This operation allows you to perform batch reads or writes on data stored in DynamoDB, using PartiQL. Each read statement in a <code>BatchExecuteStatement</code> must specify an equality condition on all key attributes. This enforces that each <code>SELECT</code> statement in a batch returns at most a single item.</p> <note> <p>The entire batch must consist of either read statements or write statements, you cannot mix both in one batch.</p> </note> <important> <p>A HTTP 200 response does not mean that all statements in the BatchExecuteStatement succeeded. Error details for individual statements can be found under the <a href=\"https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_BatchStatementResponse.html#DDB-Type-BatchStatementResponse-Error\">Error</a> field of the <code>BatchStatementResponse</code> for each statement.</p> </important>",
+    "BatchExecuteStatement": "<p>This operation allows you to perform batch reads or writes on data stored in DynamoDB, using PartiQL. Each read statement in a <code>BatchExecuteStatement</code> must specify an equality condition on all key attributes. This enforces that each <code>SELECT</code> statement in a batch returns at most a single item. For more information, see <a href=\"https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ql-reference.multiplestatements.batching.html\">Running batch operations with PartiQL for DynamoDB </a>.</p> <note> <p>The entire batch must consist of either read statements or write statements, you cannot mix both in one batch.</p> </note> <important> <p>A HTTP 200 response does not mean that all statements in the BatchExecuteStatement succeeded. Error details for individual statements can be found under the <a href=\"https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_BatchStatementResponse.html#DDB-Type-BatchStatementResponse-Error\">Error</a> field of the <code>BatchStatementResponse</code> for each statement.</p> </important>",
     "BatchGetItem": "<p>The <code>BatchGetItem</code> operation returns the attributes of one or more items from one or more tables. You identify requested items by primary key.</p> <p>A single operation can retrieve up to 16 MB of data, which can contain as many as 100 items. <code>BatchGetItem</code> returns a partial result if the response size limit is exceeded, the table's provisioned throughput is exceeded, more than 1MB per partition is requested, or an internal processing failure occurs. If a partial result is returned, the operation returns a value for <code>UnprocessedKeys</code>. You can use this value to retry the operation starting with the next item to get.</p> <important> <p>If you request more than 100 items, <code>BatchGetItem</code> returns a <code>ValidationException</code> with the message \"Too many items requested for the BatchGetItem call.\"</p> </important> <p>For example, if you ask to retrieve 100 items, but each individual item is 300 KB in size, the system returns 52 items (so as not to exceed the 16 MB limit). It also returns an appropriate <code>UnprocessedKeys</code> value so you can get the next page of results. If desired, your application can include its own logic to assemble the pages of results into one dataset.</p> <p>If <i>none</i> of the items can be processed due to insufficient provisioned throughput on all of the tables in the request, then <code>BatchGetItem</code> returns a <code>ProvisionedThroughputExceededException</code>. If <i>at least one</i> of the items is successfully processed, then <code>BatchGetItem</code> completes successfully, while returning the keys of the unread items in <code>UnprocessedKeys</code>.</p> <important> <p>If DynamoDB returns any unprocessed items, you should retry the batch operation on those items. However, <i>we strongly recommend that you use an exponential backoff algorithm</i>. If you retry the batch operation immediately, the underlying read or write requests can still fail due to throttling on the individual tables. If you delay the batch operation using exponential backoff, the individual requests in the batch are much more likely to succeed.</p> <p>For more information, see <a href=\"https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ErrorHandling.html#BatchOperations\">Batch Operations and Error Handling</a> in the <i>Amazon DynamoDB Developer Guide</i>.</p> </important> <p>By default, <code>BatchGetItem</code> performs eventually consistent reads on every table in the request. If you want strongly consistent reads instead, you can set <code>ConsistentRead</code> to <code>true</code> for any or all tables.</p> <p>In order to minimize response latency, <code>BatchGetItem</code> may retrieve items in parallel.</p> <p>When designing your application, keep in mind that DynamoDB does not return items in any particular order. To help parse the response by item, include the primary key values for the items in your request in the <code>ProjectionExpression</code> parameter.</p> <p>If a requested item does not exist, it is not returned in the result. Requests for nonexistent items consume the minimum read capacity units according to the type of read. For more information, see <a href=\"https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/WorkingWithTables.html#CapacityUnitCalculations\">Working with Tables</a> in the <i>Amazon DynamoDB Developer Guide</i>.</p>",
-    "BatchWriteItem": "<p>The <code>BatchWriteItem</code> operation puts or deletes multiple items in one or more tables. A single call to <code>BatchWriteItem</code> can transmit up to 16MB of data over the network, consisting of up to 25 item put or delete operations. While individual items can be up to 400 KB once stored, it's important to note that an item's representation might be greater than 400KB while being sent in DynamoDB's JSON format for the API call. For more details on this distinction, see <a href=\"https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/HowItWorks.NamingRulesDataTypes.html\">Naming Rules and Data Types</a>.</p> <note> <p> <code>BatchWriteItem</code> cannot update items. If you perform a <code>BatchWriteItem</code> operation on an existing item, that item's values will be overwritten by the operation and it will appear like it was updated. To update items, we recommend you use the <code>UpdateItem</code> action.</p> </note> <p>The individual <code>PutItem</code> and <code>DeleteItem</code> operations specified in <code>BatchWriteItem</code> are atomic; however <code>BatchWriteItem</code> as a whole is not. If any requested operations fail because the table's provisioned throughput is exceeded or an internal processing failure occurs, the failed operations are returned in the <code>UnprocessedItems</code> response parameter. You can investigate and optionally resend the requests. Typically, you would call <code>BatchWriteItem</code> in a loop. Each iteration would check for unprocessed items and submit a new <code>BatchWriteItem</code> request with those unprocessed items until all items have been processed.</p> <p>If <i>none</i> of the items can be processed due to insufficient provisioned throughput on all of the tables in the request, then <code>BatchWriteItem</code> returns a <code>ProvisionedThroughputExceededException</code>.</p> <important> <p>If DynamoDB returns any unprocessed items, you should retry the batch operation on those items. However, <i>we strongly recommend that you use an exponential backoff algorithm</i>. If you retry the batch operation immediately, the underlying read or write requests can still fail due to throttling on the individual tables. If you delay the batch operation using exponential backoff, the individual requests in the batch are much more likely to succeed.</p> <p>For more information, see <a href=\"https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ErrorHandling.html#Programming.Errors.BatchOperations\">Batch Operations and Error Handling</a> in the <i>Amazon DynamoDB Developer Guide</i>.</p> </important> <p>With <code>BatchWriteItem</code>, you can efficiently write or delete large amounts of data, such as from Amazon EMR, or copy data from another database into DynamoDB. In order to improve performance with these large-scale operations, <code>BatchWriteItem</code> does not behave in the same way as individual <code>PutItem</code> and <code>DeleteItem</code> calls would. For example, you cannot specify conditions on individual put and delete requests, and <code>BatchWriteItem</code> does not return deleted items in the response.</p> <p>If you use a programming language that supports concurrency, you can use threads to write items in parallel. Your application must include the necessary logic to manage the threads. With languages that don't support threading, you must update or delete the specified items one at a time. In both situations, <code>BatchWriteItem</code> performs the specified put and delete operations in parallel, giving you the power of the thread pool approach without having to introduce complexity into your application.</p> <p>Parallel processing reduces latency, but each specified put and delete request consumes the same number of write capacity units whether it is processed in parallel or not. Delete operations on nonexistent items consume one write capacity unit.</p> <p>If one or more of the following is true, DynamoDB rejects the entire batch write operation:</p> <ul> <li> <p>One or more tables specified in the <code>BatchWriteItem</code> request does not exist.</p> </li> <li> <p>Primary key attributes specified on an item in the request do not match those in the corresponding table's primary key schema.</p> </li> <li> <p>You try to perform multiple operations on the same item in the same <code>BatchWriteItem</code> request. For example, you cannot put and delete the same item in the same <code>BatchWriteItem</code> request. </p> </li> <li> <p> Your request contains at least two items with identical hash and range keys (which essentially is two put operations). </p> </li> <li> <p>There are more than 25 requests in the batch.</p> </li> <li> <p>Any individual item in a batch exceeds 400 KB.</p> </li> <li> <p>The total request size exceeds 16 MB.</p> </li> <li> <p>Any individual items with keys exceeding the key length limits. For a partition key, the limit is 2048 bytes and for a sort key, the limit is 1024 bytes.</p> </li> </ul>",
+    "BatchWriteItem": "<p>The <code>BatchWriteItem</code> operation puts or deletes multiple items in one or more tables. A single call to <code>BatchWriteItem</code> can transmit up to 16MB of data over the network, consisting of up to 25 item put or delete operations. While individual items can be up to 400 KB once stored, it's important to note that an item's representation might be greater than 400KB while being sent in DynamoDB's JSON format for the API call. For more details on this distinction, see <a href=\"https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/HowItWorks.NamingRulesDataTypes.html\">Naming Rules and Data Types</a>.</p> <note> <p> <code>BatchWriteItem</code> cannot update items. If you perform a <code>BatchWriteItem</code> operation on an existing item, that item's values will be overwritten by the operation and it will appear like it was updated. To update items, we recommend you use the <code>UpdateItem</code> action.</p> </note> <p>The individual <code>PutItem</code> and <code>DeleteItem</code> operations specified in <code>BatchWriteItem</code> are atomic; however <code>BatchWriteItem</code> as a whole is not. If any requested operations fail because the table's provisioned throughput is exceeded or an internal processing failure occurs, the failed operations are returned in the <code>UnprocessedItems</code> response parameter. You can investigate and optionally resend the requests. Typically, you would call <code>BatchWriteItem</code> in a loop. Each iteration would check for unprocessed items and submit a new <code>BatchWriteItem</code> request with those unprocessed items until all items have been processed.</p> <p>For tables and indexes with provisioned capacity, if none of the items can be processed due to insufficient provisioned throughput on all of the tables in the request, then <code>BatchWriteItem</code> returns a <code>ProvisionedThroughputExceededException</code>. For all tables and indexes, if none of the items can be processed due to other throttling scenarios (such as exceeding partition level limits), then <code>BatchWriteItem</code> returns a <code>ThrottlingException</code>.</p> <important> <p>If DynamoDB returns any unprocessed items, you should retry the batch operation on those items. However, <i>we strongly recommend that you use an exponential backoff algorithm</i>. If you retry the batch operation immediately, the underlying read or write requests can still fail due to throttling on the individual tables. If you delay the batch operation using exponential backoff, the individual requests in the batch are much more likely to succeed.</p> <p>For more information, see <a href=\"https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ErrorHandling.html#Programming.Errors.BatchOperations\">Batch Operations and Error Handling</a> in the <i>Amazon DynamoDB Developer Guide</i>.</p> </important> <p>With <code>BatchWriteItem</code>, you can efficiently write or delete large amounts of data, such as from Amazon EMR, or copy data from another database into DynamoDB. In order to improve performance with these large-scale operations, <code>BatchWriteItem</code> does not behave in the same way as individual <code>PutItem</code> and <code>DeleteItem</code> calls would. For example, you cannot specify conditions on individual put and delete requests, and <code>BatchWriteItem</code> does not return deleted items in the response.</p> <p>If you use a programming language that supports concurrency, you can use threads to write items in parallel. Your application must include the necessary logic to manage the threads. With languages that don't support threading, you must update or delete the specified items one at a time. In both situations, <code>BatchWriteItem</code> performs the specified put and delete operations in parallel, giving you the power of the thread pool approach without having to introduce complexity into your application.</p> <p>Parallel processing reduces latency, but each specified put and delete request consumes the same number of write capacity units whether it is processed in parallel or not. Delete operations on nonexistent items consume one write capacity unit.</p> <p>If one or more of the following is true, DynamoDB rejects the entire batch write operation:</p> <ul> <li> <p>One or more tables specified in the <code>BatchWriteItem</code> request does not exist.</p> </li> <li> <p>Primary key attributes specified on an item in the request do not match those in the corresponding table's primary key schema.</p> </li> <li> <p>You try to perform multiple operations on the same item in the same <code>BatchWriteItem</code> request. For example, you cannot put and delete the same item in the same <code>BatchWriteItem</code> request. </p> </li> <li> <p> Your request contains at least two items with identical hash and range keys (which essentially is two put operations). </p> </li> <li> <p>There are more than 25 requests in the batch.</p> </li> <li> <p>Any individual item in a batch exceeds 400 KB.</p> </li> <li> <p>The total request size exceeds 16 MB.</p> </li> <li> <p>Any individual items with keys exceeding the key length limits. For a partition key, the limit is 2048 bytes and for a sort key, the limit is 1024 bytes.</p> </li> </ul>",
     "CreateBackup": "<p>Creates a backup for an existing table.</p> <p> Each time you create an on-demand backup, the entire table data is backed up. There is no limit to the number of on-demand backups that can be taken. </p> <p> When you create an on-demand backup, a time marker of the request is cataloged, and the backup is created asynchronously, by applying all changes until the time of the request to the last full table snapshot. Backup requests are processed instantaneously and become available for restore within minutes. </p> <p>You can call <code>CreateBackup</code> at a maximum rate of 50 times per second.</p> <p>All backups in DynamoDB work without consuming any provisioned throughput on the table.</p> <p> If you submit a backup request on 2018-12-14 at 14:25:00, the backup is guaranteed to contain all data committed to the table up to 14:24:00, and data committed after 14:26:00 will not be. The backup might contain data modifications made between 14:24:00 and 14:26:00. On-demand backup does not support causal consistency. </p> <p> Along with data, the following are also included on the backups: </p> <ul> <li> <p>Global secondary indexes (GSIs)</p> </li> <li> <p>Local secondary indexes (LSIs)</p> </li> <li> <p>Streams</p> </li> <li> <p>Provisioned read and write capacity</p> </li> </ul>",
     "CreateGlobalTable": "<p>Creates a global table from an existing table. A global table creates a replication relationship between two or more DynamoDB tables with the same table name in the provided Regions. </p> <important> <p>This documentation is for version 2017.11.29 (Legacy) of global tables, which should be avoided for new global tables. Customers should use <a href=\"https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/GlobalTables.html\">Global Tables version 2019.11.21 (Current)</a> when possible, because it provides greater flexibility, higher efficiency, and consumes less write capacity than 2017.11.29 (Legacy).</p> <p>To determine which version you're using, see <a href=\"https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/globaltables.DetermineVersion.html\">Determining the global table version you are using</a>. To update existing global tables from version 2017.11.29 (Legacy) to version 2019.11.21 (Current), see <a href=\"https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/V2globaltables_upgrade.html\">Upgrading global tables</a>.</p> </important> <p>If you want to add a new replica table to a global table, each of the following conditions must be true:</p> <ul> <li> <p>The table must have the same primary key as all of the other replicas.</p> </li> <li> <p>The table must have the same name as all of the other replicas.</p> </li> <li> <p>The table must have DynamoDB Streams enabled, with the stream containing both the new and the old images of the item.</p> </li> <li> <p>None of the replica tables in the global table can contain any data.</p> </li> </ul> <p> If global secondary indexes are specified, then the following conditions must also be met: </p> <ul> <li> <p> The global secondary indexes must have the same name. </p> </li> <li> <p> The global secondary indexes must have the same hash key and sort key (if present). </p> </li> </ul> <p> If local secondary indexes are specified, then the following conditions must also be met: </p> <ul> <li> <p> The local secondary indexes must have the same name. </p> </li> <li> <p> The local secondary indexes must have the same hash key and sort key (if present). </p> </li> </ul> <important> <p> Write capacity settings should be set consistently across your replica tables and secondary indexes. DynamoDB strongly recommends enabling auto scaling to manage the write capacity settings for all of your global tables replicas and indexes. </p> <p> If you prefer to manage write capacity settings manually, you should provision equal replicated write capacity units to your replica tables. You should also provision equal replicated write capacity units to matching secondary indexes across your global table. </p> </important>",
     "CreateTable": "<p>The <code>CreateTable</code> operation adds a new table to your account. In an Amazon Web Services account, table names must be unique within each Region. That is, you can have two tables with same name if you create the tables in different Regions.</p> <p> <code>CreateTable</code> is an asynchronous operation. Upon receiving a <code>CreateTable</code> request, DynamoDB immediately returns a response with a <code>TableStatus</code> of <code>CREATING</code>. After the table is created, DynamoDB sets the <code>TableStatus</code> to <code>ACTIVE</code>. You can perform read and write operations only on an <code>ACTIVE</code> table. </p> <p>You can optionally define secondary indexes on the new table, as part of the <code>CreateTable</code> operation. If you want to create multiple tables with secondary indexes on them, you must create the tables sequentially. Only one table with secondary indexes can be in the <code>CREATING</code> state at any given time.</p> <p>You can use the <code>DescribeTable</code> action to check the table status.</p>",
     "DeleteBackup": "<p>Deletes an existing backup of a table.</p> <p>You can call <code>DeleteBackup</code> at a maximum rate of 10 times per second.</p>",
     "DeleteItem": "<p>Deletes a single item in a table by primary key. You can perform a conditional delete operation that deletes the item if it exists, or if it has an expected attribute value.</p> <p>In addition to deleting an item, you can also return the item's attribute values in the same operation, using the <code>ReturnValues</code> parameter.</p> <p>Unless you specify conditions, the <code>DeleteItem</code> is an idempotent operation; running it multiple times on the same item or attribute does <i>not</i> result in an error response.</p> <p>Conditional deletes are useful for deleting items only if specific conditions are met. If those conditions are met, DynamoDB performs the delete. Otherwise, the item is not deleted.</p>",
     "DeleteResourcePolicy": "<p>Deletes the resource-based policy attached to the resource, which can be a table or stream.</p> <p> <code>DeleteResourcePolicy</code> is an idempotent operation; running it multiple times on the same resource <i>doesn't</i> result in an error response, unless you specify an <code>ExpectedRevisionId</code>, which will then return a <code>PolicyNotFoundException</code>.</p> <important> <p>To make sure that you don't inadvertently lock yourself out of your own resources, the root principal in your Amazon Web Services account can perform <code>DeleteResourcePolicy</code> requests, even if your resource-based policy explicitly denies the root principal's access. </p> </important> <note> <p> <code>DeleteResourcePolicy</code> is an asynchronous operation. If you issue a <code>GetResourcePolicy</code> request immediately after running the <code>DeleteResourcePolicy</code> request, DynamoDB might still return the deleted policy. This is because the policy for your resource might not have been deleted yet. Wait for a few seconds, and then try the <code>GetResourcePolicy</code> request again.</p> </note>",
-    "DeleteTable": "<p>The <code>DeleteTable</code> operation deletes a table and all of its items. After a <code>DeleteTable</code> request, the specified table is in the <code>DELETING</code> state until DynamoDB completes the deletion. If the table is in the <code>ACTIVE</code> state, you can delete it. If a table is in <code>CREATING</code> or <code>UPDATING</code> states, then DynamoDB returns a <code>ResourceInUseException</code>. If the specified table does not exist, DynamoDB returns a <code>ResourceNotFoundException</code>. If table is already in the <code>DELETING</code> state, no error is returned. </p> <important> <p>For global tables, this operation only applies to global tables using Version 2019.11.21 (Current version). </p> </important> <note> <p>DynamoDB might continue to accept data read and write operations, such as <code>GetItem</code> and <code>PutItem</code>, on a table in the <code>DELETING</code> state until the table deletion is complete.</p> </note> <p>When you delete a table, any indexes on that table are also deleted.</p> <p>If you have DynamoDB Streams enabled on the table, then the corresponding stream on that table goes into the <code>DISABLED</code> state, and the stream is automatically deleted after 24 hours.</p> <p>Use the <code>DescribeTable</code> action to check the status of the table. </p>",
+    "DeleteTable": "<p>The <code>DeleteTable</code> operation deletes a table and all of its items. After a <code>DeleteTable</code> request, the specified table is in the <code>DELETING</code> state until DynamoDB completes the deletion. If the table is in the <code>ACTIVE</code> state, you can delete it. If a table is in <code>CREATING</code> or <code>UPDATING</code> states, then DynamoDB returns a <code>ResourceInUseException</code>. If the specified table does not exist, DynamoDB returns a <code>ResourceNotFoundException</code>. If table is already in the <code>DELETING</code> state, no error is returned. </p> <important> <p>For global tables, this operation only applies to global tables using Version 2019.11.21 (Current version). </p> </important> <note> <p>DynamoDB might continue to accept data read and write operations, such as <code>GetItem</code> and <code>PutItem</code>, on a table in the <code>DELETING</code> state until the table deletion is complete. For the full list of table states, see <a href=\"https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_TableDescription.html#DDB-Type-TableDescription-TableStatus\">TableStatus</a>.</p> </note> <p>When you delete a table, any indexes on that table are also deleted.</p> <p>If you have DynamoDB Streams enabled on the table, then the corresponding stream on that table goes into the <code>DISABLED</code> state, and the stream is automatically deleted after 24 hours.</p> <p>Use the <code>DescribeTable</code> action to check the status of the table. </p>",
     "DescribeBackup": "<p>Describes an existing backup of a table.</p> <p>You can call <code>DescribeBackup</code> at a maximum rate of 10 times per second.</p>",
     "DescribeContinuousBackups": "<p>Checks the status of continuous backups and point in time recovery on the specified table. Continuous backups are <code>ENABLED</code> on all tables at table creation. If point in time recovery is enabled, <code>PointInTimeRecoveryStatus</code> will be set to ENABLED.</p> <p> After continuous backups and point in time recovery are enabled, you can restore to any point in time within <code>EarliestRestorableDateTime</code> and <code>LatestRestorableDateTime</code>. </p> <p> <code>LatestRestorableDateTime</code> is typically 5 minutes before the current time. You can restore your table to any point in time during the last 35 days. </p> <p>You can call <code>DescribeContinuousBackups</code> at a maximum rate of 10 times per second.</p>",
     "DescribeContributorInsights": "<p>Returns information about contributor insights for a given table or global secondary index.</p>",
@@ -1610,7 +1610,7 @@
       "base": null,
       "refs": {
         "QueryOutput$Count": "<p>The number of items in the response.</p> <p>If you used a <code>QueryFilter</code> in the request, then <code>Count</code> is the number of items returned after the filter was applied, and <code>ScannedCount</code> is the number of matching items before the filter was applied.</p> <p>If you did not use a filter in the request, then <code>Count</code> and <code>ScannedCount</code> are the same.</p>",
-        "QueryOutput$ScannedCount": "<p>The number of items evaluated, before any <code>QueryFilter</code> is applied. A high <code>ScannedCount</code> value with few, or no, <code>Count</code> results indicates an inefficient <code>Query</code> operation. For more information, see <a href=\"https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/QueryAndScan.html#Count\">Count and ScannedCount</a> in the <i>Amazon DynamoDB Developer Guide</i>.</p> <p>If you did not use a filter in the request, then <code>ScannedCount</code> is the same as <code>Count</code>.</p>",
+        "QueryOutput$ScannedCount": "<p>The number of items evaluated, before any <code>QueryFilter</code> is applied. A high <code>ScannedCount</code> value with few, or no, <code>Count</code> results indicates an inefficient <code>Query</code> operation. For more information, see <a href=\"https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Scan.html#Scan.Count\">Count and ScannedCount</a> in the <i>Amazon DynamoDB Developer Guide</i>.</p> <p>If you did not use a filter in the request, then <code>ScannedCount</code> is the same as <code>Count</code>.</p>",
         "ScanOutput$Count": "<p>The number of items in the response.</p> <p>If you set <code>ScanFilter</code> in the request, then <code>Count</code> is the number of items returned after the filter was applied, and <code>ScannedCount</code> is the number of matching items before the filter was applied.</p> <p>If you did not use a filter in the request, then <code>Count</code> is the same as <code>ScannedCount</code>.</p>",
         "ScanOutput$ScannedCount": "<p>The number of items evaluated, before any <code>ScanFilter</code> is applied. A high <code>ScannedCount</code> value with few, or no, <code>Count</code> results indicates an inefficient <code>Scan</code> operation. For more information, see <a href=\"https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/QueryAndScan.html#Count\">Count and ScannedCount</a> in the <i>Amazon DynamoDB Developer Guide</i>.</p> <p>If you did not use a filter in the request, then <code>ScannedCount</code> is the same as <code>Count</code>.</p>"
       }
diff --git a/models/apis/iotsitewise/2019-12-02/api-2.json b/models/apis/iotsitewise/2019-12-02/api-2.json
index 43228f5..85cfef0 100644
--- a/models/apis/iotsitewise/2019-12-02/api-2.json
+++ b/models/apis/iotsitewise/2019-12-02/api-2.json
@@ -5,11 +5,13 @@
     "endpointPrefix":"iotsitewise",
     "jsonVersion":"1.1",
     "protocol":"rest-json",
+    "protocols":["rest-json"],
     "serviceFullName":"AWS IoT SiteWise",
     "serviceId":"IoTSiteWise",
     "signatureVersion":"v4",
     "signingName":"iotsitewise",
-    "uid":"iotsitewise-2019-12-02"
+    "uid":"iotsitewise-2019-12-02",
+    "auth":["aws.auth#sigv4"]
   },
   "operations":{
     "AssociateAssets":{
@@ -416,6 +418,7 @@
       "errors":[
         {"shape":"InvalidRequestException"},
         {"shape":"ResourceNotFoundException"},
+        {"shape":"ConflictingOperationException"},
         {"shape":"InternalFailureException"},
         {"shape":"ThrottlingException"}
       ],
@@ -2606,7 +2609,7 @@
     },
     "CapabilityConfiguration":{
       "type":"string",
-      "max":104857600,
+      "max":10000000,
       "min":1
     },
     "CapabilityNamespace":{
@@ -2621,7 +2624,8 @@
         "IN_SYNC",
         "OUT_OF_SYNC",
         "SYNC_FAILED",
-        "UNKNOWN"
+        "UNKNOWN",
+        "NOT_APPLICABLE"
       ]
     },
     "ClientToken":{
@@ -2764,7 +2768,8 @@
     "CoreDeviceThingName":{
       "type":"string",
       "max":128,
-      "min":1
+      "min":1,
+      "pattern":"^[a-zA-Z0-9:_-]+$"
     },
     "CreateAccessPolicyRequest":{
       "type":"structure",
@@ -2968,7 +2973,7 @@
         "gatewayPlatform"
       ],
       "members":{
-        "gatewayName":{"shape":"Name"},
+        "gatewayName":{"shape":"GatewayName"},
         "gatewayPlatform":{"shape":"GatewayPlatform"},
         "tags":{"shape":"TagMap"}
       }
@@ -3742,7 +3747,7 @@
       ],
       "members":{
         "gatewayId":{"shape":"ID"},
-        "gatewayName":{"shape":"Name"},
+        "gatewayName":{"shape":"GatewayName"},
         "gatewayArn":{"shape":"ARN"},
         "gatewayPlatform":{"shape":"GatewayPlatform"},
         "gatewayCapabilitySummaries":{"shape":"GatewayCapabilitySummaries"},
@@ -4161,11 +4166,18 @@
         "capabilitySyncStatus":{"shape":"CapabilitySyncStatus"}
       }
     },
+    "GatewayName":{
+      "type":"string",
+      "max":256,
+      "min":1,
+      "pattern":"[^\\u0000-\\u001F\\u007F]+"
+    },
     "GatewayPlatform":{
       "type":"structure",
       "members":{
         "greengrass":{"shape":"Greengrass"},
-        "greengrassV2":{"shape":"GreengrassV2"}
+        "greengrassV2":{"shape":"GreengrassV2"},
+        "siemensIE":{"shape":"SiemensIE"}
       }
     },
     "GatewaySummaries":{
@@ -4182,7 +4194,7 @@
       ],
       "members":{
         "gatewayId":{"shape":"ID"},
-        "gatewayName":{"shape":"Name"},
+        "gatewayName":{"shape":"GatewayName"},
         "gatewayPlatform":{"shape":"GatewayPlatform"},
         "gatewayCapabilitySummaries":{"shape":"GatewayCapabilitySummaries"},
         "creationDate":{"shape":"Timestamp"},
@@ -4602,6 +4614,12 @@
       "error":{"httpStatusCode":400},
       "exception":true
     },
+    "IotCoreThingName":{
+      "type":"string",
+      "max":128,
+      "min":1,
+      "pattern":"^[a-zA-Z0-9:_-]+$"
+    },
     "JobConfiguration":{
       "type":"structure",
       "required":["fileFormat"],
@@ -5743,6 +5761,13 @@
       "exception":true,
       "fault":true
     },
+    "SiemensIE":{
+      "type":"structure",
+      "required":["iotCoreThingName"],
+      "members":{
+        "iotCoreThingName":{"shape":"IotCoreThingName"}
+      }
+    },
     "StorageType":{
       "type":"string",
       "enum":[
@@ -6170,7 +6195,7 @@
           "location":"uri",
           "locationName":"gatewayId"
         },
-        "gatewayName":{"shape":"Name"}
+        "gatewayName":{"shape":"GatewayName"}
       }
     },
     "UpdatePortalRequest":{
diff --git a/models/apis/iotsitewise/2019-12-02/docs-2.json b/models/apis/iotsitewise/2019-12-02/docs-2.json
index bfebf12..35c4f77 100644
--- a/models/apis/iotsitewise/2019-12-02/docs-2.json
+++ b/models/apis/iotsitewise/2019-12-02/docs-2.json
@@ -78,7 +78,7 @@
     "UntagResource": "<p>Removes a tag from an IoT SiteWise resource.</p>",
     "UpdateAccessPolicy": "<p>Updates an existing access policy that specifies an identity's access to an IoT SiteWise Monitor portal or project resource.</p>",
     "UpdateAsset": "<p>Updates an asset's name. For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/update-assets-and-models.html\">Updating assets and models</a> in the <i>IoT SiteWise User Guide</i>.</p>",
-    "UpdateAssetModel": "<p>Updates an asset model and all of the assets that were created from the model. Each asset created from the model inherits the updated asset model's property and hierarchy definitions. For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/update-assets-and-models.html\">Updating assets and models</a> in the <i>IoT SiteWise User Guide</i>.</p> <important> <p>This operation overwrites the existing model with the provided model. To avoid deleting your asset model's properties or hierarchies, you must include their IDs and definitions in the updated asset model payload. For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_DescribeAssetModel.html\">DescribeAssetModel</a>.</p> <p>If you remove a property from an asset model, IoT SiteWise deletes all previous data for that property. If you remove a hierarchy definition from an asset model, IoT SiteWise disassociates every asset associated with that hierarchy. You can't change the type or data type of an existing property.</p> </important>",
+    "UpdateAssetModel": "<p>Updates an asset model and all of the assets that were created from the model. Each asset created from the model inherits the updated asset model's property and hierarchy definitions. For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/update-assets-and-models.html\">Updating assets and models</a> in the <i>IoT SiteWise User Guide</i>.</p> <important> <p>If you remove a property from an asset model, IoT SiteWise deletes all previous data for that property. You can’t change the type or data type of an existing property.</p> <p>To replace an existing asset model property with a new one with the same <code>name</code>, do the following:</p> <ol> <li> <p>Submit an <code>UpdateAssetModel</code> request with the entire existing property removed.</p> </li> <li> <p>Submit a second <code>UpdateAssetModel</code> request that includes the new property. The new asset property will have the same <code>name</code> as the previous one and IoT SiteWise will generate a new unique <code>id</code>.</p> </li> </ol> </important>",
     "UpdateAssetModelCompositeModel": "<p>Updates a composite model and all of the assets that were created from the model. Each asset created from the model inherits the updated asset model's property and hierarchy definitions. For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/update-assets-and-models.html\">Updating assets and models</a> in the <i>IoT SiteWise User Guide</i>.</p> <important> <p>If you remove a property from a composite asset model, IoT SiteWise deletes all previous data for that property. You can’t change the type or data type of an existing property.</p> <p>To replace an existing composite asset model property with a new one with the same <code>name</code>, do the following:</p> <ol> <li> <p>Submit an <code>UpdateAssetModelCompositeModel</code> request with the entire existing property removed.</p> </li> <li> <p>Submit a second <code>UpdateAssetModelCompositeModel</code> request that includes the new property. The new asset property will have the same <code>name</code> as the previous one and IoT SiteWise will generate a new unique <code>id</code>.</p> </li> </ol> </important>",
     "UpdateAssetProperty": "<p>Updates an asset property's alias and notification state.</p> <important> <p>This operation overwrites the property's existing alias and notification state. To keep your existing property's alias or notification state, you must include the existing values in the UpdateAssetProperty request. For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_DescribeAssetProperty.html\">DescribeAssetProperty</a>.</p> </important>",
     "UpdateDashboard": "<p>Updates an IoT SiteWise Monitor dashboard.</p>",
@@ -118,7 +118,7 @@
         "DescribePortalResponse$roleArn": "<p>The <a href=\"https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html\">ARN</a> of the service role that allows the portal's users to access your IoT SiteWise resources on your behalf. For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/monitor-service-role.html\">Using service roles for IoT SiteWise Monitor</a> in the <i>IoT SiteWise User Guide</i>.</p>",
         "DescribeProjectResponse$projectArn": "<p>The <a href=\"https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html\">ARN</a> of the project, which has the following format.</p> <p> <code>arn:${Partition}:iotsitewise:${Region}:${Account}:project/${ProjectId}</code> </p>",
         "DescribeTimeSeriesResponse$timeSeriesArn": "<p>The <a href=\"https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html\">ARN</a> of the time series, which has the following format.</p> <p> <code>arn:${Partition}:iotsitewise:${Region}:${Account}:time-series/${TimeSeriesId}</code> </p>",
-        "Greengrass$groupArn": "<p>The <a href=\"https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html\">ARN</a> of the Greengrass group. For more information about how to find a group's ARN, see <a href=\"https://docs.aws.amazon.com/greengrass/latest/apireference/listgroups-get.html\">ListGroups</a> and <a href=\"https://docs.aws.amazon.com/greengrass/latest/apireference/getgroup-get.html\">GetGroup</a> in the <i>IoT Greengrass API Reference</i>.</p>",
+        "Greengrass$groupArn": "<p>The <a href=\"https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html\">ARN</a> of the Greengrass group. For more information about how to find a group's ARN, see <a href=\"https://docs.aws.amazon.com/greengrass/v1/apireference/listgroups-get.html\">ListGroups</a> and <a href=\"https://docs.aws.amazon.com/greengrass/v1/apireference/getgroup-get.html\">GetGroup</a> in the <i>IoT Greengrass V1 API Reference</i>.</p>",
         "IAMRoleIdentity$arn": "<p>The ARN of the IAM role. For more information, see <a href=\"https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_identifiers.html\">IAM ARNs</a> in the <i>IAM User Guide</i>.</p>",
         "IAMUserIdentity$arn": "<p>The ARN of the IAM user. For more information, see <a href=\"https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_identifiers.html\">IAM ARNs</a> in the <i>IAM User Guide</i>.</p> <note> <p>If you delete the IAM user, access policies that contain this identity include an empty <code>arn</code>. You can delete the access policy for the IAM user that no longer exists.</p> </note>",
         "ListAccessPoliciesRequest$iamArn": "<p>The ARN of the IAM user. For more information, see <a href=\"https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_identifiers.html\">IAM ARNs</a> in the <i>IAM User Guide</i>. This parameter is required if you specify <code>IAM</code> for <code>identityType</code>.</p>",
@@ -348,7 +348,7 @@
     "AssetModelCompositeModelDefinitions": {
       "base": null,
       "refs": {
-        "CreateAssetModelRequest$assetModelCompositeModels": "<p>The composite models that are part of this asset model. It groups properties (such as attributes, measurements, transforms, and metrics) and child composite models that model parts of your industrial equipment. Each composite model has a type that defines the properties that the composite model supports. Use composite models to define alarms on this asset model.</p> <note> <p>When creating custom composite models, you need to use <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_CreateAssetModelCompositeModel.html\">CreateAssetModelCompositeModel</a>. For more information, see &lt;LINK&gt;.</p> </note>"
+        "CreateAssetModelRequest$assetModelCompositeModels": "<p>The composite models that are part of this asset model. It groups properties (such as attributes, measurements, transforms, and metrics) and child composite models that model parts of your industrial equipment. Each composite model has a type that defines the properties that the composite model supports. Use composite models to define alarms on this asset model.</p> <note> <p>When creating custom composite models, you need to use <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_CreateAssetModelCompositeModel.html\">CreateAssetModelCompositeModel</a>. For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/create-custom-composite-models.html\">Creating custom composite models (Components)</a> in the <i>IoT SiteWise User Guide</i>.</p> </note>"
       }
     },
     "AssetModelCompositeModelPath": {
@@ -384,7 +384,7 @@
       "base": null,
       "refs": {
         "DescribeAssetModelResponse$assetModelCompositeModels": "<p>The list of built-in composite models for the asset model, such as those with those of type <code>AWS/ALARMS</code>.</p>",
-        "UpdateAssetModelRequest$assetModelCompositeModels": "<p>The composite models that are part of this asset model. It groups properties (such as attributes, measurements, transforms, and metrics) and child composite models that model parts of your industrial equipment. Each composite model has a type that defines the properties that the composite model supports. Use composite models to define alarms on this asset model.</p> <note> <p>When creating custom composite models, you need to use <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_CreateAssetModelCompositeModel.html\">CreateAssetModelCompositeModel</a>. For more information, see &lt;LINK&gt;.</p> </note>"
+        "UpdateAssetModelRequest$assetModelCompositeModels": "<p>The composite models that are part of this asset model. It groups properties (such as attributes, measurements, transforms, and metrics) and child composite models that model parts of your industrial equipment. Each composite model has a type that defines the properties that the composite model supports. Use composite models to define alarms on this asset model.</p> <note> <p>When creating custom composite models, you need to use <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_CreateAssetModelCompositeModel.html\">CreateAssetModelCompositeModel</a>. For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/create-custom-composite-models.html\">Creating custom composite models (Components)</a> in the <i>IoT SiteWise User Guide</i>.</p> </note>"
       }
     },
     "AssetModelHierarchies": {
@@ -418,7 +418,7 @@
         "AssetModelCompositeModel$properties": "<p>The asset property definitions for this composite model.</p>",
         "DescribeAssetModelCompositeModelResponse$assetModelCompositeModelProperties": "<p>The property definitions of the composite model.</p>",
         "DescribeAssetModelResponse$assetModelProperties": "<p>The list of asset properties for the asset model.</p> <p>This object doesn't include properties that you define in composite models. You can find composite model properties in the <code>assetModelCompositeModels</code> object.</p>",
-        "UpdateAssetModelCompositeModelRequest$assetModelCompositeModelProperties": "<p>The property definitions of the composite model. For more information, see &lt;LINK&gt;.</p> <p>You can specify up to 200 properties per composite model. For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/quotas.html\">Quotas</a> in the <i>IoT SiteWise User Guide</i>.</p>",
+        "UpdateAssetModelCompositeModelRequest$assetModelCompositeModelProperties": "<p>The property definitions of the composite model. For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/custom-composite-models.html#inline-composite-models\"> Inline custom composite models</a> in the <i>IoT SiteWise User Guide</i>.</p> <p>You can specify up to 200 properties per composite model. For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/quotas.html\">Quotas</a> in the <i>IoT SiteWise User Guide</i>.</p>",
         "UpdateAssetModelRequest$assetModelProperties": "<p>The updated property definitions of the asset model. For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/asset-properties.html\">Asset properties</a> in the <i>IoT SiteWise User Guide</i>.</p> <p>You can specify up to 200 properties per asset model. For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/quotas.html\">Quotas</a> in the <i>IoT SiteWise User Guide</i>.</p>"
       }
     },
@@ -438,7 +438,7 @@
       "base": null,
       "refs": {
         "AssetModelCompositeModelDefinition$properties": "<p>The asset property definitions for this composite model.</p>",
-        "CreateAssetModelCompositeModelRequest$assetModelCompositeModelProperties": "<p>The property definitions of the composite model. For more information, see &lt;LINK&gt;.</p> <p>You can specify up to 200 properties per composite model. For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/quotas.html\">Quotas</a> in the <i>IoT SiteWise User Guide</i>.</p>",
+        "CreateAssetModelCompositeModelRequest$assetModelCompositeModelProperties": "<p>The property definitions of the composite model. For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/custom-composite-models.html#inline-composite-models\"> Inline custom composite models</a> in the <i>IoT SiteWise User Guide</i>.</p> <p>You can specify up to 200 properties per composite model. For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/quotas.html\">Quotas</a> in the <i>IoT SiteWise User Guide</i>.</p>",
         "CreateAssetModelRequest$assetModelProperties": "<p>The property definitions of the asset model. For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/asset-properties.html\">Asset properties</a> in the <i>IoT SiteWise User Guide</i>.</p> <p>You can specify up to 200 properties per asset model. For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/quotas.html\">Quotas</a> in the <i>IoT SiteWise User Guide</i>.</p>"
       }
     },
@@ -1253,7 +1253,7 @@
         "AssociateTimeSeriesToAssetPropertyRequest$propertyId": "<p>The ID of the asset property. This can be either the actual ID in UUID format, or else <code>externalId:</code> followed by the external ID, if it has one. For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/object-ids.html#external-id-references\">Referencing objects with external IDs</a> in the <i>IoT SiteWise User Guide</i>.</p>",
         "CreateAssetModelCompositeModelRequest$assetModelId": "<p>The ID of the asset model this composite model is a part of.</p>",
         "CreateAssetModelCompositeModelRequest$parentAssetModelCompositeModelId": "<p>The ID of the parent composite model in this asset model relationship.</p>",
-        "CreateAssetModelCompositeModelRequest$composedAssetModelId": "<p>The ID of a composite model on this asset.</p>",
+        "CreateAssetModelCompositeModelRequest$composedAssetModelId": "<p>The ID of a component model which is reused to create this composite model.</p>",
         "CreateAssetRequest$assetModelId": "<p>The ID of the asset model from which to create the asset. This can be either the actual ID in UUID format, or else <code>externalId:</code> followed by the external ID, if it has one. For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/object-ids.html#external-id-references\">Referencing objects with external IDs</a> in the <i>IoT SiteWise User Guide</i>.</p>",
         "DeleteAssetModelCompositeModelRequest$assetModelId": "<p>The ID of the asset model, in UUID format.</p>",
         "DeleteAssetModelCompositeModelRequest$assetModelCompositeModelId": "<p>The ID of a composite model on this asset model.</p>",
@@ -1603,7 +1603,7 @@
         "AssetCompositeModelSummary$description": "<p>A description of the composite model that this summary describes.</p>",
         "AssetModelCompositeModel$description": "<p>The description of the composite model.</p>",
         "AssetModelCompositeModelDefinition$description": "<p>The description of the composite model.</p>",
-        "AssetModelCompositeModelSummary$description": "<p>The description of the the composite model that this summary describes..</p>",
+        "AssetModelCompositeModelSummary$description": "<p>The description of the composite model that this summary describes..</p>",
         "AssetModelSummary$description": "<p>The asset model description.</p>",
         "AssetSummary$description": "<p>A description for the asset.</p>",
         "AssociatedAssetsSummary$description": "<p>A description for the asset.</p>",
@@ -1897,6 +1897,15 @@
         "GatewayCapabilitySummaries$member": null
       }
     },
+    "GatewayName": {
+      "base": null,
+      "refs": {
+        "CreateGatewayRequest$gatewayName": "<p>A unique name for the gateway.</p>",
+        "DescribeGatewayResponse$gatewayName": "<p>The name of the gateway.</p>",
+        "GatewaySummary$gatewayName": "<p>The name of the gateway.</p>",
+        "UpdateGatewayRequest$gatewayName": "<p>A unique name for the gateway.</p>"
+      }
+    },
     "GatewayPlatform": {
       "base": "<p>Contains a gateway's platform information.</p>",
       "refs": {
@@ -2016,7 +2025,7 @@
         "AssetIDs$member": null,
         "AssetModelCompositeModelDefinition$id": "<p>The ID to assign to the composite model, if desired. IoT SiteWise automatically generates a unique ID for you, so this parameter is never required. However, if you prefer to supply your own ID instead, you can specify it here in UUID format. If you specify your own ID, it must be globally unique.</p>",
         "AssetModelCompositeModelPathSegment$id": "<p>The ID of the path segment.</p>",
-        "AssetModelCompositeModelSummary$id": "<p>The ID of the the composite model that this summary describes..</p>",
+        "AssetModelCompositeModelSummary$id": "<p>The ID of the composite model that this summary describes..</p>",
         "AssetModelHierarchyDefinition$id": "<p>The ID to assign to the asset model hierarchy, if desired. IoT SiteWise automatically generates a unique ID for you, so this parameter is never required. However, if you prefer to supply your own ID instead, you can specify it here in UUID format. If you specify your own ID, it must be globally unique.</p>",
         "AssetModelPropertyDefinition$id": "<p>The ID to assign to the asset model property, if desired. IoT SiteWise automatically generates a unique ID for you, so this parameter is never required. However, if you prefer to supply your own ID instead, you can specify it here in UUID format. If you specify your own ID, it must be globally unique.</p>",
         "AssetModelPropertyPathSegment$id": "<p>The ID of the path segment.</p>",
@@ -2237,6 +2246,12 @@
       "refs": {
       }
     },
+    "IotCoreThingName": {
+      "base": null,
+      "refs": {
+        "SiemensIE$iotCoreThingName": "<p>The name of the IoT Thing for your SiteWise Edge gateway.</p>"
+      }
+    },
     "JobConfiguration": {
       "base": "<p>Contains the configuration information of a job, such as the file format used to save data in Amazon S3.</p>",
       "refs": {
@@ -2611,8 +2626,8 @@
         "AssetModelCompositeModelDefinition$name": "<p>The name of the composite model.</p>",
         "AssetModelCompositeModelDefinition$type": "<p>The type of the composite model. For alarm composite models, this type is <code>AWS/ALARM</code>.</p>",
         "AssetModelCompositeModelPathSegment$name": "<p>The name of the path segment.</p>",
-        "AssetModelCompositeModelSummary$name": "<p>The name of the the composite model that this summary describes..</p>",
-        "AssetModelCompositeModelSummary$type": "<p>The type of asset model.</p> <ul> <li> <p> <b>ASSET_MODEL</b> – (default) An asset model that you can use to create assets. Can't be included as a component in another asset model.</p> </li> <li> <p> <b>COMPONENT_MODEL</b> – A reusable component that you can include in the composite models of other asset models. You can't create assets directly from this type of asset model. </p> </li> </ul>",
+        "AssetModelCompositeModelSummary$name": "<p>The name of the composite model that this summary describes..</p>",
+        "AssetModelCompositeModelSummary$type": "<p>The composite model type. Valid values are <code>AWS/ALARM</code>, <code>CUSTOM</code>, or <code> AWS/L4E_ANOMALY</code>.</p>",
         "AssetModelHierarchy$name": "<p>The name of the asset model hierarchy that you specify by using the <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_CreateAssetModel.html\">CreateAssetModel</a> or <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_UpdateAssetModel.html\">UpdateAssetModel</a> API operation.</p>",
         "AssetModelHierarchyDefinition$name": "<p>The name of the asset model hierarchy definition (as specified in the <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_CreateAssetModel.html\">CreateAssetModel</a> or <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_UpdateAssetModel.html\">UpdateAssetModel</a> API operation).</p>",
         "AssetModelProperty$name": "<p>The name of the asset model property.</p>",
@@ -2631,14 +2646,13 @@
         "CompositeModelProperty$name": "<p>The name of the property.</p>",
         "CompositeModelProperty$type": "<p>The type of the composite model that defines this property.</p>",
         "CompositionRelationshipSummary$assetModelCompositeModelType": "<p>The composite model type. Valid values are <code>AWS/ALARM</code>, <code>CUSTOM</code>, or <code> AWS/L4E_ANOMALY</code>.</p>",
-        "CreateAssetModelCompositeModelRequest$assetModelCompositeModelName": "<p>A unique, friendly name for the composite model.</p>",
+        "CreateAssetModelCompositeModelRequest$assetModelCompositeModelName": "<p>A unique name for the composite model.</p>",
         "CreateAssetModelCompositeModelRequest$assetModelCompositeModelType": "<p>The composite model type. Valid values are <code>AWS/ALARM</code>, <code>CUSTOM</code>, or <code> AWS/L4E_ANOMALY</code>.</p>",
-        "CreateAssetModelRequest$assetModelName": "<p>A unique, friendly name for the asset model.</p>",
+        "CreateAssetModelRequest$assetModelName": "<p>A unique name for the asset model.</p>",
         "CreateAssetRequest$assetName": "<p>A friendly name for the asset.</p>",
         "CreateBulkImportJobRequest$jobName": "<p>The unique name that helps identify the job request.</p>",
         "CreateBulkImportJobResponse$jobName": "<p>The unique name that helps identify the job request.</p>",
         "CreateDashboardRequest$dashboardName": "<p>A friendly name for the dashboard.</p>",
-        "CreateGatewayRequest$gatewayName": "<p>A unique, friendly name for the gateway.</p>",
         "CreatePortalRequest$portalName": "<p>A friendly name for the portal.</p>",
         "CreateProjectRequest$projectName": "<p>A friendly name for the project.</p>",
         "DashboardSummary$name": "<p>The name of the dashboard</p>",
@@ -2651,21 +2665,18 @@
         "DescribeAssetResponse$assetName": "<p>The name of the asset.</p>",
         "DescribeBulkImportJobResponse$jobName": "<p>The unique name that helps identify the job request.</p>",
         "DescribeDashboardResponse$dashboardName": "<p>The name of the dashboard.</p>",
-        "DescribeGatewayResponse$gatewayName": "<p>The name of the gateway.</p>",
         "DescribePortalResponse$portalName": "<p>The name of the portal.</p>",
         "DescribeProjectResponse$projectName": "<p>The name of the project.</p>",
         "DescribeTimeSeriesResponse$dataTypeSpec": "<p>The data type of the structure for this time series. This parameter is required for time series that have the <code>STRUCT</code> data type.</p> <p>The options for this parameter depend on the type of the composite model in which you created the asset property that is associated with your time series. Use <code>AWS/ALARM_STATE</code> for alarm state in alarm composite models.</p>",
-        "GatewaySummary$gatewayName": "<p>The name of the asset.</p>",
         "JobSummary$name": "<p>The unique name that helps identify the job request.</p>",
         "PortalSummary$name": "<p>The name of the portal.</p>",
         "ProjectSummary$name": "<p>The name of the project.</p>",
         "Property$name": "<p>The name of the property.</p>",
         "TimeSeriesSummary$dataTypeSpec": "<p>The data type of the structure for this time series. This parameter is required for time series that have the <code>STRUCT</code> data type.</p> <p>The options for this parameter depend on the type of the composite model in which you created the asset property that is associated with your time series. Use <code>AWS/ALARM_STATE</code> for alarm state in alarm composite models.</p>",
-        "UpdateAssetModelCompositeModelRequest$assetModelCompositeModelName": "<p>A unique, friendly name for the composite model.</p>",
-        "UpdateAssetModelRequest$assetModelName": "<p>A unique, friendly name for the asset model.</p>",
+        "UpdateAssetModelCompositeModelRequest$assetModelCompositeModelName": "<p>A unique name for the composite model.</p>",
+        "UpdateAssetModelRequest$assetModelName": "<p>A unique name for the asset model.</p>",
         "UpdateAssetRequest$assetName": "<p>A friendly name for the asset.</p>",
         "UpdateDashboardRequest$dashboardName": "<p>A new friendly name for the dashboard.</p>",
-        "UpdateGatewayRequest$gatewayName": "<p>A unique, friendly name for the gateway.</p>",
         "UpdatePortalRequest$portalName": "<p>A new friendly name for the portal.</p>",
         "UpdateProjectRequest$projectName": "<p>A new friendly name for the project.</p>"
       }
@@ -2913,7 +2924,7 @@
     "PropertyValueIntegerValue": {
       "base": null,
       "refs": {
-        "Variant$integerValue": "<p>Asset property data of type integer (number that's greater than or equal to zero).</p>"
+        "Variant$integerValue": "<p>Asset property data of type integer (whole number).</p>"
       }
     },
     "PropertyValueStringValue": {
@@ -3083,6 +3094,12 @@
       "refs": {
       }
     },
+    "SiemensIE": {
+      "base": "<p>Contains details for a SiteWise Edge gateway that runs on a Siemens Industrial Edge Device.</p>",
+      "refs": {
+        "GatewayPlatform$siemensIE": "<p>A SiteWise Edge gateway that runs on a Siemens Industrial Edge Device.</p>"
+      }
+    },
     "StorageType": {
       "base": null,
       "refs": {
diff --git a/models/apis/mediapackagev2/2022-12-25/api-2.json b/models/apis/mediapackagev2/2022-12-25/api-2.json
index 9f8d44a..115c205 100644
--- a/models/apis/mediapackagev2/2022-12-25/api-2.json
+++ b/models/apis/mediapackagev2/2022-12-25/api-2.json
@@ -2,7 +2,6 @@
   "version":"2.0",
   "metadata":{
     "apiVersion":"2022-12-25",
-    "auth":["aws.auth#sigv4"],
     "endpointPrefix":"mediapackagev2",
     "protocol":"rest-json",
     "protocols":["rest-json"],
@@ -975,7 +974,8 @@
         "CLEAR_KEY_AES_128",
         "FAIRPLAY",
         "PLAYREADY",
-        "WIDEVINE"
+        "WIDEVINE",
+        "IRDETO"
       ]
     },
     "Encryption":{
diff --git a/models/apis/medical-imaging/2023-07-19/api-2.json b/models/apis/medical-imaging/2023-07-19/api-2.json
index 552ee71..8bd53d8 100644
--- a/models/apis/medical-imaging/2023-07-19/api-2.json
+++ b/models/apis/medical-imaging/2023-07-19/api-2.json
@@ -2,6 +2,7 @@
   "version":"2.0",
   "metadata":{
     "apiVersion":"2023-07-19",
+    "auth":["aws.auth#sigv4"],
     "endpointPrefix":"medical-imaging",
     "protocol":"rest-json",
     "protocols":["rest-json"],
@@ -371,6 +372,10 @@
       "min":12,
       "pattern":"\\d+"
     },
+    "Boolean":{
+      "type":"boolean",
+      "box":true
+    },
     "ClientToken":{
       "type":"string",
       "max":64,
@@ -389,6 +394,12 @@
       },
       "exception":true
     },
+    "CopiableAttributes":{
+      "type":"string",
+      "max":260000,
+      "min":1,
+      "sensitive":true
+    },
     "CopyDestinationImageSet":{
       "type":"structure",
       "required":[
@@ -442,7 +453,12 @@
           "location":"uri",
           "locationName":"sourceImageSetId"
         },
-        "copyImageSetInformation":{"shape":"CopyImageSetInformation"}
+        "copyImageSetInformation":{"shape":"CopyImageSetInformation"},
+        "force":{
+          "shape":"Boolean",
+          "location":"querystring",
+          "locationName":"force"
+        }
       },
       "payload":"copyImageSetInformation"
     },
@@ -463,7 +479,8 @@
       "type":"structure",
       "required":["latestVersionId"],
       "members":{
-        "latestVersionId":{"shape":"ImageSetExternalVersionId"}
+        "latestVersionId":{"shape":"ImageSetExternalVersionId"},
+        "DICOMCopies":{"shape":"MetadataCopies"}
       }
     },
     "CopySourceImageSetProperties":{
@@ -508,7 +525,7 @@
     },
     "DICOMAccessionNumber":{
       "type":"string",
-      "max":16,
+      "max":256,
       "min":0,
       "sensitive":true
     },
@@ -572,7 +589,7 @@
     },
     "DICOMNumberOfStudyRelatedSeries":{
       "type":"integer",
-      "max":10000,
+      "max":1000000,
       "min":0
     },
     "DICOMPatientBirthDate":{
@@ -583,7 +600,7 @@
     },
     "DICOMPatientId":{
       "type":"string",
-      "max":64,
+      "max":256,
       "min":0,
       "sensitive":true
     },
@@ -607,9 +624,9 @@
     },
     "DICOMSeriesInstanceUID":{
       "type":"string",
-      "max":64,
+      "max":256,
       "min":0,
-      "pattern":"(?:[1-9][0-9]*|0)(\\.(?:[1-9][0-9]*|0))*",
+      "pattern":"(?:[0-9][0-9]*|0)(\\.(?:[1-9][0-9]*|0))*",
       "sensitive":true
     },
     "DICOMSeriesModality":{
@@ -653,9 +670,9 @@
     },
     "DICOMStudyInstanceUID":{
       "type":"string",
-      "max":64,
+      "max":256,
       "min":0,
-      "pattern":"(?:[1-9][0-9]*|0)(\\.(?:[1-9][0-9]*|0))*",
+      "pattern":"(?:[0-9][0-9]*|0)(\\.(?:[1-9][0-9]*|0))*",
       "sensitive":true
     },
     "DICOMStudyTime":{
@@ -969,7 +986,8 @@
         "updatedAt":{"shape":"Date"},
         "deletedAt":{"shape":"Date"},
         "message":{"shape":"Message"},
-        "imageSetArn":{"shape":"Arn"}
+        "imageSetArn":{"shape":"Arn"},
+        "overrides":{"shape":"Overrides"}
       }
     },
     "ImageFrameId":{
@@ -1010,7 +1028,8 @@
         "createdAt":{"shape":"Date"},
         "updatedAt":{"shape":"Date"},
         "deletedAt":{"shape":"Date"},
-        "message":{"shape":"Message"}
+        "message":{"shape":"Message"},
+        "overrides":{"shape":"Overrides"}
       }
     },
     "ImageSetPropertiesList":{
@@ -1236,10 +1255,18 @@
       "min":1,
       "pattern":"[\\w -:]+"
     },
+    "MetadataCopies":{
+      "type":"structure",
+      "required":["copiableAttributes"],
+      "members":{
+        "copiableAttributes":{"shape":"CopiableAttributes"}
+      }
+    },
     "MetadataUpdates":{
       "type":"structure",
       "members":{
-        "DICOMUpdates":{"shape":"DICOMUpdates"}
+        "DICOMUpdates":{"shape":"DICOMUpdates"},
+        "revertToVersionId":{"shape":"ImageSetExternalVersionId"}
       },
       "union":true
     },
@@ -1256,6 +1283,12 @@
         "BETWEEN"
       ]
     },
+    "Overrides":{
+      "type":"structure",
+      "members":{
+        "forced":{"shape":"Boolean"}
+      }
+    },
     "PayloadBlob":{
       "type":"blob",
       "streaming":true
@@ -1549,6 +1582,11 @@
           "location":"querystring",
           "locationName":"latestVersion"
         },
+        "force":{
+          "shape":"Boolean",
+          "location":"querystring",
+          "locationName":"force"
+        },
         "updateImageSetMetadataUpdates":{"shape":"MetadataUpdates"}
       },
       "payload":"updateImageSetMetadataUpdates"
diff --git a/models/apis/medical-imaging/2023-07-19/docs-2.json b/models/apis/medical-imaging/2023-07-19/docs-2.json
index 29cd9ec..dff18e7 100644
--- a/models/apis/medical-imaging/2023-07-19/docs-2.json
+++ b/models/apis/medical-imaging/2023-07-19/docs-2.json
@@ -46,6 +46,14 @@
         "StartDICOMImportJobRequest$inputOwnerAccountId": "<p>The account ID of the source S3 bucket owner.</p>"
       }
     },
+    "Boolean": {
+      "base": null,
+      "refs": {
+        "CopyImageSetRequest$force": "<p>Setting this flag will force the <code>CopyImageSet</code> operation, even if Patient, Study, or Series level metadata are mismatched across the <code>sourceImageSet</code> and <code>destinationImageSet</code>.</p>",
+        "Overrides$forced": "<p>Setting this flag will force the <code>CopyImageSet</code> and <code>UpdateImageSetMetadata</code> operations, even if Patient, Study, or Series level metadata are mismatched.</p>",
+        "UpdateImageSetMetadataRequest$force": "<p>Setting this flag will force the <code>UpdateImageSetMetadata</code> operation for the following attributes:</p> <ul> <li> <p> <code>Tag.StudyInstanceUID</code>, <code>Tag.SeriesInstanceUID</code>, <code>Tag.SOPInstanceUID</code>, and <code>Tag.StudyID</code> </p> </li> <li> <p>Adding, removing, or updating private tags for an individual SOP Instance</p> </li> </ul>"
+      }
+    },
     "ClientToken": {
       "base": null,
       "refs": {
@@ -58,6 +66,12 @@
       "refs": {
       }
     },
+    "CopiableAttributes": {
+      "base": null,
+      "refs": {
+        "MetadataCopies$copiableAttributes": "<p>The JSON string used to specify a subset of SOP Instances to copy from source to destination image set.</p>"
+      }
+    },
     "CopyDestinationImageSet": {
       "base": "<p>Copy the destination image set.</p>",
       "refs": {
@@ -442,6 +456,7 @@
         "GetImageSetRequest$versionId": "<p>The image set version identifier.</p>",
         "GetImageSetResponse$versionId": "<p>The image set version identifier.</p>",
         "ImageSetProperties$versionId": "<p>The image set version identifier.</p>",
+        "MetadataUpdates$revertToVersionId": "<p>Specifies the previous image set version ID to revert the current image set back to.</p> <note> <p>You must provide either <code>revertToVersionId</code> or <code>DICOMUpdates</code> in your request. A <code>ValidationException</code> error is thrown if both parameters are provided at the same time.</p> </note>",
         "UpdateImageSetMetadataRequest$latestVersionId": "<p>The latest image set version identifier.</p>",
         "UpdateImageSetMetadataResponse$latestVersionId": "<p>The latest image set version identifier.</p>"
       }
@@ -630,6 +645,12 @@
         "UpdateImageSetMetadataResponse$message": "<p>The error message thrown if an update image set metadata action fails.</p>"
       }
     },
+    "MetadataCopies": {
+      "base": "<p>Contains copiable <code>Attributes</code> structure and wraps information related to specific copy use cases. For example, when copying subsets.</p>",
+      "refs": {
+        "CopySourceImageSetInformation$DICOMCopies": "<p>Contains <code>MetadataCopies</code> structure and wraps information related to specific copy use cases. For example, when copying subsets.</p>"
+      }
+    },
     "MetadataUpdates": {
       "base": "<p>Contains DICOMUpdates.</p>",
       "refs": {
@@ -655,6 +676,13 @@
         "SearchFilter$operator": "<p>The search filter operator for <code>imageSetDateTime</code>.</p>"
       }
     },
+    "Overrides": {
+      "base": "<p>Specifies the overrides used in image set modification calls to <code>CopyImageSet</code> and <code>UpdateImageSetMetadata</code>.</p>",
+      "refs": {
+        "GetImageSetResponse$overrides": "<p>This object contains the details of any overrides used while creating a specific image set version. If an image set was copied or updated using the <code>force</code> flag, this object will contain the <code>forced</code> flag.</p>",
+        "ImageSetProperties$overrides": "<p>Contains details on overrides used when creating the returned version of an image set. For example, if <code>forced</code> exists, the <code>forced</code> flag was used when creating the image set.</p>"
+      }
+    },
     "PayloadBlob": {
       "base": null,
       "refs": {
diff --git a/models/apis/pinpoint-sms-voice-v2/2022-03-31/api-2.json b/models/apis/pinpoint-sms-voice-v2/2022-03-31/api-2.json
index 71341cc..46a7ad9 100644
--- a/models/apis/pinpoint-sms-voice-v2/2022-03-31/api-2.json
+++ b/models/apis/pinpoint-sms-voice-v2/2022-03-31/api-2.json
@@ -2,9 +2,11 @@
   "version":"2.0",
   "metadata":{
     "apiVersion":"2022-03-31",
+    "auth":["aws.auth#sigv4"],
     "endpointPrefix":"sms-voice",
     "jsonVersion":"1.0",
     "protocol":"json",
+    "protocols":["json"],
     "serviceFullName":"Amazon Pinpoint SMS Voice V2",
     "serviceId":"Pinpoint SMS Voice V2",
     "signatureVersion":"v4",
diff --git a/models/apis/pinpoint-sms-voice-v2/2022-03-31/docs-2.json b/models/apis/pinpoint-sms-voice-v2/2022-03-31/docs-2.json
index e6487ac..37eb826 100644
--- a/models/apis/pinpoint-sms-voice-v2/2022-03-31/docs-2.json
+++ b/models/apis/pinpoint-sms-voice-v2/2022-03-31/docs-2.json
@@ -1,12 +1,12 @@
 {
   "version": "2.0",
-  "service": "<p>Welcome to the <i>Amazon Pinpoint SMS and Voice, version 2 API Reference</i>. This guide provides information about Amazon Pinpoint SMS and Voice, version 2 API resources, including supported HTTP methods, parameters, and schemas.</p> <p>Amazon Pinpoint is an Amazon Web Services service that you can use to engage with your recipients across multiple messaging channels. The Amazon Pinpoint SMS and Voice, version 2 API provides programmatic access to options that are unique to the SMS and voice channels. Amazon Pinpoint SMS and Voice, version 2 resources such as phone numbers, sender IDs, and opt-out lists can be used by the Amazon Pinpoint API.</p> <p>If you're new to Amazon Pinpoint SMS, it's also helpful to review the <a href=\"https://docs.aws.amazon.com/sms-voice/latest/userguide/what-is-service.html\"> Amazon Pinpoint SMS User Guide</a>. The <i>Amazon Pinpoint Developer Guide</i> provides tutorials, code samples, and procedures that demonstrate how to use Amazon Pinpoint SMS features programmatically and how to integrate Amazon Pinpoint functionality into mobile apps and other types of applications. The guide also provides key information, such as Amazon Pinpoint integration with other Amazon Web Services services, and the quotas that apply to use of the service.</p> <p> <b>Regional availability</b> </p> <p>The <i>Amazon Pinpoint SMS and Voice, version 2 API Reference</i> is available in several Amazon Web Services Regions and it provides an endpoint for each of these Regions. For a list of all the Regions and endpoints where the API is currently available, see <a href=\"https://docs.aws.amazon.com/general/latest/gr/rande.html#pinpoint_region\">Amazon Web Services Service Endpoints</a> and <a href=\"https://docs.aws.amazon.com/general/latest/gr/pinpoint.html\">Amazon Pinpoint endpoints and quotas</a> in the Amazon Web Services General Reference. To learn more about Amazon Web Services Regions, see <a href=\"https://docs.aws.amazon.com/general/latest/gr/rande-manage.html\">Managing Amazon Web Services Regions</a> in the Amazon Web Services General Reference.</p> <p>In each Region, Amazon Web Services maintains multiple Availability Zones. These Availability Zones are physically isolated from each other, but are united by private, low-latency, high-throughput, and highly redundant network connections. These Availability Zones enable us to provide very high levels of availability and redundancy, while also minimizing latency. To learn more about the number of Availability Zones that are available in each Region, see <a href=\"https://aws.amazon.com/about-aws/global-infrastructure/\">Amazon Web Services Global Infrastructure.</a> </p>",
+  "service": "<p>Welcome to the <i>AWS End User Messaging SMS and Voice, version 2 API Reference</i>. This guide provides information about AWS End User Messaging SMS and Voice, version 2 API resources, including supported HTTP methods, parameters, and schemas.</p> <p>Amazon Pinpoint is an Amazon Web Services service that you can use to engage with your recipients across multiple messaging channels. The AWS End User Messaging SMS and Voice, version 2 API provides programmatic access to options that are unique to the SMS and voice channels. AWS End User Messaging SMS and Voice, version 2 resources such as phone numbers, sender IDs, and opt-out lists can be used by the Amazon Pinpoint API.</p> <p>If you're new to AWS End User Messaging SMS and Voice, it's also helpful to review the <a href=\"https://docs.aws.amazon.com/sms-voice/latest/userguide/what-is-service.html\"> AWS End User Messaging SMS User Guide</a>. The <i>AWS End User Messaging SMS User Guide </i> provides tutorials, code samples, and procedures that demonstrate how to use AWS End User Messaging SMS and Voice features programmatically and how to integrate functionality into mobile apps and other types of applications. The guide also provides key information, such as AWS End User Messaging SMS and Voice integration with other Amazon Web Services services, and the quotas that apply to use of the service.</p> <p> <b>Regional availability</b> </p> <p>The <i>AWS End User Messaging SMS and Voice version 2 API Reference</i> is available in several Amazon Web Services Regions and it provides an endpoint for each of these Regions. For a list of all the Regions and endpoints where the API is currently available, see <a href=\"https://docs.aws.amazon.com/general/latest/gr/rande.html#pinpoint_region\">Amazon Web Services Service Endpoints</a> and <a href=\"https://docs.aws.amazon.com/general/latest/gr/pinpoint.html\">Amazon Pinpoint endpoints and quotas</a> in the Amazon Web Services General Reference. To learn more about Amazon Web Services Regions, see <a href=\"https://docs.aws.amazon.com/general/latest/gr/rande-manage.html\">Managing Amazon Web Services Regions</a> in the Amazon Web Services General Reference.</p> <p>In each Region, Amazon Web Services maintains multiple Availability Zones. These Availability Zones are physically isolated from each other, but are united by private, low-latency, high-throughput, and highly redundant network connections. These Availability Zones enable us to provide very high levels of availability and redundancy, while also minimizing latency. To learn more about the number of Availability Zones that are available in each Region, see <a href=\"https://aws.amazon.com/about-aws/global-infrastructure/\">Amazon Web Services Global Infrastructure.</a> </p>",
   "operations": {
     "AssociateOriginationIdentity": "<p>Associates the specified origination identity with a pool.</p> <p>If the origination identity is a phone number and is already associated with another pool, an error is returned. A sender ID can be associated with multiple pools.</p> <p>If the origination identity configuration doesn't match the pool's configuration, an error is returned.</p>",
     "AssociateProtectConfiguration": "<p>Associate a protect configuration with a configuration set. This replaces the configuration sets current protect configuration. A configuration set can only be associated with one protect configuration at a time. A protect configuration can be associated with multiple configuration sets.</p>",
     "CreateConfigurationSet": "<p>Creates a new configuration set. After you create the configuration set, you can add one or more event destinations to it.</p> <p>A configuration set is a set of rules that you apply to the SMS and voice messages that you send.</p> <p>When you send a message, you can optionally specify a single configuration set.</p>",
-    "CreateEventDestination": "<p>Creates a new event destination in a configuration set.</p> <p>An event destination is a location where you send message events. The event options are Amazon CloudWatch, Amazon Kinesis Data Firehose, or Amazon SNS. For example, when a message is delivered successfully, you can send information about that event to an event destination, or send notifications to endpoints that are subscribed to an Amazon SNS topic.</p> <p>Each configuration set can contain between 0 and 5 event destinations. Each event destination can contain a reference to a single destination, such as a CloudWatch or Kinesis Data Firehose destination.</p>",
-    "CreateOptOutList": "<p>Creates a new opt-out list.</p> <p>If the opt-out list name already exists, an error is returned.</p> <p>An opt-out list is a list of phone numbers that are opted out, meaning you can't send SMS or voice messages to them. If end user replies with the keyword \"STOP,\" an entry for the phone number is added to the opt-out list. In addition to STOP, your recipients can use any supported opt-out keyword, such as CANCEL or OPTOUT. For a list of supported opt-out keywords, see <a href=\"https://docs.aws.amazon.com/pinpoint/latest/userguide/channels-sms-manage.html#channels-sms-manage-optout\"> SMS opt out </a> in the <i>Amazon Pinpoint User Guide</i>.</p>",
+    "CreateEventDestination": "<p>Creates a new event destination in a configuration set.</p> <p>An event destination is a location where you send message events. The event options are Amazon CloudWatch, Amazon Data Firehose, or Amazon SNS. For example, when a message is delivered successfully, you can send information about that event to an event destination, or send notifications to endpoints that are subscribed to an Amazon SNS topic.</p> <p>Each configuration set can contain between 0 and 5 event destinations. Each event destination can contain a reference to a single destination, such as a CloudWatch or Firehose destination.</p>",
+    "CreateOptOutList": "<p>Creates a new opt-out list.</p> <p>If the opt-out list name already exists, an error is returned.</p> <p>An opt-out list is a list of phone numbers that are opted out, meaning you can't send SMS or voice messages to them. If end user replies with the keyword \"STOP,\" an entry for the phone number is added to the opt-out list. In addition to STOP, your recipients can use any supported opt-out keyword, such as CANCEL or OPTOUT. For a list of supported opt-out keywords, see <a href=\"https://docs.aws.amazon.com/pinpoint/latest/userguide/channels-sms-manage.html#channels-sms-manage-optout\"> SMS opt out </a> in the <i>AWS End User Messaging SMS User Guide</i>.</p>",
     "CreatePool": "<p>Creates a new pool and associates the specified origination identity to the pool. A pool can include one or more phone numbers and SenderIds that are associated with your Amazon Web Services account.</p> <p>The new pool inherits its configuration from the specified origination identity. This includes keywords, message type, opt-out list, two-way configuration, and self-managed opt-out configuration. Deletion protection isn't inherited from the origination identity and defaults to false.</p> <p>If the origination identity is a phone number and is already associated with another pool, an error is returned. A sender ID can be associated with multiple pools.</p>",
     "CreateProtectConfiguration": "<p>Create a new protect configuration. By default all country rule sets for each capability are set to <code>ALLOW</code>. Update the country rule sets using <code>UpdateProtectConfigurationCountryRuleSet</code>. A protect configurations name is stored as a Tag with the key set to <code>Name</code> and value as the name of the protect configuration.</p>",
     "CreateRegistration": "<p>Creates a new registration based on the <b>RegistrationType</b> field. </p>",
@@ -19,7 +19,7 @@
     "DeleteDefaultMessageType": "<p>Deletes an existing default message type on a configuration set.</p> <p> A message type is a type of messages that you plan to send. If you send account-related messages or time-sensitive messages such as one-time passcodes, choose <b>Transactional</b>. If you plan to send messages that contain marketing material or other promotional content, choose <b>Promotional</b>. This setting applies to your entire Amazon Web Services account. </p>",
     "DeleteDefaultSenderId": "<p>Deletes an existing default sender ID on a configuration set.</p> <p>A default sender ID is the identity that appears on recipients' devices when they receive SMS messages. Support for sender ID capabilities varies by country or region.</p>",
     "DeleteEventDestination": "<p>Deletes an existing event destination.</p> <p>An event destination is a location where you send response information about the messages that you send. For example, when a message is delivered successfully, you can send information about that event to an Amazon CloudWatch destination, or send notifications to endpoints that are subscribed to an Amazon SNS topic.</p>",
-    "DeleteKeyword": "<p>Deletes an existing keyword from an origination phone number or pool.</p> <p>A keyword is a word that you can search for on a particular phone number or pool. It is also a specific word or phrase that an end user can send to your number to elicit a response, such as an informational message or a special offer. When your number receives a message that begins with a keyword, Amazon Pinpoint responds with a customizable message.</p> <p>Keywords \"HELP\" and \"STOP\" can't be deleted or modified.</p>",
+    "DeleteKeyword": "<p>Deletes an existing keyword from an origination phone number or pool.</p> <p>A keyword is a word that you can search for on a particular phone number or pool. It is also a specific word or phrase that an end user can send to your number to elicit a response, such as an informational message or a special offer. When your number receives a message that begins with a keyword, AWS End User Messaging SMS and Voice responds with a customizable message.</p> <p>Keywords \"HELP\" and \"STOP\" can't be deleted or modified.</p>",
     "DeleteMediaMessageSpendLimitOverride": "<p>Deletes an account-level monthly spending limit override for sending multimedia messages (MMS). Deleting a spend limit override will set the <code>EnforcedLimit</code> to equal the <code>MaxLimit</code>, which is controlled by Amazon Web Services. For more information on spend limits (quotas) see <a href=\"https://docs.aws.amazon.com/sms-voice/latest/userguide/quotas.html\">Quotas for Server Migration Service</a> in the <i>Server Migration Service User Guide</i>.</p>",
     "DeleteOptOutList": "<p>Deletes an existing opt-out list. All opted out phone numbers in the opt-out list are deleted.</p> <p>If the specified opt-out list name doesn't exist or is in-use by an origination phone number or pool, an error is returned.</p>",
     "DeleteOptedOutNumber": "<p>Deletes an existing opted out destination phone number from the specified opt-out list.</p> <p>Each destination phone number can only be deleted once every 30 days.</p> <p>If the specified destination phone number doesn't exist or if the opt-out list doesn't exist, an error is returned.</p>",
@@ -28,13 +28,13 @@
     "DeleteRegistration": "<p>Permanently delete an existing registration from your account.</p>",
     "DeleteRegistrationAttachment": "<p>Permanently delete the specified registration attachment.</p>",
     "DeleteRegistrationFieldValue": "<p>Delete the value in a registration form field.</p>",
-    "DeleteTextMessageSpendLimitOverride": "<p>Deletes an account-level monthly spending limit override for sending text messages. Deleting a spend limit override will set the <code>EnforcedLimit</code> to equal the <code>MaxLimit</code>, which is controlled by Amazon Web Services. For more information on spend limits (quotas) see <a href=\"https://docs.aws.amazon.com/pinpoint/latest/developerguide/quotas.html\">Amazon Pinpoint quotas </a> in the <i>Amazon Pinpoint Developer Guide</i>.</p>",
+    "DeleteTextMessageSpendLimitOverride": "<p>Deletes an account-level monthly spending limit override for sending text messages. Deleting a spend limit override will set the <code>EnforcedLimit</code> to equal the <code>MaxLimit</code>, which is controlled by Amazon Web Services. For more information on spend limits (quotas) see <a href=\"https://docs.aws.amazon.com/sms-voice/latest/userguide/quotas.html\">Quotas </a> in the <i>AWS End User Messaging SMS User Guide</i>.</p>",
     "DeleteVerifiedDestinationNumber": "<p>Delete a verified destination phone number.</p>",
-    "DeleteVoiceMessageSpendLimitOverride": "<p>Deletes an account level monthly spend limit override for sending voice messages. Deleting a spend limit override sets the <code>EnforcedLimit</code> equal to the <code>MaxLimit</code>, which is controlled by Amazon Web Services. For more information on spending limits (quotas) see <a href=\"https://docs.aws.amazon.com/pinpoint/latest/developerguide/quotas.html\">Amazon Pinpoint quotas</a> in the <i>Amazon Pinpoint Developer Guide</i>.</p>",
-    "DescribeAccountAttributes": "<p>Describes attributes of your Amazon Web Services account. The supported account attributes include account tier, which indicates whether your account is in the sandbox or production environment. When you're ready to move your account out of the sandbox, create an Amazon Web Services Support case for a service limit increase request.</p> <p>New Amazon Pinpoint accounts are placed into an SMS or voice sandbox. The sandbox protects both Amazon Web Services end recipients and SMS or voice recipients from fraud and abuse. </p>",
-    "DescribeAccountLimits": "<p>Describes the current Amazon Pinpoint SMS Voice V2 resource quotas for your account. The description for a quota includes the quota name, current usage toward that quota, and the quota's maximum value.</p> <p>When you establish an Amazon Web Services account, the account has initial quotas on the maximum number of configuration sets, opt-out lists, phone numbers, and pools that you can create in a given Region. For more information see <a href=\"https://docs.aws.amazon.com/pinpoint/latest/developerguide/quotas.html\"> Amazon Pinpoint quotas </a> in the <i>Amazon Pinpoint Developer Guide</i>.</p>",
+    "DeleteVoiceMessageSpendLimitOverride": "<p>Deletes an account level monthly spend limit override for sending voice messages. Deleting a spend limit override sets the <code>EnforcedLimit</code> equal to the <code>MaxLimit</code>, which is controlled by Amazon Web Services. For more information on spending limits (quotas) see <a href=\"https://docs.aws.amazon.com/sms-voice/latest/userguide/quotas.html\">Quotas </a> in the <i>AWS End User Messaging SMS User Guide</i>.</p>",
+    "DescribeAccountAttributes": "<p>Describes attributes of your Amazon Web Services account. The supported account attributes include account tier, which indicates whether your account is in the sandbox or production environment. When you're ready to move your account out of the sandbox, create an Amazon Web Services Support case for a service limit increase request.</p> <p>New accounts are placed into an SMS or voice sandbox. The sandbox protects both Amazon Web Services end recipients and SMS or voice recipients from fraud and abuse. </p>",
+    "DescribeAccountLimits": "<p>Describes the current AWS End User Messaging SMS and Voice SMS Voice V2 resource quotas for your account. The description for a quota includes the quota name, current usage toward that quota, and the quota's maximum value.</p> <p>When you establish an Amazon Web Services account, the account has initial quotas on the maximum number of configuration sets, opt-out lists, phone numbers, and pools that you can create in a given Region. For more information see <a href=\"https://docs.aws.amazon.com/sms-voice/latest/userguide/quotas.html\">Quotas </a> in the <i>AWS End User Messaging SMS User Guide</i>.</p>",
     "DescribeConfigurationSets": "<p>Describes the specified configuration sets or all in your account.</p> <p>If you specify configuration set names, the output includes information for only the specified configuration sets. If you specify filters, the output includes information for only those configuration sets that meet the filter criteria. If you don't specify configuration set names or filters, the output includes information for all configuration sets.</p> <p>If you specify a configuration set name that isn't valid, an error is returned.</p>",
-    "DescribeKeywords": "<p>Describes the specified keywords or all keywords on your origination phone number or pool.</p> <p>A keyword is a word that you can search for on a particular phone number or pool. It is also a specific word or phrase that an end user can send to your number to elicit a response, such as an informational message or a special offer. When your number receives a message that begins with a keyword, Amazon Pinpoint responds with a customizable message.</p> <p>If you specify a keyword that isn't valid, an error is returned.</p>",
+    "DescribeKeywords": "<p>Describes the specified keywords or all keywords on your origination phone number or pool.</p> <p>A keyword is a word that you can search for on a particular phone number or pool. It is also a specific word or phrase that an end user can send to your number to elicit a response, such as an informational message or a special offer. When your number receives a message that begins with a keyword, AWS End User Messaging SMS and Voice responds with a customizable message.</p> <p>If you specify a keyword that isn't valid, an error is returned.</p>",
     "DescribeOptOutLists": "<p>Describes the specified opt-out list or all opt-out lists in your account.</p> <p>If you specify opt-out list names, the output includes information for only the specified opt-out lists. Opt-out lists include only those that meet the filter criteria. If you don't specify opt-out list names or filters, the output includes information for all opt-out lists.</p> <p>If you specify an opt-out list name that isn't valid, an error is returned.</p>",
     "DescribeOptedOutNumbers": "<p>Describes the specified opted out destination numbers or all opted out destination numbers in an opt-out list.</p> <p>If you specify opted out numbers, the output includes information for only the specified opted out numbers. If you specify filters, the output includes information for only those opted out numbers that meet the filter criteria. If you don't specify opted out numbers or filters, the output includes information for all opted out destination numbers in your opt-out list.</p> <p>If you specify an opted out number that isn't valid, an error is returned.</p>",
     "DescribePhoneNumbers": "<p>Describes the specified origination phone number, or all the phone numbers in your account.</p> <p>If you specify phone number IDs, the output includes information for only the specified phone numbers. If you specify filters, the output includes information for only those phone numbers that meet the filter criteria. If you don't specify phone number IDs or filters, the output includes information for all phone numbers.</p> <p>If you specify a phone number ID that isn't valid, an error is returned.</p>",
@@ -48,7 +48,7 @@
     "DescribeRegistrationVersions": "<p>Retrieves the specified registration version.</p>",
     "DescribeRegistrations": "<p>Retrieves the specified registrations.</p>",
     "DescribeSenderIds": "<p>Describes the specified SenderIds or all SenderIds associated with your Amazon Web Services account.</p> <p>If you specify SenderIds, the output includes information for only the specified SenderIds. If you specify filters, the output includes information for only those SenderIds that meet the filter criteria. If you don't specify SenderIds or filters, the output includes information for all SenderIds.</p> <p>f you specify a sender ID that isn't valid, an error is returned.</p>",
-    "DescribeSpendLimits": "<p>Describes the current Amazon Pinpoint monthly spend limits for sending voice and text messages.</p> <p>When you establish an Amazon Web Services account, the account has initial monthly spend limit in a given Region. For more information on increasing your monthly spend limit, see <a href=\"https://docs.aws.amazon.com/pinpoint/latest/userguide/channels-sms-awssupport-spend-threshold.html\"> Requesting increases to your monthly SMS spending quota for Amazon Pinpoint </a> in the <i>Amazon Pinpoint User Guide</i>.</p>",
+    "DescribeSpendLimits": "<p>Describes the current monthly spend limits for sending voice and text messages.</p> <p>When you establish an Amazon Web Services account, the account has initial monthly spend limit in a given Region. For more information on increasing your monthly spend limit, see <a href=\"https://docs.aws.amazon.com/sms-voice/latest/userguide/awssupport-spend-threshold.html\"> Requesting increases to your monthly SMS, MMS, or Voice spending quota </a> in the <i>AWS End User Messaging SMS User Guide</i>.</p>",
     "DescribeVerifiedDestinationNumbers": "<p>Retrieves the specified verified destiona numbers.</p>",
     "DisassociateOriginationIdentity": "<p>Removes the specified origination identity from an existing pool.</p> <p>If the origination identity isn't associated with the specified pool, an error is returned.</p>",
     "DisassociateProtectConfiguration": "<p>Disassociate a protect configuration from a configuration set.</p>",
@@ -57,17 +57,17 @@
     "ListPoolOriginationIdentities": "<p>Lists all associated origination identities in your pool.</p> <p>If you specify filters, the output includes information for only those origination identities that meet the filter criteria.</p>",
     "ListRegistrationAssociations": "<p>Retreive all of the origination identies that are associated with a registration.</p>",
     "ListTagsForResource": "<p>List all tags associated with a resource.</p>",
-    "PutKeyword": "<p>Creates or updates a keyword configuration on an origination phone number or pool.</p> <p> A keyword is a word that you can search for on a particular phone number or pool. It is also a specific word or phrase that an end user can send to your number to elicit a response, such as an informational message or a special offer. When your number receives a message that begins with a keyword, Amazon Pinpoint responds with a customizable message.</p> <p>If you specify a keyword that isn't valid, an error is returned.</p>",
+    "PutKeyword": "<p>Creates or updates a keyword configuration on an origination phone number or pool.</p> <p> A keyword is a word that you can search for on a particular phone number or pool. It is also a specific word or phrase that an end user can send to your number to elicit a response, such as an informational message or a special offer. When your number receives a message that begins with a keyword, AWS End User Messaging SMS and Voice responds with a customizable message.</p> <p>If you specify a keyword that isn't valid, an error is returned.</p>",
     "PutOptedOutNumber": "<p>Creates an opted out destination phone number in the opt-out list.</p> <p>If the destination phone number isn't valid or if the specified opt-out list doesn't exist, an error is returned.</p>",
     "PutRegistrationFieldValue": "<p>Creates or updates a field value for a registration.</p>",
     "ReleasePhoneNumber": "<p>Releases an existing origination phone number in your account. Once released, a phone number is no longer available for sending messages.</p> <p>If the origination phone number has deletion protection enabled or is associated with a pool, an error is returned.</p>",
     "ReleaseSenderId": "<p>Releases an existing sender ID in your account.</p>",
-    "RequestPhoneNumber": "<p>Request an origination phone number for use in your account. For more information on phone number request see <a href=\"https://docs.aws.amazon.com/pinpoint/latest/userguide/settings-sms-request-number.html\"> Requesting a number </a> in the <i>Amazon Pinpoint User Guide</i>.</p>",
+    "RequestPhoneNumber": "<p>Request an origination phone number for use in your account. For more information on phone number request see <a href=\"https://docs.aws.amazon.com/sms-voice/latest/userguide/phone-numbers-request.html\">Request a phone number</a> in the <i>AWS End User Messaging SMS User Guide</i>.</p>",
     "RequestSenderId": "<p>Request a new sender ID that doesn't require registration. </p>",
     "SendDestinationNumberVerificationCode": "<p>Before you can send test messages to a verified destination phone number you need to opt-in the verified destination phone number. Creates a new text message with a verification code and send it to a verified destination phone number. Once you have the verification code use <a>VerifyDestinationNumber</a> to opt-in the verified destination phone number to receive messages.</p>",
     "SendMediaMessage": "<p>Creates a new multimedia message (MMS) and sends it to a recipient's phone number. </p>",
-    "SendTextMessage": "<p>Creates a new text message and sends it to a recipient's phone number.</p> <p>SMS throughput limits are measured in Message Parts per Second (MPS). Your MPS limit depends on the destination country of your messages, as well as the type of phone number (origination number) that you use to send the message. For more information, see <a href=\"https://docs.aws.amazon.com/pinpoint/latest/userguide/channels-sms-limitations-mps.html\">Message Parts per Second (MPS) limits</a> in the <i>Amazon Pinpoint User Guide</i>.</p>",
-    "SendVoiceMessage": "<p>Allows you to send a request that sends a voice message through Amazon Pinpoint. This operation uses <a href=\"http://aws.amazon.com/polly/\">Amazon Polly</a> to convert a text script into a voice message.</p>",
+    "SendTextMessage": "<p>Creates a new text message and sends it to a recipient's phone number. SendTextMessage only sends an SMS message to one recipient each time it is invoked.</p> <p>SMS throughput limits are measured in Message Parts per Second (MPS). Your MPS limit depends on the destination country of your messages, as well as the type of phone number (origination number) that you use to send the message. For more information about MPS, see <a href=\"https://docs.aws.amazon.com/sms-voice/latest/userguide/sms-limitations-mps.html\">Message Parts per Second (MPS) limits</a> in the <i>AWS End User Messaging SMS User Guide</i>.</p>",
+    "SendVoiceMessage": "<p>Allows you to send a request that sends a voice message. This operation uses <a href=\"http://aws.amazon.com/polly/\">Amazon Polly</a> to convert a text script into a voice message.</p>",
     "SetAccountDefaultProtectConfiguration": "<p>Set a protect configuration as your account default. You can only have one account default protect configuration at a time. The current account default protect configuration is replaced with the provided protect configuration.</p>",
     "SetDefaultMessageType": "<p>Sets the default message type on a configuration set.</p> <p>Choose the category of SMS messages that you plan to send from this account. If you send account-related messages or time-sensitive messages such as one-time passcodes, choose <b>Transactional</b>. If you plan to send messages that contain marketing material or other promotional content, choose <b>Promotional</b>. This setting applies to your entire Amazon Web Services account.</p>",
     "SetDefaultSenderId": "<p>Sets default sender ID on a configuration set.</p> <p>When sending a text message to a destination country that supports sender IDs, the default sender ID on the configuration set specified will be used if no dedicated origination phone numbers or registered sender IDs are available in your account.</p>",
@@ -75,9 +75,9 @@
     "SetTextMessageSpendLimitOverride": "<p>Sets an account level monthly spend limit override for sending text messages. The requested spend limit must be less than or equal to the <code>MaxLimit</code>, which is set by Amazon Web Services. </p>",
     "SetVoiceMessageSpendLimitOverride": "<p>Sets an account level monthly spend limit override for sending voice messages. The requested spend limit must be less than or equal to the <code>MaxLimit</code>, which is set by Amazon Web Services. </p>",
     "SubmitRegistrationVersion": "<p>Submit the specified registration for review and approval.</p>",
-    "TagResource": "<p>Adds or overwrites only the specified tags for the specified Amazon Pinpoint SMS Voice, version 2 resource. When you specify an existing tag key, the value is overwritten with the new value. Each resource can have a maximum of 50 tags. Each tag consists of a key and an optional value. Tag keys must be unique per resource. For more information about tags, see <a href=\"https://docs.aws.amazon.com/pinpoint/latest/developerguide/tagging-resources.html\"> Tagging Amazon Pinpoint resources</a> in the <i>Amazon Pinpoint Developer Guide</i>.</p>",
-    "UntagResource": "<p>Removes the association of the specified tags from an Amazon Pinpoint SMS Voice V2 resource. For more information on tags see <a href=\"https://docs.aws.amazon.com/pinpoint/latest/developerguide/tagging-resources.html\"> Tagging Amazon Pinpoint resources</a> in the <i>Amazon Pinpoint Developer Guide</i>. </p>",
-    "UpdateEventDestination": "<p>Updates an existing event destination in a configuration set. You can update the IAM role ARN for CloudWatch Logs and Kinesis Data Firehose. You can also enable or disable the event destination.</p> <p>You may want to update an event destination to change its matching event types or updating the destination resource ARN. You can't change an event destination's type between CloudWatch Logs, Kinesis Data Firehose, and Amazon SNS.</p>",
+    "TagResource": "<p>Adds or overwrites only the specified tags for the specified resource. When you specify an existing tag key, the value is overwritten with the new value. Each resource can have a maximum of 50 tags. Each tag consists of a key and an optional value. Tag keys must be unique per resource. For more information about tags, see <a href=\"https://docs.aws.amazon.com/sms-voice/latest/userguide/phone-numbers-tags.html\">Tags </a> in the <i>AWS End User Messaging SMS User Guide</i>.</p>",
+    "UntagResource": "<p>Removes the association of the specified tags from a resource. For more information on tags see <a href=\"https://docs.aws.amazon.com/sms-voice/latest/userguide/phone-numbers-tags.html\">Tags </a> in the <i>AWS End User Messaging SMS User Guide</i>.</p>",
+    "UpdateEventDestination": "<p>Updates an existing event destination in a configuration set. You can update the IAM role ARN for CloudWatch Logs and Firehose. You can also enable or disable the event destination.</p> <p>You may want to update an event destination to change its matching event types or updating the destination resource ARN. You can't change an event destination's type between CloudWatch Logs, Firehose, and Amazon SNS.</p>",
     "UpdatePhoneNumber": "<p>Updates the configuration of an existing origination phone number. You can update the opt-out list, enable or disable two-way messaging, change the TwoWayChannelArn, enable or disable self-managed opt-outs, and enable or disable deletion protection.</p> <p>If the origination phone number is associated with a pool, an error is returned.</p>",
     "UpdatePool": "<p>Updates the configuration of an existing pool. You can update the opt-out list, enable or disable two-way messaging, change the <code>TwoWayChannelArn</code>, enable or disable self-managed opt-outs, enable or disable deletion protection, and enable or disable shared routes.</p>",
     "UpdateProtectConfiguration": "<p>Update the setting for an existing protect configuration.</p>",
@@ -199,10 +199,10 @@
         "RequestSenderIdRequest$DeletionProtectionEnabled": "<p>By default this is set to false. When set to true the sender ID can't be deleted.</p>",
         "UpdateEventDestinationRequest$Enabled": "<p>When set to true logging is enabled.</p>",
         "UpdatePhoneNumberRequest$TwoWayEnabled": "<p>By default this is set to false. When set to true you can receive incoming text messages from your end recipients.</p>",
-        "UpdatePhoneNumberRequest$SelfManagedOptOutsEnabled": "<p>By default this is set to false. When an end recipient sends a message that begins with HELP or STOP to one of your dedicated numbers, Amazon Pinpoint automatically replies with a customizable message and adds the end recipient to the OptOutList. When set to true you're responsible for responding to HELP and STOP requests. You're also responsible for tracking and honoring opt-out requests.</p>",
+        "UpdatePhoneNumberRequest$SelfManagedOptOutsEnabled": "<p>By default this is set to false. When an end recipient sends a message that begins with HELP or STOP to one of your dedicated numbers, AWS End User Messaging SMS and Voice automatically replies with a customizable message and adds the end recipient to the OptOutList. When set to true you're responsible for responding to HELP and STOP requests. You're also responsible for tracking and honoring opt-out requests.</p>",
         "UpdatePhoneNumberRequest$DeletionProtectionEnabled": "<p>By default this is set to false. When set to true the phone number can't be deleted. </p>",
         "UpdatePoolRequest$TwoWayEnabled": "<p>By default this is set to false. When set to true you can receive incoming text messages from your end recipients.</p>",
-        "UpdatePoolRequest$SelfManagedOptOutsEnabled": "<p>By default this is set to false. When an end recipient sends a message that begins with HELP or STOP to one of your dedicated numbers, Amazon Pinpoint automatically replies with a customizable message and adds the end recipient to the OptOutList. When set to true you're responsible for responding to HELP and STOP requests. You're also responsible for tracking and honoring opt-out requests.</p>",
+        "UpdatePoolRequest$SelfManagedOptOutsEnabled": "<p>By default this is set to false. When an end recipient sends a message that begins with HELP or STOP to one of your dedicated numbers, AWS End User Messaging SMS and Voice automatically replies with a customizable message and adds the end recipient to the OptOutList. When set to true you're responsible for responding to HELP and STOP requests. You're also responsible for tracking and honoring opt-out requests.</p>",
         "UpdatePoolRequest$SharedRoutesEnabled": "<p>Indicates whether shared routes are enabled for the pool.</p>",
         "UpdatePoolRequest$DeletionProtectionEnabled": "<p>When set to true the pool can't be deleted.</p>",
         "UpdateProtectConfigurationRequest$DeletionProtectionEnabled": "<p>When set to true deletion protection is enabled. By default this is set to false. </p>",
@@ -822,7 +822,7 @@
       "base": null,
       "refs": {
         "SendDestinationNumberVerificationCodeRequest$DestinationCountryParameters": "<p>This field is used for any country-specific registration requirements. Currently, this setting is only used when you send messages to recipients in India using a sender ID. For more information see <a href=\"https://docs.aws.amazon.com/pinpoint/latest/userguide/channels-sms-senderid-india.html\">Special requirements for sending SMS messages to recipients in India</a>. </p>",
-        "SendTextMessageRequest$DestinationCountryParameters": "<p>This field is used for any country-specific registration requirements. Currently, this setting is only used when you send messages to recipients in India using a sender ID. For more information see <a href=\"https://docs.aws.amazon.com/pinpoint/latest/userguide/channels-sms-senderid-india.html\">Special requirements for sending SMS messages to recipients in India</a>. </p>"
+        "SendTextMessageRequest$DestinationCountryParameters": "<p>This field is used for any country-specific registration requirements. Currently, this setting is only used when you send messages to recipients in India using a sender ID. For more information see <a href=\"https://docs.aws.amazon.com/pinpoint/latest/userguide/channels-sms-senderid-india.html\">Special requirements for sending SMS messages to recipients in India</a>. </p> <ul> <li> <p> <code>IN_ENTITY_ID</code> The entity ID or Principal Entity (PE) ID that you received after completing the sender ID registration process.</p> </li> <li> <p> <code>IN_TEMPLATE_ID</code> The template ID that you received after completing the sender ID registration process.</p> <important> <p>Make sure that the Template ID that you specify matches your message template exactly. If your message doesn't match the template that you provided during the registration process, the mobile carriers might reject your message.</p> </important> </li> </ul>"
       }
     },
     "DestinationPhoneNumberList": {
@@ -862,7 +862,7 @@
       }
     },
     "EventDestination": {
-      "base": "<p>Contains information about an event destination.</p> <p>Event destinations are associated with configuration sets, which enable you to publish message sending events to CloudWatch, Kinesis Data Firehose, or Amazon SNS.</p>",
+      "base": "<p>Contains information about an event destination.</p> <p>Event destinations are associated with configuration sets, which enable you to publish message sending events to CloudWatch, Firehose, or Amazon SNS.</p>",
       "refs": {
         "CreateEventDestinationResult$EventDestination": "<p>The details of the destination where events are logged.</p>",
         "DeleteEventDestinationResult$EventDestination": "<p>The event destination object that was deleted.</p>",
@@ -895,7 +895,7 @@
     "EventTypeList": {
       "base": null,
       "refs": {
-        "CreateEventDestinationRequest$MatchingEventTypes": "<p>An array of event types that determine which events to log. If \"ALL\" is used, then Amazon Pinpoint logs every event type.</p> <note> <p>The <code>TEXT_SENT</code> event type is not supported.</p> </note>",
+        "CreateEventDestinationRequest$MatchingEventTypes": "<p>An array of event types that determine which events to log. If \"ALL\" is used, then AWS End User Messaging SMS and Voice logs every event type.</p> <note> <p>The <code>TEXT_SENT</code> event type is not supported.</p> </note>",
         "EventDestination$MatchingEventTypes": "<p>An array of event types that determine which events to log.</p> <note> <p>The <code>TEXT_SENT</code> event type is not supported.</p> </note>",
         "UpdateEventDestinationRequest$MatchingEventTypes": "<p>An array of event types that determine which events to log.</p> <note> <p>The <code>TEXT_SENT</code> event type is not supported.</p> </note>"
       }
@@ -972,7 +972,7 @@
         "CloudWatchLogsDestination$IamRoleArn": "<p>The Amazon Resource Name (ARN) of an Identity and Access Management role that is able to write event data to an Amazon CloudWatch destination.</p>",
         "CreatePoolResult$TwoWayChannelRole": "<p>An optional IAM Role Arn for a service to assume, to be able to post inbound SMS messages.</p>",
         "DeletePoolResult$TwoWayChannelRole": "<p>An optional IAM Role Arn for a service to assume, to be able to post inbound SMS messages.</p>",
-        "KinesisFirehoseDestination$IamRoleArn": "<p>The ARN of an Identity and Access Management role that is able to write event data to an Amazon Kinesis Data Firehose destination.</p>",
+        "KinesisFirehoseDestination$IamRoleArn": "<p>The ARN of an Identity and Access Management role that is able to write event data to an Amazon Data Firehose destination.</p>",
         "PhoneNumberInformation$TwoWayChannelRole": "<p>An optional IAM Role Arn for a service to assume, to be able to post inbound SMS messages.</p>",
         "PoolInformation$TwoWayChannelRole": "<p>An optional IAM Role Arn for a service to assume, to be able to post inbound SMS messages.</p>",
         "ReleasePhoneNumberResult$TwoWayChannelRole": "<p>An optional IAM Role Arn for a service to assume, to be able to post inbound SMS messages.</p>",
@@ -1092,11 +1092,11 @@
       }
     },
     "KinesisFirehoseDestination": {
-      "base": "<p>Contains the delivery stream Amazon Resource Name (ARN), and the ARN of the Identity and Access Management (IAM) role associated with a Kinesis Data Firehose event destination.</p> <p>Event destinations, such as Kinesis Data Firehose, are associated with configuration sets, which enable you to publish message sending events.</p>",
+      "base": "<p>Contains the delivery stream Amazon Resource Name (ARN), and the ARN of the Identity and Access Management (IAM) role associated with a Firehose event destination.</p> <p>Event destinations, such as Firehose, are associated with configuration sets, which enable you to publish message sending events.</p>",
       "refs": {
-        "CreateEventDestinationRequest$KinesisFirehoseDestination": "<p>An object that contains information about an event destination for logging to Amazon Kinesis Data Firehose.</p>",
-        "EventDestination$KinesisFirehoseDestination": "<p>An object that contains information about an event destination for logging to Amazon Kinesis Data Firehose.</p>",
-        "UpdateEventDestinationRequest$KinesisFirehoseDestination": "<p>An object that contains information about an event destination for logging to Kinesis Data Firehose.</p>"
+        "CreateEventDestinationRequest$KinesisFirehoseDestination": "<p>An object that contains information about an event destination for logging to Amazon Data Firehose.</p>",
+        "EventDestination$KinesisFirehoseDestination": "<p>An object that contains information about an event destination for logging to Amazon Data Firehose.</p>",
+        "UpdateEventDestinationRequest$KinesisFirehoseDestination": "<p>An object that contains information about an event destination for logging to Firehose.</p>"
       }
     },
     "LanguageCode": {
@@ -1145,7 +1145,7 @@
       "base": null,
       "refs": {
         "SendMediaMessageRequest$MaxPrice": "<p>The maximum amount that you want to spend, in US dollars, per each MMS message.</p>",
-        "SendTextMessageRequest$MaxPrice": "<p>The maximum amount that you want to spend, in US dollars, per each text message part. A text message can contain multiple parts.</p>",
+        "SendTextMessageRequest$MaxPrice": "<p>The maximum amount that you want to spend, in US dollars, per each text message. If the calculated amount to send the text message is greater than <code>MaxPrice</code>, the message is not sent and an error is returned.</p>",
         "SendVoiceMessageRequest$MaxPricePerMinute": "<p>The maximum amount to spend per voice message, in US dollars.</p>"
       }
     },
@@ -1197,7 +1197,7 @@
       "base": null,
       "refs": {
         "ConfigurationSetInformation$DefaultMessageType": "<p>The type of message. Valid values are TRANSACTIONAL for messages that are critical or time-sensitive and PROMOTIONAL for messages that aren't critical or time-sensitive.</p>",
-        "CreatePoolRequest$MessageType": "<p>The type of message. Valid values are TRANSACTIONAL for messages that are critical or time-sensitive and PROMOTIONAL for messages that aren't critical or time-sensitive.</p>",
+        "CreatePoolRequest$MessageType": "<p>The type of message. Valid values are TRANSACTIONAL for messages that are critical or time-sensitive and PROMOTIONAL for messages that aren't critical or time-sensitive. After the pool is created the MessageType can't be changed.</p>",
         "CreatePoolResult$MessageType": "<p>The type of message for the pool to use.</p>",
         "DeleteConfigurationSetResult$DefaultMessageType": "<p>The default message type of the configuration set that was deleted.</p>",
         "DeleteDefaultMessageTypeResult$MessageType": "<p>The current message type for the configuration set.</p>",
@@ -1512,7 +1512,7 @@
       "base": null,
       "refs": {
         "AssociateOriginationIdentityRequest$OriginationIdentity": "<p>The origination identity to use, such as PhoneNumberId, PhoneNumberArn, SenderId, or SenderIdArn. You can use <a>DescribePhoneNumbers</a> to find the values for PhoneNumberId and PhoneNumberArn, while <a>DescribeSenderIds</a> can be used to get the values for SenderId and SenderIdArn.</p>",
-        "CreatePoolRequest$OriginationIdentity": "<p>The origination identity to use such as a PhoneNumberId, PhoneNumberArn, SenderId or SenderIdArn. You can use <a>DescribePhoneNumbers</a> to find the values for PhoneNumberId and PhoneNumberArn while <a>DescribeSenderIds</a> can be used to get the values for SenderId and SenderIdArn.</p>",
+        "CreatePoolRequest$OriginationIdentity": "<p>The origination identity to use such as a PhoneNumberId, PhoneNumberArn, SenderId or SenderIdArn. You can use <a>DescribePhoneNumbers</a> to find the values for PhoneNumberId and PhoneNumberArn while <a>DescribeSenderIds</a> can be used to get the values for SenderId and SenderIdArn.</p> <p>After the pool is created you can add more origination identities to the pool by using <a href=\"https://docs.aws.amazon.com/pinpoint/latest/apireference_smsvoicev2/API_AssociateOriginationIdentity.html\">AssociateOriginationIdentity</a>.</p>",
         "DisassociateOriginationIdentityRequest$OriginationIdentity": "<p>The origination identity to use such as a PhoneNumberId, PhoneNumberArn, SenderId or SenderIdArn. You can use <a>DescribePhoneNumbers</a> find the values for PhoneNumberId and PhoneNumberArn, or use <a>DescribeSenderIds</a> to get the values for SenderId and SenderIdArn.</p>"
       }
     },
@@ -1595,38 +1595,38 @@
       "base": null,
       "refs": {
         "CreatePoolResult$TwoWayEnabled": "<p>By default this is set to false. When set to true you can receive incoming text messages from your end recipients.</p>",
-        "CreatePoolResult$SelfManagedOptOutsEnabled": "<p>By default this is set to false. When an end recipient sends a message that begins with HELP or STOP to one of your dedicated numbers, Amazon Pinpoint automatically replies with a customizable message and adds the end recipient to the OptOutList. When set to true you're responsible for responding to HELP and STOP requests. You're also responsible for tracking and honoring opt-out requests.</p>",
-        "CreatePoolResult$SharedRoutesEnabled": "<p>Indicates whether shared routes are enabled for the pool.</p>",
+        "CreatePoolResult$SelfManagedOptOutsEnabled": "<p>By default this is set to false. When an end recipient sends a message that begins with HELP or STOP to one of your dedicated numbers, AWS End User Messaging SMS and Voice automatically replies with a customizable message and adds the end recipient to the OptOutList. When set to true you're responsible for responding to HELP and STOP requests. You're also responsible for tracking and honoring opt-out requests.</p>",
+        "CreatePoolResult$SharedRoutesEnabled": "<p>Indicates whether shared routes are enabled for the pool. Set to false and only origination identities in this pool are used to send messages. </p>",
         "CreatePoolResult$DeletionProtectionEnabled": "<p>When set to true deletion protection is enabled. By default this is set to false. </p>",
         "CreateProtectConfigurationResult$AccountDefault": "<p>This is true if the protect configuration is set as your account default protect configuration.</p>",
         "CreateProtectConfigurationResult$DeletionProtectionEnabled": "<p>When set to true deletion protection is enabled. By default this is set to false. </p>",
         "DeleteOptedOutNumberResult$EndUserOptedOut": "<p>This is true if it was the end user who requested their phone number be removed. </p>",
         "DeletePoolResult$TwoWayEnabled": "<p>By default this is set to false. When set to true you can receive incoming text messages from your end recipients.</p>",
-        "DeletePoolResult$SelfManagedOptOutsEnabled": "<p>By default this is set to false. When an end recipient sends a message that begins with HELP or STOP to one of your dedicated numbers, Amazon Pinpoint automatically replies with a customizable message and adds the end recipient to the OptOutList. When set to true you're responsible for responding to HELP and STOP requests. You're also responsible for tracking and honoring opt-out requests.</p>",
+        "DeletePoolResult$SelfManagedOptOutsEnabled": "<p>By default this is set to false. When an end recipient sends a message that begins with HELP or STOP to one of your dedicated numbers, AWS End User Messaging SMS and Voice automatically replies with a customizable message and adds the end recipient to the OptOutList. When set to true you're responsible for responding to HELP and STOP requests. You're also responsible for tracking and honoring opt-out requests.</p>",
         "DeletePoolResult$SharedRoutesEnabled": "<p>Indicates whether shared routes are enabled for the pool.</p>",
         "DeleteProtectConfigurationResult$AccountDefault": "<p>This is true if the protect configuration is set as your account default protect configuration.</p>",
         "DeleteProtectConfigurationResult$DeletionProtectionEnabled": "<p>The status of deletion protection for the protect configuration. When set to true deletion protection is enabled. By default this is set to false. </p>",
         "OptedOutNumberInformation$EndUserOptedOut": "<p>This is set to true if it was the end recipient that opted out.</p>",
         "PhoneNumberInformation$TwoWayEnabled": "<p>By default this is set to false. When set to true you can receive incoming text messages from your end recipients using the TwoWayChannelArn.</p>",
-        "PhoneNumberInformation$SelfManagedOptOutsEnabled": "<p>When set to false an end recipient sends a message that begins with HELP or STOP to one of your dedicated numbers, Amazon Pinpoint automatically replies with a customizable message and adds the end recipient to the OptOutList. When set to true you're responsible for responding to HELP and STOP requests. You're also responsible for tracking and honoring opt-out request. For more information see <a href=\"https://docs.aws.amazon.com/pinpoint/latest/userguide/settings-sms-managing.html#settings-account-sms-self-managed-opt-out\">Self-managed opt-outs</a> </p>",
+        "PhoneNumberInformation$SelfManagedOptOutsEnabled": "<p>When set to false an end recipient sends a message that begins with HELP or STOP to one of your dedicated numbers, AWS End User Messaging SMS and Voice automatically replies with a customizable message and adds the end recipient to the OptOutList. When set to true you're responsible for responding to HELP and STOP requests. You're also responsible for tracking and honoring opt-out request. For more information see <a href=\"https://docs.aws.amazon.com/pinpoint/latest/userguide/settings-sms-managing.html#settings-account-sms-self-managed-opt-out\">Self-managed opt-outs</a> </p>",
         "PhoneNumberInformation$DeletionProtectionEnabled": "<p>When set to true the phone number can't be deleted.</p>",
         "PoolInformation$TwoWayEnabled": "<p>When set to true you can receive incoming text messages from your end recipients using the TwoWayChannelArn.</p>",
-        "PoolInformation$SelfManagedOptOutsEnabled": "<p>When set to false, an end recipient sends a message that begins with HELP or STOP to one of your dedicated numbers, Amazon Pinpoint automatically replies with a customizable message and adds the end recipient to the OptOutList. When set to true you're responsible for responding to HELP and STOP requests. You're also responsible for tracking and honoring opt-out requests. For more information see <a href=\"https://docs.aws.amazon.com/pinpoint/latest/userguide/settings-sms-managing.html#settings-account-sms-self-managed-opt-out\">Self-managed opt-outs</a> </p>",
-        "PoolInformation$SharedRoutesEnabled": "<p>Allows you to enable shared routes on your pool.</p> <p>By default, this is set to <code>False</code>. If you set this value to <code>True</code>, your messages are sent using phone numbers or sender IDs (depending on the country) that are shared with other Amazon Pinpoint users. In some countries, such as the United States, senders aren't allowed to use shared routes and must use a dedicated phone number or short code.</p>",
+        "PoolInformation$SelfManagedOptOutsEnabled": "<p>When set to false, an end recipient sends a message that begins with HELP or STOP to one of your dedicated numbers, AWS End User Messaging SMS and Voice automatically replies with a customizable message and adds the end recipient to the OptOutList. When set to true you're responsible for responding to HELP and STOP requests. You're also responsible for tracking and honoring opt-out requests. For more information see <a href=\"https://docs.aws.amazon.com/pinpoint/latest/userguide/settings-sms-managing.html#settings-account-sms-self-managed-opt-out\">Self-managed opt-outs</a> </p>",
+        "PoolInformation$SharedRoutesEnabled": "<p>Allows you to enable shared routes on your pool.</p> <p>By default, this is set to <code>False</code>. If you set this value to <code>True</code>, your messages are sent using phone numbers or sender IDs (depending on the country) that are shared with other users. In some countries, such as the United States, senders aren't allowed to use shared routes and must use a dedicated phone number or short code.</p>",
         "PoolInformation$DeletionProtectionEnabled": "<p>When set to true the pool can't be deleted.</p>",
         "ProtectConfigurationInformation$AccountDefault": "<p>This is true if the protect configuration is set as your account default protect configuration.</p>",
         "ProtectConfigurationInformation$DeletionProtectionEnabled": "<p>The status of deletion protection for the protect configuration. When set to true deletion protection is enabled. By default this is set to false. </p>",
         "PutOptedOutNumberResult$EndUserOptedOut": "<p>This is true if it was the end user who requested their phone number be removed. </p>",
         "ReleasePhoneNumberResult$TwoWayEnabled": "<p>By default this is set to false. When set to true you can receive incoming text messages from your end recipients.</p>",
-        "ReleasePhoneNumberResult$SelfManagedOptOutsEnabled": "<p>By default this is set to false. When an end recipient sends a message that begins with HELP or STOP to one of your dedicated numbers, Amazon Pinpoint automatically replies with a customizable message and adds the end recipient to the OptOutList. When set to true you're responsible for responding to HELP and STOP requests. You're also responsible for tracking and honoring opt-out requests.</p>",
+        "ReleasePhoneNumberResult$SelfManagedOptOutsEnabled": "<p>By default this is set to false. When an end recipient sends a message that begins with HELP or STOP to one of your dedicated numbers, AWS End User Messaging SMS and Voice automatically replies with a customizable message and adds the end recipient to the OptOutList. When set to true you're responsible for responding to HELP and STOP requests. You're also responsible for tracking and honoring opt-out requests.</p>",
         "ReleaseSenderIdResult$Registered": "<p>True if the sender ID is registered.</p>",
         "RequestPhoneNumberResult$TwoWayEnabled": "<p>By default this is set to false. When set to true you can receive incoming text messages from your end recipients.</p>",
-        "RequestPhoneNumberResult$SelfManagedOptOutsEnabled": "<p>By default this is set to false. When an end recipient sends a message that begins with HELP or STOP to one of your dedicated numbers, Amazon Pinpoint automatically replies with a customizable message and adds the end recipient to the OptOutList. When set to true you're responsible for responding to HELP and STOP requests. You're also responsible for tracking and honoring opt-out requests.</p>",
+        "RequestPhoneNumberResult$SelfManagedOptOutsEnabled": "<p>By default this is set to false. When an end recipient sends a message that begins with HELP or STOP to one of your dedicated numbers, AWS End User Messaging SMS and Voice automatically replies with a customizable message and adds the end recipient to the OptOutList. When set to true you're responsible for responding to HELP and STOP requests. You're also responsible for tracking and honoring opt-out requests.</p>",
         "RequestPhoneNumberResult$DeletionProtectionEnabled": "<p>By default this is set to false. When set to true the phone number can't be deleted. </p>",
         "RequestSenderIdResult$DeletionProtectionEnabled": "<p>By default this is set to false. When set to true the sender ID can't be deleted.</p>",
         "RequestSenderIdResult$Registered": "<p>True if the sender ID is registered.</p>",
         "SendMediaMessageRequest$DryRun": "<p>When set to true, the message is checked and validated, but isn't sent to the end recipient.</p>",
-        "SendTextMessageRequest$DryRun": "<p>When set to true, the message is checked and validated, but isn't sent to the end recipient.</p>",
+        "SendTextMessageRequest$DryRun": "<p>When set to true, the message is checked and validated, but isn't sent to the end recipient. You are not charged for using <code>DryRun</code>.</p> <p>The Message Parts per Second (MPS) limit when using <code>DryRun</code> is five. If your origination identity has a lower MPS limit then the lower MPS limit is used. For more information about MPS limits, see <a href=\"https://docs.aws.amazon.com/sms-voice/latest/userguide/sms-limitations-mps.html\">Message Parts per Second (MPS) limits</a> in the <i>AWS End User Messaging SMS User Guide</i>..</p>",
         "SendVoiceMessageRequest$DryRun": "<p>When set to true, the message is checked and validated, but isn't sent to the end recipient.</p>",
         "SenderIdInformation$DeletionProtectionEnabled": "<p>By default this is set to false. When set to true the sender ID can't be deleted.</p>",
         "SenderIdInformation$Registered": "<p>True if the sender ID is registered.</p>",
@@ -1635,7 +1635,7 @@
         "UpdatePhoneNumberResult$SelfManagedOptOutsEnabled": "<p>This is true if self managed opt-out are enabled.</p>",
         "UpdatePhoneNumberResult$DeletionProtectionEnabled": "<p>When set to true the phone number can't be deleted.</p>",
         "UpdatePoolResult$TwoWayEnabled": "<p>By default this is set to false. When set to true you can receive incoming text messages from your end recipients.</p>",
-        "UpdatePoolResult$SelfManagedOptOutsEnabled": "<p>When an end recipient sends a message that begins with HELP or STOP to one of your dedicated numbers, Amazon Pinpoint automatically replies with a customizable message and adds the end recipient to the OptOutList. When set to true you're responsible for responding to HELP and STOP requests. You're also responsible for tracking and honoring opt-out requests.</p>",
+        "UpdatePoolResult$SelfManagedOptOutsEnabled": "<p>When an end recipient sends a message that begins with HELP or STOP to one of your dedicated numbers, AWS End User Messaging SMS and Voice automatically replies with a customizable message and adds the end recipient to the OptOutList. When set to true you're responsible for responding to HELP and STOP requests. You're also responsible for tracking and honoring opt-out requests.</p>",
         "UpdatePoolResult$SharedRoutesEnabled": "<p>Indicates whether shared routes are enabled for the pool.</p>",
         "UpdatePoolResult$DeletionProtectionEnabled": "<p>When set to true the pool can't be deleted.</p>",
         "UpdateProtectConfigurationResult$AccountDefault": "<p>This is true if the protect configuration is set as your account default protect configuration.</p>",
@@ -1671,8 +1671,8 @@
     "ProtectConfigurationCountryRuleSet": {
       "base": null,
       "refs": {
-        "GetProtectConfigurationCountryRuleSetResult$CountryRuleSet": "<p>A map of ProtectConfigurationCountryRuleSetInformation objects that contain the details for the requested NumberCapability. The Key is the two-letter ISO country code. For a list of supported ISO country codes, see <a href=\"https://docs.aws.amazon.com/sms-voice/latest/userguide/phone-numbers-sms-by-country.html\">Supported countries and regions (SMS channel)</a> in the Amazon Pinpoint SMS user guide.</p>",
-        "UpdateProtectConfigurationCountryRuleSetRequest$CountryRuleSetUpdates": "<p>A map of ProtectConfigurationCountryRuleSetInformation objects that contain the details for the requested NumberCapability. The Key is the two-letter ISO country code. For a list of supported ISO country codes, see <a href=\"https://docs.aws.amazon.com/sms-voice/latest/userguide/phone-numbers-sms-by-country.html\">Supported countries and regions (SMS channel)</a> in the Amazon Pinpoint SMS user guide.</p>",
+        "GetProtectConfigurationCountryRuleSetResult$CountryRuleSet": "<p>A map of ProtectConfigurationCountryRuleSetInformation objects that contain the details for the requested NumberCapability. The Key is the two-letter ISO country code. For a list of supported ISO country codes, see <a href=\"https://docs.aws.amazon.com/sms-voice/latest/userguide/phone-numbers-sms-by-country.html\">Supported countries and regions (SMS channel)</a> in the AWS End User Messaging SMS User Guide.</p>",
+        "UpdateProtectConfigurationCountryRuleSetRequest$CountryRuleSetUpdates": "<p>A map of ProtectConfigurationCountryRuleSetInformation objects that contain the details for the requested NumberCapability. The Key is the two-letter ISO country code. For a list of supported ISO country codes, see <a href=\"https://docs.aws.amazon.com/sms-voice/latest/userguide/phone-numbers-sms-by-country.html\">Supported countries and regions (SMS channel)</a> in the AWS End User Messaging SMS User Guide.</p>",
         "UpdateProtectConfigurationCountryRuleSetResult$CountryRuleSet": "<p>An array of ProtectConfigurationCountryRuleSetInformation containing the rules for the NumberCapability.</p>"
       }
     },
@@ -2298,7 +2298,7 @@
       }
     },
     "SenderIdAndCountry": {
-      "base": "<p> The alphanumeric sender ID in a specific country that you want to describe. For more information on sender IDs see <a href=\"https://docs.aws.amazon.com/pinpoint/latest/userguide/channels-sms-awssupport-sender-id.html\">Requesting sender IDs for SMS messaging with Amazon Pinpoint </a> in the <i>Amazon Pinpoint User Guide</i>.</p>",
+      "base": "<p> The alphanumeric sender ID in a specific country that you want to describe. For more information on sender IDs see <a href=\"https://docs.aws.amazon.com/sms-voice/latest/userguide/sender-id-request.html\">Requesting sender IDs </a> in the <i>AWS End User Messaging SMS User Guide</i>.</p>",
       "refs": {
         "SenderIdList$member": null
       }
@@ -2433,7 +2433,7 @@
       }
     },
     "SpendLimit": {
-      "base": "<p>Describes the current Amazon Pinpoint monthly spend limits for sending voice and text messages. For more information on increasing your monthly spend limit, see <a href=\"https://docs.aws.amazon.com/pinpoint/latest/userguide/channels-sms-awssupport-spend-threshold.html\"> Requesting increases to your monthly SMS spending quota for Amazon Pinpoint </a> in the <i>Amazon Pinpoint User Guide</i>. </p>",
+      "base": "<p>Describes the current monthly spend limits for sending voice and text messages. For more information on increasing your monthly spend limit, see <a href=\"https://docs.aws.amazon.com/sms-voice/latest/userguide/awssupport-spend-threshold.html\"> Requesting a spending quota increase </a> in the <i>AWS End User Messaging SMS User Guide</i>. </p>",
       "refs": {
         "SpendLimitList$member": null
       }
@@ -2755,7 +2755,7 @@
       "base": null,
       "refs": {
         "SendMediaMessageRequest$TimeToLive": "<p>How long the text message is valid for. By default this is 72 hours.</p>",
-        "SendTextMessageRequest$TimeToLive": "<p>How long the text message is valid for. By default this is 72 hours.</p>",
+        "SendTextMessageRequest$TimeToLive": "<p>How long the text message is valid for, in seconds. By default this is 72 hours. If the messages isn't handed off before the TTL expires we stop attempting to hand off the message and return <code>TTL_EXPIRED</code> event.</p>",
         "SendVoiceMessageRequest$TimeToLive": "<p>How long the voice message is valid for. By default this is 72 hours.</p>"
       }
     },
diff --git a/models/endpoints/endpoints.json b/models/endpoints/endpoints.json
index 7ed4272..a910176 100644
--- a/models/endpoints/endpoints.json
+++ b/models/endpoints/endpoints.json
@@ -28325,7 +28325,8 @@
       },
       "apigateway" : {
         "endpoints" : {
-          "us-iso-east-1" : { }
+          "us-iso-east-1" : { },
+          "us-iso-west-1" : { }
         }
       },
       "appconfig" : {
@@ -29201,6 +29202,11 @@
           "us-isob-east-1" : { }
         }
       },
+      "apigateway" : {
+        "endpoints" : {
+          "us-isob-east-1" : { }
+        }
+      },
       "appconfig" : {
         "endpoints" : {
           "us-isob-east-1" : { }
diff --git a/service/cleanrooms/api.go b/service/cleanrooms/api.go
index 0ab87c1..301dcb2 100644
--- a/service/cleanrooms/api.go
+++ b/service/cleanrooms/api.go
@@ -862,6 +862,100 @@
 	return out, req.Send()
 }
 
+const opCreateConfiguredTableAssociationAnalysisRule = "CreateConfiguredTableAssociationAnalysisRule"
+
+// CreateConfiguredTableAssociationAnalysisRuleRequest generates a "aws/request.Request" representing the
+// client's request for the CreateConfiguredTableAssociationAnalysisRule operation. The "output" return
+// value will be populated with the request's response once the request completes
+// successfully.
+//
+// Use "Send" method on the returned Request to send the API call to the service.
+// the "output" return value is not valid until after Send returns without error.
+//
+// See CreateConfiguredTableAssociationAnalysisRule for more information on using the CreateConfiguredTableAssociationAnalysisRule
+// API call, and error handling.
+//
+// This method is useful when you want to inject custom logic or configuration
+// into the SDK's request lifecycle. Such as custom headers, or retry logic.
+//
+//	// Example sending a request using the CreateConfiguredTableAssociationAnalysisRuleRequest method.
+//	req, resp := client.CreateConfiguredTableAssociationAnalysisRuleRequest(params)
+//
+//	err := req.Send()
+//	if err == nil { // resp is now filled
+//	    fmt.Println(resp)
+//	}
+//
+// See also, https://docs.aws.amazon.com/goto/WebAPI/cleanrooms-2022-02-17/CreateConfiguredTableAssociationAnalysisRule
+func (c *CleanRooms) CreateConfiguredTableAssociationAnalysisRuleRequest(input *CreateConfiguredTableAssociationAnalysisRuleInput) (req *request.Request, output *CreateConfiguredTableAssociationAnalysisRuleOutput) {
+	op := &request.Operation{
+		Name:       opCreateConfiguredTableAssociationAnalysisRule,
+		HTTPMethod: "POST",
+		HTTPPath:   "/memberships/{membershipIdentifier}/configuredTableAssociations/{configuredTableAssociationIdentifier}/analysisRule",
+	}
+
+	if input == nil {
+		input = &CreateConfiguredTableAssociationAnalysisRuleInput{}
+	}
+
+	output = &CreateConfiguredTableAssociationAnalysisRuleOutput{}
+	req = c.newRequest(op, input, output)
+	return
+}
+
+// CreateConfiguredTableAssociationAnalysisRule API operation for AWS Clean Rooms Service.
+//
+// Creates a new analysis rule for an associated configured table.
+//
+// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
+// with awserr.Error's Code and Message methods to get detailed information about
+// the error.
+//
+// See the AWS API reference guide for AWS Clean Rooms Service's
+// API operation CreateConfiguredTableAssociationAnalysisRule for usage and error information.
+//
+// Returned Error Types:
+//
+//   - ConflictException
+//     Updating or deleting a resource can cause an inconsistent state.
+//
+//   - ResourceNotFoundException
+//     Request references a resource which does not exist.
+//
+//   - InternalServerException
+//     Unexpected error during processing of request.
+//
+//   - ValidationException
+//     The input fails to satisfy the specified constraints.
+//
+//   - ThrottlingException
+//     Request was denied due to request throttling.
+//
+//   - AccessDeniedException
+//     Caller does not have sufficient access to perform this action.
+//
+// See also, https://docs.aws.amazon.com/goto/WebAPI/cleanrooms-2022-02-17/CreateConfiguredTableAssociationAnalysisRule
+func (c *CleanRooms) CreateConfiguredTableAssociationAnalysisRule(input *CreateConfiguredTableAssociationAnalysisRuleInput) (*CreateConfiguredTableAssociationAnalysisRuleOutput, error) {
+	req, out := c.CreateConfiguredTableAssociationAnalysisRuleRequest(input)
+	return out, req.Send()
+}
+
+// CreateConfiguredTableAssociationAnalysisRuleWithContext is the same as CreateConfiguredTableAssociationAnalysisRule with the addition of
+// the ability to pass a context and additional request options.
+//
+// See CreateConfiguredTableAssociationAnalysisRule for details on how to use this API operation.
+//
+// The context must be non-nil and will be used for request cancellation. If
+// the context is nil a panic will occur. In the future the SDK may create
+// sub-contexts for http.Requests. See https://golang.org/pkg/context/
+// for more information on using Contexts.
+func (c *CleanRooms) CreateConfiguredTableAssociationAnalysisRuleWithContext(ctx aws.Context, input *CreateConfiguredTableAssociationAnalysisRuleInput, opts ...request.Option) (*CreateConfiguredTableAssociationAnalysisRuleOutput, error) {
+	req, out := c.CreateConfiguredTableAssociationAnalysisRuleRequest(input)
+	req.SetContext(ctx)
+	req.ApplyOptions(opts...)
+	return out, req.Send()
+}
+
 const opCreateIdMappingTable = "CreateIdMappingTable"
 
 // CreateIdMappingTableRequest generates a "aws/request.Request" representing the
@@ -1713,6 +1807,101 @@
 	return out, req.Send()
 }
 
+const opDeleteConfiguredTableAssociationAnalysisRule = "DeleteConfiguredTableAssociationAnalysisRule"
+
+// DeleteConfiguredTableAssociationAnalysisRuleRequest generates a "aws/request.Request" representing the
+// client's request for the DeleteConfiguredTableAssociationAnalysisRule operation. The "output" return
+// value will be populated with the request's response once the request completes
+// successfully.
+//
+// Use "Send" method on the returned Request to send the API call to the service.
+// the "output" return value is not valid until after Send returns without error.
+//
+// See DeleteConfiguredTableAssociationAnalysisRule for more information on using the DeleteConfiguredTableAssociationAnalysisRule
+// API call, and error handling.
+//
+// This method is useful when you want to inject custom logic or configuration
+// into the SDK's request lifecycle. Such as custom headers, or retry logic.
+//
+//	// Example sending a request using the DeleteConfiguredTableAssociationAnalysisRuleRequest method.
+//	req, resp := client.DeleteConfiguredTableAssociationAnalysisRuleRequest(params)
+//
+//	err := req.Send()
+//	if err == nil { // resp is now filled
+//	    fmt.Println(resp)
+//	}
+//
+// See also, https://docs.aws.amazon.com/goto/WebAPI/cleanrooms-2022-02-17/DeleteConfiguredTableAssociationAnalysisRule
+func (c *CleanRooms) DeleteConfiguredTableAssociationAnalysisRuleRequest(input *DeleteConfiguredTableAssociationAnalysisRuleInput) (req *request.Request, output *DeleteConfiguredTableAssociationAnalysisRuleOutput) {
+	op := &request.Operation{
+		Name:       opDeleteConfiguredTableAssociationAnalysisRule,
+		HTTPMethod: "DELETE",
+		HTTPPath:   "/memberships/{membershipIdentifier}/configuredTableAssociations/{configuredTableAssociationIdentifier}/analysisRule/{analysisRuleType}",
+	}
+
+	if input == nil {
+		input = &DeleteConfiguredTableAssociationAnalysisRuleInput{}
+	}
+
+	output = &DeleteConfiguredTableAssociationAnalysisRuleOutput{}
+	req = c.newRequest(op, input, output)
+	req.Handlers.Unmarshal.Swap(restjson.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
+	return
+}
+
+// DeleteConfiguredTableAssociationAnalysisRule API operation for AWS Clean Rooms Service.
+//
+// Deletes an analysis rule for a configured table association.
+//
+// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
+// with awserr.Error's Code and Message methods to get detailed information about
+// the error.
+//
+// See the AWS API reference guide for AWS Clean Rooms Service's
+// API operation DeleteConfiguredTableAssociationAnalysisRule for usage and error information.
+//
+// Returned Error Types:
+//
+//   - ConflictException
+//     Updating or deleting a resource can cause an inconsistent state.
+//
+//   - ResourceNotFoundException
+//     Request references a resource which does not exist.
+//
+//   - InternalServerException
+//     Unexpected error during processing of request.
+//
+//   - ValidationException
+//     The input fails to satisfy the specified constraints.
+//
+//   - ThrottlingException
+//     Request was denied due to request throttling.
+//
+//   - AccessDeniedException
+//     Caller does not have sufficient access to perform this action.
+//
+// See also, https://docs.aws.amazon.com/goto/WebAPI/cleanrooms-2022-02-17/DeleteConfiguredTableAssociationAnalysisRule
+func (c *CleanRooms) DeleteConfiguredTableAssociationAnalysisRule(input *DeleteConfiguredTableAssociationAnalysisRuleInput) (*DeleteConfiguredTableAssociationAnalysisRuleOutput, error) {
+	req, out := c.DeleteConfiguredTableAssociationAnalysisRuleRequest(input)
+	return out, req.Send()
+}
+
+// DeleteConfiguredTableAssociationAnalysisRuleWithContext is the same as DeleteConfiguredTableAssociationAnalysisRule with the addition of
+// the ability to pass a context and additional request options.
+//
+// See DeleteConfiguredTableAssociationAnalysisRule for details on how to use this API operation.
+//
+// The context must be non-nil and will be used for request cancellation. If
+// the context is nil a panic will occur. In the future the SDK may create
+// sub-contexts for http.Requests. See https://golang.org/pkg/context/
+// for more information on using Contexts.
+func (c *CleanRooms) DeleteConfiguredTableAssociationAnalysisRuleWithContext(ctx aws.Context, input *DeleteConfiguredTableAssociationAnalysisRuleInput, opts ...request.Option) (*DeleteConfiguredTableAssociationAnalysisRuleOutput, error) {
+	req, out := c.DeleteConfiguredTableAssociationAnalysisRuleRequest(input)
+	req.SetContext(ctx)
+	req.ApplyOptions(opts...)
+	return out, req.Send()
+}
+
 const opDeleteIdMappingTable = "DeleteIdMappingTable"
 
 // DeleteIdMappingTableRequest generates a "aws/request.Request" representing the
@@ -2998,6 +3187,97 @@
 	return out, req.Send()
 }
 
+const opGetConfiguredTableAssociationAnalysisRule = "GetConfiguredTableAssociationAnalysisRule"
+
+// GetConfiguredTableAssociationAnalysisRuleRequest generates a "aws/request.Request" representing the
+// client's request for the GetConfiguredTableAssociationAnalysisRule operation. The "output" return
+// value will be populated with the request's response once the request completes
+// successfully.
+//
+// Use "Send" method on the returned Request to send the API call to the service.
+// the "output" return value is not valid until after Send returns without error.
+//
+// See GetConfiguredTableAssociationAnalysisRule for more information on using the GetConfiguredTableAssociationAnalysisRule
+// API call, and error handling.
+//
+// This method is useful when you want to inject custom logic or configuration
+// into the SDK's request lifecycle. Such as custom headers, or retry logic.
+//
+//	// Example sending a request using the GetConfiguredTableAssociationAnalysisRuleRequest method.
+//	req, resp := client.GetConfiguredTableAssociationAnalysisRuleRequest(params)
+//
+//	err := req.Send()
+//	if err == nil { // resp is now filled
+//	    fmt.Println(resp)
+//	}
+//
+// See also, https://docs.aws.amazon.com/goto/WebAPI/cleanrooms-2022-02-17/GetConfiguredTableAssociationAnalysisRule
+func (c *CleanRooms) GetConfiguredTableAssociationAnalysisRuleRequest(input *GetConfiguredTableAssociationAnalysisRuleInput) (req *request.Request, output *GetConfiguredTableAssociationAnalysisRuleOutput) {
+	op := &request.Operation{
+		Name:       opGetConfiguredTableAssociationAnalysisRule,
+		HTTPMethod: "GET",
+		HTTPPath:   "/memberships/{membershipIdentifier}/configuredTableAssociations/{configuredTableAssociationIdentifier}/analysisRule/{analysisRuleType}",
+	}
+
+	if input == nil {
+		input = &GetConfiguredTableAssociationAnalysisRuleInput{}
+	}
+
+	output = &GetConfiguredTableAssociationAnalysisRuleOutput{}
+	req = c.newRequest(op, input, output)
+	return
+}
+
+// GetConfiguredTableAssociationAnalysisRule API operation for AWS Clean Rooms Service.
+//
+// Retrieves the analysis rule for a configured table association.
+//
+// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
+// with awserr.Error's Code and Message methods to get detailed information about
+// the error.
+//
+// See the AWS API reference guide for AWS Clean Rooms Service's
+// API operation GetConfiguredTableAssociationAnalysisRule for usage and error information.
+//
+// Returned Error Types:
+//
+//   - ResourceNotFoundException
+//     Request references a resource which does not exist.
+//
+//   - InternalServerException
+//     Unexpected error during processing of request.
+//
+//   - ValidationException
+//     The input fails to satisfy the specified constraints.
+//
+//   - ThrottlingException
+//     Request was denied due to request throttling.
+//
+//   - AccessDeniedException
+//     Caller does not have sufficient access to perform this action.
+//
+// See also, https://docs.aws.amazon.com/goto/WebAPI/cleanrooms-2022-02-17/GetConfiguredTableAssociationAnalysisRule
+func (c *CleanRooms) GetConfiguredTableAssociationAnalysisRule(input *GetConfiguredTableAssociationAnalysisRuleInput) (*GetConfiguredTableAssociationAnalysisRuleOutput, error) {
+	req, out := c.GetConfiguredTableAssociationAnalysisRuleRequest(input)
+	return out, req.Send()
+}
+
+// GetConfiguredTableAssociationAnalysisRuleWithContext is the same as GetConfiguredTableAssociationAnalysisRule with the addition of
+// the ability to pass a context and additional request options.
+//
+// See GetConfiguredTableAssociationAnalysisRule for details on how to use this API operation.
+//
+// The context must be non-nil and will be used for request cancellation. If
+// the context is nil a panic will occur. In the future the SDK may create
+// sub-contexts for http.Requests. See https://golang.org/pkg/context/
+// for more information on using Contexts.
+func (c *CleanRooms) GetConfiguredTableAssociationAnalysisRuleWithContext(ctx aws.Context, input *GetConfiguredTableAssociationAnalysisRuleInput, opts ...request.Option) (*GetConfiguredTableAssociationAnalysisRuleOutput, error) {
+	req, out := c.GetConfiguredTableAssociationAnalysisRuleRequest(input)
+	req.SetContext(ctx)
+	req.ApplyOptions(opts...)
+	return out, req.Send()
+}
+
 const opGetIdMappingTable = "GetIdMappingTable"
 
 // GetIdMappingTableRequest generates a "aws/request.Request" representing the
@@ -7284,6 +7564,100 @@
 	return out, req.Send()
 }
 
+const opUpdateConfiguredTableAssociationAnalysisRule = "UpdateConfiguredTableAssociationAnalysisRule"
+
+// UpdateConfiguredTableAssociationAnalysisRuleRequest generates a "aws/request.Request" representing the
+// client's request for the UpdateConfiguredTableAssociationAnalysisRule operation. The "output" return
+// value will be populated with the request's response once the request completes
+// successfully.
+//
+// Use "Send" method on the returned Request to send the API call to the service.
+// the "output" return value is not valid until after Send returns without error.
+//
+// See UpdateConfiguredTableAssociationAnalysisRule for more information on using the UpdateConfiguredTableAssociationAnalysisRule
+// API call, and error handling.
+//
+// This method is useful when you want to inject custom logic or configuration
+// into the SDK's request lifecycle. Such as custom headers, or retry logic.
+//
+//	// Example sending a request using the UpdateConfiguredTableAssociationAnalysisRuleRequest method.
+//	req, resp := client.UpdateConfiguredTableAssociationAnalysisRuleRequest(params)
+//
+//	err := req.Send()
+//	if err == nil { // resp is now filled
+//	    fmt.Println(resp)
+//	}
+//
+// See also, https://docs.aws.amazon.com/goto/WebAPI/cleanrooms-2022-02-17/UpdateConfiguredTableAssociationAnalysisRule
+func (c *CleanRooms) UpdateConfiguredTableAssociationAnalysisRuleRequest(input *UpdateConfiguredTableAssociationAnalysisRuleInput) (req *request.Request, output *UpdateConfiguredTableAssociationAnalysisRuleOutput) {
+	op := &request.Operation{
+		Name:       opUpdateConfiguredTableAssociationAnalysisRule,
+		HTTPMethod: "PATCH",
+		HTTPPath:   "/memberships/{membershipIdentifier}/configuredTableAssociations/{configuredTableAssociationIdentifier}/analysisRule/{analysisRuleType}",
+	}
+
+	if input == nil {
+		input = &UpdateConfiguredTableAssociationAnalysisRuleInput{}
+	}
+
+	output = &UpdateConfiguredTableAssociationAnalysisRuleOutput{}
+	req = c.newRequest(op, input, output)
+	return
+}
+
+// UpdateConfiguredTableAssociationAnalysisRule API operation for AWS Clean Rooms Service.
+//
+// Updates the analysis rule for a configured table association.
+//
+// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
+// with awserr.Error's Code and Message methods to get detailed information about
+// the error.
+//
+// See the AWS API reference guide for AWS Clean Rooms Service's
+// API operation UpdateConfiguredTableAssociationAnalysisRule for usage and error information.
+//
+// Returned Error Types:
+//
+//   - ConflictException
+//     Updating or deleting a resource can cause an inconsistent state.
+//
+//   - ResourceNotFoundException
+//     Request references a resource which does not exist.
+//
+//   - InternalServerException
+//     Unexpected error during processing of request.
+//
+//   - ValidationException
+//     The input fails to satisfy the specified constraints.
+//
+//   - ThrottlingException
+//     Request was denied due to request throttling.
+//
+//   - AccessDeniedException
+//     Caller does not have sufficient access to perform this action.
+//
+// See also, https://docs.aws.amazon.com/goto/WebAPI/cleanrooms-2022-02-17/UpdateConfiguredTableAssociationAnalysisRule
+func (c *CleanRooms) UpdateConfiguredTableAssociationAnalysisRule(input *UpdateConfiguredTableAssociationAnalysisRuleInput) (*UpdateConfiguredTableAssociationAnalysisRuleOutput, error) {
+	req, out := c.UpdateConfiguredTableAssociationAnalysisRuleRequest(input)
+	return out, req.Send()
+}
+
+// UpdateConfiguredTableAssociationAnalysisRuleWithContext is the same as UpdateConfiguredTableAssociationAnalysisRule with the addition of
+// the ability to pass a context and additional request options.
+//
+// See UpdateConfiguredTableAssociationAnalysisRule for details on how to use this API operation.
+//
+// The context must be non-nil and will be used for request cancellation. If
+// the context is nil a panic will occur. In the future the SDK may create
+// sub-contexts for http.Requests. See https://golang.org/pkg/context/
+// for more information on using Contexts.
+func (c *CleanRooms) UpdateConfiguredTableAssociationAnalysisRuleWithContext(ctx aws.Context, input *UpdateConfiguredTableAssociationAnalysisRuleInput, opts ...request.Option) (*UpdateConfiguredTableAssociationAnalysisRuleOutput, error) {
+	req, out := c.UpdateConfiguredTableAssociationAnalysisRuleRequest(input)
+	req.SetContext(ctx)
+	req.ApplyOptions(opts...)
+	return out, req.Send()
+}
+
 const opUpdateIdMappingTable = "UpdateIdMappingTable"
 
 // UpdateIdMappingTableRequest generates a "aws/request.Request" representing the
@@ -8045,6 +8419,13 @@
 type AnalysisRuleAggregation struct {
 	_ struct{} `type:"structure"`
 
+	// An indicator as to whether additional analyses (such as Clean Rooms ML) can
+	// be applied to the output of the direct query.
+	//
+	// The additionalAnalyses parameter is currently supported for the list analysis
+	// rule (AnalysisRuleList) and the custom analysis rule (AnalysisRuleCustom).
+	AdditionalAnalyses *string `locationName:"additionalAnalyses" type:"string" enum:"AdditionalAnalyses"`
+
 	// The columns that query runners are allowed to use in aggregation queries.
 	//
 	// AggregateColumns is a required field
@@ -8152,6 +8533,12 @@
 	return nil
 }
 
+// SetAdditionalAnalyses sets the AdditionalAnalyses field's value.
+func (s *AnalysisRuleAggregation) SetAdditionalAnalyses(v string) *AnalysisRuleAggregation {
+	s.AdditionalAnalyses = &v
+	return s
+}
+
 // SetAggregateColumns sets the AggregateColumns field's value.
 func (s *AnalysisRuleAggregation) SetAggregateColumns(v []*AggregateColumn) *AnalysisRuleAggregation {
 	s.AggregateColumns = v
@@ -8199,6 +8586,10 @@
 type AnalysisRuleCustom struct {
 	_ struct{} `type:"structure"`
 
+	// An indicator as to whether additional analyses (such as Clean Rooms ML) can
+	// be applied to the output of the direct query.
+	AdditionalAnalyses *string `locationName:"additionalAnalyses" type:"string" enum:"AdditionalAnalyses"`
+
 	// The ARN of the analysis templates that are allowed by the custom analysis
 	// rule.
 	//
@@ -8211,6 +8602,9 @@
 
 	// The differential privacy configuration.
 	DifferentialPrivacy *DifferentialPrivacyConfiguration `locationName:"differentialPrivacy" type:"structure"`
+
+	// A list of columns that aren't allowed to be shown in the query output.
+	DisallowedOutputColumns []*string `locationName:"disallowedOutputColumns" type:"list"`
 }
 
 // String returns the string representation.
@@ -8249,6 +8643,12 @@
 	return nil
 }
 
+// SetAdditionalAnalyses sets the AdditionalAnalyses field's value.
+func (s *AnalysisRuleCustom) SetAdditionalAnalyses(v string) *AnalysisRuleCustom {
+	s.AdditionalAnalyses = &v
+	return s
+}
+
 // SetAllowedAnalyses sets the AllowedAnalyses field's value.
 func (s *AnalysisRuleCustom) SetAllowedAnalyses(v []*string) *AnalysisRuleCustom {
 	s.AllowedAnalyses = v
@@ -8267,6 +8667,12 @@
 	return s
 }
 
+// SetDisallowedOutputColumns sets the DisallowedOutputColumns field's value.
+func (s *AnalysisRuleCustom) SetDisallowedOutputColumns(v []*string) *AnalysisRuleCustom {
+	s.DisallowedOutputColumns = v
+	return s
+}
+
 // Defines details for the analysis rule ID mapping table.
 type AnalysisRuleIdMappingTable struct {
 	_ struct{} `type:"structure"`
@@ -8326,6 +8732,10 @@
 type AnalysisRuleList struct {
 	_ struct{} `type:"structure"`
 
+	// An indicator as to whether additional analyses (such as Clean Rooms ML) can
+	// be applied to the output of the direct query.
+	AdditionalAnalyses *string `locationName:"additionalAnalyses" type:"string" enum:"AdditionalAnalyses"`
+
 	// The logical operators (if any) that are to be used in an INNER JOIN match
 	// condition. Default is AND.
 	AllowedJoinOperators []*string `locationName:"allowedJoinOperators" type:"list" enum:"JoinOperator"`
@@ -8379,6 +8789,12 @@
 	return nil
 }
 
+// SetAdditionalAnalyses sets the AdditionalAnalyses field's value.
+func (s *AnalysisRuleList) SetAdditionalAnalyses(v string) *AnalysisRuleList {
+	s.AdditionalAnalyses = &v
+	return s
+}
+
 // SetAllowedJoinOperators sets the AllowedJoinOperators field's value.
 func (s *AnalysisRuleList) SetAllowedJoinOperators(v []*string) *AnalysisRuleList {
 	s.AllowedJoinOperators = v
@@ -9990,7 +10406,7 @@
 	CreateTime *time.Time `locationName:"createTime" type:"timestamp" required:"true"`
 
 	// The identifier used to reference members of the collaboration. Only supports
-	// Amazon Web Services account ID.
+	// AWS account ID.
 	//
 	// CreatorAccountId is a required field
 	CreatorAccountId *string `locationName:"creatorAccountId" min:"12" type:"string" required:"true"`
@@ -10119,7 +10535,7 @@
 	CreateTime *time.Time `locationName:"createTime" type:"timestamp" required:"true"`
 
 	// The identifier used to reference members of the collaboration. Only supports
-	// Amazon Web Services account ID.
+	// AWS account ID.
 	//
 	// CreatorAccountId is a required field
 	CreatorAccountId *string `locationName:"creatorAccountId" min:"12" type:"string" required:"true"`
@@ -10937,6 +11353,38 @@
 	return s
 }
 
+// The configuration details.
+type ConfigurationDetails struct {
+	_ struct{} `type:"structure"`
+
+	// The direct analysis configuration details.
+	DirectAnalysisConfigurationDetails *DirectAnalysisConfigurationDetails `locationName:"directAnalysisConfigurationDetails" type:"structure"`
+}
+
+// String returns the string representation.
+//
+// API parameter values that are decorated as "sensitive" in the API will not
+// be included in the string output. The member name will be present, but the
+// value will be replaced with "sensitive".
+func (s ConfigurationDetails) String() string {
+	return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation.
+//
+// API parameter values that are decorated as "sensitive" in the API will not
+// be included in the string output. The member name will be present, but the
+// value will be replaced with "sensitive".
+func (s ConfigurationDetails) GoString() string {
+	return s.String()
+}
+
+// SetDirectAnalysisConfigurationDetails sets the DirectAnalysisConfigurationDetails field's value.
+func (s *ConfigurationDetails) SetDirectAnalysisConfigurationDetails(v *DirectAnalysisConfigurationDetails) *ConfigurationDetails {
+	s.DirectAnalysisConfigurationDetails = v
+	return s
+}
+
 // Details about the configured audience model association.
 type ConfiguredAudienceModelAssociation struct {
 	_ struct{} `type:"structure"`
@@ -11600,6 +12048,9 @@
 type ConfiguredTableAssociation struct {
 	_ struct{} `type:"structure"`
 
+	// The analysis rule types for the configured table association.
+	AnalysisRuleTypes []*string `locationName:"analysisRuleTypes" type:"list" enum:"ConfiguredTableAssociationAnalysisRuleType"`
+
 	// The unique ARN for the configured table association.
 	//
 	// Arn is a required field
@@ -11677,6 +12128,12 @@
 	return s.String()
 }
 
+// SetAnalysisRuleTypes sets the AnalysisRuleTypes field's value.
+func (s *ConfiguredTableAssociation) SetAnalysisRuleTypes(v []*string) *ConfiguredTableAssociation {
+	s.AnalysisRuleTypes = v
+	return s
+}
+
 // SetArn sets the Arn field's value.
 func (s *ConfiguredTableAssociation) SetArn(v string) *ConfiguredTableAssociation {
 	s.Arn = &v
@@ -11743,6 +12200,330 @@
 	return s
 }
 
+// An analysis rule for a configured table association. This analysis rule specifies
+// how data from the table can be used within its associated collaboration.
+// In the console, the ConfiguredTableAssociationAnalysisRule is referred to
+// as the collaboration analysis rule.
+type ConfiguredTableAssociationAnalysisRule struct {
+	_ struct{} `type:"structure"`
+
+	// The Amazon Resource Name (ARN) of the configured table association.
+	//
+	// ConfiguredTableAssociationArn is a required field
+	ConfiguredTableAssociationArn *string `locationName:"configuredTableAssociationArn" type:"string" required:"true"`
+
+	// The unique identifier for the configured table association.
+	//
+	// ConfiguredTableAssociationId is a required field
+	ConfiguredTableAssociationId *string `locationName:"configuredTableAssociationId" min:"36" type:"string" required:"true"`
+
+	// The creation time of the configured table association analysis rule.
+	//
+	// CreateTime is a required field
+	CreateTime *time.Time `locationName:"createTime" type:"timestamp" required:"true"`
+
+	// The membership identifier for the configured table association analysis rule.
+	//
+	// MembershipIdentifier is a required field
+	MembershipIdentifier *string `locationName:"membershipIdentifier" min:"36" type:"string" required:"true"`
+
+	// The policy of the configured table association analysis rule.
+	//
+	// Policy is a required field
+	Policy *ConfiguredTableAssociationAnalysisRulePolicy `locationName:"policy" type:"structure" required:"true"`
+
+	// The type of the configured table association analysis rule.
+	//
+	// Type is a required field
+	Type *string `locationName:"type" type:"string" required:"true" enum:"ConfiguredTableAssociationAnalysisRuleType"`
+
+	// The update time of the configured table association analysis rule.
+	//
+	// UpdateTime is a required field
+	UpdateTime *time.Time `locationName:"updateTime" type:"timestamp" required:"true"`
+}
+
+// String returns the string representation.
+//
+// API parameter values that are decorated as "sensitive" in the API will not
+// be included in the string output. The member name will be present, but the
+// value will be replaced with "sensitive".
+func (s ConfiguredTableAssociationAnalysisRule) String() string {
+	return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation.
+//
+// API parameter values that are decorated as "sensitive" in the API will not
+// be included in the string output. The member name will be present, but the
+// value will be replaced with "sensitive".
+func (s ConfiguredTableAssociationAnalysisRule) GoString() string {
+	return s.String()
+}
+
+// SetConfiguredTableAssociationArn sets the ConfiguredTableAssociationArn field's value.
+func (s *ConfiguredTableAssociationAnalysisRule) SetConfiguredTableAssociationArn(v string) *ConfiguredTableAssociationAnalysisRule {
+	s.ConfiguredTableAssociationArn = &v
+	return s
+}
+
+// SetConfiguredTableAssociationId sets the ConfiguredTableAssociationId field's value.
+func (s *ConfiguredTableAssociationAnalysisRule) SetConfiguredTableAssociationId(v string) *ConfiguredTableAssociationAnalysisRule {
+	s.ConfiguredTableAssociationId = &v
+	return s
+}
+
+// SetCreateTime sets the CreateTime field's value.
+func (s *ConfiguredTableAssociationAnalysisRule) SetCreateTime(v time.Time) *ConfiguredTableAssociationAnalysisRule {
+	s.CreateTime = &v
+	return s
+}
+
+// SetMembershipIdentifier sets the MembershipIdentifier field's value.
+func (s *ConfiguredTableAssociationAnalysisRule) SetMembershipIdentifier(v string) *ConfiguredTableAssociationAnalysisRule {
+	s.MembershipIdentifier = &v
+	return s
+}
+
+// SetPolicy sets the Policy field's value.
+func (s *ConfiguredTableAssociationAnalysisRule) SetPolicy(v *ConfiguredTableAssociationAnalysisRulePolicy) *ConfiguredTableAssociationAnalysisRule {
+	s.Policy = v
+	return s
+}
+
+// SetType sets the Type field's value.
+func (s *ConfiguredTableAssociationAnalysisRule) SetType(v string) *ConfiguredTableAssociationAnalysisRule {
+	s.Type = &v
+	return s
+}
+
+// SetUpdateTime sets the UpdateTime field's value.
+func (s *ConfiguredTableAssociationAnalysisRule) SetUpdateTime(v time.Time) *ConfiguredTableAssociationAnalysisRule {
+	s.UpdateTime = &v
+	return s
+}
+
+// The configured table association analysis rule applied to a configured table
+// with the aggregation analysis rule.
+type ConfiguredTableAssociationAnalysisRuleAggregation struct {
+	_ struct{} `type:"structure"`
+
+	// The list of resources or wildcards (ARNs) that are allowed to perform additional
+	// analysis on query output.
+	//
+	// The allowedAdditionalAnalyses parameter is currently supported for the list
+	// analysis rule (AnalysisRuleList) and the custom analysis rule (AnalysisRuleCustom).
+	AllowedAdditionalAnalyses []*string `locationName:"allowedAdditionalAnalyses" type:"list"`
+
+	// The list of collaboration members who are allowed to receive results of queries
+	// run with this configured table.
+	AllowedResultReceivers []*string `locationName:"allowedResultReceivers" type:"list"`
+}
+
+// String returns the string representation.
+//
+// API parameter values that are decorated as "sensitive" in the API will not
+// be included in the string output. The member name will be present, but the
+// value will be replaced with "sensitive".
+func (s ConfiguredTableAssociationAnalysisRuleAggregation) String() string {
+	return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation.
+//
+// API parameter values that are decorated as "sensitive" in the API will not
+// be included in the string output. The member name will be present, but the
+// value will be replaced with "sensitive".
+func (s ConfiguredTableAssociationAnalysisRuleAggregation) GoString() string {
+	return s.String()
+}
+
+// SetAllowedAdditionalAnalyses sets the AllowedAdditionalAnalyses field's value.
+func (s *ConfiguredTableAssociationAnalysisRuleAggregation) SetAllowedAdditionalAnalyses(v []*string) *ConfiguredTableAssociationAnalysisRuleAggregation {
+	s.AllowedAdditionalAnalyses = v
+	return s
+}
+
+// SetAllowedResultReceivers sets the AllowedResultReceivers field's value.
+func (s *ConfiguredTableAssociationAnalysisRuleAggregation) SetAllowedResultReceivers(v []*string) *ConfiguredTableAssociationAnalysisRuleAggregation {
+	s.AllowedResultReceivers = v
+	return s
+}
+
+// The configured table association analysis rule applied to a configured table
+// with the custom analysis rule.
+type ConfiguredTableAssociationAnalysisRuleCustom struct {
+	_ struct{} `type:"structure"`
+
+	// The list of resources or wildcards (ARNs) that are allowed to perform additional
+	// analysis on query output.
+	AllowedAdditionalAnalyses []*string `locationName:"allowedAdditionalAnalyses" type:"list"`
+
+	// The list of collaboration members who are allowed to receive results of queries
+	// run with this configured table.
+	AllowedResultReceivers []*string `locationName:"allowedResultReceivers" type:"list"`
+}
+
+// String returns the string representation.
+//
+// API parameter values that are decorated as "sensitive" in the API will not
+// be included in the string output. The member name will be present, but the
+// value will be replaced with "sensitive".
+func (s ConfiguredTableAssociationAnalysisRuleCustom) String() string {
+	return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation.
+//
+// API parameter values that are decorated as "sensitive" in the API will not
+// be included in the string output. The member name will be present, but the
+// value will be replaced with "sensitive".
+func (s ConfiguredTableAssociationAnalysisRuleCustom) GoString() string {
+	return s.String()
+}
+
+// SetAllowedAdditionalAnalyses sets the AllowedAdditionalAnalyses field's value.
+func (s *ConfiguredTableAssociationAnalysisRuleCustom) SetAllowedAdditionalAnalyses(v []*string) *ConfiguredTableAssociationAnalysisRuleCustom {
+	s.AllowedAdditionalAnalyses = v
+	return s
+}
+
+// SetAllowedResultReceivers sets the AllowedResultReceivers field's value.
+func (s *ConfiguredTableAssociationAnalysisRuleCustom) SetAllowedResultReceivers(v []*string) *ConfiguredTableAssociationAnalysisRuleCustom {
+	s.AllowedResultReceivers = v
+	return s
+}
+
+// The configured table association analysis rule applied to a configured table
+// with the list analysis rule.
+type ConfiguredTableAssociationAnalysisRuleList struct {
+	_ struct{} `type:"structure"`
+
+	// The list of resources or wildcards (ARNs) that are allowed to perform additional
+	// analysis on query output.
+	AllowedAdditionalAnalyses []*string `locationName:"allowedAdditionalAnalyses" type:"list"`
+
+	// The list of collaboration members who are allowed to receive results of queries
+	// run with this configured table.
+	AllowedResultReceivers []*string `locationName:"allowedResultReceivers" type:"list"`
+}
+
+// String returns the string representation.
+//
+// API parameter values that are decorated as "sensitive" in the API will not
+// be included in the string output. The member name will be present, but the
+// value will be replaced with "sensitive".
+func (s ConfiguredTableAssociationAnalysisRuleList) String() string {
+	return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation.
+//
+// API parameter values that are decorated as "sensitive" in the API will not
+// be included in the string output. The member name will be present, but the
+// value will be replaced with "sensitive".
+func (s ConfiguredTableAssociationAnalysisRuleList) GoString() string {
+	return s.String()
+}
+
+// SetAllowedAdditionalAnalyses sets the AllowedAdditionalAnalyses field's value.
+func (s *ConfiguredTableAssociationAnalysisRuleList) SetAllowedAdditionalAnalyses(v []*string) *ConfiguredTableAssociationAnalysisRuleList {
+	s.AllowedAdditionalAnalyses = v
+	return s
+}
+
+// SetAllowedResultReceivers sets the AllowedResultReceivers field's value.
+func (s *ConfiguredTableAssociationAnalysisRuleList) SetAllowedResultReceivers(v []*string) *ConfiguredTableAssociationAnalysisRuleList {
+	s.AllowedResultReceivers = v
+	return s
+}
+
+// Controls on the query specifications that can be run on an associated configured
+// table.
+type ConfiguredTableAssociationAnalysisRulePolicy struct {
+	_ struct{} `type:"structure"`
+
+	// The policy for the configured table association analysis rule.
+	V1 *ConfiguredTableAssociationAnalysisRulePolicyV1 `locationName:"v1" type:"structure"`
+}
+
+// String returns the string representation.
+//
+// API parameter values that are decorated as "sensitive" in the API will not
+// be included in the string output. The member name will be present, but the
+// value will be replaced with "sensitive".
+func (s ConfiguredTableAssociationAnalysisRulePolicy) String() string {
+	return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation.
+//
+// API parameter values that are decorated as "sensitive" in the API will not
+// be included in the string output. The member name will be present, but the
+// value will be replaced with "sensitive".
+func (s ConfiguredTableAssociationAnalysisRulePolicy) GoString() string {
+	return s.String()
+}
+
+// SetV1 sets the V1 field's value.
+func (s *ConfiguredTableAssociationAnalysisRulePolicy) SetV1(v *ConfiguredTableAssociationAnalysisRulePolicyV1) *ConfiguredTableAssociationAnalysisRulePolicy {
+	s.V1 = v
+	return s
+}
+
+// Controls on the query specifications that can be run on an associated configured
+// table.
+type ConfiguredTableAssociationAnalysisRulePolicyV1 struct {
+	_ struct{} `type:"structure"`
+
+	// Analysis rule type that enables only aggregation queries on a configured
+	// table.
+	Aggregation *ConfiguredTableAssociationAnalysisRuleAggregation `locationName:"aggregation" type:"structure"`
+
+	// Analysis rule type that enables the table owner to approve custom SQL queries
+	// on their configured tables. It supports differential privacy.
+	Custom *ConfiguredTableAssociationAnalysisRuleCustom `locationName:"custom" type:"structure"`
+
+	// Analysis rule type that enables only list queries on a configured table.
+	List *ConfiguredTableAssociationAnalysisRuleList `locationName:"list" type:"structure"`
+}
+
+// String returns the string representation.
+//
+// API parameter values that are decorated as "sensitive" in the API will not
+// be included in the string output. The member name will be present, but the
+// value will be replaced with "sensitive".
+func (s ConfiguredTableAssociationAnalysisRulePolicyV1) String() string {
+	return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation.
+//
+// API parameter values that are decorated as "sensitive" in the API will not
+// be included in the string output. The member name will be present, but the
+// value will be replaced with "sensitive".
+func (s ConfiguredTableAssociationAnalysisRulePolicyV1) GoString() string {
+	return s.String()
+}
+
+// SetAggregation sets the Aggregation field's value.
+func (s *ConfiguredTableAssociationAnalysisRulePolicyV1) SetAggregation(v *ConfiguredTableAssociationAnalysisRuleAggregation) *ConfiguredTableAssociationAnalysisRulePolicyV1 {
+	s.Aggregation = v
+	return s
+}
+
+// SetCustom sets the Custom field's value.
+func (s *ConfiguredTableAssociationAnalysisRulePolicyV1) SetCustom(v *ConfiguredTableAssociationAnalysisRuleCustom) *ConfiguredTableAssociationAnalysisRulePolicyV1 {
+	s.Custom = v
+	return s
+}
+
+// SetList sets the List field's value.
+func (s *ConfiguredTableAssociationAnalysisRulePolicyV1) SetList(v *ConfiguredTableAssociationAnalysisRuleList) *ConfiguredTableAssociationAnalysisRulePolicyV1 {
+	s.List = v
+	return s
+}
+
 // The configured table association summary for the objects listed by the request.
 type ConfiguredTableAssociationSummary struct {
 	_ struct{} `type:"structure"`
@@ -12385,7 +13166,7 @@
 type CreateCollaborationOutput struct {
 	_ struct{} `type:"structure"`
 
-	// The entire created collaboration object.
+	// The collaboration.
 	//
 	// Collaboration is a required field
 	Collaboration *Collaboration `locationName:"collaboration" type:"structure" required:"true"`
@@ -12581,7 +13362,7 @@
 type CreateConfiguredTableAnalysisRuleInput struct {
 	_ struct{} `type:"structure"`
 
-	// The entire created configured table analysis rule object.
+	// The analysis rule policy that was created for the configured table.
 	//
 	// AnalysisRulePolicy is a required field
 	AnalysisRulePolicy *ConfiguredTableAnalysisRulePolicy `locationName:"analysisRulePolicy" type:"structure" required:"true"`
@@ -12664,7 +13445,7 @@
 type CreateConfiguredTableAnalysisRuleOutput struct {
 	_ struct{} `type:"structure"`
 
-	// The entire created analysis rule.
+	// The analysis rule that was created for the configured table.
 	//
 	// AnalysisRule is a required field
 	AnalysisRule *ConfiguredTableAnalysisRule `locationName:"analysisRule" type:"structure" required:"true"`
@@ -12694,6 +13475,137 @@
 	return s
 }
 
+type CreateConfiguredTableAssociationAnalysisRuleInput struct {
+	_ struct{} `type:"structure"`
+
+	// The analysis rule policy that was created for the configured table association.
+	//
+	// AnalysisRulePolicy is a required field
+	AnalysisRulePolicy *ConfiguredTableAssociationAnalysisRulePolicy `locationName:"analysisRulePolicy" type:"structure" required:"true"`
+
+	// The type of analysis rule.
+	//
+	// AnalysisRuleType is a required field
+	AnalysisRuleType *string `locationName:"analysisRuleType" type:"string" required:"true" enum:"ConfiguredTableAssociationAnalysisRuleType"`
+
+	// The unique ID for the configured table association. Currently accepts the
+	// configured table association ID.
+	//
+	// ConfiguredTableAssociationIdentifier is a required field
+	ConfiguredTableAssociationIdentifier *string `location:"uri" locationName:"configuredTableAssociationIdentifier" min:"36" type:"string" required:"true"`
+
+	// A unique identifier for the membership that the configured table association
+	// belongs to. Currently accepts the membership ID.
+	//
+	// MembershipIdentifier is a required field
+	MembershipIdentifier *string `location:"uri" locationName:"membershipIdentifier" min:"36" type:"string" required:"true"`
+}
+
+// String returns the string representation.
+//
+// API parameter values that are decorated as "sensitive" in the API will not
+// be included in the string output. The member name will be present, but the
+// value will be replaced with "sensitive".
+func (s CreateConfiguredTableAssociationAnalysisRuleInput) String() string {
+	return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation.
+//
+// API parameter values that are decorated as "sensitive" in the API will not
+// be included in the string output. The member name will be present, but the
+// value will be replaced with "sensitive".
+func (s CreateConfiguredTableAssociationAnalysisRuleInput) GoString() string {
+	return s.String()
+}
+
+// Validate inspects the fields of the type to determine if they are valid.
+func (s *CreateConfiguredTableAssociationAnalysisRuleInput) Validate() error {
+	invalidParams := request.ErrInvalidParams{Context: "CreateConfiguredTableAssociationAnalysisRuleInput"}
+	if s.AnalysisRulePolicy == nil {
+		invalidParams.Add(request.NewErrParamRequired("AnalysisRulePolicy"))
+	}
+	if s.AnalysisRuleType == nil {
+		invalidParams.Add(request.NewErrParamRequired("AnalysisRuleType"))
+	}
+	if s.ConfiguredTableAssociationIdentifier == nil {
+		invalidParams.Add(request.NewErrParamRequired("ConfiguredTableAssociationIdentifier"))
+	}
+	if s.ConfiguredTableAssociationIdentifier != nil && len(*s.ConfiguredTableAssociationIdentifier) < 36 {
+		invalidParams.Add(request.NewErrParamMinLen("ConfiguredTableAssociationIdentifier", 36))
+	}
+	if s.MembershipIdentifier == nil {
+		invalidParams.Add(request.NewErrParamRequired("MembershipIdentifier"))
+	}
+	if s.MembershipIdentifier != nil && len(*s.MembershipIdentifier) < 36 {
+		invalidParams.Add(request.NewErrParamMinLen("MembershipIdentifier", 36))
+	}
+
+	if invalidParams.Len() > 0 {
+		return invalidParams
+	}
+	return nil
+}
+
+// SetAnalysisRulePolicy sets the AnalysisRulePolicy field's value.
+func (s *CreateConfiguredTableAssociationAnalysisRuleInput) SetAnalysisRulePolicy(v *ConfiguredTableAssociationAnalysisRulePolicy) *CreateConfiguredTableAssociationAnalysisRuleInput {
+	s.AnalysisRulePolicy = v
+	return s
+}
+
+// SetAnalysisRuleType sets the AnalysisRuleType field's value.
+func (s *CreateConfiguredTableAssociationAnalysisRuleInput) SetAnalysisRuleType(v string) *CreateConfiguredTableAssociationAnalysisRuleInput {
+	s.AnalysisRuleType = &v
+	return s
+}
+
+// SetConfiguredTableAssociationIdentifier sets the ConfiguredTableAssociationIdentifier field's value.
+func (s *CreateConfiguredTableAssociationAnalysisRuleInput) SetConfiguredTableAssociationIdentifier(v string) *CreateConfiguredTableAssociationAnalysisRuleInput {
+	s.ConfiguredTableAssociationIdentifier = &v
+	return s
+}
+
+// SetMembershipIdentifier sets the MembershipIdentifier field's value.
+func (s *CreateConfiguredTableAssociationAnalysisRuleInput) SetMembershipIdentifier(v string) *CreateConfiguredTableAssociationAnalysisRuleInput {
+	s.MembershipIdentifier = &v
+	return s
+}
+
+type CreateConfiguredTableAssociationAnalysisRuleOutput struct {
+	_ struct{} `type:"structure"`
+
+	// The analysis rule for the configured table association. In the console,
+	// the ConfiguredTableAssociationAnalysisRule is referred to as the collaboration
+	// analysis rule.
+	//
+	// AnalysisRule is a required field
+	AnalysisRule *ConfiguredTableAssociationAnalysisRule `locationName:"analysisRule" type:"structure" required:"true"`
+}
+
+// String returns the string representation.
+//
+// API parameter values that are decorated as "sensitive" in the API will not
+// be included in the string output. The member name will be present, but the
+// value will be replaced with "sensitive".
+func (s CreateConfiguredTableAssociationAnalysisRuleOutput) String() string {
+	return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation.
+//
+// API parameter values that are decorated as "sensitive" in the API will not
+// be included in the string output. The member name will be present, but the
+// value will be replaced with "sensitive".
+func (s CreateConfiguredTableAssociationAnalysisRuleOutput) GoString() string {
+	return s.String()
+}
+
+// SetAnalysisRule sets the AnalysisRule field's value.
+func (s *CreateConfiguredTableAssociationAnalysisRuleOutput) SetAnalysisRule(v *ConfiguredTableAssociationAnalysisRule) *CreateConfiguredTableAssociationAnalysisRuleOutput {
+	s.AnalysisRule = v
+	return s
+}
+
 type CreateConfiguredTableAssociationInput struct {
 	_ struct{} `type:"structure"`
 
@@ -12820,7 +13732,7 @@
 type CreateConfiguredTableAssociationOutput struct {
 	_ struct{} `type:"structure"`
 
-	// The entire configured table association object.
+	// The configured table association.
 	//
 	// ConfiguredTableAssociation is a required field
 	ConfiguredTableAssociation *ConfiguredTableAssociation `locationName:"configuredTableAssociation" type:"structure" required:"true"`
@@ -13882,6 +14794,113 @@
 	return s.String()
 }
 
+type DeleteConfiguredTableAssociationAnalysisRuleInput struct {
+	_ struct{} `type:"structure" nopayload:"true"`
+
+	// The type of the analysis rule that you want to delete.
+	//
+	// AnalysisRuleType is a required field
+	AnalysisRuleType *string `location:"uri" locationName:"analysisRuleType" type:"string" required:"true" enum:"ConfiguredTableAssociationAnalysisRuleType"`
+
+	// The identifier for the configured table association that's related to the
+	// analysis rule that you want to delete.
+	//
+	// ConfiguredTableAssociationIdentifier is a required field
+	ConfiguredTableAssociationIdentifier *string `location:"uri" locationName:"configuredTableAssociationIdentifier" min:"36" type:"string" required:"true"`
+
+	// A unique identifier for the membership that the configured table association
+	// belongs to. Currently accepts the membership ID.
+	//
+	// MembershipIdentifier is a required field
+	MembershipIdentifier *string `location:"uri" locationName:"membershipIdentifier" min:"36" type:"string" required:"true"`
+}
+
+// String returns the string representation.
+//
+// API parameter values that are decorated as "sensitive" in the API will not
+// be included in the string output. The member name will be present, but the
+// value will be replaced with "sensitive".
+func (s DeleteConfiguredTableAssociationAnalysisRuleInput) String() string {
+	return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation.
+//
+// API parameter values that are decorated as "sensitive" in the API will not
+// be included in the string output. The member name will be present, but the
+// value will be replaced with "sensitive".
+func (s DeleteConfiguredTableAssociationAnalysisRuleInput) GoString() string {
+	return s.String()
+}
+
+// Validate inspects the fields of the type to determine if they are valid.
+func (s *DeleteConfiguredTableAssociationAnalysisRuleInput) Validate() error {
+	invalidParams := request.ErrInvalidParams{Context: "DeleteConfiguredTableAssociationAnalysisRuleInput"}
+	if s.AnalysisRuleType == nil {
+		invalidParams.Add(request.NewErrParamRequired("AnalysisRuleType"))
+	}
+	if s.AnalysisRuleType != nil && len(*s.AnalysisRuleType) < 1 {
+		invalidParams.Add(request.NewErrParamMinLen("AnalysisRuleType", 1))
+	}
+	if s.ConfiguredTableAssociationIdentifier == nil {
+		invalidParams.Add(request.NewErrParamRequired("ConfiguredTableAssociationIdentifier"))
+	}
+	if s.ConfiguredTableAssociationIdentifier != nil && len(*s.ConfiguredTableAssociationIdentifier) < 36 {
+		invalidParams.Add(request.NewErrParamMinLen("ConfiguredTableAssociationIdentifier", 36))
+	}
+	if s.MembershipIdentifier == nil {
+		invalidParams.Add(request.NewErrParamRequired("MembershipIdentifier"))
+	}
+	if s.MembershipIdentifier != nil && len(*s.MembershipIdentifier) < 36 {
+		invalidParams.Add(request.NewErrParamMinLen("MembershipIdentifier", 36))
+	}
+
+	if invalidParams.Len() > 0 {
+		return invalidParams
+	}
+	return nil
+}
+
+// SetAnalysisRuleType sets the AnalysisRuleType field's value.
+func (s *DeleteConfiguredTableAssociationAnalysisRuleInput) SetAnalysisRuleType(v string) *DeleteConfiguredTableAssociationAnalysisRuleInput {
+	s.AnalysisRuleType = &v
+	return s
+}
+
+// SetConfiguredTableAssociationIdentifier sets the ConfiguredTableAssociationIdentifier field's value.
+func (s *DeleteConfiguredTableAssociationAnalysisRuleInput) SetConfiguredTableAssociationIdentifier(v string) *DeleteConfiguredTableAssociationAnalysisRuleInput {
+	s.ConfiguredTableAssociationIdentifier = &v
+	return s
+}
+
+// SetMembershipIdentifier sets the MembershipIdentifier field's value.
+func (s *DeleteConfiguredTableAssociationAnalysisRuleInput) SetMembershipIdentifier(v string) *DeleteConfiguredTableAssociationAnalysisRuleInput {
+	s.MembershipIdentifier = &v
+	return s
+}
+
+type DeleteConfiguredTableAssociationAnalysisRuleOutput struct {
+	_ struct{} `type:"structure"`
+}
+
+// String returns the string representation.
+//
+// API parameter values that are decorated as "sensitive" in the API will not
+// be included in the string output. The member name will be present, but the
+// value will be replaced with "sensitive".
+func (s DeleteConfiguredTableAssociationAnalysisRuleOutput) String() string {
+	return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation.
+//
+// API parameter values that are decorated as "sensitive" in the API will not
+// be included in the string output. The member name will be present, but the
+// value will be replaced with "sensitive".
+func (s DeleteConfiguredTableAssociationAnalysisRuleOutput) GoString() string {
+	return s.String()
+}
+
 type DeleteConfiguredTableAssociationInput struct {
 	_ struct{} `type:"structure" nopayload:"true"`
 
@@ -15130,6 +16149,38 @@
 	return s
 }
 
+// The direct analysis configuration details.
+type DirectAnalysisConfigurationDetails struct {
+	_ struct{} `type:"structure"`
+
+	// The account IDs for the member who received the results of a protected query.
+	ReceiverAccountIds []*string `locationName:"receiverAccountIds" type:"list"`
+}
+
+// String returns the string representation.
+//
+// API parameter values that are decorated as "sensitive" in the API will not
+// be included in the string output. The member name will be present, but the
+// value will be replaced with "sensitive".
+func (s DirectAnalysisConfigurationDetails) String() string {
+	return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation.
+//
+// API parameter values that are decorated as "sensitive" in the API will not
+// be included in the string output. The member name will be present, but the
+// value will be replaced with "sensitive".
+func (s DirectAnalysisConfigurationDetails) GoString() string {
+	return s.String()
+}
+
+// SetReceiverAccountIds sets the ReceiverAccountIds field's value.
+func (s *DirectAnalysisConfigurationDetails) SetReceiverAccountIds(v []*string) *DirectAnalysisConfigurationDetails {
+	s.ReceiverAccountIds = v
+	return s
+}
+
 type GetAnalysisTemplateInput struct {
 	_ struct{} `type:"structure" nopayload:"true"`
 
@@ -15814,6 +16865,126 @@
 	return s
 }
 
+type GetConfiguredTableAssociationAnalysisRuleInput struct {
+	_ struct{} `type:"structure" nopayload:"true"`
+
+	// The type of analysis rule that you want to retrieve.
+	//
+	// AnalysisRuleType is a required field
+	AnalysisRuleType *string `location:"uri" locationName:"analysisRuleType" type:"string" required:"true" enum:"ConfiguredTableAssociationAnalysisRuleType"`
+
+	// The identifier for the configured table association that's related to the
+	// analysis rule.
+	//
+	// ConfiguredTableAssociationIdentifier is a required field
+	ConfiguredTableAssociationIdentifier *string `location:"uri" locationName:"configuredTableAssociationIdentifier" min:"36" type:"string" required:"true"`
+
+	// A unique identifier for the membership that the configured table association
+	// belongs to. Currently accepts the membership ID.
+	//
+	// MembershipIdentifier is a required field
+	MembershipIdentifier *string `location:"uri" locationName:"membershipIdentifier" min:"36" type:"string" required:"true"`
+}
+
+// String returns the string representation.
+//
+// API parameter values that are decorated as "sensitive" in the API will not
+// be included in the string output. The member name will be present, but the
+// value will be replaced with "sensitive".
+func (s GetConfiguredTableAssociationAnalysisRuleInput) String() string {
+	return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation.
+//
+// API parameter values that are decorated as "sensitive" in the API will not
+// be included in the string output. The member name will be present, but the
+// value will be replaced with "sensitive".
+func (s GetConfiguredTableAssociationAnalysisRuleInput) GoString() string {
+	return s.String()
+}
+
+// Validate inspects the fields of the type to determine if they are valid.
+func (s *GetConfiguredTableAssociationAnalysisRuleInput) Validate() error {
+	invalidParams := request.ErrInvalidParams{Context: "GetConfiguredTableAssociationAnalysisRuleInput"}
+	if s.AnalysisRuleType == nil {
+		invalidParams.Add(request.NewErrParamRequired("AnalysisRuleType"))
+	}
+	if s.AnalysisRuleType != nil && len(*s.AnalysisRuleType) < 1 {
+		invalidParams.Add(request.NewErrParamMinLen("AnalysisRuleType", 1))
+	}
+	if s.ConfiguredTableAssociationIdentifier == nil {
+		invalidParams.Add(request.NewErrParamRequired("ConfiguredTableAssociationIdentifier"))
+	}
+	if s.ConfiguredTableAssociationIdentifier != nil && len(*s.ConfiguredTableAssociationIdentifier) < 36 {
+		invalidParams.Add(request.NewErrParamMinLen("ConfiguredTableAssociationIdentifier", 36))
+	}
+	if s.MembershipIdentifier == nil {
+		invalidParams.Add(request.NewErrParamRequired("MembershipIdentifier"))
+	}
+	if s.MembershipIdentifier != nil && len(*s.MembershipIdentifier) < 36 {
+		invalidParams.Add(request.NewErrParamMinLen("MembershipIdentifier", 36))
+	}
+
+	if invalidParams.Len() > 0 {
+		return invalidParams
+	}
+	return nil
+}
+
+// SetAnalysisRuleType sets the AnalysisRuleType field's value.
+func (s *GetConfiguredTableAssociationAnalysisRuleInput) SetAnalysisRuleType(v string) *GetConfiguredTableAssociationAnalysisRuleInput {
+	s.AnalysisRuleType = &v
+	return s
+}
+
+// SetConfiguredTableAssociationIdentifier sets the ConfiguredTableAssociationIdentifier field's value.
+func (s *GetConfiguredTableAssociationAnalysisRuleInput) SetConfiguredTableAssociationIdentifier(v string) *GetConfiguredTableAssociationAnalysisRuleInput {
+	s.ConfiguredTableAssociationIdentifier = &v
+	return s
+}
+
+// SetMembershipIdentifier sets the MembershipIdentifier field's value.
+func (s *GetConfiguredTableAssociationAnalysisRuleInput) SetMembershipIdentifier(v string) *GetConfiguredTableAssociationAnalysisRuleInput {
+	s.MembershipIdentifier = &v
+	return s
+}
+
+type GetConfiguredTableAssociationAnalysisRuleOutput struct {
+	_ struct{} `type:"structure"`
+
+	// The analysis rule for the configured table association. In the console,
+	// the ConfiguredTableAssociationAnalysisRule is referred to as the collaboration
+	// analysis rule.
+	//
+	// AnalysisRule is a required field
+	AnalysisRule *ConfiguredTableAssociationAnalysisRule `locationName:"analysisRule" type:"structure" required:"true"`
+}
+
+// String returns the string representation.
+//
+// API parameter values that are decorated as "sensitive" in the API will not
+// be included in the string output. The member name will be present, but the
+// value will be replaced with "sensitive".
+func (s GetConfiguredTableAssociationAnalysisRuleOutput) String() string {
+	return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation.
+//
+// API parameter values that are decorated as "sensitive" in the API will not
+// be included in the string output. The member name will be present, but the
+// value will be replaced with "sensitive".
+func (s GetConfiguredTableAssociationAnalysisRuleOutput) GoString() string {
+	return s.String()
+}
+
+// SetAnalysisRule sets the AnalysisRule field's value.
+func (s *GetConfiguredTableAssociationAnalysisRuleOutput) SetAnalysisRule(v *ConfiguredTableAssociationAnalysisRule) *GetConfiguredTableAssociationAnalysisRuleOutput {
+	s.AnalysisRule = v
+	return s
+}
+
 type GetConfiguredTableAssociationInput struct {
 	_ struct{} `type:"structure" nopayload:"true"`
 
@@ -17461,9 +18632,7 @@
 type ListAnalysisTemplatesInput struct {
 	_ struct{} `type:"structure" nopayload:"true"`
 
-	// The maximum number of results that are returned for an API request call.
-	// The service chooses a default number if you don't set one. The service might
-	// return a `nextToken` even if the `maxResults` value has not been met.
+	// The maximum size of the results that is returned per call.
 	MaxResults *int64 `location:"querystring" locationName:"maxResults" min:"1" type:"integer"`
 
 	// The identifier for a membership resource.
@@ -17471,7 +18640,8 @@
 	// MembershipIdentifier is a required field
 	MembershipIdentifier *string `location:"uri" locationName:"membershipIdentifier" min:"36" type:"string" required:"true"`
 
-	// The pagination token that's used to fetch the next set of results.
+	// The token value retrieved from a previous call to access the next page of
+	// results.
 	NextToken *string `location:"querystring" locationName:"nextToken" type:"string"`
 }
 
@@ -17538,7 +18708,8 @@
 	// AnalysisTemplateSummaries is a required field
 	AnalysisTemplateSummaries []*AnalysisTemplateSummary `locationName:"analysisTemplateSummaries" type:"list" required:"true"`
 
-	// The pagination token that's used to fetch the next set of results.
+	// The token value retrieved from a previous call to access the next page of
+	// results.
 	NextToken *string `locationName:"nextToken" type:"string"`
 }
 
@@ -17581,12 +18752,11 @@
 	// CollaborationIdentifier is a required field
 	CollaborationIdentifier *string `location:"uri" locationName:"collaborationIdentifier" min:"36" type:"string" required:"true"`
 
-	// The maximum number of results that are returned for an API request call.
-	// The service chooses a default number if you don't set one. The service might
-	// return a `nextToken` even if the `maxResults` value has not been met.
+	// The maximum size of the results that is returned per call.
 	MaxResults *int64 `location:"querystring" locationName:"maxResults" min:"1" type:"integer"`
 
-	// The pagination token that's used to fetch the next set of results.
+	// The token value retrieved from a previous call to access the next page of
+	// results.
 	NextToken *string `location:"querystring" locationName:"nextToken" type:"string"`
 }
 
@@ -17653,7 +18823,8 @@
 	// CollaborationAnalysisTemplateSummaries is a required field
 	CollaborationAnalysisTemplateSummaries []*CollaborationAnalysisTemplateSummary `locationName:"collaborationAnalysisTemplateSummaries" type:"list" required:"true"`
 
-	// The pagination token that's used to fetch the next set of results.
+	// The token value retrieved from a previous call to access the next page of
+	// results.
 	NextToken *string `locationName:"nextToken" type:"string"`
 }
 
@@ -17696,12 +18867,11 @@
 	// CollaborationIdentifier is a required field
 	CollaborationIdentifier *string `location:"uri" locationName:"collaborationIdentifier" min:"36" type:"string" required:"true"`
 
-	// The maximum number of results that are returned for an API request call.
-	// The service chooses a default number if you don't set one. The service might
-	// return a `nextToken` even if the `maxResults` value has not been met.
+	// The maximum size of the results that is returned per call.
 	MaxResults *int64 `location:"querystring" locationName:"maxResults" min:"1" type:"integer"`
 
-	// The pagination token that's used to fetch the next set of results.
+	// The token value retrieved from a previous call to access the next page of
+	// results.
 	NextToken *string `location:"querystring" locationName:"nextToken" type:"string"`
 }
 
@@ -17768,7 +18938,8 @@
 	// CollaborationConfiguredAudienceModelAssociationSummaries is a required field
 	CollaborationConfiguredAudienceModelAssociationSummaries []*CollaborationConfiguredAudienceModelAssociationSummary `locationName:"collaborationConfiguredAudienceModelAssociationSummaries" type:"list" required:"true"`
 
-	// The pagination token that's used to fetch the next set of results.
+	// The token value retrieved from a previous call to access the next page of
+	// results.
 	NextToken *string `locationName:"nextToken" type:"string"`
 }
 
@@ -17926,12 +19097,13 @@
 	// CollaborationIdentifier is a required field
 	CollaborationIdentifier *string `location:"uri" locationName:"collaborationIdentifier" min:"36" type:"string" required:"true"`
 
-	// The maximum number of results that are returned for an API request call.
-	// The service chooses a default number if you don't set one. The service might
-	// return a `nextToken` even if the `maxResults` value has not been met.
+	// The maximum size of the results that is returned per call. Service chooses
+	// a default if it has not been set. Service may return a nextToken even if
+	// the maximum results has not been met.
 	MaxResults *int64 `location:"querystring" locationName:"maxResults" min:"1" type:"integer"`
 
-	// The pagination token that's used to fetch the next set of results.
+	// The token value retrieved from a previous call to access the next page of
+	// results.
 	NextToken *string `location:"querystring" locationName:"nextToken" type:"string"`
 }
 
@@ -18000,7 +19172,8 @@
 	// CollaborationPrivacyBudgetTemplateSummaries is a required field
 	CollaborationPrivacyBudgetTemplateSummaries []*CollaborationPrivacyBudgetTemplateSummary `locationName:"collaborationPrivacyBudgetTemplateSummaries" type:"list" required:"true"`
 
-	// The pagination token that's used to fetch the next set of results.
+	// The token value retrieved from a previous call to access the next page of
+	// results.
 	NextToken *string `locationName:"nextToken" type:"string"`
 }
 
@@ -18042,12 +19215,13 @@
 	// CollaborationIdentifier is a required field
 	CollaborationIdentifier *string `location:"uri" locationName:"collaborationIdentifier" min:"36" type:"string" required:"true"`
 
-	// The maximum number of results that are returned for an API request call.
-	// The service chooses a default number if you don't set one. The service might
-	// return a `nextToken` even if the `maxResults` value has not been met.
+	// The maximum size of the results that is returned per call. Service chooses
+	// a default if it has not been set. Service may return a nextToken even if
+	// the maximum results has not been met.
 	MaxResults *int64 `location:"querystring" locationName:"maxResults" min:"1" type:"integer"`
 
-	// The pagination token that's used to fetch the next set of results.
+	// The token value retrieved from a previous call to access the next page of
+	// results.
 	NextToken *string `location:"querystring" locationName:"nextToken" type:"string"`
 
 	// Specifies the type of the privacy budget.
@@ -18128,7 +19302,8 @@
 	// CollaborationPrivacyBudgetSummaries is a required field
 	CollaborationPrivacyBudgetSummaries []*CollaborationPrivacyBudgetSummary `locationName:"collaborationPrivacyBudgetSummaries" type:"list" required:"true"`
 
-	// The pagination token that's used to fetch the next set of results.
+	// The token value retrieved from a previous call to access the next page of
+	// results.
 	NextToken *string `locationName:"nextToken" type:"string"`
 }
 
@@ -18165,15 +19340,16 @@
 type ListCollaborationsInput struct {
 	_ struct{} `type:"structure" nopayload:"true"`
 
-	// The maximum number of results that are returned for an API request call.
-	// The service chooses a default number if you don't set one. The service might
-	// return a `nextToken` even if the `maxResults` value has not been met.
+	// The maximum size of the results that is returned per call. Service chooses
+	// a default if it has not been set. Service may return a nextToken even if
+	// the maximum results has not been met.
 	MaxResults *int64 `location:"querystring" locationName:"maxResults" min:"1" type:"integer"`
 
 	// The caller's status in a collaboration.
 	MemberStatus *string `location:"querystring" locationName:"memberStatus" type:"string" enum:"FilterableMemberStatus"`
 
-	// The pagination token that's used to fetch the next set of results.
+	// The token value retrieved from a previous call to access the next page of
+	// results.
 	NextToken *string `location:"querystring" locationName:"nextToken" type:"string"`
 }
 
@@ -18234,7 +19410,8 @@
 	// CollaborationList is a required field
 	CollaborationList []*CollaborationSummary `locationName:"collaborationList" type:"list" required:"true"`
 
-	// The pagination token that's used to fetch the next set of results.
+	// The token value retrieved from a previous call to access the next page of
+	// results.
 	NextToken *string `locationName:"nextToken" type:"string"`
 }
 
@@ -18271,9 +19448,9 @@
 type ListConfiguredAudienceModelAssociationsInput struct {
 	_ struct{} `type:"structure" nopayload:"true"`
 
-	// The maximum number of results that are returned for an API request call.
-	// The service chooses a default number if you don't set one. The service might
-	// return a `nextToken` even if the `maxResults` value has not been met.
+	// The maximum size of the results that is returned per call. Service chooses
+	// a default if it has not been set. Service may return a nextToken even if
+	// the maximum results has not been met.
 	MaxResults *int64 `location:"querystring" locationName:"maxResults" min:"1" type:"integer"`
 
 	// A unique identifier for a membership that contains the configured audience
@@ -18282,7 +19459,8 @@
 	// MembershipIdentifier is a required field
 	MembershipIdentifier *string `location:"uri" locationName:"membershipIdentifier" min:"36" type:"string" required:"true"`
 
-	// The pagination token that's used to fetch the next set of results.
+	// The token value retrieved from a previous call to access the next page of
+	// results.
 	NextToken *string `location:"querystring" locationName:"nextToken" type:"string"`
 }
 
@@ -18386,9 +19564,7 @@
 type ListConfiguredTableAssociationsInput struct {
 	_ struct{} `type:"structure" nopayload:"true"`
 
-	// The maximum number of results that are returned for an API request call.
-	// The service chooses a default number if you don't set one. The service might
-	// return a `nextToken` even if the `maxResults` value has not been met.
+	// The maximum size of the results that is returned per call.
 	MaxResults *int64 `location:"querystring" locationName:"maxResults" min:"1" type:"integer"`
 
 	// A unique identifier for the membership to list configured table associations
@@ -18397,7 +19573,8 @@
 	// MembershipIdentifier is a required field
 	MembershipIdentifier *string `location:"uri" locationName:"membershipIdentifier" min:"36" type:"string" required:"true"`
 
-	// The pagination token that's used to fetch the next set of results.
+	// The token value retrieved from a previous call to access the next page of
+	// results.
 	NextToken *string `location:"querystring" locationName:"nextToken" type:"string"`
 }
 
@@ -18464,7 +19641,8 @@
 	// ConfiguredTableAssociationSummaries is a required field
 	ConfiguredTableAssociationSummaries []*ConfiguredTableAssociationSummary `locationName:"configuredTableAssociationSummaries" type:"list" required:"true"`
 
-	// The pagination token that's used to fetch the next set of results.
+	// The token value retrieved from a previous call to access the next page of
+	// results.
 	NextToken *string `locationName:"nextToken" type:"string"`
 }
 
@@ -18501,12 +19679,11 @@
 type ListConfiguredTablesInput struct {
 	_ struct{} `type:"structure" nopayload:"true"`
 
-	// The maximum number of results that are returned for an API request call.
-	// The service chooses a default number if you don't set one. The service might
-	// return a `nextToken` even if the `maxResults` value has not been met.
+	// The maximum size of the results that is returned per call.
 	MaxResults *int64 `location:"querystring" locationName:"maxResults" min:"1" type:"integer"`
 
-	// The pagination token that's used to fetch the next set of results.
+	// The token value retrieved from a previous call to access the next page of
+	// results.
 	NextToken *string `location:"querystring" locationName:"nextToken" type:"string"`
 }
 
@@ -18561,7 +19738,8 @@
 	// ConfiguredTableSummaries is a required field
 	ConfiguredTableSummaries []*ConfiguredTableSummary `locationName:"configuredTableSummaries" type:"list" required:"true"`
 
-	// The pagination token that's used to fetch the next set of results.
+	// The token value retrieved from a previous call to access the next page of
+	// results.
 	NextToken *string `locationName:"nextToken" type:"string"`
 }
 
@@ -18833,12 +20011,11 @@
 	// CollaborationIdentifier is a required field
 	CollaborationIdentifier *string `location:"uri" locationName:"collaborationIdentifier" min:"36" type:"string" required:"true"`
 
-	// The maximum number of results that are returned for an API request call.
-	// The service chooses a default number if you don't set one. The service might
-	// return a `nextToken` even if the `maxResults` value has not been met.
+	// The maximum size of the results that is returned per call.
 	MaxResults *int64 `location:"querystring" locationName:"maxResults" min:"1" type:"integer"`
 
-	// The pagination token that's used to fetch the next set of results.
+	// The token value retrieved from a previous call to access the next page of
+	// results.
 	NextToken *string `location:"querystring" locationName:"nextToken" type:"string"`
 }
 
@@ -18905,7 +20082,8 @@
 	// MemberSummaries is a required field
 	MemberSummaries []*MemberSummary `locationName:"memberSummaries" type:"list" required:"true"`
 
-	// The pagination token that's used to fetch the next set of results.
+	// The token value retrieved from a previous call to access the next page of
+	// results.
 	NextToken *string `locationName:"nextToken" type:"string"`
 }
 
@@ -18942,12 +20120,11 @@
 type ListMembershipsInput struct {
 	_ struct{} `type:"structure" nopayload:"true"`
 
-	// The maximum number of results that are returned for an API request call.
-	// The service chooses a default number if you don't set one. The service might
-	// return a `nextToken` even if the `maxResults` value has not been met.
+	// The maximum size of the results that is returned per call.
 	MaxResults *int64 `location:"querystring" locationName:"maxResults" min:"1" type:"integer"`
 
-	// The pagination token that's used to fetch the next set of results.
+	// The token value retrieved from a previous call to access the next page of
+	// results.
 	NextToken *string `location:"querystring" locationName:"nextToken" type:"string"`
 
 	// A filter which will return only memberships in the specified status.
@@ -19011,7 +20188,8 @@
 	// MembershipSummaries is a required field
 	MembershipSummaries []*MembershipSummary `locationName:"membershipSummaries" type:"list" required:"true"`
 
-	// The pagination token that's used to fetch the next set of results.
+	// The token value retrieved from a previous call to access the next page of
+	// results.
 	NextToken *string `locationName:"nextToken" type:"string"`
 }
 
@@ -19048,9 +20226,9 @@
 type ListPrivacyBudgetTemplatesInput struct {
 	_ struct{} `type:"structure" nopayload:"true"`
 
-	// The maximum number of results that are returned for an API request call.
-	// The service chooses a default number if you don't set one. The service might
-	// return a `nextToken` even if the `maxResults` value has not been met.
+	// The maximum size of the results that is returned per call. Service chooses
+	// a default if it has not been set. Service may return a nextToken even if
+	// the maximum results has not been met.
 	MaxResults *int64 `location:"querystring" locationName:"maxResults" min:"1" type:"integer"`
 
 	// A unique identifier for one of your memberships for a collaboration. The
@@ -19060,7 +20238,8 @@
 	// MembershipIdentifier is a required field
 	MembershipIdentifier *string `location:"uri" locationName:"membershipIdentifier" min:"36" type:"string" required:"true"`
 
-	// The pagination token that's used to fetch the next set of results.
+	// The token value retrieved from a previous call to access the next page of
+	// results.
 	NextToken *string `location:"querystring" locationName:"nextToken" type:"string"`
 }
 
@@ -19122,7 +20301,8 @@
 type ListPrivacyBudgetTemplatesOutput struct {
 	_ struct{} `type:"structure"`
 
-	// The pagination token that's used to fetch the next set of results.
+	// The token value retrieved from a previous call to access the next page of
+	// results.
 	NextToken *string `locationName:"nextToken" type:"string"`
 
 	// An array that summarizes the privacy budget templates. The summary includes
@@ -19165,9 +20345,9 @@
 type ListPrivacyBudgetsInput struct {
 	_ struct{} `type:"structure" nopayload:"true"`
 
-	// The maximum number of results that are returned for an API request call.
-	// The service chooses a default number if you don't set one. The service might
-	// return a `nextToken` even if the `maxResults` value has not been met.
+	// The maximum size of the results that is returned per call. Service chooses
+	// a default if it has not been set. Service may return a nextToken even if
+	// the maximum results has not been met.
 	MaxResults *int64 `location:"querystring" locationName:"maxResults" min:"1" type:"integer"`
 
 	// A unique identifier for one of your memberships for a collaboration. The
@@ -19177,7 +20357,8 @@
 	// MembershipIdentifier is a required field
 	MembershipIdentifier *string `location:"uri" locationName:"membershipIdentifier" min:"36" type:"string" required:"true"`
 
-	// The pagination token that's used to fetch the next set of results.
+	// The token value retrieved from a previous call to access the next page of
+	// results.
 	NextToken *string `location:"querystring" locationName:"nextToken" type:"string"`
 
 	// The privacy budget type.
@@ -19253,7 +20434,8 @@
 type ListPrivacyBudgetsOutput struct {
 	_ struct{} `type:"structure"`
 
-	// The pagination token that's used to fetch the next set of results.
+	// The token value retrieved from a previous call to access the next page of
+	// results.
 	NextToken *string `locationName:"nextToken" type:"string"`
 
 	// An array that summarizes the privacy budgets. The summary includes collaboration
@@ -19297,9 +20479,9 @@
 type ListProtectedQueriesInput struct {
 	_ struct{} `type:"structure" nopayload:"true"`
 
-	// The maximum number of results that are returned for an API request call.
-	// The service chooses a default number if you don't set one. The service might
-	// return a `nextToken` even if the `maxResults` value has not been met.
+	// The maximum size of the results that is returned per call. Service chooses
+	// a default if it has not been set. Service can return a nextToken even if
+	// the maximum results has not been met.
 	MaxResults *int64 `location:"querystring" locationName:"maxResults" min:"1" type:"integer"`
 
 	// The identifier for the membership in the collaboration.
@@ -19307,7 +20489,8 @@
 	// MembershipIdentifier is a required field
 	MembershipIdentifier *string `location:"uri" locationName:"membershipIdentifier" min:"36" type:"string" required:"true"`
 
-	// The pagination token that's used to fetch the next set of results.
+	// The token value retrieved from a previous call to access the next page of
+	// results.
 	NextToken *string `location:"querystring" locationName:"nextToken" type:"string"`
 
 	// A filter on the status of the protected query.
@@ -19378,7 +20561,8 @@
 type ListProtectedQueriesOutput struct {
 	_ struct{} `type:"structure"`
 
-	// The pagination token that's used to fetch the next set of results.
+	// The token value retrieved from a previous call to access the next page of
+	// results.
 	NextToken *string `locationName:"nextToken" type:"string"`
 
 	// A list of protected queries.
@@ -19426,15 +20610,15 @@
 	// CollaborationIdentifier is a required field
 	CollaborationIdentifier *string `location:"uri" locationName:"collaborationIdentifier" min:"36" type:"string" required:"true"`
 
-	// The maximum number of results that are returned for an API request call.
-	// The service chooses a default number if you don't set one. The service might
-	// return a `nextToken` even if the `maxResults` value has not been met.
+	// The maximum size of the results that is returned per call.
 	MaxResults *int64 `location:"querystring" locationName:"maxResults" min:"1" type:"integer"`
 
-	// The pagination token that's used to fetch the next set of results.
+	// The token value retrieved from a previous call to access the next page of
+	// results.
 	NextToken *string `location:"querystring" locationName:"nextToken" type:"string"`
 
-	// If present, filter schemas by schema type.
+	// If present, filter schemas by schema type. The only valid schema type is
+	// currently `TABLE`.
 	SchemaType *string `location:"querystring" locationName:"schemaType" type:"string" enum:"SchemaType"`
 }
 
@@ -19502,7 +20686,8 @@
 type ListSchemasOutput struct {
 	_ struct{} `type:"structure"`
 
-	// The pagination token that's used to fetch the next set of results.
+	// The token value retrieved from a previous call to access the next page of
+	// results.
 	NextToken *string `locationName:"nextToken" type:"string"`
 
 	// The retrieved list of schemas.
@@ -21514,11 +22699,64 @@
 	return s
 }
 
+// Contains configuration details for the protected query member output.
+type ProtectedQueryMemberOutputConfiguration struct {
+	_ struct{} `type:"structure"`
+
+	// The unique identifier for the account.
+	//
+	// AccountId is a required field
+	AccountId *string `locationName:"accountId" min:"12" type:"string" required:"true"`
+}
+
+// String returns the string representation.
+//
+// API parameter values that are decorated as "sensitive" in the API will not
+// be included in the string output. The member name will be present, but the
+// value will be replaced with "sensitive".
+func (s ProtectedQueryMemberOutputConfiguration) String() string {
+	return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation.
+//
+// API parameter values that are decorated as "sensitive" in the API will not
+// be included in the string output. The member name will be present, but the
+// value will be replaced with "sensitive".
+func (s ProtectedQueryMemberOutputConfiguration) GoString() string {
+	return s.String()
+}
+
+// Validate inspects the fields of the type to determine if they are valid.
+func (s *ProtectedQueryMemberOutputConfiguration) Validate() error {
+	invalidParams := request.ErrInvalidParams{Context: "ProtectedQueryMemberOutputConfiguration"}
+	if s.AccountId == nil {
+		invalidParams.Add(request.NewErrParamRequired("AccountId"))
+	}
+	if s.AccountId != nil && len(*s.AccountId) < 12 {
+		invalidParams.Add(request.NewErrParamMinLen("AccountId", 12))
+	}
+
+	if invalidParams.Len() > 0 {
+		return invalidParams
+	}
+	return nil
+}
+
+// SetAccountId sets the AccountId field's value.
+func (s *ProtectedQueryMemberOutputConfiguration) SetAccountId(v string) *ProtectedQueryMemberOutputConfiguration {
+	s.AccountId = &v
+	return s
+}
+
 // Contains configuration details for protected query output.
 type ProtectedQueryOutputConfiguration struct {
 	_ struct{} `type:"structure"`
 
-	// Required configuration for a protected query with an `S3` output type.
+	// Required configuration for a protected query with a member output type.
+	Member *ProtectedQueryMemberOutputConfiguration `locationName:"member" type:"structure"`
+
+	// Required configuration for a protected query with an s3 output type.
 	S3 *ProtectedQueryS3OutputConfiguration `locationName:"s3" type:"structure"`
 }
 
@@ -21543,6 +22781,11 @@
 // Validate inspects the fields of the type to determine if they are valid.
 func (s *ProtectedQueryOutputConfiguration) Validate() error {
 	invalidParams := request.ErrInvalidParams{Context: "ProtectedQueryOutputConfiguration"}
+	if s.Member != nil {
+		if err := s.Member.Validate(); err != nil {
+			invalidParams.AddNested("Member", err.(request.ErrInvalidParams))
+		}
+	}
 	if s.S3 != nil {
 		if err := s.S3.Validate(); err != nil {
 			invalidParams.AddNested("S3", err.(request.ErrInvalidParams))
@@ -21555,6 +22798,12 @@
 	return nil
 }
 
+// SetMember sets the Member field's value.
+func (s *ProtectedQueryOutputConfiguration) SetMember(v *ProtectedQueryMemberOutputConfiguration) *ProtectedQueryOutputConfiguration {
+	s.Member = v
+	return s
+}
+
 // SetS3 sets the S3 field's value.
 func (s *ProtectedQueryOutputConfiguration) SetS3(v *ProtectedQueryS3OutputConfiguration) *ProtectedQueryOutputConfiguration {
 	s.S3 = v
@@ -21886,7 +23135,7 @@
 type ProtectedQueryStatistics struct {
 	_ struct{} `type:"structure"`
 
-	// The duration of the Protected Query, from creation until query completion.
+	// The duration of the protected query, from creation until query completion.
 	TotalDurationInMillis *int64 `locationName:"totalDurationInMillis" type:"long"`
 }
 
@@ -21938,6 +23187,11 @@
 	// MembershipId is a required field
 	MembershipId *string `locationName:"membershipId" min:"36" type:"string" required:"true"`
 
+	// The receiver configuration.
+	//
+	// ReceiverConfigurations is a required field
+	ReceiverConfigurations []*ReceiverConfiguration `locationName:"receiverConfigurations" type:"list" required:"true"`
+
 	// The status of the protected query. Value values are `SUBMITTED`, `STARTED`,
 	// `CANCELLED`, `CANCELLING`, `FAILED`, `SUCCESS`, `TIMED_OUT`.
 	//
@@ -21987,6 +23241,12 @@
 	return s
 }
 
+// SetReceiverConfigurations sets the ReceiverConfigurations field's value.
+func (s *ProtectedQuerySummary) SetReceiverConfigurations(v []*ReceiverConfiguration) *ProtectedQuerySummary {
+	s.ReceiverConfigurations = v
+	return s
+}
+
 // SetStatus sets the Status field's value.
 func (s *ProtectedQuerySummary) SetStatus(v string) *ProtectedQuerySummary {
 	s.Status = &v
@@ -22117,6 +23377,52 @@
 	return s
 }
 
+// The receiver configuration for a protected query.
+type ReceiverConfiguration struct {
+	_ struct{} `type:"structure"`
+
+	// The type of analysis for the protected query. The results of the query can
+	// be analyzed directly (DIRECT_ANALYSIS) or used as input into additional analyses
+	// (ADDITIONAL_ANALYSIS), such as a query that is a seed for a lookalike ML
+	// model.
+	//
+	// AnalysisType is a required field
+	AnalysisType *string `locationName:"analysisType" type:"string" required:"true" enum:"AnalysisType"`
+
+	// The configuration details of the receiver configuration.
+	ConfigurationDetails *ConfigurationDetails `locationName:"configurationDetails" type:"structure"`
+}
+
+// String returns the string representation.
+//
+// API parameter values that are decorated as "sensitive" in the API will not
+// be included in the string output. The member name will be present, but the
+// value will be replaced with "sensitive".
+func (s ReceiverConfiguration) String() string {
+	return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation.
+//
+// API parameter values that are decorated as "sensitive" in the API will not
+// be included in the string output. The member name will be present, but the
+// value will be replaced with "sensitive".
+func (s ReceiverConfiguration) GoString() string {
+	return s.String()
+}
+
+// SetAnalysisType sets the AnalysisType field's value.
+func (s *ReceiverConfiguration) SetAnalysisType(v string) *ReceiverConfiguration {
+	s.AnalysisType = &v
+	return s
+}
+
+// SetConfigurationDetails sets the ConfigurationDetails field's value.
+func (s *ReceiverConfiguration) SetConfigurationDetails(v *ConfigurationDetails) *ReceiverConfiguration {
+	s.ConfigurationDetails = v
+	return s
+}
+
 // Request references a resource which does not exist.
 type ResourceNotFoundException struct {
 	_            struct{}                  `type:"structure"`
@@ -22198,14 +23504,13 @@
 	// The analysis method for the schema. The only valid value is currently DIRECT_QUERY.
 	AnalysisMethod *string `locationName:"analysisMethod" type:"string" enum:"AnalysisMethod"`
 
-	// The analysis rule types that are associated with the schema. Currently, only
-	// one entry is present.
+	// The analysis rule types associated with the schema. Currently, only one entry
+	// is present.
 	//
 	// AnalysisRuleTypes is a required field
 	AnalysisRuleTypes []*string `locationName:"analysisRuleTypes" type:"list" required:"true" enum:"AnalysisRuleType"`
 
-	// The unique Amazon Resource Name (ARN) for the collaboration that the schema
-	// belongs to.
+	// The unique ARN for the collaboration that the schema belongs to.
 	//
 	// CollaborationArn is a required field
 	CollaborationArn *string `locationName:"collaborationArn" type:"string" required:"true"`
@@ -22215,12 +23520,12 @@
 	// CollaborationId is a required field
 	CollaborationId *string `locationName:"collaborationId" min:"36" type:"string" required:"true"`
 
-	// The columns for the relation that this schema represents.
+	// The columns for the relation this schema represents.
 	//
 	// Columns is a required field
 	Columns []*Column `locationName:"columns" type:"list" required:"true"`
 
-	// The time at which the schema was created.
+	// The time the schema was created.
 	//
 	// CreateTime is a required field
 	CreateTime *time.Time `locationName:"createTime" type:"timestamp" required:"true"`
@@ -22254,12 +23559,12 @@
 	// The schema type properties.
 	SchemaTypeProperties *SchemaTypeProperties `locationName:"schemaTypeProperties" type:"structure"`
 
-	// The type of schema.
+	// The type of schema. The only valid value is currently `TABLE`.
 	//
 	// Type is a required field
 	Type *string `locationName:"type" type:"string" required:"true" enum:"SchemaType"`
 
-	// The most recent time at which the schema was updated.
+	// The time the schema was last updated.
 	//
 	// UpdateTime is a required field
 	UpdateTime *time.Time `locationName:"updateTime" type:"timestamp" required:"true"`
@@ -22441,13 +23746,21 @@
 	// The analysis rule type for which the schema status has been evaluated.
 	AnalysisRuleType *string `locationName:"analysisRuleType" type:"string" enum:"AnalysisRuleType"`
 
+	// The type of analysis that can be performed on the schema.
+	//
+	// A schema can have an analysisType of DIRECT_ANALYSIS, ADDITIONAL_ANALYSIS_FOR_AUDIENCE_GENERATION,
+	// or both.
+	//
+	// AnalysisType is a required field
+	AnalysisType *string `locationName:"analysisType" type:"string" required:"true" enum:"AnalysisType"`
+
 	// The configuration details of the schema analysis rule for the given type.
 	Configurations []*string `locationName:"configurations" type:"list" enum:"SchemaConfiguration"`
 
 	// The reasons why the schema status is set to its current state.
 	Reasons []*SchemaStatusReason `locationName:"reasons" type:"list"`
 
-	// The status of the schema.
+	// The status of the schema, indicating if it is ready to query.
 	//
 	// Status is a required field
 	Status *string `locationName:"status" type:"string" required:"true" enum:"SchemaStatus"`
@@ -22477,6 +23790,12 @@
 	return s
 }
 
+// SetAnalysisType sets the AnalysisType field's value.
+func (s *SchemaStatusDetail) SetAnalysisType(v string) *SchemaStatusDetail {
+	s.AnalysisType = &v
+	return s
+}
+
 // SetConfigurations sets the Configurations field's value.
 func (s *SchemaStatusDetail) SetConfigurations(v []*string) *SchemaStatusDetail {
 	s.Configurations = v
@@ -22578,7 +23897,7 @@
 	// Name is a required field
 	Name *string `locationName:"name" type:"string" required:"true"`
 
-	// The type of schema object.
+	// The type of schema object. The only valid schema type is currently `TABLE`.
 	//
 	// Type is a required field
 	Type *string `locationName:"type" type:"string" required:"true" enum:"SchemaType"`
@@ -23637,6 +24956,139 @@
 	return s
 }
 
+type UpdateConfiguredTableAssociationAnalysisRuleInput struct {
+	_ struct{} `type:"structure"`
+
+	// The updated analysis rule policy for the configured table association.
+	//
+	// AnalysisRulePolicy is a required field
+	AnalysisRulePolicy *ConfiguredTableAssociationAnalysisRulePolicy `locationName:"analysisRulePolicy" type:"structure" required:"true"`
+
+	// The analysis rule type that you want to update.
+	//
+	// AnalysisRuleType is a required field
+	AnalysisRuleType *string `location:"uri" locationName:"analysisRuleType" type:"string" required:"true" enum:"ConfiguredTableAssociationAnalysisRuleType"`
+
+	// The identifier for the configured table association to update.
+	//
+	// ConfiguredTableAssociationIdentifier is a required field
+	ConfiguredTableAssociationIdentifier *string `location:"uri" locationName:"configuredTableAssociationIdentifier" min:"36" type:"string" required:"true"`
+
+	// A unique identifier for the membership that the configured table association
+	// belongs to. Currently accepts the membership ID.
+	//
+	// MembershipIdentifier is a required field
+	MembershipIdentifier *string `location:"uri" locationName:"membershipIdentifier" min:"36" type:"string" required:"true"`
+}
+
+// String returns the string representation.
+//
+// API parameter values that are decorated as "sensitive" in the API will not
+// be included in the string output. The member name will be present, but the
+// value will be replaced with "sensitive".
+func (s UpdateConfiguredTableAssociationAnalysisRuleInput) String() string {
+	return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation.
+//
+// API parameter values that are decorated as "sensitive" in the API will not
+// be included in the string output. The member name will be present, but the
+// value will be replaced with "sensitive".
+func (s UpdateConfiguredTableAssociationAnalysisRuleInput) GoString() string {
+	return s.String()
+}
+
+// Validate inspects the fields of the type to determine if they are valid.
+func (s *UpdateConfiguredTableAssociationAnalysisRuleInput) Validate() error {
+	invalidParams := request.ErrInvalidParams{Context: "UpdateConfiguredTableAssociationAnalysisRuleInput"}
+	if s.AnalysisRulePolicy == nil {
+		invalidParams.Add(request.NewErrParamRequired("AnalysisRulePolicy"))
+	}
+	if s.AnalysisRuleType == nil {
+		invalidParams.Add(request.NewErrParamRequired("AnalysisRuleType"))
+	}
+	if s.AnalysisRuleType != nil && len(*s.AnalysisRuleType) < 1 {
+		invalidParams.Add(request.NewErrParamMinLen("AnalysisRuleType", 1))
+	}
+	if s.ConfiguredTableAssociationIdentifier == nil {
+		invalidParams.Add(request.NewErrParamRequired("ConfiguredTableAssociationIdentifier"))
+	}
+	if s.ConfiguredTableAssociationIdentifier != nil && len(*s.ConfiguredTableAssociationIdentifier) < 36 {
+		invalidParams.Add(request.NewErrParamMinLen("ConfiguredTableAssociationIdentifier", 36))
+	}
+	if s.MembershipIdentifier == nil {
+		invalidParams.Add(request.NewErrParamRequired("MembershipIdentifier"))
+	}
+	if s.MembershipIdentifier != nil && len(*s.MembershipIdentifier) < 36 {
+		invalidParams.Add(request.NewErrParamMinLen("MembershipIdentifier", 36))
+	}
+
+	if invalidParams.Len() > 0 {
+		return invalidParams
+	}
+	return nil
+}
+
+// SetAnalysisRulePolicy sets the AnalysisRulePolicy field's value.
+func (s *UpdateConfiguredTableAssociationAnalysisRuleInput) SetAnalysisRulePolicy(v *ConfiguredTableAssociationAnalysisRulePolicy) *UpdateConfiguredTableAssociationAnalysisRuleInput {
+	s.AnalysisRulePolicy = v
+	return s
+}
+
+// SetAnalysisRuleType sets the AnalysisRuleType field's value.
+func (s *UpdateConfiguredTableAssociationAnalysisRuleInput) SetAnalysisRuleType(v string) *UpdateConfiguredTableAssociationAnalysisRuleInput {
+	s.AnalysisRuleType = &v
+	return s
+}
+
+// SetConfiguredTableAssociationIdentifier sets the ConfiguredTableAssociationIdentifier field's value.
+func (s *UpdateConfiguredTableAssociationAnalysisRuleInput) SetConfiguredTableAssociationIdentifier(v string) *UpdateConfiguredTableAssociationAnalysisRuleInput {
+	s.ConfiguredTableAssociationIdentifier = &v
+	return s
+}
+
+// SetMembershipIdentifier sets the MembershipIdentifier field's value.
+func (s *UpdateConfiguredTableAssociationAnalysisRuleInput) SetMembershipIdentifier(v string) *UpdateConfiguredTableAssociationAnalysisRuleInput {
+	s.MembershipIdentifier = &v
+	return s
+}
+
+type UpdateConfiguredTableAssociationAnalysisRuleOutput struct {
+	_ struct{} `type:"structure"`
+
+	// The updated analysis rule for the configured table association. In the console,
+	// the ConfiguredTableAssociationAnalysisRule is referred to as the collaboration
+	// analysis rule.
+	//
+	// AnalysisRule is a required field
+	AnalysisRule *ConfiguredTableAssociationAnalysisRule `locationName:"analysisRule" type:"structure" required:"true"`
+}
+
+// String returns the string representation.
+//
+// API parameter values that are decorated as "sensitive" in the API will not
+// be included in the string output. The member name will be present, but the
+// value will be replaced with "sensitive".
+func (s UpdateConfiguredTableAssociationAnalysisRuleOutput) String() string {
+	return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation.
+//
+// API parameter values that are decorated as "sensitive" in the API will not
+// be included in the string output. The member name will be present, but the
+// value will be replaced with "sensitive".
+func (s UpdateConfiguredTableAssociationAnalysisRuleOutput) GoString() string {
+	return s.String()
+}
+
+// SetAnalysisRule sets the AnalysisRule field's value.
+func (s *UpdateConfiguredTableAssociationAnalysisRuleOutput) SetAnalysisRule(v *ConfiguredTableAssociationAnalysisRule) *UpdateConfiguredTableAssociationAnalysisRuleOutput {
+	s.AnalysisRule = v
+	return s
+}
+
 type UpdateConfiguredTableAssociationInput struct {
 	_ struct{} `type:"structure"`
 
@@ -24463,6 +25915,26 @@
 }
 
 const (
+	// AdditionalAnalysesAllowed is a AdditionalAnalyses enum value
+	AdditionalAnalysesAllowed = "ALLOWED"
+
+	// AdditionalAnalysesRequired is a AdditionalAnalyses enum value
+	AdditionalAnalysesRequired = "REQUIRED"
+
+	// AdditionalAnalysesNotAllowed is a AdditionalAnalyses enum value
+	AdditionalAnalysesNotAllowed = "NOT_ALLOWED"
+)
+
+// AdditionalAnalyses_Values returns all elements of the AdditionalAnalyses enum
+func AdditionalAnalyses_Values() []string {
+	return []string{
+		AdditionalAnalysesAllowed,
+		AdditionalAnalysesRequired,
+		AdditionalAnalysesNotAllowed,
+	}
+}
+
+const (
 	// AggregateFunctionNameSum is a AggregateFunctionName enum value
 	AggregateFunctionNameSum = "SUM"
 
@@ -24583,6 +26055,22 @@
 }
 
 const (
+	// AnalysisTypeDirectAnalysis is a AnalysisType enum value
+	AnalysisTypeDirectAnalysis = "DIRECT_ANALYSIS"
+
+	// AnalysisTypeAdditionalAnalysis is a AnalysisType enum value
+	AnalysisTypeAdditionalAnalysis = "ADDITIONAL_ANALYSIS"
+)
+
+// AnalysisType_Values returns all elements of the AnalysisType enum
+func AnalysisType_Values() []string {
+	return []string{
+		AnalysisTypeDirectAnalysis,
+		AnalysisTypeAdditionalAnalysis,
+	}
+}
+
+const (
 	// CollaborationQueryLogStatusEnabled is a CollaborationQueryLogStatus enum value
 	CollaborationQueryLogStatusEnabled = "ENABLED"
 
@@ -24619,6 +26107,26 @@
 }
 
 const (
+	// ConfiguredTableAssociationAnalysisRuleTypeAggregation is a ConfiguredTableAssociationAnalysisRuleType enum value
+	ConfiguredTableAssociationAnalysisRuleTypeAggregation = "AGGREGATION"
+
+	// ConfiguredTableAssociationAnalysisRuleTypeList is a ConfiguredTableAssociationAnalysisRuleType enum value
+	ConfiguredTableAssociationAnalysisRuleTypeList = "LIST"
+
+	// ConfiguredTableAssociationAnalysisRuleTypeCustom is a ConfiguredTableAssociationAnalysisRuleType enum value
+	ConfiguredTableAssociationAnalysisRuleTypeCustom = "CUSTOM"
+)
+
+// ConfiguredTableAssociationAnalysisRuleType_Values returns all elements of the ConfiguredTableAssociationAnalysisRuleType enum
+func ConfiguredTableAssociationAnalysisRuleType_Values() []string {
+	return []string{
+		ConfiguredTableAssociationAnalysisRuleTypeAggregation,
+		ConfiguredTableAssociationAnalysisRuleTypeList,
+		ConfiguredTableAssociationAnalysisRuleTypeCustom,
+	}
+}
+
+const (
 	// ConflictExceptionReasonAlreadyExists is a ConflictExceptionReason enum value
 	ConflictExceptionReasonAlreadyExists = "ALREADY_EXISTS"
 
@@ -25093,28 +26601,12 @@
 const (
 	// SchemaConfigurationDifferentialPrivacy is a SchemaConfiguration enum value
 	SchemaConfigurationDifferentialPrivacy = "DIFFERENTIAL_PRIVACY"
-
-	// SchemaConfigurationCustomAnalysisNotAllowed is a SchemaConfiguration enum value
-	SchemaConfigurationCustomAnalysisNotAllowed = "CUSTOM_ANALYSIS_NOT_ALLOWED"
-
-	// SchemaConfigurationNoMemberAccountAllowedToProvideAnalysis is a SchemaConfiguration enum value
-	SchemaConfigurationNoMemberAccountAllowedToProvideAnalysis = "NO_MEMBER_ACCOUNT_ALLOWED_TO_PROVIDE_ANALYSIS"
-
-	// SchemaConfigurationDifferentialPrivacyBudgetNotConfigured is a SchemaConfiguration enum value
-	SchemaConfigurationDifferentialPrivacyBudgetNotConfigured = "DIFFERENTIAL_PRIVACY_BUDGET_NOT_CONFIGURED"
-
-	// SchemaConfigurationIdMappingTableNotPopulated is a SchemaConfiguration enum value
-	SchemaConfigurationIdMappingTableNotPopulated = "ID_MAPPING_TABLE_NOT_POPULATED"
 )
 
 // SchemaConfiguration_Values returns all elements of the SchemaConfiguration enum
 func SchemaConfiguration_Values() []string {
 	return []string{
 		SchemaConfigurationDifferentialPrivacy,
-		SchemaConfigurationCustomAnalysisNotAllowed,
-		SchemaConfigurationNoMemberAccountAllowedToProvideAnalysis,
-		SchemaConfigurationDifferentialPrivacyBudgetNotConfigured,
-		SchemaConfigurationIdMappingTableNotPopulated,
 	}
 }
 
@@ -25149,6 +26641,24 @@
 
 	// SchemaStatusReasonCodeIdMappingTableNotPopulated is a SchemaStatusReasonCode enum value
 	SchemaStatusReasonCodeIdMappingTableNotPopulated = "ID_MAPPING_TABLE_NOT_POPULATED"
+
+	// SchemaStatusReasonCodeCollaborationAnalysisRuleNotConfigured is a SchemaStatusReasonCode enum value
+	SchemaStatusReasonCodeCollaborationAnalysisRuleNotConfigured = "COLLABORATION_ANALYSIS_RULE_NOT_CONFIGURED"
+
+	// SchemaStatusReasonCodeAdditionalAnalysesNotConfigured is a SchemaStatusReasonCode enum value
+	SchemaStatusReasonCodeAdditionalAnalysesNotConfigured = "ADDITIONAL_ANALYSES_NOT_CONFIGURED"
+
+	// SchemaStatusReasonCodeResultReceiversNotConfigured is a SchemaStatusReasonCode enum value
+	SchemaStatusReasonCodeResultReceiversNotConfigured = "RESULT_RECEIVERS_NOT_CONFIGURED"
+
+	// SchemaStatusReasonCodeAdditionalAnalysesNotAllowed is a SchemaStatusReasonCode enum value
+	SchemaStatusReasonCodeAdditionalAnalysesNotAllowed = "ADDITIONAL_ANALYSES_NOT_ALLOWED"
+
+	// SchemaStatusReasonCodeResultReceiversNotAllowed is a SchemaStatusReasonCode enum value
+	SchemaStatusReasonCodeResultReceiversNotAllowed = "RESULT_RECEIVERS_NOT_ALLOWED"
+
+	// SchemaStatusReasonCodeAnalysisRuleTypesNotCompatible is a SchemaStatusReasonCode enum value
+	SchemaStatusReasonCodeAnalysisRuleTypesNotCompatible = "ANALYSIS_RULE_TYPES_NOT_COMPATIBLE"
 )
 
 // SchemaStatusReasonCode_Values returns all elements of the SchemaStatusReasonCode enum
@@ -25159,6 +26669,12 @@
 		SchemaStatusReasonCodeAnalysisProvidersNotConfigured,
 		SchemaStatusReasonCodeDifferentialPrivacyPolicyNotConfigured,
 		SchemaStatusReasonCodeIdMappingTableNotPopulated,
+		SchemaStatusReasonCodeCollaborationAnalysisRuleNotConfigured,
+		SchemaStatusReasonCodeAdditionalAnalysesNotConfigured,
+		SchemaStatusReasonCodeResultReceiversNotConfigured,
+		SchemaStatusReasonCodeAdditionalAnalysesNotAllowed,
+		SchemaStatusReasonCodeResultReceiversNotAllowed,
+		SchemaStatusReasonCodeAnalysisRuleTypesNotCompatible,
 	}
 }
 
diff --git a/service/cleanrooms/cleanroomsiface/interface.go b/service/cleanrooms/cleanroomsiface/interface.go
index 6b0bf4f..cf694aa 100644
--- a/service/cleanrooms/cleanroomsiface/interface.go
+++ b/service/cleanrooms/cleanroomsiface/interface.go
@@ -96,6 +96,10 @@
 	CreateConfiguredTableAssociationWithContext(aws.Context, *cleanrooms.CreateConfiguredTableAssociationInput, ...request.Option) (*cleanrooms.CreateConfiguredTableAssociationOutput, error)
 	CreateConfiguredTableAssociationRequest(*cleanrooms.CreateConfiguredTableAssociationInput) (*request.Request, *cleanrooms.CreateConfiguredTableAssociationOutput)
 
+	CreateConfiguredTableAssociationAnalysisRule(*cleanrooms.CreateConfiguredTableAssociationAnalysisRuleInput) (*cleanrooms.CreateConfiguredTableAssociationAnalysisRuleOutput, error)
+	CreateConfiguredTableAssociationAnalysisRuleWithContext(aws.Context, *cleanrooms.CreateConfiguredTableAssociationAnalysisRuleInput, ...request.Option) (*cleanrooms.CreateConfiguredTableAssociationAnalysisRuleOutput, error)
+	CreateConfiguredTableAssociationAnalysisRuleRequest(*cleanrooms.CreateConfiguredTableAssociationAnalysisRuleInput) (*request.Request, *cleanrooms.CreateConfiguredTableAssociationAnalysisRuleOutput)
+
 	CreateIdMappingTable(*cleanrooms.CreateIdMappingTableInput) (*cleanrooms.CreateIdMappingTableOutput, error)
 	CreateIdMappingTableWithContext(aws.Context, *cleanrooms.CreateIdMappingTableInput, ...request.Option) (*cleanrooms.CreateIdMappingTableOutput, error)
 	CreateIdMappingTableRequest(*cleanrooms.CreateIdMappingTableInput) (*request.Request, *cleanrooms.CreateIdMappingTableOutput)
@@ -132,6 +136,10 @@
 	DeleteConfiguredTableAssociationWithContext(aws.Context, *cleanrooms.DeleteConfiguredTableAssociationInput, ...request.Option) (*cleanrooms.DeleteConfiguredTableAssociationOutput, error)
 	DeleteConfiguredTableAssociationRequest(*cleanrooms.DeleteConfiguredTableAssociationInput) (*request.Request, *cleanrooms.DeleteConfiguredTableAssociationOutput)
 
+	DeleteConfiguredTableAssociationAnalysisRule(*cleanrooms.DeleteConfiguredTableAssociationAnalysisRuleInput) (*cleanrooms.DeleteConfiguredTableAssociationAnalysisRuleOutput, error)
+	DeleteConfiguredTableAssociationAnalysisRuleWithContext(aws.Context, *cleanrooms.DeleteConfiguredTableAssociationAnalysisRuleInput, ...request.Option) (*cleanrooms.DeleteConfiguredTableAssociationAnalysisRuleOutput, error)
+	DeleteConfiguredTableAssociationAnalysisRuleRequest(*cleanrooms.DeleteConfiguredTableAssociationAnalysisRuleInput) (*request.Request, *cleanrooms.DeleteConfiguredTableAssociationAnalysisRuleOutput)
+
 	DeleteIdMappingTable(*cleanrooms.DeleteIdMappingTableInput) (*cleanrooms.DeleteIdMappingTableOutput, error)
 	DeleteIdMappingTableWithContext(aws.Context, *cleanrooms.DeleteIdMappingTableInput, ...request.Option) (*cleanrooms.DeleteIdMappingTableOutput, error)
 	DeleteIdMappingTableRequest(*cleanrooms.DeleteIdMappingTableInput) (*request.Request, *cleanrooms.DeleteIdMappingTableOutput)
@@ -188,6 +196,10 @@
 	GetConfiguredTableAssociationWithContext(aws.Context, *cleanrooms.GetConfiguredTableAssociationInput, ...request.Option) (*cleanrooms.GetConfiguredTableAssociationOutput, error)
 	GetConfiguredTableAssociationRequest(*cleanrooms.GetConfiguredTableAssociationInput) (*request.Request, *cleanrooms.GetConfiguredTableAssociationOutput)
 
+	GetConfiguredTableAssociationAnalysisRule(*cleanrooms.GetConfiguredTableAssociationAnalysisRuleInput) (*cleanrooms.GetConfiguredTableAssociationAnalysisRuleOutput, error)
+	GetConfiguredTableAssociationAnalysisRuleWithContext(aws.Context, *cleanrooms.GetConfiguredTableAssociationAnalysisRuleInput, ...request.Option) (*cleanrooms.GetConfiguredTableAssociationAnalysisRuleOutput, error)
+	GetConfiguredTableAssociationAnalysisRuleRequest(*cleanrooms.GetConfiguredTableAssociationAnalysisRuleInput) (*request.Request, *cleanrooms.GetConfiguredTableAssociationAnalysisRuleOutput)
+
 	GetIdMappingTable(*cleanrooms.GetIdMappingTableInput) (*cleanrooms.GetIdMappingTableOutput, error)
 	GetIdMappingTableWithContext(aws.Context, *cleanrooms.GetIdMappingTableInput, ...request.Option) (*cleanrooms.GetIdMappingTableOutput, error)
 	GetIdMappingTableRequest(*cleanrooms.GetIdMappingTableInput) (*request.Request, *cleanrooms.GetIdMappingTableOutput)
@@ -386,6 +398,10 @@
 	UpdateConfiguredTableAssociationWithContext(aws.Context, *cleanrooms.UpdateConfiguredTableAssociationInput, ...request.Option) (*cleanrooms.UpdateConfiguredTableAssociationOutput, error)
 	UpdateConfiguredTableAssociationRequest(*cleanrooms.UpdateConfiguredTableAssociationInput) (*request.Request, *cleanrooms.UpdateConfiguredTableAssociationOutput)
 
+	UpdateConfiguredTableAssociationAnalysisRule(*cleanrooms.UpdateConfiguredTableAssociationAnalysisRuleInput) (*cleanrooms.UpdateConfiguredTableAssociationAnalysisRuleOutput, error)
+	UpdateConfiguredTableAssociationAnalysisRuleWithContext(aws.Context, *cleanrooms.UpdateConfiguredTableAssociationAnalysisRuleInput, ...request.Option) (*cleanrooms.UpdateConfiguredTableAssociationAnalysisRuleOutput, error)
+	UpdateConfiguredTableAssociationAnalysisRuleRequest(*cleanrooms.UpdateConfiguredTableAssociationAnalysisRuleInput) (*request.Request, *cleanrooms.UpdateConfiguredTableAssociationAnalysisRuleOutput)
+
 	UpdateIdMappingTable(*cleanrooms.UpdateIdMappingTableInput) (*cleanrooms.UpdateIdMappingTableOutput, error)
 	UpdateIdMappingTableWithContext(aws.Context, *cleanrooms.UpdateIdMappingTableInput, ...request.Option) (*cleanrooms.UpdateIdMappingTableOutput, error)
 	UpdateIdMappingTableRequest(*cleanrooms.UpdateIdMappingTableInput) (*request.Request, *cleanrooms.UpdateIdMappingTableOutput)
diff --git a/service/dynamodb/api.go b/service/dynamodb/api.go
index 7286d56..5cae650 100644
--- a/service/dynamodb/api.go
+++ b/service/dynamodb/api.go
@@ -62,7 +62,8 @@
 // This operation allows you to perform batch reads or writes on data stored
 // in DynamoDB, using PartiQL. Each read statement in a BatchExecuteStatement
 // must specify an equality condition on all key attributes. This enforces that
-// each SELECT statement in a batch returns at most a single item.
+// each SELECT statement in a batch returns at most a single item. For more
+// information, see Running batch operations with PartiQL for DynamoDB (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ql-reference.multiplestatements.batching.html).
 //
 // The entire batch must consist of either read statements or write statements,
 // you cannot mix both in one batch.
@@ -429,8 +430,12 @@
 // check for unprocessed items and submit a new BatchWriteItem request with
 // those unprocessed items until all items have been processed.
 //
-// If none of the items can be processed due to insufficient provisioned throughput
-// on all of the tables in the request, then BatchWriteItem returns a ProvisionedThroughputExceededException.
+// For tables and indexes with provisioned capacity, if none of the items can
+// be processed due to insufficient provisioned throughput on all of the tables
+// in the request, then BatchWriteItem returns a ProvisionedThroughputExceededException.
+// For all tables and indexes, if none of the items can be processed due to
+// other throttling scenarios (such as exceeding partition level limits), then
+// BatchWriteItem returns a ThrottlingException.
 //
 // If DynamoDB returns any unprocessed items, you should retry the batch operation
 // on those items. However, we strongly recommend that you use an exponential
@@ -1564,7 +1569,7 @@
 //
 // DynamoDB might continue to accept data read and write operations, such as
 // GetItem and PutItem, on a table in the DELETING state until the table deletion
-// is complete.
+// is complete. For the full list of table states, see TableStatus (https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_TableDescription.html#DDB-Type-TableDescription-TableStatus).
 //
 // When you delete a table, any indexes on that table are also deleted.
 //
@@ -21427,7 +21432,7 @@
 
 	// The number of items evaluated, before any QueryFilter is applied. A high
 	// ScannedCount value with few, or no, Count results indicates an inefficient
-	// Query operation. For more information, see Count and ScannedCount (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/QueryAndScan.html#Count)
+	// Query operation. For more information, see Count and ScannedCount (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Scan.html#Scan.Count)
 	// in the Amazon DynamoDB Developer Guide.
 	//
 	// If you did not use a filter in the request, then ScannedCount is the same
diff --git a/service/iotsitewise/api.go b/service/iotsitewise/api.go
index a066f9c..819e0f8 100644
--- a/service/iotsitewise/api.go
+++ b/service/iotsitewise/api.go
@@ -2629,6 +2629,10 @@
 //   - ResourceNotFoundException
 //     The requested resource can't be found.
 //
+//   - ConflictingOperationException
+//     Your request has conflicting operations. This can occur if you're trying
+//     to perform more than one operation on the same resource at the same time.
+//
 //   - InternalFailureException
 //     IoT SiteWise can't process your request right now. Try again later.
 //
@@ -9252,15 +9256,18 @@
 // models (https://docs.aws.amazon.com/iot-sitewise/latest/userguide/update-assets-and-models.html)
 // in the IoT SiteWise User Guide.
 //
-// This operation overwrites the existing model with the provided model. To
-// avoid deleting your asset model's properties or hierarchies, you must include
-// their IDs and definitions in the updated asset model payload. For more information,
-// see DescribeAssetModel (https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_DescribeAssetModel.html).
-//
 // If you remove a property from an asset model, IoT SiteWise deletes all previous
-// data for that property. If you remove a hierarchy definition from an asset
-// model, IoT SiteWise disassociates every asset associated with that hierarchy.
-// You can't change the type or data type of an existing property.
+// data for that property. You can’t change the type or data type of an existing
+// property.
+//
+// To replace an existing asset model property with a new one with the same
+// name, do the following:
+//
+// Submit an UpdateAssetModel request with the entire existing property removed.
+//
+// Submit a second UpdateAssetModel request that includes the new property.
+// The new asset property will have the same name as the previous one and IoT
+// SiteWise will generate a new unique id.
 //
 // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
 // with awserr.Error's Code and Message methods to get detailed information about
@@ -11263,7 +11270,7 @@
 type AssetModelCompositeModelSummary struct {
 	_ struct{} `type:"structure"`
 
-	// The description of the the composite model that this summary describes..
+	// The description of the composite model that this summary describes..
 	Description *string `locationName:"description" min:"1" type:"string"`
 
 	// The external ID of a composite model on this asset model. For more information,
@@ -11271,12 +11278,12 @@
 	// in the IoT SiteWise User Guide.
 	ExternalId *string `locationName:"externalId" min:"2" type:"string"`
 
-	// The ID of the the composite model that this summary describes..
+	// The ID of the composite model that this summary describes..
 	//
 	// Id is a required field
 	Id *string `locationName:"id" min:"36" type:"string" required:"true"`
 
-	// The name of the the composite model that this summary describes..
+	// The name of the composite model that this summary describes..
 	//
 	// Name is a required field
 	Name *string `locationName:"name" min:"1" type:"string" required:"true"`
@@ -11284,14 +11291,7 @@
 	// The path that includes all the pieces that make up the composite model.
 	Path []*AssetModelCompositeModelPathSegment `locationName:"path" type:"list"`
 
-	// The type of asset model.
-	//
-	//    * ASSET_MODEL – (default) An asset model that you can use to create
-	//    assets. Can't be included as a component in another asset model.
-	//
-	//    * COMPONENT_MODEL – A reusable component that you can include in the
-	//    composite models of other asset models. You can't create assets directly
-	//    from this type of asset model.
+	// The composite model type. Valid values are AWS/ALARM, CUSTOM, or AWS/L4E_ANOMALY.
 	//
 	// Type is a required field
 	Type *string `locationName:"type" min:"1" type:"string" required:"true"`
@@ -15904,13 +15904,14 @@
 	// specify your own ID, it must be globally unique.
 	AssetModelCompositeModelId *string `locationName:"assetModelCompositeModelId" min:"36" type:"string"`
 
-	// A unique, friendly name for the composite model.
+	// A unique name for the composite model.
 	//
 	// AssetModelCompositeModelName is a required field
 	AssetModelCompositeModelName *string `locationName:"assetModelCompositeModelName" min:"1" type:"string" required:"true"`
 
 	// The property definitions of the composite model. For more information, see
-	// <LINK>.
+	// Inline custom composite models (https://docs.aws.amazon.com/iot-sitewise/latest/userguide/custom-composite-models.html#inline-composite-models)
+	// in the IoT SiteWise User Guide.
 	//
 	// You can specify up to 200 properties per composite model. For more information,
 	// see Quotas (https://docs.aws.amazon.com/iot-sitewise/latest/userguide/quotas.html)
@@ -15932,7 +15933,7 @@
 	// is required.
 	ClientToken *string `locationName:"clientToken" min:"36" type:"string" idempotencyToken:"true"`
 
-	// The ID of a composite model on this asset.
+	// The ID of a component model which is reused to create this composite model.
 	ComposedAssetModelId *string `locationName:"composedAssetModelId" min:"13" type:"string"`
 
 	// The ID of the parent composite model in this asset model relationship.
@@ -16142,7 +16143,8 @@
 	//
 	// When creating custom composite models, you need to use CreateAssetModelCompositeModel
 	// (https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_CreateAssetModelCompositeModel.html).
-	// For more information, see <LINK>.
+	// For more information, see Creating custom composite models (Components) (https://docs.aws.amazon.com/iot-sitewise/latest/userguide/create-custom-composite-models.html)
+	// in the IoT SiteWise User Guide.
 	AssetModelCompositeModels []*AssetModelCompositeModelDefinition `locationName:"assetModelCompositeModels" type:"list"`
 
 	// A description for the asset model.
@@ -16170,7 +16172,7 @@
 	// format. If you specify your own ID, it must be globally unique.
 	AssetModelId *string `locationName:"assetModelId" min:"36" type:"string"`
 
-	// A unique, friendly name for the asset model.
+	// A unique name for the asset model.
 	//
 	// AssetModelName is a required field
 	AssetModelName *string `locationName:"assetModelName" min:"1" type:"string" required:"true"`
@@ -16862,7 +16864,7 @@
 type CreateGatewayInput struct {
 	_ struct{} `type:"structure"`
 
-	// A unique, friendly name for the gateway.
+	// A unique name for the gateway.
 	//
 	// GatewayName is a required field
 	GatewayName *string `locationName:"gatewayName" min:"1" type:"string" required:"true"`
@@ -22380,6 +22382,9 @@
 
 	// A gateway that runs on IoT Greengrass V2.
 	GreengrassV2 *GreengrassV2 `locationName:"greengrassV2" type:"structure"`
+
+	// A SiteWise Edge gateway that runs on a Siemens Industrial Edge Device.
+	SiemensIE *SiemensIE `locationName:"siemensIE" type:"structure"`
 }
 
 // String returns the string representation.
@@ -22413,6 +22418,11 @@
 			invalidParams.AddNested("GreengrassV2", err.(request.ErrInvalidParams))
 		}
 	}
+	if s.SiemensIE != nil {
+		if err := s.SiemensIE.Validate(); err != nil {
+			invalidParams.AddNested("SiemensIE", err.(request.ErrInvalidParams))
+		}
+	}
 
 	if invalidParams.Len() > 0 {
 		return invalidParams
@@ -22432,6 +22442,12 @@
 	return s
 }
 
+// SetSiemensIE sets the SiemensIE field's value.
+func (s *GatewayPlatform) SetSiemensIE(v *SiemensIE) *GatewayPlatform {
+	s.SiemensIE = v
+	return s
+}
+
 // Contains a summary of a gateway.
 type GatewaySummary struct {
 	_ struct{} `type:"structure"`
@@ -22452,7 +22468,7 @@
 	// GatewayId is a required field
 	GatewayId *string `locationName:"gatewayId" min:"36" type:"string" required:"true"`
 
-	// The name of the asset.
+	// The name of the gateway.
 	//
 	// GatewayName is a required field
 	GatewayName *string `locationName:"gatewayName" min:"1" type:"string" required:"true"`
@@ -23346,9 +23362,9 @@
 
 	// The ARN (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html)
 	// of the Greengrass group. For more information about how to find a group's
-	// ARN, see ListGroups (https://docs.aws.amazon.com/greengrass/latest/apireference/listgroups-get.html)
-	// and GetGroup (https://docs.aws.amazon.com/greengrass/latest/apireference/getgroup-get.html)
-	// in the IoT Greengrass API Reference.
+	// ARN, see ListGroups (https://docs.aws.amazon.com/greengrass/v1/apireference/listgroups-get.html)
+	// and GetGroup (https://docs.aws.amazon.com/greengrass/v1/apireference/getgroup-get.html)
+	// in the IoT Greengrass V1 API Reference.
 	//
 	// GroupArn is a required field
 	GroupArn *string `locationName:"groupArn" min:"1" type:"string" required:"true"`
@@ -28536,6 +28552,57 @@
 	return s.RespMetadata.RequestID
 }
 
+// Contains details for a SiteWise Edge gateway that runs on a Siemens Industrial
+// Edge Device.
+type SiemensIE struct {
+	_ struct{} `type:"structure"`
+
+	// The name of the IoT Thing for your SiteWise Edge gateway.
+	//
+	// IotCoreThingName is a required field
+	IotCoreThingName *string `locationName:"iotCoreThingName" min:"1" type:"string" required:"true"`
+}
+
+// String returns the string representation.
+//
+// API parameter values that are decorated as "sensitive" in the API will not
+// be included in the string output. The member name will be present, but the
+// value will be replaced with "sensitive".
+func (s SiemensIE) String() string {
+	return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation.
+//
+// API parameter values that are decorated as "sensitive" in the API will not
+// be included in the string output. The member name will be present, but the
+// value will be replaced with "sensitive".
+func (s SiemensIE) GoString() string {
+	return s.String()
+}
+
+// Validate inspects the fields of the type to determine if they are valid.
+func (s *SiemensIE) Validate() error {
+	invalidParams := request.ErrInvalidParams{Context: "SiemensIE"}
+	if s.IotCoreThingName == nil {
+		invalidParams.Add(request.NewErrParamRequired("IotCoreThingName"))
+	}
+	if s.IotCoreThingName != nil && len(*s.IotCoreThingName) < 1 {
+		invalidParams.Add(request.NewErrParamMinLen("IotCoreThingName", 1))
+	}
+
+	if invalidParams.Len() > 0 {
+		return invalidParams
+	}
+	return nil
+}
+
+// SetIotCoreThingName sets the IotCoreThingName field's value.
+func (s *SiemensIE) SetIotCoreThingName(v string) *SiemensIE {
+	s.IotCoreThingName = &v
+	return s
+}
+
 type TagResourceInput struct {
 	_ struct{} `type:"structure"`
 
@@ -29691,13 +29758,14 @@
 	// AssetModelCompositeModelId is a required field
 	AssetModelCompositeModelId *string `location:"uri" locationName:"assetModelCompositeModelId" min:"13" type:"string" required:"true"`
 
-	// A unique, friendly name for the composite model.
+	// A unique name for the composite model.
 	//
 	// AssetModelCompositeModelName is a required field
 	AssetModelCompositeModelName *string `locationName:"assetModelCompositeModelName" min:"1" type:"string" required:"true"`
 
 	// The property definitions of the composite model. For more information, see
-	// <LINK>.
+	// Inline custom composite models (https://docs.aws.amazon.com/iot-sitewise/latest/userguide/custom-composite-models.html#inline-composite-models)
+	// in the IoT SiteWise User Guide.
 	//
 	// You can specify up to 200 properties per composite model. For more information,
 	// see Quotas (https://docs.aws.amazon.com/iot-sitewise/latest/userguide/quotas.html)
@@ -29879,7 +29947,8 @@
 	//
 	// When creating custom composite models, you need to use CreateAssetModelCompositeModel
 	// (https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_CreateAssetModelCompositeModel.html).
-	// For more information, see <LINK>.
+	// For more information, see Creating custom composite models (Components) (https://docs.aws.amazon.com/iot-sitewise/latest/userguide/create-custom-composite-models.html)
+	// in the IoT SiteWise User Guide.
 	AssetModelCompositeModels []*AssetModelCompositeModel `locationName:"assetModelCompositeModels" type:"list"`
 
 	// A description for the asset model.
@@ -29909,7 +29978,7 @@
 	// AssetModelId is a required field
 	AssetModelId *string `location:"uri" locationName:"assetModelId" min:"13" type:"string" required:"true"`
 
-	// A unique, friendly name for the asset model.
+	// A unique name for the asset model.
 	//
 	// AssetModelName is a required field
 	AssetModelName *string `locationName:"assetModelName" min:"1" type:"string" required:"true"`
@@ -30559,7 +30628,7 @@
 	// GatewayId is a required field
 	GatewayId *string `location:"uri" locationName:"gatewayId" min:"36" type:"string" required:"true"`
 
-	// A unique, friendly name for the gateway.
+	// A unique name for the gateway.
 	//
 	// GatewayName is a required field
 	GatewayName *string `locationName:"gatewayName" min:"1" type:"string" required:"true"`
@@ -31180,8 +31249,7 @@
 	// Asset property data of type double (floating point number).
 	DoubleValue *float64 `locationName:"doubleValue" type:"double"`
 
-	// Asset property data of type integer (number that's greater than or equal
-	// to zero).
+	// Asset property data of type integer (whole number).
 	IntegerValue *int64 `locationName:"integerValue" type:"integer"`
 
 	// Asset property data of type string (sequence of characters).
@@ -31565,6 +31633,9 @@
 
 	// CapabilitySyncStatusUnknown is a CapabilitySyncStatus enum value
 	CapabilitySyncStatusUnknown = "UNKNOWN"
+
+	// CapabilitySyncStatusNotApplicable is a CapabilitySyncStatus enum value
+	CapabilitySyncStatusNotApplicable = "NOT_APPLICABLE"
 )
 
 // CapabilitySyncStatus_Values returns all elements of the CapabilitySyncStatus enum
@@ -31574,6 +31645,7 @@
 		CapabilitySyncStatusOutOfSync,
 		CapabilitySyncStatusSyncFailed,
 		CapabilitySyncStatusUnknown,
+		CapabilitySyncStatusNotApplicable,
 	}
 }
 
diff --git a/service/mediapackagev2/api.go b/service/mediapackagev2/api.go
index dd33142..f7ceafb 100644
--- a/service/mediapackagev2/api.go
+++ b/service/mediapackagev2/api.go
@@ -9257,6 +9257,9 @@
 
 	// DrmSystemWidevine is a DrmSystem enum value
 	DrmSystemWidevine = "WIDEVINE"
+
+	// DrmSystemIrdeto is a DrmSystem enum value
+	DrmSystemIrdeto = "IRDETO"
 )
 
 // DrmSystem_Values returns all elements of the DrmSystem enum
@@ -9266,6 +9269,7 @@
 		DrmSystemFairplay,
 		DrmSystemPlayready,
 		DrmSystemWidevine,
+		DrmSystemIrdeto,
 	}
 }
 
diff --git a/service/medicalimaging/api.go b/service/medicalimaging/api.go
index 47aed42..99ed3e8 100644
--- a/service/medicalimaging/api.go
+++ b/service/medicalimaging/api.go
@@ -2320,6 +2320,11 @@
 	// DatastoreId is a required field
 	DatastoreId *string `location:"uri" locationName:"datastoreId" type:"string" required:"true"`
 
+	// Setting this flag will force the CopyImageSet operation, even if Patient,
+	// Study, or Series level metadata are mismatched across the sourceImageSet
+	// and destinationImageSet.
+	Force *bool `location:"querystring" locationName:"force" type:"boolean"`
+
 	// The source image set identifier.
 	//
 	// SourceImageSetId is a required field
@@ -2386,6 +2391,12 @@
 	return s
 }
 
+// SetForce sets the Force field's value.
+func (s *CopyImageSetInput) SetForce(v bool) *CopyImageSetInput {
+	s.Force = &v
+	return s
+}
+
 // SetSourceImageSetId sets the SourceImageSetId field's value.
 func (s *CopyImageSetInput) SetSourceImageSetId(v string) *CopyImageSetInput {
 	s.SourceImageSetId = &v
@@ -2451,6 +2462,10 @@
 type CopySourceImageSetInformation struct {
 	_ struct{} `type:"structure"`
 
+	// Contains MetadataCopies structure and wraps information related to specific
+	// copy use cases. For example, when copying subsets.
+	DICOMCopies *MetadataCopies `type:"structure"`
+
 	// The latest version identifier for the source image set.
 	//
 	// LatestVersionId is a required field
@@ -2481,6 +2496,11 @@
 	if s.LatestVersionId == nil {
 		invalidParams.Add(request.NewErrParamRequired("LatestVersionId"))
 	}
+	if s.DICOMCopies != nil {
+		if err := s.DICOMCopies.Validate(); err != nil {
+			invalidParams.AddNested("DICOMCopies", err.(request.ErrInvalidParams))
+		}
+	}
 
 	if invalidParams.Len() > 0 {
 		return invalidParams
@@ -2488,6 +2508,12 @@
 	return nil
 }
 
+// SetDICOMCopies sets the DICOMCopies field's value.
+func (s *CopySourceImageSetInformation) SetDICOMCopies(v *MetadataCopies) *CopySourceImageSetInformation {
+	s.DICOMCopies = v
+	return s
+}
+
 // SetLatestVersionId sets the LatestVersionId field's value.
 func (s *CopySourceImageSetInformation) SetLatestVersionId(v string) *CopySourceImageSetInformation {
 	s.LatestVersionId = &v
@@ -4243,6 +4269,11 @@
 	// The error message thrown if an image set action fails.
 	Message *string `locationName:"message" min:"1" type:"string"`
 
+	// This object contains the details of any overrides used while creating a specific
+	// image set version. If an image set was copied or updated using the force
+	// flag, this object will contain the forced flag.
+	Overrides *Overrides `locationName:"overrides" type:"structure"`
+
 	// The timestamp when image set properties were updated.
 	UpdatedAt *time.Time `locationName:"updatedAt" type:"timestamp"`
 
@@ -4318,6 +4349,12 @@
 	return s
 }
 
+// SetOverrides sets the Overrides field's value.
+func (s *GetImageSetOutput) SetOverrides(v *Overrides) *GetImageSetOutput {
+	s.Overrides = v
+	return s
+}
+
 // SetUpdatedAt sets the UpdatedAt field's value.
 func (s *GetImageSetOutput) SetUpdatedAt(v time.Time) *GetImageSetOutput {
 	s.UpdatedAt = &v
@@ -4403,6 +4440,11 @@
 	// The error message thrown if an image set action fails.
 	Message *string `locationName:"message" min:"1" type:"string"`
 
+	// Contains details on overrides used when creating the returned version of
+	// an image set. For example, if forced exists, the forced flag was used when
+	// creating the image set.
+	Overrides *Overrides `locationName:"overrides" type:"structure"`
+
 	// The timestamp when the image set properties were updated.
 	UpdatedAt *time.Time `locationName:"updatedAt" type:"timestamp"`
 
@@ -4466,6 +4508,12 @@
 	return s
 }
 
+// SetOverrides sets the Overrides field's value.
+func (s *ImageSetProperties) SetOverrides(v *Overrides) *ImageSetProperties {
+	s.Overrides = v
+	return s
+}
+
 // SetUpdatedAt sets the UpdatedAt field's value.
 func (s *ImageSetProperties) SetUpdatedAt(v time.Time) *ImageSetProperties {
 	s.UpdatedAt = &v
@@ -5063,12 +5111,76 @@
 	return s
 }
 
+// Contains copiable Attributes structure and wraps information related to specific
+// copy use cases. For example, when copying subsets.
+type MetadataCopies struct {
+	_ struct{} `type:"structure"`
+
+	// The JSON string used to specify a subset of SOP Instances to copy from source
+	// to destination image set.
+	//
+	// CopiableAttributes is a sensitive parameter and its value will be
+	// replaced with "sensitive" in string returned by MetadataCopies's
+	// String and GoString methods.
+	//
+	// CopiableAttributes is a required field
+	CopiableAttributes *string `locationName:"copiableAttributes" min:"1" type:"string" required:"true" sensitive:"true"`
+}
+
+// String returns the string representation.
+//
+// API parameter values that are decorated as "sensitive" in the API will not
+// be included in the string output. The member name will be present, but the
+// value will be replaced with "sensitive".
+func (s MetadataCopies) String() string {
+	return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation.
+//
+// API parameter values that are decorated as "sensitive" in the API will not
+// be included in the string output. The member name will be present, but the
+// value will be replaced with "sensitive".
+func (s MetadataCopies) GoString() string {
+	return s.String()
+}
+
+// Validate inspects the fields of the type to determine if they are valid.
+func (s *MetadataCopies) Validate() error {
+	invalidParams := request.ErrInvalidParams{Context: "MetadataCopies"}
+	if s.CopiableAttributes == nil {
+		invalidParams.Add(request.NewErrParamRequired("CopiableAttributes"))
+	}
+	if s.CopiableAttributes != nil && len(*s.CopiableAttributes) < 1 {
+		invalidParams.Add(request.NewErrParamMinLen("CopiableAttributes", 1))
+	}
+
+	if invalidParams.Len() > 0 {
+		return invalidParams
+	}
+	return nil
+}
+
+// SetCopiableAttributes sets the CopiableAttributes field's value.
+func (s *MetadataCopies) SetCopiableAttributes(v string) *MetadataCopies {
+	s.CopiableAttributes = &v
+	return s
+}
+
 // Contains DICOMUpdates.
 type MetadataUpdates struct {
 	_ struct{} `type:"structure"`
 
 	// The object containing removableAttributes and updatableAttributes.
 	DICOMUpdates *DICOMUpdates `type:"structure"`
+
+	// Specifies the previous image set version ID to revert the current image set
+	// back to.
+	//
+	// You must provide either revertToVersionId or DICOMUpdates in your request.
+	// A ValidationException error is thrown if both parameters are provided at
+	// the same time.
+	RevertToVersionId *string `locationName:"revertToVersionId" type:"string"`
 }
 
 // String returns the string representation.
@@ -5110,6 +5222,46 @@
 	return s
 }
 
+// SetRevertToVersionId sets the RevertToVersionId field's value.
+func (s *MetadataUpdates) SetRevertToVersionId(v string) *MetadataUpdates {
+	s.RevertToVersionId = &v
+	return s
+}
+
+// Specifies the overrides used in image set modification calls to CopyImageSet
+// and UpdateImageSetMetadata.
+type Overrides struct {
+	_ struct{} `type:"structure"`
+
+	// Setting this flag will force the CopyImageSet and UpdateImageSetMetadata
+	// operations, even if Patient, Study, or Series level metadata are mismatched.
+	Forced *bool `locationName:"forced" type:"boolean"`
+}
+
+// String returns the string representation.
+//
+// API parameter values that are decorated as "sensitive" in the API will not
+// be included in the string output. The member name will be present, but the
+// value will be replaced with "sensitive".
+func (s Overrides) String() string {
+	return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation.
+//
+// API parameter values that are decorated as "sensitive" in the API will not
+// be included in the string output. The member name will be present, but the
+// value will be replaced with "sensitive".
+func (s Overrides) GoString() string {
+	return s.String()
+}
+
+// SetForced sets the Forced field's value.
+func (s *Overrides) SetForced(v bool) *Overrides {
+	s.Forced = &v
+	return s
+}
+
 // The request references a resource which does not exist.
 type ResourceNotFoundException struct {
 	_            struct{}                  `type:"structure"`
@@ -6165,6 +6317,15 @@
 	// DatastoreId is a required field
 	DatastoreId *string `location:"uri" locationName:"datastoreId" type:"string" required:"true"`
 
+	// Setting this flag will force the UpdateImageSetMetadata operation for the
+	// following attributes:
+	//
+	//    * Tag.StudyInstanceUID, Tag.SeriesInstanceUID, Tag.SOPInstanceUID, and
+	//    Tag.StudyID
+	//
+	//    * Adding, removing, or updating private tags for an individual SOP Instance
+	Force *bool `location:"querystring" locationName:"force" type:"boolean"`
+
 	// The image set identifier.
 	//
 	// ImageSetId is a required field
@@ -6238,6 +6399,12 @@
 	return s
 }
 
+// SetForce sets the Force field's value.
+func (s *UpdateImageSetMetadataInput) SetForce(v bool) *UpdateImageSetMetadataInput {
+	s.Force = &v
+	return s
+}
+
 // SetImageSetId sets the ImageSetId field's value.
 func (s *UpdateImageSetMetadataInput) SetImageSetId(v string) *UpdateImageSetMetadataInput {
 	s.ImageSetId = &v
diff --git a/service/pinpointsmsvoicev2/api.go b/service/pinpointsmsvoicev2/api.go
index dbcdffd..5843938 100644
--- a/service/pinpointsmsvoicev2/api.go
+++ b/service/pinpointsmsvoicev2/api.go
@@ -379,14 +379,14 @@
 // Creates a new event destination in a configuration set.
 //
 // An event destination is a location where you send message events. The event
-// options are Amazon CloudWatch, Amazon Kinesis Data Firehose, or Amazon SNS.
-// For example, when a message is delivered successfully, you can send information
-// about that event to an event destination, or send notifications to endpoints
-// that are subscribed to an Amazon SNS topic.
+// options are Amazon CloudWatch, Amazon Data Firehose, or Amazon SNS. For example,
+// when a message is delivered successfully, you can send information about
+// that event to an event destination, or send notifications to endpoints that
+// are subscribed to an Amazon SNS topic.
 //
 // Each configuration set can contain between 0 and 5 event destinations. Each
 // event destination can contain a reference to a single destination, such as
-// a CloudWatch or Kinesis Data Firehose destination.
+// a CloudWatch or Firehose destination.
 //
 // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
 // with awserr.Error's Code and Message methods to get detailed information about
@@ -498,7 +498,7 @@
 // "STOP," an entry for the phone number is added to the opt-out list. In addition
 // to STOP, your recipients can use any supported opt-out keyword, such as CANCEL
 // or OPTOUT. For a list of supported opt-out keywords, see SMS opt out (https://docs.aws.amazon.com/pinpoint/latest/userguide/channels-sms-manage.html#channels-sms-manage-optout)
-// in the Amazon Pinpoint User Guide.
+// in the AWS End User Messaging SMS User Guide.
 //
 // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
 // with awserr.Error's Code and Message methods to get detailed information about
@@ -1815,8 +1815,8 @@
 // A keyword is a word that you can search for on a particular phone number
 // or pool. It is also a specific word or phrase that an end user can send to
 // your number to elicit a response, such as an informational message or a special
-// offer. When your number receives a message that begins with a keyword, Amazon
-// Pinpoint responds with a customizable message.
+// offer. When your number receives a message that begins with a keyword, AWS
+// End User Messaging SMS and Voice responds with a customizable message.
 //
 // Keywords "HELP" and "STOP" can't be deleted or modified.
 //
@@ -2737,8 +2737,8 @@
 // Deletes an account-level monthly spending limit override for sending text
 // messages. Deleting a spend limit override will set the EnforcedLimit to equal
 // the MaxLimit, which is controlled by Amazon Web Services. For more information
-// on spend limits (quotas) see Amazon Pinpoint quotas (https://docs.aws.amazon.com/pinpoint/latest/developerguide/quotas.html)
-// in the Amazon Pinpoint Developer Guide.
+// on spend limits (quotas) see Quotas (https://docs.aws.amazon.com/sms-voice/latest/userguide/quotas.html)
+// in the AWS End User Messaging SMS User Guide.
 //
 // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
 // with awserr.Error's Code and Message methods to get detailed information about
@@ -2932,8 +2932,8 @@
 // Deletes an account level monthly spend limit override for sending voice messages.
 // Deleting a spend limit override sets the EnforcedLimit equal to the MaxLimit,
 // which is controlled by Amazon Web Services. For more information on spending
-// limits (quotas) see Amazon Pinpoint quotas (https://docs.aws.amazon.com/pinpoint/latest/developerguide/quotas.html)
-// in the Amazon Pinpoint Developer Guide.
+// limits (quotas) see Quotas (https://docs.aws.amazon.com/sms-voice/latest/userguide/quotas.html)
+// in the AWS End User Messaging SMS User Guide.
 //
 // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
 // with awserr.Error's Code and Message methods to get detailed information about
@@ -3036,9 +3036,9 @@
 // account out of the sandbox, create an Amazon Web Services Support case for
 // a service limit increase request.
 //
-// New Amazon Pinpoint accounts are placed into an SMS or voice sandbox. The
-// sandbox protects both Amazon Web Services end recipients and SMS or voice
-// recipients from fraud and abuse.
+// New accounts are placed into an SMS or voice sandbox. The sandbox protects
+// both Amazon Web Services end recipients and SMS or voice recipients from
+// fraud and abuse.
 //
 // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
 // with awserr.Error's Code and Message methods to get detailed information about
@@ -3186,15 +3186,15 @@
 
 // DescribeAccountLimits API operation for Amazon Pinpoint SMS Voice V2.
 //
-// Describes the current Amazon Pinpoint SMS Voice V2 resource quotas for your
-// account. The description for a quota includes the quota name, current usage
-// toward that quota, and the quota's maximum value.
+// Describes the current AWS End User Messaging SMS and Voice SMS Voice V2 resource
+// quotas for your account. The description for a quota includes the quota name,
+// current usage toward that quota, and the quota's maximum value.
 //
 // When you establish an Amazon Web Services account, the account has initial
 // quotas on the maximum number of configuration sets, opt-out lists, phone
 // numbers, and pools that you can create in a given Region. For more information
-// see Amazon Pinpoint quotas (https://docs.aws.amazon.com/pinpoint/latest/developerguide/quotas.html)
-// in the Amazon Pinpoint Developer Guide.
+// see Quotas (https://docs.aws.amazon.com/sms-voice/latest/userguide/quotas.html)
+// in the AWS End User Messaging SMS User Guide.
 //
 // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
 // with awserr.Error's Code and Message methods to get detailed information about
@@ -3507,8 +3507,8 @@
 // A keyword is a word that you can search for on a particular phone number
 // or pool. It is also a specific word or phrase that an end user can send to
 // your number to elicit a response, such as an informational message or a special
-// offer. When your number receives a message that begins with a keyword, Amazon
-// Pinpoint responds with a customizable message.
+// offer. When your number receives a message that begins with a keyword, AWS
+// End User Messaging SMS and Voice responds with a customizable message.
 //
 // If you specify a keyword that isn't valid, an error is returned.
 //
@@ -5668,14 +5668,13 @@
 
 // DescribeSpendLimits API operation for Amazon Pinpoint SMS Voice V2.
 //
-// Describes the current Amazon Pinpoint monthly spend limits for sending voice
-// and text messages.
+// Describes the current monthly spend limits for sending voice and text messages.
 //
 // When you establish an Amazon Web Services account, the account has initial
 // monthly spend limit in a given Region. For more information on increasing
-// your monthly spend limit, see Requesting increases to your monthly SMS spending
-// quota for Amazon Pinpoint (https://docs.aws.amazon.com/pinpoint/latest/userguide/channels-sms-awssupport-spend-threshold.html)
-// in the Amazon Pinpoint User Guide.
+// your monthly spend limit, see Requesting increases to your monthly SMS, MMS,
+// or Voice spending quota (https://docs.aws.amazon.com/sms-voice/latest/userguide/awssupport-spend-threshold.html)
+// in the AWS End User Messaging SMS User Guide.
 //
 // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
 // with awserr.Error's Code and Message methods to get detailed information about
@@ -6771,8 +6770,8 @@
 // A keyword is a word that you can search for on a particular phone number
 // or pool. It is also a specific word or phrase that an end user can send to
 // your number to elicit a response, such as an informational message or a special
-// offer. When your number receives a message that begins with a keyword, Amazon
-// Pinpoint responds with a customizable message.
+// offer. When your number receives a message that begins with a keyword, AWS
+// End User Messaging SMS and Voice responds with a customizable message.
 //
 // If you specify a keyword that isn't valid, an error is returned.
 //
@@ -7279,8 +7278,8 @@
 // RequestPhoneNumber API operation for Amazon Pinpoint SMS Voice V2.
 //
 // Request an origination phone number for use in your account. For more information
-// on phone number request see Requesting a number (https://docs.aws.amazon.com/pinpoint/latest/userguide/settings-sms-request-number.html)
-// in the Amazon Pinpoint User Guide.
+// on phone number request see Request a phone number (https://docs.aws.amazon.com/sms-voice/latest/userguide/phone-numbers-request.html)
+// in the AWS End User Messaging SMS User Guide.
 //
 // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
 // with awserr.Error's Code and Message methods to get detailed information about
@@ -7694,13 +7693,15 @@
 
 // SendTextMessage API operation for Amazon Pinpoint SMS Voice V2.
 //
-// Creates a new text message and sends it to a recipient's phone number.
+// Creates a new text message and sends it to a recipient's phone number. SendTextMessage
+// only sends an SMS message to one recipient each time it is invoked.
 //
 // SMS throughput limits are measured in Message Parts per Second (MPS). Your
 // MPS limit depends on the destination country of your messages, as well as
 // the type of phone number (origination number) that you use to send the message.
-// For more information, see Message Parts per Second (MPS) limits (https://docs.aws.amazon.com/pinpoint/latest/userguide/channels-sms-limitations-mps.html)
-// in the Amazon Pinpoint User Guide.
+// For more information about MPS, see Message Parts per Second (MPS) limits
+// (https://docs.aws.amazon.com/sms-voice/latest/userguide/sms-limitations-mps.html)
+// in the AWS End User Messaging SMS User Guide.
 //
 // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
 // with awserr.Error's Code and Message methods to get detailed information about
@@ -7803,9 +7804,9 @@
 
 // SendVoiceMessage API operation for Amazon Pinpoint SMS Voice V2.
 //
-// Allows you to send a request that sends a voice message through Amazon Pinpoint.
-// This operation uses Amazon Polly (http://aws.amazon.com/polly/) to convert
-// a text script into a voice message.
+// Allows you to send a request that sends a voice message. This operation uses
+// Amazon Polly (http://aws.amazon.com/polly/) to convert a text script into
+// a voice message.
 //
 // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
 // with awserr.Error's Code and Message methods to get detailed information about
@@ -8583,13 +8584,12 @@
 
 // TagResource API operation for Amazon Pinpoint SMS Voice V2.
 //
-// Adds or overwrites only the specified tags for the specified Amazon Pinpoint
-// SMS Voice, version 2 resource. When you specify an existing tag key, the
-// value is overwritten with the new value. Each resource can have a maximum
-// of 50 tags. Each tag consists of a key and an optional value. Tag keys must
-// be unique per resource. For more information about tags, see Tagging Amazon
-// Pinpoint resources (https://docs.aws.amazon.com/pinpoint/latest/developerguide/tagging-resources.html)
-// in the Amazon Pinpoint Developer Guide.
+// Adds or overwrites only the specified tags for the specified resource. When
+// you specify an existing tag key, the value is overwritten with the new value.
+// Each resource can have a maximum of 50 tags. Each tag consists of a key and
+// an optional value. Tag keys must be unique per resource. For more information
+// about tags, see Tags (https://docs.aws.amazon.com/sms-voice/latest/userguide/phone-numbers-tags.html)
+// in the AWS End User Messaging SMS User Guide.
 //
 // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
 // with awserr.Error's Code and Message methods to get detailed information about
@@ -8687,10 +8687,9 @@
 
 // UntagResource API operation for Amazon Pinpoint SMS Voice V2.
 //
-// Removes the association of the specified tags from an Amazon Pinpoint SMS
-// Voice V2 resource. For more information on tags see Tagging Amazon Pinpoint
-// resources (https://docs.aws.amazon.com/pinpoint/latest/developerguide/tagging-resources.html)
-// in the Amazon Pinpoint Developer Guide.
+// Removes the association of the specified tags from a resource. For more information
+// on tags see Tags (https://docs.aws.amazon.com/sms-voice/latest/userguide/phone-numbers-tags.html)
+// in the AWS End User Messaging SMS User Guide.
 //
 // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
 // with awserr.Error's Code and Message methods to get detailed information about
@@ -8785,13 +8784,12 @@
 // UpdateEventDestination API operation for Amazon Pinpoint SMS Voice V2.
 //
 // Updates an existing event destination in a configuration set. You can update
-// the IAM role ARN for CloudWatch Logs and Kinesis Data Firehose. You can also
-// enable or disable the event destination.
+// the IAM role ARN for CloudWatch Logs and Firehose. You can also enable or
+// disable the event destination.
 //
 // You may want to update an event destination to change its matching event
 // types or updating the destination resource ARN. You can't change an event
-// destination's type between CloudWatch Logs, Kinesis Data Firehose, and Amazon
-// SNS.
+// destination's type between CloudWatch Logs, Firehose, and Amazon SNS.
 //
 // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
 // with awserr.Error's Code and Message methods to get detailed information about
@@ -10390,11 +10388,11 @@
 	EventDestinationName *string `min:"1" type:"string" required:"true"`
 
 	// An object that contains information about an event destination for logging
-	// to Amazon Kinesis Data Firehose.
+	// to Amazon Data Firehose.
 	KinesisFirehoseDestination *KinesisFirehoseDestination `type:"structure"`
 
 	// An array of event types that determine which events to log. If "ALL" is used,
-	// then Amazon Pinpoint logs every event type.
+	// then AWS End User Messaging SMS and Voice logs every event type.
 	//
 	// The TEXT_SENT event type is not supported.
 	//
@@ -10722,7 +10720,7 @@
 
 	// The type of message. Valid values are TRANSACTIONAL for messages that are
 	// critical or time-sensitive and PROMOTIONAL for messages that aren't critical
-	// or time-sensitive.
+	// or time-sensitive. After the pool is created the MessageType can't be changed.
 	//
 	// MessageType is a required field
 	MessageType *string `type:"string" required:"true" enum:"MessageType"`
@@ -10732,6 +10730,9 @@
 	// for PhoneNumberId and PhoneNumberArn while DescribeSenderIds can be used
 	// to get the values for SenderId and SenderIdArn.
 	//
+	// After the pool is created you can add more origination identities to the
+	// pool by using AssociateOriginationIdentity (https://docs.aws.amazon.com/pinpoint/latest/apireference_smsvoicev2/API_AssociateOriginationIdentity.html).
+	//
 	// OriginationIdentity is a required field
 	OriginationIdentity *string `min:"1" type:"string" required:"true"`
 
@@ -10855,14 +10856,15 @@
 	PoolId *string `type:"string"`
 
 	// By default this is set to false. When an end recipient sends a message that
-	// begins with HELP or STOP to one of your dedicated numbers, Amazon Pinpoint
-	// automatically replies with a customizable message and adds the end recipient
-	// to the OptOutList. When set to true you're responsible for responding to
-	// HELP and STOP requests. You're also responsible for tracking and honoring
-	// opt-out requests.
+	// begins with HELP or STOP to one of your dedicated numbers, AWS End User Messaging
+	// SMS and Voice automatically replies with a customizable message and adds
+	// the end recipient to the OptOutList. When set to true you're responsible
+	// for responding to HELP and STOP requests. You're also responsible for tracking
+	// and honoring opt-out requests.
 	SelfManagedOptOutsEnabled *bool `type:"boolean"`
 
-	// Indicates whether shared routes are enabled for the pool.
+	// Indicates whether shared routes are enabled for the pool. Set to false and
+	// only origination identities in this pool are used to send messages.
 	SharedRoutesEnabled *bool `type:"boolean"`
 
 	// The current status of the pool.
@@ -13043,11 +13045,11 @@
 	PoolId *string `type:"string"`
 
 	// By default this is set to false. When an end recipient sends a message that
-	// begins with HELP or STOP to one of your dedicated numbers, Amazon Pinpoint
-	// automatically replies with a customizable message and adds the end recipient
-	// to the OptOutList. When set to true you're responsible for responding to
-	// HELP and STOP requests. You're also responsible for tracking and honoring
-	// opt-out requests.
+	// begins with HELP or STOP to one of your dedicated numbers, AWS End User Messaging
+	// SMS and Voice automatically replies with a customizable message and adds
+	// the end recipient to the OptOutList. When set to true you're responsible
+	// for responding to HELP and STOP requests. You're also responsible for tracking
+	// and honoring opt-out requests.
 	SelfManagedOptOutsEnabled *bool `type:"boolean"`
 
 	// Indicates whether shared routes are enabled for the pool.
@@ -16984,8 +16986,7 @@
 // Contains information about an event destination.
 //
 // Event destinations are associated with configuration sets, which enable you
-// to publish message sending events to CloudWatch, Kinesis Data Firehose, or
-// Amazon SNS.
+// to publish message sending events to CloudWatch, Firehose, or Amazon SNS.
 type EventDestination struct {
 	_ struct{} `type:"structure"`
 
@@ -17004,7 +17005,7 @@
 	EventDestinationName *string `min:"1" type:"string" required:"true"`
 
 	// An object that contains information about an event destination for logging
-	// to Amazon Kinesis Data Firehose.
+	// to Amazon Data Firehose.
 	KinesisFirehoseDestination *KinesisFirehoseDestination `type:"structure"`
 
 	// An array of event types that determine which events to log.
@@ -17144,7 +17145,7 @@
 	// the details for the requested NumberCapability. The Key is the two-letter
 	// ISO country code. For a list of supported ISO country codes, see Supported
 	// countries and regions (SMS channel) (https://docs.aws.amazon.com/sms-voice/latest/userguide/phone-numbers-sms-by-country.html)
-	// in the Amazon Pinpoint SMS user guide.
+	// in the AWS End User Messaging SMS User Guide.
 	//
 	// CountryRuleSet is a required field
 	CountryRuleSet map[string]*ProtectConfigurationCountryRuleSetInformation `min:"1" type:"map" required:"true"`
@@ -17397,11 +17398,11 @@
 }
 
 // Contains the delivery stream Amazon Resource Name (ARN), and the ARN of the
-// Identity and Access Management (IAM) role associated with a Kinesis Data
-// Firehose event destination.
+// Identity and Access Management (IAM) role associated with a Firehose event
+// destination.
 //
-// Event destinations, such as Kinesis Data Firehose, are associated with configuration
-// sets, which enable you to publish message sending events.
+// Event destinations, such as Firehose, are associated with configuration sets,
+// which enable you to publish message sending events.
 type KinesisFirehoseDestination struct {
 	_ struct{} `type:"structure"`
 
@@ -17411,7 +17412,7 @@
 	DeliveryStreamArn *string `min:"20" type:"string" required:"true"`
 
 	// The ARN of an Identity and Access Management role that is able to write event
-	// data to an Amazon Kinesis Data Firehose destination.
+	// data to an Amazon Data Firehose destination.
 	//
 	// IamRoleArn is a required field
 	IamRoleArn *string `min:"20" type:"string" required:"true"`
@@ -18272,11 +18273,11 @@
 	RegistrationId *string `type:"string"`
 
 	// When set to false an end recipient sends a message that begins with HELP
-	// or STOP to one of your dedicated numbers, Amazon Pinpoint automatically replies
-	// with a customizable message and adds the end recipient to the OptOutList.
-	// When set to true you're responsible for responding to HELP and STOP requests.
-	// You're also responsible for tracking and honoring opt-out request. For more
-	// information see Self-managed opt-outs (https://docs.aws.amazon.com/pinpoint/latest/userguide/settings-sms-managing.html#settings-account-sms-self-managed-opt-out)
+	// or STOP to one of your dedicated numbers, AWS End User Messaging SMS and
+	// Voice automatically replies with a customizable message and adds the end
+	// recipient to the OptOutList. When set to true you're responsible for responding
+	// to HELP and STOP requests. You're also responsible for tracking and honoring
+	// opt-out request. For more information see Self-managed opt-outs (https://docs.aws.amazon.com/pinpoint/latest/userguide/settings-sms-managing.html#settings-account-sms-self-managed-opt-out)
 	//
 	// SelfManagedOptOutsEnabled is a required field
 	SelfManagedOptOutsEnabled *bool `type:"boolean" required:"true"`
@@ -18528,11 +18529,11 @@
 	PoolId *string `type:"string" required:"true"`
 
 	// When set to false, an end recipient sends a message that begins with HELP
-	// or STOP to one of your dedicated numbers, Amazon Pinpoint automatically replies
-	// with a customizable message and adds the end recipient to the OptOutList.
-	// When set to true you're responsible for responding to HELP and STOP requests.
-	// You're also responsible for tracking and honoring opt-out requests. For more
-	// information see Self-managed opt-outs (https://docs.aws.amazon.com/pinpoint/latest/userguide/settings-sms-managing.html#settings-account-sms-self-managed-opt-out)
+	// or STOP to one of your dedicated numbers, AWS End User Messaging SMS and
+	// Voice automatically replies with a customizable message and adds the end
+	// recipient to the OptOutList. When set to true you're responsible for responding
+	// to HELP and STOP requests. You're also responsible for tracking and honoring
+	// opt-out requests. For more information see Self-managed opt-outs (https://docs.aws.amazon.com/pinpoint/latest/userguide/settings-sms-managing.html#settings-account-sms-self-managed-opt-out)
 	//
 	// SelfManagedOptOutsEnabled is a required field
 	SelfManagedOptOutsEnabled *bool `type:"boolean" required:"true"`
@@ -18541,9 +18542,9 @@
 	//
 	// By default, this is set to False. If you set this value to True, your messages
 	// are sent using phone numbers or sender IDs (depending on the country) that
-	// are shared with other Amazon Pinpoint users. In some countries, such as the
-	// United States, senders aren't allowed to use shared routes and must use a
-	// dedicated phone number or short code.
+	// are shared with other users. In some countries, such as the United States,
+	// senders aren't allowed to use shared routes and must use a dedicated phone
+	// number or short code.
 	//
 	// SharedRoutesEnabled is a required field
 	SharedRoutesEnabled *bool `type:"boolean" required:"true"`
@@ -20897,11 +20898,11 @@
 	RegistrationId *string `type:"string"`
 
 	// By default this is set to false. When an end recipient sends a message that
-	// begins with HELP or STOP to one of your dedicated numbers, Amazon Pinpoint
-	// automatically replies with a customizable message and adds the end recipient
-	// to the OptOutList. When set to true you're responsible for responding to
-	// HELP and STOP requests. You're also responsible for tracking and honoring
-	// opt-out requests.
+	// begins with HELP or STOP to one of your dedicated numbers, AWS End User Messaging
+	// SMS and Voice automatically replies with a customizable message and adds
+	// the end recipient to the OptOutList. When set to true you're responsible
+	// for responding to HELP and STOP requests. You're also responsible for tracking
+	// and honoring opt-out requests.
 	SelfManagedOptOutsEnabled *bool `type:"boolean"`
 
 	// The current status of the request.
@@ -21428,11 +21429,11 @@
 	RegistrationId *string `type:"string"`
 
 	// By default this is set to false. When an end recipient sends a message that
-	// begins with HELP or STOP to one of your dedicated numbers, Amazon Pinpoint
-	// automatically replies with a customizable message and adds the end recipient
-	// to the OptOutList. When set to true you're responsible for responding to
-	// HELP and STOP requests. You're also responsible for tracking and honoring
-	// opt-out requests.
+	// begins with HELP or STOP to one of your dedicated numbers, AWS End User Messaging
+	// SMS and Voice automatically replies with a customizable message and adds
+	// the end recipient to the OptOutList. When set to true you're responsible
+	// for responding to HELP and STOP requests. You're also responsible for tracking
+	// and honoring opt-out requests.
 	SelfManagedOptOutsEnabled *bool `type:"boolean"`
 
 	// The current status of the request.
@@ -22363,6 +22364,15 @@
 	// this setting is only used when you send messages to recipients in India using
 	// a sender ID. For more information see Special requirements for sending SMS
 	// messages to recipients in India (https://docs.aws.amazon.com/pinpoint/latest/userguide/channels-sms-senderid-india.html).
+	//
+	//    * IN_ENTITY_ID The entity ID or Principal Entity (PE) ID that you received
+	//    after completing the sender ID registration process.
+	//
+	//    * IN_TEMPLATE_ID The template ID that you received after completing the
+	//    sender ID registration process. Make sure that the Template ID that you
+	//    specify matches your message template exactly. If your message doesn't
+	//    match the template that you provided during the registration process,
+	//    the mobile carriers might reject your message.
 	DestinationCountryParameters map[string]*string `type:"map"`
 
 	// The destination phone number in E.164 format.
@@ -22371,15 +22381,22 @@
 	DestinationPhoneNumber *string `min:"1" type:"string" required:"true"`
 
 	// When set to true, the message is checked and validated, but isn't sent to
-	// the end recipient.
+	// the end recipient. You are not charged for using DryRun.
+	//
+	// The Message Parts per Second (MPS) limit when using DryRun is five. If your
+	// origination identity has a lower MPS limit then the lower MPS limit is used.
+	// For more information about MPS limits, see Message Parts per Second (MPS)
+	// limits (https://docs.aws.amazon.com/sms-voice/latest/userguide/sms-limitations-mps.html)
+	// in the AWS End User Messaging SMS User Guide..
 	DryRun *bool `type:"boolean"`
 
 	// When you register a short code in the US, you must specify a program name.
 	// If you don’t have a US short code, omit this attribute.
 	Keyword *string `min:"1" type:"string"`
 
-	// The maximum amount that you want to spend, in US dollars, per each text message
-	// part. A text message can contain multiple parts.
+	// The maximum amount that you want to spend, in US dollars, per each text message.
+	// If the calculated amount to send the text message is greater than MaxPrice,
+	// the message is not sent and an error is returned.
 	MaxPrice *string `min:"2" type:"string"`
 
 	// The body of the text message.
@@ -22396,7 +22413,9 @@
 	// The unique identifier for the protect configuration.
 	ProtectConfigurationId *string `min:"1" type:"string"`
 
-	// How long the text message is valid for. By default this is 72 hours.
+	// How long the text message is valid for, in seconds. By default this is 72
+	// hours. If the messages isn't handed off before the TTL expires we stop attempting
+	// to hand off the message and return TTL_EXPIRED event.
 	TimeToLive *int64 `min:"5" type:"integer"`
 }
 
@@ -22763,9 +22782,8 @@
 }
 
 // The alphanumeric sender ID in a specific country that you want to describe.
-// For more information on sender IDs see Requesting sender IDs for SMS messaging
-// with Amazon Pinpoint (https://docs.aws.amazon.com/pinpoint/latest/userguide/channels-sms-awssupport-sender-id.html)
-// in the Amazon Pinpoint User Guide.
+// For more information on sender IDs see Requesting sender IDs (https://docs.aws.amazon.com/sms-voice/latest/userguide/sender-id-request.html)
+// in the AWS End User Messaging SMS User Guide.
 type SenderIdAndCountry struct {
 	_ struct{} `type:"structure"`
 
@@ -23688,11 +23706,10 @@
 	return s
 }
 
-// Describes the current Amazon Pinpoint monthly spend limits for sending voice
-// and text messages. For more information on increasing your monthly spend
-// limit, see Requesting increases to your monthly SMS spending quota for Amazon
-// Pinpoint (https://docs.aws.amazon.com/pinpoint/latest/userguide/channels-sms-awssupport-spend-threshold.html)
-// in the Amazon Pinpoint User Guide.
+// Describes the current monthly spend limits for sending voice and text messages.
+// For more information on increasing your monthly spend limit, see Requesting
+// a spending quota increase (https://docs.aws.amazon.com/sms-voice/latest/userguide/awssupport-spend-threshold.html)
+// in the AWS End User Messaging SMS User Guide.
 type SpendLimit struct {
 	_ struct{} `type:"structure"`
 
@@ -24392,7 +24409,7 @@
 	EventDestinationName *string `min:"1" type:"string" required:"true"`
 
 	// An object that contains information about an event destination for logging
-	// to Kinesis Data Firehose.
+	// to Firehose.
 	KinesisFirehoseDestination *KinesisFirehoseDestination `type:"structure"`
 
 	// An array of event types that determine which events to log.
@@ -24573,11 +24590,11 @@
 	PhoneNumberId *string `min:"1" type:"string" required:"true"`
 
 	// By default this is set to false. When an end recipient sends a message that
-	// begins with HELP or STOP to one of your dedicated numbers, Amazon Pinpoint
-	// automatically replies with a customizable message and adds the end recipient
-	// to the OptOutList. When set to true you're responsible for responding to
-	// HELP and STOP requests. You're also responsible for tracking and honoring
-	// opt-out requests.
+	// begins with HELP or STOP to one of your dedicated numbers, AWS End User Messaging
+	// SMS and Voice automatically replies with a customizable message and adds
+	// the end recipient to the OptOutList. When set to true you're responsible
+	// for responding to HELP and STOP requests. You're also responsible for tracking
+	// and honoring opt-out requests.
 	SelfManagedOptOutsEnabled *bool `type:"boolean"`
 
 	// The Amazon Resource Name (ARN) of the two way channel.
@@ -24875,11 +24892,11 @@
 	PoolId *string `min:"1" type:"string" required:"true"`
 
 	// By default this is set to false. When an end recipient sends a message that
-	// begins with HELP or STOP to one of your dedicated numbers, Amazon Pinpoint
-	// automatically replies with a customizable message and adds the end recipient
-	// to the OptOutList. When set to true you're responsible for responding to
-	// HELP and STOP requests. You're also responsible for tracking and honoring
-	// opt-out requests.
+	// begins with HELP or STOP to one of your dedicated numbers, AWS End User Messaging
+	// SMS and Voice automatically replies with a customizable message and adds
+	// the end recipient to the OptOutList. When set to true you're responsible
+	// for responding to HELP and STOP requests. You're also responsible for tracking
+	// and honoring opt-out requests.
 	SelfManagedOptOutsEnabled *bool `type:"boolean"`
 
 	// Indicates whether shared routes are enabled for the pool.
@@ -25011,10 +25028,10 @@
 	PoolId *string `type:"string"`
 
 	// When an end recipient sends a message that begins with HELP or STOP to one
-	// of your dedicated numbers, Amazon Pinpoint automatically replies with a customizable
-	// message and adds the end recipient to the OptOutList. When set to true you're
-	// responsible for responding to HELP and STOP requests. You're also responsible
-	// for tracking and honoring opt-out requests.
+	// of your dedicated numbers, AWS End User Messaging SMS and Voice automatically
+	// replies with a customizable message and adds the end recipient to the OptOutList.
+	// When set to true you're responsible for responding to HELP and STOP requests.
+	// You're also responsible for tracking and honoring opt-out requests.
 	SelfManagedOptOutsEnabled *bool `type:"boolean"`
 
 	// Indicates whether shared routes are enabled for the pool.
@@ -25132,7 +25149,7 @@
 	// the details for the requested NumberCapability. The Key is the two-letter
 	// ISO country code. For a list of supported ISO country codes, see Supported
 	// countries and regions (SMS channel) (https://docs.aws.amazon.com/sms-voice/latest/userguide/phone-numbers-sms-by-country.html)
-	// in the Amazon Pinpoint SMS user guide.
+	// in the AWS End User Messaging SMS User Guide.
 	//
 	// CountryRuleSetUpdates is a required field
 	CountryRuleSetUpdates map[string]*ProtectConfigurationCountryRuleSetInformation `min:"1" type:"map" required:"true"`
diff --git a/service/pinpointsmsvoicev2/doc.go b/service/pinpointsmsvoicev2/doc.go
index 845ad97..e20df79 100644
--- a/service/pinpointsmsvoicev2/doc.go
+++ b/service/pinpointsmsvoicev2/doc.go
@@ -3,30 +3,31 @@
 // Package pinpointsmsvoicev2 provides the client and types for making API
 // requests to Amazon Pinpoint SMS Voice V2.
 //
-// Welcome to the Amazon Pinpoint SMS and Voice, version 2 API Reference. This
-// guide provides information about Amazon Pinpoint SMS and Voice, version 2
-// API resources, including supported HTTP methods, parameters, and schemas.
+// Welcome to the AWS End User Messaging SMS and Voice, version 2 API Reference.
+// This guide provides information about AWS End User Messaging SMS and Voice,
+// version 2 API resources, including supported HTTP methods, parameters, and
+// schemas.
 //
 // Amazon Pinpoint is an Amazon Web Services service that you can use to engage
-// with your recipients across multiple messaging channels. The Amazon Pinpoint
-// SMS and Voice, version 2 API provides programmatic access to options that
-// are unique to the SMS and voice channels. Amazon Pinpoint SMS and Voice,
-// version 2 resources such as phone numbers, sender IDs, and opt-out lists
-// can be used by the Amazon Pinpoint API.
+// with your recipients across multiple messaging channels. The AWS End User
+// Messaging SMS and Voice, version 2 API provides programmatic access to options
+// that are unique to the SMS and voice channels. AWS End User Messaging SMS
+// and Voice, version 2 resources such as phone numbers, sender IDs, and opt-out
+// lists can be used by the Amazon Pinpoint API.
 //
-// If you're new to Amazon Pinpoint SMS, it's also helpful to review the Amazon
-// Pinpoint SMS User Guide (https://docs.aws.amazon.com/sms-voice/latest/userguide/what-is-service.html).
-// The Amazon Pinpoint Developer Guide provides tutorials, code samples, and
-// procedures that demonstrate how to use Amazon Pinpoint SMS features programmatically
-// and how to integrate Amazon Pinpoint functionality into mobile apps and other
-// types of applications. The guide also provides key information, such as Amazon
-// Pinpoint integration with other Amazon Web Services services, and the quotas
-// that apply to use of the service.
+// If you're new to AWS End User Messaging SMS and Voice, it's also helpful
+// to review the AWS End User Messaging SMS User Guide (https://docs.aws.amazon.com/sms-voice/latest/userguide/what-is-service.html).
+// The AWS End User Messaging SMS User Guide provides tutorials, code samples,
+// and procedures that demonstrate how to use AWS End User Messaging SMS and
+// Voice features programmatically and how to integrate functionality into mobile
+// apps and other types of applications. The guide also provides key information,
+// such as AWS End User Messaging SMS and Voice integration with other Amazon
+// Web Services services, and the quotas that apply to use of the service.
 //
 // # Regional availability
 //
-// The Amazon Pinpoint SMS and Voice, version 2 API Reference is available in
-// several Amazon Web Services Regions and it provides an endpoint for each
+// The AWS End User Messaging SMS and Voice version 2 API Reference is available
+// in several Amazon Web Services Regions and it provides an endpoint for each
 // of these Regions. For a list of all the Regions and endpoints where the API
 // is currently available, see Amazon Web Services Service Endpoints (https://docs.aws.amazon.com/general/latest/gr/rande.html#pinpoint_region)
 // and Amazon Pinpoint endpoints and quotas (https://docs.aws.amazon.com/general/latest/gr/pinpoint.html)