Repository: boto/botocore
Pull request #1267 (2017-08-17 22:20:30)

Expose waiter configuration
Adding so we can properly address https://github.com/aws/aws-cli/pull/2761

This will allow `WaiterConfig` to be passed to `waiter.wait()` calls allowing customers to adjust waiter's `maxAttempts` and `delay` settings. This is based on how `PaginationConfig` works. The current keys are formatted to match the waiter models.

```
waiter.wait(WaiterConfig={
    'delay': 5,
    'maxAttempts': 5,
})
```

codecov-io: # [Codecov](https://codecov.io/gh/boto/botocore/pull/1267?src=pr&el=h1) Report
> Merging [#1267](https://codecov.io/gh/boto/botocore/pull/1267?src=pr&el=desc) into [develop](https://codecov.io/gh/boto/botocore/commit/622ed6b1274736c0183f0170a4e9b4271b9e282c?src=pr&el=desc) will **increase** coverage by `<.01%`.
> The diff coverage is `100%`.

[![Impacted file tree graph](https://codecov.io/gh/boto/botocore/pull/1267/graphs/tree.svg?width=650&token=QOLXw6XSza&height=150&src=pr)](https://codecov.io/gh/boto/botocore/pull/1267?src=pr&el=tree)

```diff
@@             Coverage Diff             @@
##           develop    #1267      +/-   ##
===========================================
+ Coverage    98.04%   98.04%   +<.01%     
===========================================
  Files           45       45              
  Lines         7382     7383       +1     
===========================================
+ Hits          7238     7239       +1     
  Misses         144      144
```


| [Impacted Files](https://codecov.io/gh/boto/botocore/pull/1267?src=pr&el=tree) | Coverage Δ | |
|---|---|---|
| [botocore/waiter.py](https://codecov.io/gh/boto/botocore/pull/1267?src=pr&el=tree#diff-Ym90b2NvcmUvd2FpdGVyLnB5) | `98.67% <100%> (ø)` | :arrow_up: |

------

[Continue to review full report at Codecov](https://codecov.io/gh/boto/botocore/pull/1267?src=pr&el=continue).
> **Legend** - [Click here to learn more](https://docs.codecov.io/docs/codecov-delta)
> `Δ = absolute <relative> (impact)`, `ø = not affected`, `? = missing data`
> Powered by [Codecov](https://codecov.io/gh/boto/botocore/pull/1267?src=pr&el=footer). Last update [622ed6b...42286f8](https://codecov.io/gh/boto/botocore/pull/1267?src=pr&el=lastupdated). Read the [comment docs](https://docs.codecov.io/docs/pull-request-comments).

kyleknap: Approach looks fine. But I agree with Jordon. We need docs for this.
JordonPhillips: It's also worth considering exposing this in the CLI
joguSD: Updated to pascal casing and added the docs in a similar manner to pagination.
<img width="701" alt="screen shot 2017-08-23 at 10 06 37 am" src="https://user-images.githubusercontent.com/1935727/29628843-97c3701e-87eb-11e7-90d6-1c28a0e086e1.png">


Patch:
diff --git a/.changes/1.6.4.json b/.changes/1.6.4.json
deleted file mode 100644
index 6a60d4574..000000000
--- a/.changes/1.6.4.json
+++ /dev/null
@@ -1,12 +0,0 @@
-[
-  {
-    "category": "``route53``", 
-    "description": "Update route53 client to latest version", 
-    "type": "api-change"
-  }, 
-  {
-    "category": "``firehose``", 
-    "description": "Update firehose client to latest version", 
-    "type": "api-change"
-  }
-]
\ No newline at end of file
diff --git a/.changes/1.6.5.json b/.changes/1.6.5.json
deleted file mode 100644
index ecae9e262..000000000
--- a/.changes/1.6.5.json
+++ /dev/null
@@ -1,12 +0,0 @@
-[
-  {
-    "category": "Paginator", 
-    "description": "Fix Athena GetQueryResults paginator", 
-    "type": "bugfix"
-  }, 
-  {
-    "category": "``ssm``", 
-    "description": "Update ssm client to latest version", 
-    "type": "api-change"
-  }
-]
\ No newline at end of file
diff --git a/.changes/1.6.6.json b/.changes/1.6.6.json
deleted file mode 100644
index 353af4fd7..000000000
--- a/.changes/1.6.6.json
+++ /dev/null
@@ -1,7 +0,0 @@
-[
-  {
-    "category": "``appstream``", 
-    "description": "Update appstream client to latest version", 
-    "type": "api-change"
-  }
-]
\ No newline at end of file
diff --git a/.changes/1.6.7.json b/.changes/1.6.7.json
deleted file mode 100644
index a0aeb1f24..000000000
--- a/.changes/1.6.7.json
+++ /dev/null
@@ -1,7 +0,0 @@
-[
-  {
-    "category": "``rekognition``", 
-    "description": "Update rekognition client to latest version", 
-    "type": "api-change"
-  }
-]
\ No newline at end of file
diff --git a/.changes/1.6.8.json b/.changes/1.6.8.json
deleted file mode 100644
index f23ee30cc..000000000
--- a/.changes/1.6.8.json
+++ /dev/null
@@ -1,17 +0,0 @@
-[
-  {
-    "category": "``gamelift``", 
-    "description": "Update gamelift client to latest version", 
-    "type": "api-change"
-  }, 
-  {
-    "category": "``cloudformation``", 
-    "description": "Update cloudformation client to latest version", 
-    "type": "api-change"
-  }, 
-  {
-    "category": "``rds``", 
-    "description": "Update rds client to latest version", 
-    "type": "api-change"
-  }
-]
\ No newline at end of file
diff --git a/.changes/next-release/feature-Waiter-54293.json b/.changes/next-release/feature-Waiter-54293.json
new file mode 100644
index 000000000..ddfb41c33
--- /dev/null
+++ b/.changes/next-release/feature-Waiter-54293.json
@@ -0,0 +1,5 @@
+{
+  "category": "Waiter",
+  "type": "feature",
+  "description": "Expose configurable waiter interface"
+}
diff --git a/CHANGELOG.rst b/CHANGELOG.rst
index 7934dbde4..a165d056d 100644
--- a/CHANGELOG.rst
+++ b/CHANGELOG.rst
@@ -2,40 +2,6 @@
 CHANGELOG
 =========
 
-1.6.8
-=====
-
-* api-change:``gamelift``: Update gamelift client to latest version
-* api-change:``cloudformation``: Update cloudformation client to latest version
-* api-change:``rds``: Update rds client to latest version
-
-
-1.6.7
-=====
-
-* api-change:``rekognition``: Update rekognition client to latest version
-
-
-1.6.6
-=====
-
-* api-change:``appstream``: Update appstream client to latest version
-
-
-1.6.5
-=====
-
-* bugfix:Paginator: Fix Athena GetQueryResults paginator
-* api-change:``ssm``: Update ssm client to latest version
-
-
-1.6.4
-=====
-
-* api-change:``route53``: Update route53 client to latest version
-* api-change:``firehose``: Update firehose client to latest version
-
-
 1.6.3
 =====
 
diff --git a/botocore/__init__.py b/botocore/__init__.py
index bcb6ec9b5..bbba5f29c 100644
--- a/botocore/__init__.py
+++ b/botocore/__init__.py
@@ -16,7 +16,7 @@ import os
 import re
 import logging
 
-__version__ = '1.6.8'
+__version__ = '1.6.3'
 
 
 class NullHandler(logging.Handler):
diff --git a/botocore/data/appstream/2016-12-01/service-2.json b/botocore/data/appstream/2016-12-01/service-2.json
index 57a250358..0db635282 100644
--- a/botocore/data/appstream/2016-12-01/service-2.json
+++ b/botocore/data/appstream/2016-12-01/service-2.json
@@ -514,7 +514,7 @@
         },
         "InstanceType":{
           "shape":"String",
-          "documentation":"<p>The instance type of compute resources for the fleet. Fleet instances are launched from this instance type. Available instance types are:</p> <ul> <li> <p>stream.standard.medium</p> </li> <li> <p>stream.standard.large</p> </li> <li> <p>stream.compute.large</p> </li> <li> <p>stream.compute.xlarge</p> </li> <li> <p>stream.compute.2xlarge</p> </li> <li> <p>stream.compute.4xlarge</p> </li> <li> <p>stream.compute.8xlarge</p> </li> <li> <p>stream.memory.large</p> </li> <li> <p>stream.memory.xlarge</p> </li> <li> <p>stream.memory.2xlarge</p> </li> <li> <p>stream.memory.4xlarge</p> </li> <li> <p>stream.memory.8xlarge</p> </li> <li> <p>stream.graphics-pro.4xlarge</p> </li> <li> <p>stream.graphics-pro.8xlarge</p> </li> <li> <p>stream.graphics-pro.16xlarge</p> </li> <li> <p>stream.graphics-desktop.2xlarge</p> </li> </ul>"
+          "documentation":"<p>The instance type of compute resources for the fleet. Fleet instances are launched from this instance type. Available instance types are:</p> <ul> <li> <p>stream.standard.medium</p> </li> <li> <p>stream.standard.large</p> </li> <li> <p>stream.compute.large</p> </li> <li> <p>stream.compute.xlarge</p> </li> <li> <p>stream.compute.2xlarge</p> </li> <li> <p>stream.compute.4xlarge</p> </li> <li> <p>stream.compute.8xlarge</p> </li> <li> <p>stream.memory.large</p> </li> <li> <p>stream.memory.xlarge</p> </li> <li> <p>stream.memory.2xlarge</p> </li> <li> <p>stream.memory.4xlarge</p> </li> <li> <p>stream.memory.8xlarge</p> </li> </ul>"
         },
         "ComputeCapacity":{
           "shape":"ComputeCapacity",
@@ -1580,7 +1580,7 @@
         },
         "InstanceType":{
           "shape":"String",
-          "documentation":"<p>The instance type of compute resources for the fleet. Fleet instances are launched from this instance type. Available instance types are:</p> <ul> <li> <p>stream.standard.medium</p> </li> <li> <p>stream.standard.large</p> </li> <li> <p>stream.compute.large</p> </li> <li> <p>stream.compute.xlarge</p> </li> <li> <p>stream.compute.2xlarge</p> </li> <li> <p>stream.compute.4xlarge</p> </li> <li> <p>stream.compute.8xlarge</p> </li> <li> <p>stream.memory.large</p> </li> <li> <p>stream.memory.xlarge</p> </li> <li> <p>stream.memory.2xlarge</p> </li> <li> <p>stream.memory.4xlarge</p> </li> <li> <p>stream.memory.8xlarge</p> </li> <li> <p>stream.graphics-pro.4xlarge</p> </li> <li> <p>stream.graphics-pro.8xlarge</p> </li> <li> <p>stream.graphics-pro.16xlarge</p> </li> <li> <p>stream.graphics-desktop.2xlarge</p> </li> </ul>"
+          "documentation":"<p>The instance type of compute resources for the fleet. Fleet instances are launched from this instance type. Available instance types are:</p> <ul> <li> <p>stream.standard.medium</p> </li> <li> <p>stream.standard.large</p> </li> <li> <p>stream.compute.large</p> </li> <li> <p>stream.compute.xlarge</p> </li> <li> <p>stream.compute.2xlarge</p> </li> <li> <p>stream.compute.4xlarge</p> </li> <li> <p>stream.compute.8xlarge</p> </li> <li> <p>stream.memory.large</p> </li> <li> <p>stream.memory.xlarge</p> </li> <li> <p>stream.memory.2xlarge</p> </li> <li> <p>stream.memory.4xlarge</p> </li> <li> <p>stream.memory.8xlarge</p> </li> </ul>"
         },
         "ComputeCapacity":{
           "shape":"ComputeCapacity",
diff --git a/botocore/data/athena/2017-05-18/paginators-1.json b/botocore/data/athena/2017-05-18/paginators-1.json
index 8cefb4a0d..ce96fb1bd 100644
--- a/botocore/data/athena/2017-05-18/paginators-1.json
+++ b/botocore/data/athena/2017-05-18/paginators-1.json
@@ -16,8 +16,7 @@
       "input_token": "NextToken",
       "output_token": "NextToken",
       "limit_key": "MaxResults",
-      "result_key": "ResultSet.Rows",
-      "non_aggregate_keys": ["ResultSet.ResultSetMetadata"]
+      "result_key": "ResultSet"
     }
   }
 }
diff --git a/botocore/data/cloudformation/2010-05-15/service-2.json b/botocore/data/cloudformation/2010-05-15/service-2.json
index 7f94a4af4..c0d1222d2 100644
--- a/botocore/data/cloudformation/2010-05-15/service-2.json
+++ b/botocore/data/cloudformation/2010-05-15/service-2.json
@@ -385,7 +385,7 @@
       "errors":[
         {"shape":"StackSetNotFoundException"}
       ],
-      "documentation":"<p>Returns information about a new or existing template. The <code>GetTemplateSummary</code> action is useful for viewing parameter information, such as default parameter values and parameter types, before you create or update a stack or stack set.</p> <p>You can use the <code>GetTemplateSummary</code> action when you submit a template, or you can get template information for a stack set, or a running or deleted stack.</p> <p>For deleted stacks, <code>GetTemplateSummary</code> returns the template information for up to 90 days after the stack has been deleted. If the template does not exist, a <code>ValidationError</code> is returned.</p>"
+      "documentation":"<p>Returns information about a new or existing template. The <code>GetTemplateSummary</code> action is useful for viewing parameter information, such as default parameter values and parameter types, before you create or update a stack.</p> <p>You can use the <code>GetTemplateSummary</code> action when you submit a template, or you can get template information for a running or deleted stack.</p> <p>For deleted stacks, <code>GetTemplateSummary</code> returns the template information for up to 90 days after the stack has been deleted. If the template does not exist, a <code>ValidationError</code> is returned.</p>"
     },
     "ListChangeSets":{
       "name":"ListChangeSets",
@@ -611,14 +611,14 @@
       "members":{
         "Status":{
           "shape":"AccountGateStatus",
-          "documentation":"<p>The status of the account gate function.</p> <ul> <li> <p> <code>SUCCEEDED</code>: The account gate function has determined that the account and region passes any requirements for a stack set operation to occur. AWS CloudFormation proceeds with the stack operation in that account and region. </p> </li> <li> <p> <code>FAILED</code>: The account gate function has determined that the account and region does not meet the requirements for a stack set operation to occur. AWS CloudFormation cancels the stack set operation in that account and region, and sets the stack set operation result status for that account and region to <code>FAILED</code>. </p> </li> <li> <p> <code>SKIPPED</code>: AWS CloudFormation has skipped calling the account gate function for this account and region, for one of the following reasons:</p> <ul> <li> <p>An account gate function has not been specified for the account and region. AWS CloudFormation proceeds with the stack set operation in this account and region.</p> </li> <li> <p>The <code>AWSCloudFormationStackSetExecutionRole</code> of the stack set adminstration account lacks permissions to invoke the function. AWS CloudFormation proceeds with the stack set operation in this account and region.</p> </li> <li> <p>Either no action is necessary, or no action is possible, on the stack. AWS CloudFormation skips the stack set operation in this account and region.</p> </li> </ul> </li> </ul>"
+          "documentation":"<p>The status of the account gate function.</p> <ul> <li> <p> <code>SUCCEEDED</code>: The account gate function has determined that the account passes any requirements for stack set operations to occur. AWS CloudFormation proceeds with stack operations in the account. </p> </li> <li> <p> <code>FAILED</code>: The account gate function has determined that the account does not meet the requirements for stack set operations to occur. AWS CloudFormation cancels the stack set operations in that account, and the stack set operation status is set to FAILED.</p> </li> <li> <p> <code>SKIPPED</code>: An account gate function has not been specified for the account, or the AWSCloudFormationStackSetExecutionRole of the stack set adminstration account lacks permissions to invoke the function. AWS CloudFormation proceeds with stack set operations in the account. </p> </li> </ul>"
         },
         "StatusReason":{
           "shape":"AccountGateStatusReason",
-          "documentation":"<p>The reason for the account gate status assigned to this account and region for the stack set operation.</p>"
+          "documentation":"<p>The reason for the account gate status assigned to this account.</p>"
         }
       },
-      "documentation":"<p>Structure that contains the results of the account gate function which AWS CloudFormation invokes, if present, before proceeding with a stack set operation in an account and region.</p> <p>For each account and region, AWS CloudFormation lets you specify a Lamdba function that encapsulates any requirements that must be met before CloudFormation can proceed with a stack set operation in that account and region. CloudFormation invokes the function each time a stack set operation is requested for that account and region; if the function returns <code>FAILED</code>, CloudFormation cancels the operation in that account and region, and sets the stack set operation result status for that account and region to <code>FAILED</code>. </p> <p>For more information, see <a href=\"http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/stacksets-account-gating.html\">Configuring a target account gate</a>.</p>"
+      "documentation":"<p>Structure that contains the results of the account gate function AWS CloudFormation StackSets invokes, if present, before proceeding with stack set operations in an account.</p> <p>Account gating enables you to specify a Lamdba function for an account that encapsulates any requirements that must be met before AWS CloudFormation StackSets proceeds with stack set operations in that account. CloudFormation invokes the function each time stack set operations are initiated for that account, and only proceeds if the function returns a success code. </p>"
     },
     "AccountGateStatus":{
       "type":"string",
@@ -668,7 +668,6 @@
       },
       "exception":true
     },
-    "Arn":{"type":"string"},
     "CancelUpdateStackInput":{
       "type":"structure",
       "required":["StackName"],
@@ -909,10 +908,6 @@
           "shape":"RoleARN",
           "documentation":"<p>The Amazon Resource Name (ARN) of an AWS Identity and Access Management (IAM) role that AWS CloudFormation assumes when executing the change set. AWS CloudFormation uses the role's credentials to make calls on your behalf. AWS CloudFormation uses this role for all future operations on the stack. As long as users have permission to operate on the stack, AWS CloudFormation uses this role even if the users don't have permission to pass it. Ensure that the role grants least privilege.</p> <p>If you don't specify a value, AWS CloudFormation uses the role that was previously associated with the stack. If no role is available, AWS CloudFormation uses a temporary session that is generated from your user credentials.</p>"
         },
-        "RollbackConfiguration":{
-          "shape":"RollbackConfiguration",
-          "documentation":"<p>The rollback triggers for AWS CloudFormation to monitor during stack creation and updating operations, and for the specified monitoring period afterwards.</p>"
-        },
         "NotificationARNs":{
           "shape":"NotificationARNs",
           "documentation":"<p>The Amazon Resource Names (ARNs) of Amazon Simple Notification Service (Amazon SNS) topics that AWS CloudFormation associates with the stack. To remove all associated notification topics, specify an empty list.</p>"
@@ -978,10 +973,6 @@
           "shape":"DisableRollback",
           "documentation":"<p>Set to <code>true</code> to disable rollback of the stack if stack creation failed. You can specify either <code>DisableRollback</code> or <code>OnFailure</code>, but not both.</p> <p>Default: <code>false</code> </p>"
         },
-        "RollbackConfiguration":{
-          "shape":"RollbackConfiguration",
-          "documentation":"<p>The rollback triggers for AWS CloudFormation to monitor during stack creation and updating operations, and for the specified monitoring period afterwards.</p>"
-        },
         "TimeoutInMinutes":{
           "shape":"TimeoutMinutes",
           "documentation":"<p>The amount of time that can pass before the stack status becomes CREATE_FAILED; if <code>DisableRollback</code> is not set or is set to <code>false</code>, the stack will be rolled back.</p>"
@@ -1207,7 +1198,7 @@
         },
         "RetainStacks":{
           "shape":"RetainStacks",
-          "documentation":"<p>Removes the stack instances from the specified stack set, but doesn't delete the stacks. You can't reassociate a retained stack or add an existing, saved stack to a new stack set.</p> <p>For more information, see <a href=\"http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/stacksets-concepts.html#stackset-ops-options\">Stack set operation options</a>.</p>"
+          "documentation":"<p>Removes the stack instances from the specified stack set, but doesn't delete the stacks. You can't reassociate a retained stack or add an existing, saved stack to a new stack set.</p>"
         },
         "OperationId":{
           "shape":"ClientRequestToken",
@@ -1331,10 +1322,6 @@
           "shape":"NotificationARNs",
           "documentation":"<p>The ARNs of the Amazon Simple Notification Service (Amazon SNS) topics that will be associated with the stack if you execute the change set.</p>"
         },
-        "RollbackConfiguration":{
-          "shape":"RollbackConfiguration",
-          "documentation":"<p>The rollback triggers for AWS CloudFormation to monitor during stack creation and updating operations, and for the specified monitoring period afterwards.</p>"
-        },
         "Capabilities":{
           "shape":"Capabilities",
           "documentation":"<p>If you execute the change set, the list of capabilities that were explicitly acknowledged when the change set was created.</p>"
@@ -1711,19 +1698,19 @@
       "members":{
         "TemplateBody":{
           "shape":"TemplateBody",
-          "documentation":"<p>Structure containing the template body with a minimum length of 1 byte and a maximum length of 51,200 bytes. For more information about templates, see <a href=\"http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/template-anatomy.html\">Template Anatomy</a> in the AWS CloudFormation User Guide.</p> <p>Conditional: You must specify only one of the following parameters: <code>StackName</code>, <code>StackSetName</code>, <code>TemplateBody</code>, or <code>TemplateURL</code>.</p>"
+          "documentation":"<p>Structure containing the template body with a minimum length of 1 byte and a maximum length of 51,200 bytes. For more information about templates, see <a href=\"http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/template-anatomy.html\">Template Anatomy</a> in the AWS CloudFormation User Guide.</p> <p>Conditional: You must specify only one of the following parameters: <code>StackName</code>, <code>TemplateBody</code>, or <code>TemplateURL</code>.</p>"
         },
         "TemplateURL":{
           "shape":"TemplateURL",
-          "documentation":"<p>Location of file containing the template body. The URL must point to a template (max size: 460,800 bytes) that is located in an Amazon S3 bucket. For more information about templates, see <a href=\"http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/template-anatomy.html\">Template Anatomy</a> in the AWS CloudFormation User Guide.</p> <p>Conditional: You must specify only one of the following parameters: <code>StackName</code>, <code>StackSetName</code>, <code>TemplateBody</code>, or <code>TemplateURL</code>.</p>"
+          "documentation":"<p>Location of file containing the template body. The URL must point to a template (max size: 460,800 bytes) that is located in an Amazon S3 bucket. For more information about templates, see <a href=\"http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/template-anatomy.html\">Template Anatomy</a> in the AWS CloudFormation User Guide.</p> <p>Conditional: You must specify only one of the following parameters: <code>StackName</code>, <code>TemplateBody</code>, or <code>TemplateURL</code>.</p>"
         },
         "StackName":{
           "shape":"StackNameOrId",
-          "documentation":"<p>The name or the stack ID that is associated with the stack, which are not always interchangeable. For running stacks, you can specify either the stack's name or its unique stack ID. For deleted stack, you must specify the unique stack ID.</p> <p>Conditional: You must specify only one of the following parameters: <code>StackName</code>, <code>StackSetName</code>, <code>TemplateBody</code>, or <code>TemplateURL</code>.</p>"
+          "documentation":"<p>The name or the stack ID that is associated with the stack, which are not always interchangeable. For running stacks, you can specify either the stack's name or its unique stack ID. For deleted stack, you must specify the unique stack ID.</p> <p>Conditional: You must specify only one of the following parameters: <code>StackName</code>, <code>TemplateBody</code>, or <code>TemplateURL</code>.</p>"
         },
         "StackSetName":{
           "shape":"StackSetNameOrId",
-          "documentation":"<p>The name or unique ID of the stack set from which the stack was created.</p> <p>Conditional: You must specify only one of the following parameters: <code>StackName</code>, <code>StackSetName</code>, <code>TemplateBody</code>, or <code>TemplateURL</code>.</p>"
+          "documentation":"<p>The name or unique ID of the stack set from which the stack was created.</p>"
         }
       },
       "documentation":"<p>The input for the <a>GetTemplateSummary</a> action.</p>"
@@ -1811,7 +1798,7 @@
       "type":"structure",
       "members":{
       },
-      "documentation":"<p>The quota for the resource has already been reached.</p> <p>For information on stack set limitations, see <a href=\"http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/stacksets-limitations.html\">Limitations of StackSets</a>.</p>",
+      "documentation":"<p>The quota for the resource has already been reached.</p>",
       "error":{
         "code":"LimitExceededException",
         "httpStatusCode":400,
@@ -2110,11 +2097,6 @@
       "min":1
     },
     "Metadata":{"type":"string"},
-    "MonitoringTimeInMinutes":{
-      "type":"integer",
-      "max":180,
-      "min":0
-    },
     "NameAlreadyExistsException":{
       "type":"structure",
       "members":{
@@ -2450,43 +2432,6 @@
       "max":2048,
       "min":20
     },
-    "RollbackConfiguration":{
-      "type":"structure",
-      "members":{
-        "RollbackTriggers":{
-          "shape":"RollbackTriggers",
-          "documentation":"<p>The triggers to monitor during stack creation or update actions. </p> <p>By default, AWS CloudFormation saves the rollback triggers specified for a stack and applies them to any subsequent update operations for the stack, unless you specify otherwise. If you do specify rollback triggers for this parameter, those triggers replace any list of triggers previously specified for the stack. This means:</p> <ul> <li> <p>If you don't specify this parameter, AWS CloudFormation uses the rollback triggers previously specified for this stack, if any.</p> </li> <li> <p>If you specify any rollback triggers using this parameter, you must specify all the triggers that you want used for this stack, even triggers you've specifed before (for example, when creating the stack or during a previous stack update). Any triggers that you don't include in the updated list of triggers are no longer applied to the stack.</p> </li> <li> <p>If you specify an empty list, AWS CloudFormation removes all currently specified triggers.</p> </li> </ul> <p>If a specified Cloudwatch alarm is missing, the entire stack operation fails and is rolled back. </p>"
-        },
-        "MonitoringTimeInMinutes":{
-          "shape":"MonitoringTimeInMinutes",
-          "documentation":"<p>The amount of time, in minutes, during which CloudFormation should monitor all the rollback triggers after the stack creation or update operation deploys all necessary resources. If any of the alarms goes to ALERT state during the stack operation or this monitoring period, CloudFormation rolls back the entire stack operation. Then, for update operations, if the monitoring period expires without any alarms going to ALERT state CloudFormation proceeds to dispose of old resources as usual.</p> <p>If you specify a monitoring period but do not specify any rollback triggers, CloudFormation still waits the specified period of time before cleaning up old resources for update operations. You can use this monitoring period to perform any manual stack validation desired, and manually cancel the stack creation or update (using <a href=\"http://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_CancelUpdateStack.html\">CancelUpdateStack</a>, for example) as necessary.</p> <p>If you specify 0 for this parameter, CloudFormation still monitors the specified rollback triggers during stack creation and update operations. Then, for update operations, it begins disposing of old resources immediately once the operation completes.</p>"
-        }
-      },
-      "documentation":"<p>Structure containing the rollback triggers for AWS CloudFormation to monitor during stack creation and updating operations, and for the specified monitoring period afterwards.</p> <p>Rollback triggers enable you to have AWS CloudFormation monitor the state of your application during stack creation and updating, and to roll back that operation if the application breaches the threshold of any of the alarms you've specified. For each rollback trigger you create, you specify the Cloudwatch alarm that CloudFormation should monitor. CloudFormation monitors the specified alarms during the stack create or update operation, and for the specified amount of time after all resources have been deployed. If any of the alarms goes to ALERT state during the stack operation or the monitoring period, CloudFormation rolls back the entire stack operation. If the monitoring period expires without any alarms going to ALERT state, CloudFormation proceeds to dispose of old resources as usual.</p> <p>By default, CloudFormation only rolls back stack operations if an alarm goes to ALERT state, not INSUFFICIENT_DATA state. To have CloudFormation roll back the stack operation if an alarm goes to INSUFFICIENT_DATA state as well, edit the CloudWatch alarm to treat missing data as <code>breaching</code>. For more information, see <a href=\"http://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/AlarmThatSendsEmail.html\">Configuring How CloudWatch Alarms Treats Missing Data</a>.</p> <p>AWS CloudFormation does not monitor rollback triggers when it rolls back a stack during an update operation.</p>"
-    },
-    "RollbackTrigger":{
-      "type":"structure",
-      "required":[
-        "Arn",
-        "Type"
-      ],
-      "members":{
-        "Arn":{
-          "shape":"Arn",
-          "documentation":"<p>The Amazon Resource Name (ARN) of the rollback trigger.</p>"
-        },
-        "Type":{
-          "shape":"Type",
-          "documentation":"<p>The resource type of the rollback trigger. Currently, <a href=\"http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cw-alarm.html\">AWS::CloudWatch::Alarm</a> is the only supported resource type.</p>"
-        }
-      },
-      "documentation":"<p>A rollback trigger AWS CloudFormation monitors during creation and updating of stacks. If any of the alarms you specify goes to ALERT state during the stack operation or within the specified monitoring period afterwards, CloudFormation rolls back the entire stack operation. </p>"
-    },
-    "RollbackTriggers":{
-      "type":"list",
-      "member":{"shape":"RollbackTrigger"},
-      "max":5
-    },
     "Scope":{
       "type":"list",
       "member":{"shape":"ResourceAttribute"}
@@ -2574,10 +2519,6 @@
           "shape":"LastUpdatedTime",
           "documentation":"<p>The time the stack was last updated. This field will only be returned if the stack has been updated at least once.</p>"
         },
-        "RollbackConfiguration":{
-          "shape":"RollbackConfiguration",
-          "documentation":"<p>The rollback triggers for AWS CloudFormation to monitor during stack creation and updating operations, and for the specified monitoring period afterwards.</p>"
-        },
         "StackStatus":{
           "shape":"StackStatus",
           "documentation":"<p>Current status of the stack.</p>"
@@ -2699,7 +2640,7 @@
         },
         "Status":{
           "shape":"StackInstanceStatus",
-          "documentation":"<p>The status of the stack instance, in terms of its synchronization with its associated stack set.</p> <ul> <li> <p> <code>INOPERABLE</code>: A <code>DeleteStackInstances</code> operation has failed and left the stack in an unstable state. Stacks in this state are excluded from further <code>UpdateStackSet</code> operations. You might need to perform a <code>DeleteStackInstances</code> operation, with <code>RetainStacks</code> set to <code>true</code>, to delete the stack instance, and then delete the stack manually.</p> </li> <li> <p> <code>OUTDATED</code>: The stack isn't currently up to date with the stack set because:</p> <ul> <li> <p>The associated stack failed during a <code>CreateStackSet</code> or <code>UpdateStackSet</code> operation. </p> </li> <li> <p>The stack was part of a <code>CreateStackSet</code> or <code>UpdateStackSet</code> operation that failed or was stopped before the stack was created or updated. </p> </li> </ul> </li> <li> <p> <code>CURRENT</code>: The stack is currently up to date with the stack set.</p> </li> </ul>"
+          "documentation":"<p>The status of the stack instance, in terms of its synchronization with its associated stack set.</p> <ul> <li> <p> <code>INOPERABLE</code>: A <code>DeleteStackInstances</code> operation has failed and left the stack in an unstable state. Stacks in this state are excluded from further <code>UpdateStackSet</code> and <code>DeleteStackInstances</code> operations. You might need to clean up the stack manually.</p> </li> <li> <p> <code>OUTDATED</code>: The stack isn't currently up to date with the stack set because:</p> <ul> <li> <p>The associated stack failed during a <code>CreateStackSet</code> or <code>UpdateStackSet</code> operation. </p> </li> <li> <p>The stack was part of a <code>CreateStackSet</code> or <code>UpdateStackSet</code> operation that failed or was stopped before the stack was created or updated. </p> </li> </ul> </li> <li> <p> <code>CURRENT</code>: The stack is currently up to date with the stack set.</p> </li> </ul>"
         },
         "StatusReason":{
           "shape":"Reason",
@@ -2753,7 +2694,7 @@
         },
         "Status":{
           "shape":"StackInstanceStatus",
-          "documentation":"<p>The status of the stack instance, in terms of its synchronization with its associated stack set.</p> <ul> <li> <p> <code>INOPERABLE</code>: A <code>DeleteStackInstances</code> operation has failed and left the stack in an unstable state. Stacks in this state are excluded from further <code>UpdateStackSet</code> operations. You might need to perform a <code>DeleteStackInstances</code> operation, with <code>RetainStacks</code> set to <code>true</code>, to delete the stack instance, and then delete the stack manually.</p> </li> <li> <p> <code>OUTDATED</code>: The stack isn't currently up to date with the stack set because:</p> <ul> <li> <p>The associated stack failed during a <code>CreateStackSet</code> or <code>UpdateStackSet</code> operation. </p> </li> <li> <p>The stack was part of a <code>CreateStackSet</code> or <code>UpdateStackSet</code> operation that failed or was stopped before the stack was created or updated. </p> </li> </ul> </li> <li> <p> <code>CURRENT</code>: The stack is currently up to date with the stack set.</p> </li> </ul>"
+          "documentation":"<p>The status of the stack instance, in terms of its synchronization with its associated stack set.</p> <ul> <li> <p> <code>INOPERABLE</code>: A <code>DeleteStackInstances</code> operation has failed and left the stack in an unstable state. Stacks in this state are excluded from further <code>UpdateStackSet</code> and <code>DeleteStackInstances</code> operations. You might need to clean up the stack manually.</p> </li> <li> <p> <code>OUTDATED</code>: The stack isn't currently up to date with the stack set because:</p> <ul> <li> <p>The associated stack failed during a <code>CreateStackSet</code> or <code>UpdateStackSet</code> operation. </p> </li> <li> <p>The stack was part of a <code>CreateStackSet</code> or <code>UpdateStackSet</code> operation that failed or was stopped before the stack was created or updated. </p> </li> </ul> </li> <li> <p> <code>CURRENT</code>: The stack is currently up to date with the stack set.</p> </li> </ul>"
         },
         "StatusReason":{
           "shape":"Reason",
@@ -3071,7 +3012,7 @@
           "documentation":"<p>The maximum percentage of accounts in which to perform this operation at one time.</p> <p>When calculating the number of accounts based on the specified percentage, AWS CloudFormation rounds down to the next whole number. This is true except in cases where rounding down would result is zero. In this case, CloudFormation sets the number as one instead.</p> <p>Conditional: You must specify either <code>MaxConcurrentCount</code> or <code>MaxConcurrentPercentage</code>, but not both.</p>"
         }
       },
-      "documentation":"<p>The user-specified preferences for how AWS CloudFormation performs a stack set operation. </p> <p>For more information on maximum concurrent accounts and failure tolerance, see <a href=\"http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/stacksets-concepts.html#stackset-ops-options\">Stack set operation options</a>.</p>"
+      "documentation":"<p>The user-specified preferences for how AWS CloudFormation performs a stack set operation.</p>"
     },
     "StackSetOperationResultStatus":{
       "type":"string",
@@ -3400,7 +3341,6 @@
       "type":"list",
       "member":{"shape":"TransformName"}
     },
-    "Type":{"type":"string"},
     "UpdateStackInput":{
       "type":"structure",
       "required":["StackName"],
@@ -3445,10 +3385,6 @@
           "shape":"RoleARN",
           "documentation":"<p>The Amazon Resource Name (ARN) of an AWS Identity and Access Management (IAM) role that AWS CloudFormation assumes to update the stack. AWS CloudFormation uses the role's credentials to make calls on your behalf. AWS CloudFormation always uses this role for all future operations on the stack. As long as users have permission to operate on the stack, AWS CloudFormation uses this role even if the users don't have permission to pass it. Ensure that the role grants least privilege.</p> <p>If you don't specify a value, AWS CloudFormation uses the role that was previously associated with the stack. If no role is available, AWS CloudFormation uses a temporary session that is generated from your user credentials.</p>"
         },
-        "RollbackConfiguration":{
-          "shape":"RollbackConfiguration",
-          "documentation":"<p>The rollback triggers for AWS CloudFormation to monitor during stack creation and updating operations, and for the specified monitoring period afterwards.</p>"
-        },
         "StackPolicyBody":{
           "shape":"StackPolicyBody",
           "documentation":"<p>Structure containing a new stack policy body. You can specify either the <code>StackPolicyBody</code> or the <code>StackPolicyURL</code> parameter, but not both.</p> <p>You might update the stack policy, for example, in order to protect a new resource that you created during a stack update. If you do not specify a stack policy, the current policy that is associated with the stack is unchanged.</p>"
@@ -3583,5 +3519,5 @@
     },
     "Version":{"type":"string"}
   },
-  "documentation":"<fullname>AWS CloudFormation</fullname> <p>AWS CloudFormation allows you to create and manage AWS infrastructure deployments predictably and repeatedly. You can use AWS CloudFormation to leverage AWS products, such as Amazon Elastic Compute Cloud, Amazon Elastic Block Store, Amazon Simple Notification Service, Elastic Load Balancing, and Auto Scaling to build highly-reliable, highly scalable, cost-effective applications without creating or configuring the underlying AWS infrastructure.</p> <p>With AWS CloudFormation, you declare all of your resources and dependencies in a template file. The template defines a collection of resources as a single unit called a stack. AWS CloudFormation creates and deletes all member resources of the stack together and manages all dependencies between the resources for you.</p> <p>For more information about AWS CloudFormation, see the <a href=\"http://aws.amazon.com/cloudformation/\">AWS CloudFormation Product Page</a>.</p> <p>Amazon CloudFormation makes use of other AWS products. If you need additional technical information about a specific AWS product, you can find the product's technical documentation at <a href=\"http://docs.aws.amazon.com/\">docs.aws.amazon.com</a>.</p>"
+  "documentation":"<fullname>AWS CloudFormation</fullname> <p>AWS CloudFormation allows you to create and manage AWS infrastructure deployments predictably and repeatedly. You can use AWS CloudFormation to leverage AWS products, such as Amazon Elastic Compute Cloud, Amazon Elastic Block Store, Amazon Simple Notification Service, Elastic Load Balancing, and Auto Scaling to build highly-reliable, highly scalable, cost-effective applications without creating or configuring the underlying AWS infrastructure.</p> <p>With AWS CloudFormation, you declare all of your resources and dependencies in a template file. The template defines a collection of resources as a single unit called a stack. AWS CloudFormation creates and deletes all member resources of the stack together and manages all dependencies between the resources for you.</p> <p>For more information about AWS CloudFormation, see the <a href=\"http://aws.amazon.com/cloudformation/\">AWS CloudFormation Product Page</a>.</p> <p>Amazon CloudFormation makes use of other AWS products. If you need additional technical information about a specific AWS product, you can find the product's technical documentation at <a href=\"http://docs.aws.amazon.com/\">docs.aws.amazon.com</a>.</p> <p> <i>APIs for stacks </i> </p> <p>When you use AWS CloudFormation, you manage related resources as a single unit called a stack. You create, update, and delete a collection of resources by creating, updating, and deleting stacks. All the resources in a stack are defined by the stack's AWS CloudFormation template. </p> <p>Actions</p> <ul> <li> <p> <a href=\"http://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_CancelUpdateStack.html\">CancelUpdateStack</a> </p> </li> <li> <p> <a href=\"http://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_ContinueUpdateRollback.html\">ContinueUpdateRollback</a> </p> </li> <li> <p> <a href=\"http://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_CreateStack.html\">CreateStack</a> </p> </li> <li> <p> <a href=\"http://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_DeleteStack.html\">DeleteStack</a> </p> </li> <li> <p> <a href=\"http://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_DescribeStackEvents.html\">DescribeStackEvents</a> </p> </li> <li> <p> <a href=\"http://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_DescribeStackResource.html\">DescribeStackResource</a> </p> </li> <li> <p> <a href=\"http://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_DescribeStackResources.html\">DescribeStackResources</a> </p> </li> <li> <p> <a href=\"http://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_DescribeStacks.html\">DescribeStacks</a> </p> </li> <li> <p> <a href=\"http://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_EstimateTemplateCost.html\">EstimateTemplateCost</a> </p> </li> <li> <p> <a href=\"http://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_GetStackPolicy.html\">GetStackPolicy</a> </p> </li> <li> <p> <a href=\"http://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_GetTemplate.html\">GetTemplate</a> </p> </li> <li> <p> <a href=\"http://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_GetTemplateSummary.html\">GetTemplateSummary</a> </p> </li> <li> <p> <a href=\"http://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_ListExports.html\">ListExports</a> </p> </li> <li> <p> <a href=\"http://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_ListImports.html\">ListImports</a> </p> </li> <li> <p> <a href=\"http://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_ListStackResources.html\">ListStackResources</a> </p> </li> <li> <p> <a href=\"http://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_ListStacks.html\">ListStacks</a> </p> </li> <li> <p> <a href=\"http://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_SetStackPolicy.html\">SetStackPolicy</a> </p> </li> <li> <p> <a href=\"http://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_UpdateStack.html\">UpdateStack</a> </p> </li> <li> <p> <a href=\"http://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_ValidateTemplate.html\">ValidateTemplate</a> </p> </li> </ul> <p>Data Types</p> <ul> <li> <p> <a href=\"http://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_Export.html\">Export</a> </p> </li> <li> <p> <a href=\"http://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_Parameter.html\">Parameter</a> </p> </li> <li> <p> <a href=\"http://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_ParameterConstraints.html\">ParameterConstraints</a> </p> </li> <li> <p> <a href=\"http://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_ParameterDeclaration.html\">ParameterDeclaration</a> </p> </li> <li> <p> <a href=\"http://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_Stack.html\">Stack</a> </p> </li> <li> <p> <a href=\"http://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_StackEvent.html\">StackEvent</a> </p> </li> <li> <p> <a href=\"http://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_StackResource.html\">StackResource</a> </p> </li> <li> <p> <a href=\"http://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_StackResourceDetail.html\">StackResourceDetail</a> </p> </li> <li> <p> <a href=\"http://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_StackResourceSummary.html\">StackResourceSummary</a> </p> </li> <li> <p> <a href=\"http://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_StackSummary.html\">StackSummary</a> </p> </li> <li> <p> <a href=\"http://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_Tag.html\">Tag</a> </p> </li> <li> <p> <a href=\"http://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_TemplateParameter.html\">TemplateParameter</a> </p> </li> </ul> <p> <i>APIs for change sets</i> </p> <p>If you need to make changes to the running resources in a stack, you update the stack. Before making changes to your resources, you can generate a change set, which is summary of your proposed changes. Change sets allow you to see how your changes might impact your running resources, especially for critical resources, before implementing them.</p> <p>Actions</p> <ul> <li> <p> <a href=\"http://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_CreateChangeSet.html\">CreateChangeSet</a> </p> </li> <li> <p> <a href=\"http://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_DeleteChangeSet.html\">DeleteChangeSet</a> </p> </li> <li> <p> <a href=\"http://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_DescribeChangeSet.html\">DescribeChangeSet</a> </p> </li> <li> <p> <a href=\"http://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_ExecuteChangeSet.html\">ExecuteChangeSet</a> </p> </li> <li> <p> <a href=\"http://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_ListChangeSets.html\">ListChangeSets</a> </p> </li> </ul> <p>Data Types</p> <ul> <li> <p> <a href=\"http://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_Change.html\">Change</a> </p> </li> <li> <p> <a href=\"http://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_ChangeSetSummary.html\">ChangeSetSummary</a> </p> </li> <li> <p> <a href=\"http://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_ResourceChange.html\">ResourceChange</a> </p> </li> <li> <p> <a href=\"http://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_ResourceChangeDetail.html\">ResourceChangeDetail</a> </p> </li> <li> <p> <a href=\"http://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_ResourceTargetDefinition.html\">ResourceTargetDefinition</a> </p> </li> </ul> <p> <i>APIs for stack sets</i> </p> <p>AWS CloudFormation StackSets lets you create a collection, or stack set, of stacks that can automatically and safely provision a common set of AWS resources across multiple AWS accounts and multiple AWS regions from a single AWS CloudFormation template. When you create a stack set, AWS CloudFormation provisions a stack in each of the specified accounts and regions by using the supplied AWS CloudFormation template and parameters. Stack sets let you manage a common set of AWS resources in a selection of accounts and regions in a single operation. </p> <p>Actions</p> <ul> <li> <p> <a href=\"http://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_CreateStackInstances.html\">CreateStackInstances</a> </p> </li> <li> <p> <a href=\"http://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_CreateStackSet.html\">CreateStackSet</a> </p> </li> <li> <p> <a href=\"http://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_DeleteStackInstances.html\">DeleteStackInstances</a> </p> </li> <li> <p> <a href=\"http://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_DeleteStackSet.html\">DeleteStackSet</a> </p> </li> <li> <p> <a href=\"http://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_DescribeStackInstance.html\">DescribeStackInstance</a> </p> </li> <li> <p> <a href=\"http://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_DescribeStackSet.html\">DescribeStackSet</a> </p> </li> <li> <p> <a href=\"http://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_DescribeStackSetOperation.html\">DescribeStackSetOperation</a> </p> </li> <li> <p> <a href=\"http://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_ListStackInstances.html\">ListStackInstances</a> </p> </li> <li> <p> <a href=\"http://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_ListStackSetOperationResults\">ListStackSetOperationResults</a> </p> </li> <li> <p> <a href=\"http://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_ListStackSetOperations\">ListStackSetOperations</a> </p> </li> <li> <p> <a href=\"http://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_ListStackSets\">ListStackSets</a> </p> </li> <li> <p> <a href=\"http://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_StopStackSetOperation.html\">StopStackSetOperation</a> </p> </li> <li> <p> <a href=\"http://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_UpdateStackSet.html\">UpdateStackSet</a> </p> </li> </ul> <p>Data Types</p> <ul> <li> <p> <a href=\"http://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_Parameter.html\">Parameter</a> </p> </li> <li> <p> <a href=\"http://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_StackInstance.html.html\">StackInstance</a> </p> </li> <li> <p> <a href=\"http://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_StackInstanceSummary.html.html\">StackInstanceSummary</a> </p> </li> <li> <p> <a href=\"http://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_StackSet.html\">StackSet</a> </p> </li> <li> <p> <a href=\"http://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_StackSetOperation.html.html\">StackSetOperation</a> </p> </li> <li> <p> <a href=\"http://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_StackSetOperationPreferences.html.html\">StackSetOperationPreferences</a> </p> </li> <li> <p> <a href=\"http://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_StackSetOperationResultSummary.html.html\">StackSetOperationResultSummary</a> </p> </li> <li> <p> <a href=\"http://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_StackSetOperationSummary.html.html\">StackSetOperationSummary</a> </p> </li> <li> <p> <a href=\"http://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_StackSetSummary.html\">StackSetSummary</a> </p> </li> <li> <p> <a href=\"http://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_Tag.html\">Tag</a> </p> </li> </ul>"
 }
diff --git a/botocore/data/endpoints.json b/botocore/data/endpoints.json
index cdcabfd3b..7ee07357f 100644
--- a/botocore/data/endpoints.json
+++ b/botocore/data/endpoints.json
@@ -163,7 +163,6 @@
       "batch" : {
         "endpoints" : {
           "ap-northeast-1" : { },
-          "ap-southeast-1" : { },
           "ap-southeast-2" : { },
           "eu-central-1" : { },
           "eu-west-1" : { },
@@ -241,14 +240,6 @@
           "us-west-2" : { }
         }
       },
-      "cloudhsmv2" : {
-        "endpoints" : {
-          "eu-west-1" : { },
-          "us-east-1" : { },
-          "us-east-2" : { },
-          "us-west-2" : { }
-        }
-      },
       "cloudsearch" : {
         "endpoints" : {
           "ap-northeast-1" : { },
@@ -335,8 +326,6 @@
       "codepipeline" : {
         "endpoints" : {
           "ap-northeast-1" : { },
-          "ap-northeast-2" : { },
-          "ap-south-1" : { },
           "ap-southeast-1" : { },
           "ap-southeast-2" : { },
           "ca-central-1" : { },
@@ -356,10 +345,8 @@
           "ap-southeast-2" : { },
           "eu-central-1" : { },
           "eu-west-1" : { },
-          "eu-west-2" : { },
           "us-east-1" : { },
           "us-east-2" : { },
-          "us-west-1" : { },
           "us-west-2" : { }
         }
       },
@@ -368,7 +355,6 @@
           "ap-northeast-1" : { },
           "ap-northeast-2" : { },
           "ap-south-1" : { },
-          "ap-southeast-1" : { },
           "ap-southeast-2" : { },
           "eu-central-1" : { },
           "eu-west-1" : { },
@@ -383,7 +369,6 @@
           "ap-northeast-1" : { },
           "ap-northeast-2" : { },
           "ap-south-1" : { },
-          "ap-southeast-1" : { },
           "ap-southeast-2" : { },
           "eu-central-1" : { },
           "eu-west-1" : { },
@@ -398,7 +383,6 @@
           "ap-northeast-1" : { },
           "ap-northeast-2" : { },
           "ap-south-1" : { },
-          "ap-southeast-1" : { },
           "ap-southeast-2" : { },
           "eu-central-1" : { },
           "eu-west-1" : { },
@@ -796,11 +780,6 @@
           "us-west-2" : { }
         }
       },
-      "glue" : {
-        "endpoints" : {
-          "us-east-1" : { }
-        }
-      },
       "greengrass" : {
         "defaults" : {
           "protocols" : [ "https" ]
@@ -1002,11 +981,6 @@
           "us-west-2" : { }
         }
       },
-      "mgh" : {
-        "endpoints" : {
-          "us-west-2" : { }
-        }
-      },
       "mobileanalytics" : {
         "endpoints" : {
           "us-east-1" : { }
@@ -1295,7 +1269,6 @@
           "eu-central-1" : { },
           "eu-west-1" : { },
           "eu-west-2" : { },
-          "sa-east-1" : { },
           "us-east-1" : { },
           "us-east-2" : { },
           "us-west-1" : { },
@@ -1371,7 +1344,6 @@
           "ap-southeast-2" : { },
           "eu-central-1" : { },
           "eu-west-1" : { },
-          "eu-west-2" : { },
           "us-east-1" : { },
           "us-east-2" : { },
           "us-west-2" : { }
@@ -1599,18 +1571,6 @@
       }
     },
     "services" : {
-      "application-autoscaling" : {
-        "defaults" : {
-          "credentialScope" : {
-            "service" : "application-autoscaling"
-          },
-          "hostname" : "autoscaling.{region}.amazonaws.com",
-          "protocols" : [ "http", "https" ]
-        },
-        "endpoints" : {
-          "cn-north-1" : { }
-        }
-      },
       "autoscaling" : {
         "defaults" : {
           "protocols" : [ "http", "https" ]
@@ -1843,11 +1803,6 @@
           "us-gov-west-1" : { }
         }
       },
-      "apigateway" : {
-        "endpoints" : {
-          "us-gov-west-1" : { }
-        }
-      },
       "autoscaling" : {
         "endpoints" : {
           "us-gov-west-1" : {
diff --git a/botocore/data/firehose/2015-08-04/paginators-1.json b/botocore/data/firehose/2015-08-04/paginators-1.json
deleted file mode 100644
index ea142457a..000000000
--- a/botocore/data/firehose/2015-08-04/paginators-1.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
-  "pagination": {}
-}
diff --git a/botocore/data/firehose/2015-08-04/service-2.json b/botocore/data/firehose/2015-08-04/service-2.json
index 0a539165f..8ec8c84a7 100644
--- a/botocore/data/firehose/2015-08-04/service-2.json
+++ b/botocore/data/firehose/2015-08-04/service-2.json
@@ -25,7 +25,7 @@
         {"shape":"LimitExceededException"},
         {"shape":"ResourceInUseException"}
       ],
-      "documentation":"<p>Creates a delivery stream.</p> <p>By default, you can create up to 20 delivery streams per region.</p> <p>This is an asynchronous operation that immediately returns. The initial status of the delivery stream is <code>CREATING</code>. After the delivery stream is created, its status is <code>ACTIVE</code> and it now accepts data. Attempts to send data to a delivery stream that is not in the <code>ACTIVE</code> state cause an exception. To check the state of a delivery stream, use <a>DescribeDeliveryStream</a>.</p> <p>A Kinesis Firehose delivery stream can be configured to receive records directly from providers using <a>PutRecord</a> or <a>PutRecordBatch</a>, or it can be configured to use an existing Kinesis stream as its source. To specify a Kinesis stream as input, set the <code>DeliveryStreamType</code> parameter to <code>KinesisStreamAsSource</code>, and provide the Kinesis stream ARN and role ARN in the <code>KinesisStreamSourceConfiguration</code> parameter.</p> <p>A delivery stream is configured with a single destination: Amazon S3, Amazon ES, or Amazon Redshift. You must specify only one of the following destination configuration parameters: <b>ExtendedS3DestinationConfiguration</b>, <b>S3DestinationConfiguration</b>, <b>ElasticsearchDestinationConfiguration</b>, or <b>RedshiftDestinationConfiguration</b>.</p> <p>When you specify <b>S3DestinationConfiguration</b>, you can also provide the following optional values: <b>BufferingHints</b>, <b>EncryptionConfiguration</b>, and <b>CompressionFormat</b>. By default, if no <b>BufferingHints</b> value is provided, Kinesis Firehose buffers data up to 5 MB or for 5 minutes, whichever condition is satisfied first. Note that <b>BufferingHints</b> is a hint, so there are some cases where the service cannot adhere to these conditions strictly; for example, record boundaries are such that the size is a little over or under the configured buffering size. By default, no encryption is performed. We strongly recommend that you enable encryption to ensure secure data storage in Amazon S3.</p> <p>A few notes about Amazon Redshift as a destination:</p> <ul> <li> <p>An Amazon Redshift destination requires an S3 bucket as intermediate location, as Kinesis Firehose first delivers data to S3 and then uses <code>COPY</code> syntax to load data into an Amazon Redshift table. This is specified in the <b>RedshiftDestinationConfiguration.S3Configuration</b> parameter.</p> </li> <li> <p>The compression formats <code>SNAPPY</code> or <code>ZIP</code> cannot be specified in <b>RedshiftDestinationConfiguration.S3Configuration</b> because the Amazon Redshift <code>COPY</code> operation that reads from the S3 bucket doesn't support these compression formats.</p> </li> <li> <p>We strongly recommend that you use the user name and password you provide exclusively with Kinesis Firehose, and that the permissions for the account are restricted for Amazon Redshift <code>INSERT</code> permissions.</p> </li> </ul> <p>Kinesis Firehose assumes the IAM role that is configured as part of the destination. The role should allow the Kinesis Firehose principal to assume the role, and the role should have permissions that allow the service to deliver the data. For more information, see <a href=\"http://docs.aws.amazon.com/firehose/latest/dev/controlling-access.html#using-iam-s3\">Amazon S3 Bucket Access</a> in the <i>Amazon Kinesis Firehose Developer Guide</i>.</p>"
+      "documentation":"<p>Creates a delivery stream.</p> <p>By default, you can create up to 20 delivery streams per region.</p> <p>This is an asynchronous operation that immediately returns. The initial status of the delivery stream is <code>CREATING</code>. After the delivery stream is created, its status is <code>ACTIVE</code> and it now accepts data. Attempts to send data to a delivery stream that is not in the <code>ACTIVE</code> state cause an exception. To check the state of a delivery stream, use <a>DescribeDeliveryStream</a>.</p> <p>A delivery stream is configured with a single destination: Amazon S3, Amazon Elasticsearch Service, or Amazon Redshift. You must specify only one of the following destination configuration parameters: <b>ExtendedS3DestinationConfiguration</b>, <b>S3DestinationConfiguration</b>, <b>ElasticsearchDestinationConfiguration</b>, or <b>RedshiftDestinationConfiguration</b>.</p> <p>When you specify <b>S3DestinationConfiguration</b>, you can also provide the following optional values: <b>BufferingHints</b>, <b>EncryptionConfiguration</b>, and <b>CompressionFormat</b>. By default, if no <b>BufferingHints</b> value is provided, Firehose buffers data up to 5 MB or for 5 minutes, whichever condition is satisfied first. Note that <b>BufferingHints</b> is a hint, so there are some cases where the service cannot adhere to these conditions strictly; for example, record boundaries are such that the size is a little over or under the configured buffering size. By default, no encryption is performed. We strongly recommend that you enable encryption to ensure secure data storage in Amazon S3.</p> <p>A few notes about Amazon Redshift as a destination:</p> <ul> <li> <p>An Amazon Redshift destination requires an S3 bucket as intermediate location, as Firehose first delivers data to S3 and then uses <code>COPY</code> syntax to load data into an Amazon Redshift table. This is specified in the <b>RedshiftDestinationConfiguration.S3Configuration</b> parameter.</p> </li> <li> <p>The compression formats <code>SNAPPY</code> or <code>ZIP</code> cannot be specified in <b>RedshiftDestinationConfiguration.S3Configuration</b> because the Amazon Redshift <code>COPY</code> operation that reads from the S3 bucket doesn't support these compression formats.</p> </li> <li> <p>We strongly recommend that you use the user name and password you provide exclusively with Firehose, and that the permissions for the account are restricted for Amazon Redshift <code>INSERT</code> permissions.</p> </li> </ul> <p>Firehose assumes the IAM role that is configured as part of the destination. The role should allow the Firehose principal to assume the role, and the role should have permissions that allows the service to deliver the data. For more information, see <a href=\"http://docs.aws.amazon.com/firehose/latest/dev/controlling-access.html#using-iam-s3\">Amazon S3 Bucket Access</a> in the <i>Amazon Kinesis Firehose Developer Guide</i>.</p>"
     },
     "DeleteDeliveryStream":{
       "name":"DeleteDeliveryStream",
@@ -54,21 +54,6 @@
       ],
       "documentation":"<p>Describes the specified delivery stream and gets the status. For example, after your delivery stream is created, call <a>DescribeDeliveryStream</a> to see if the delivery stream is <code>ACTIVE</code> and therefore ready for data to be sent to it.</p>"
     },
-    "GetKinesisStream":{
-      "name":"GetKinesisStream",
-      "http":{
-        "method":"POST",
-        "requestUri":"/"
-      },
-      "input":{"shape":"GetKinesisStreamInput"},
-      "output":{"shape":"GetKinesisStreamOutput"},
-      "errors":[
-        {"shape":"ResourceNotFoundException"},
-        {"shape":"InvalidArgumentException"},
-        {"shape":"InvalidStreamTypeException"}
-      ],
-      "internalonly":true
-    },
     "ListDeliveryStreams":{
       "name":"ListDeliveryStreams",
       "http":{
@@ -92,7 +77,7 @@
         {"shape":"InvalidArgumentException"},
         {"shape":"ServiceUnavailableException"}
       ],
-      "documentation":"<p>Writes a single data record into an Amazon Kinesis Firehose delivery stream. To write multiple data records into a delivery stream, use <a>PutRecordBatch</a>. Applications using these operations are referred to as producers.</p> <p>By default, each delivery stream can take in up to 2,000 transactions per second, 5,000 records per second, or 5 MB per second. Note that if you use <a>PutRecord</a> and <a>PutRecordBatch</a>, the limits are an aggregate across these two operations for each delivery stream. For more information about limits and how to request an increase, see <a href=\"http://docs.aws.amazon.com/firehose/latest/dev/limits.html\">Amazon Kinesis Firehose Limits</a>. </p> <p>You must specify the name of the delivery stream and the data record when using <a>PutRecord</a>. The data record consists of a data blob that can be up to 1,000 KB in size, and any kind of data, for example, a segment from a log file, geographic location data, website clickstream data, and so on.</p> <p>Kinesis Firehose buffers records before delivering them to the destination. To disambiguate the data blobs at the destination, a common solution is to use delimiters in the data, such as a newline (<code>\\n</code>) or some other character unique within the data. This allows the consumer application to parse individual data items when reading the data from the destination.</p> <p>The <a>PutRecord</a> operation returns a <b>RecordId</b>, which is a unique string assigned to each record. Producer applications can use this ID for purposes such as auditability and investigation.</p> <p>If the <a>PutRecord</a> operation throws a <b>ServiceUnavailableException</b>, back off and retry. If the exception persists, it is possible that the throughput limits have been exceeded for the delivery stream. </p> <p>Data records sent to Kinesis Firehose are stored for 24 hours from the time they are added to a delivery stream as it attempts to send the records to the destination. If the destination is unreachable for more than 24 hours, the data is no longer available.</p>"
+      "documentation":"<p>Writes a single data record into an Amazon Kinesis Firehose delivery stream. To write multiple data records into a delivery stream, use <a>PutRecordBatch</a>. Applications using these operations are referred to as producers.</p> <p>By default, each delivery stream can take in up to 2,000 transactions per second, 5,000 records per second, or 5 MB per second. Note that if you use <a>PutRecord</a> and <a>PutRecordBatch</a>, the limits are an aggregate across these two operations for each delivery stream. For more information about limits and how to request an increase, see <a href=\"http://docs.aws.amazon.com/firehose/latest/dev/limits.html\">Amazon Kinesis Firehose Limits</a>. </p> <p>You must specify the name of the delivery stream and the data record when using <a>PutRecord</a>. The data record consists of a data blob that can be up to 1,000 KB in size, and any kind of data, for example, a segment from a log file, geographic location data, web site clickstream data, etc.</p> <p>Firehose buffers records before delivering them to the destination. To disambiguate the data blobs at the destination, a common solution is to use delimiters in the data, such as a newline (<code>\\n</code>) or some other character unique within the data. This allows the consumer application(s) to parse individual data items when reading the data from the destination.</p> <p>The <a>PutRecord</a> operation returns a <b>RecordId</b>, which is a unique string assigned to each record. Producer applications can use this ID for purposes such as auditability and investigation.</p> <p>If the <a>PutRecord</a> operation throws a <b>ServiceUnavailableException</b>, back off and retry. If the exception persists, it is possible that the throughput limits have been exceeded for the delivery stream. </p> <p>Data records sent to Firehose are stored for 24 hours from the time they are added to a delivery stream as it attempts to send the records to the destination. If the destination is unreachable for more than 24 hours, the data is no longer available.</p>"
     },
     "PutRecordBatch":{
       "name":"PutRecordBatch",
@@ -107,7 +92,7 @@
         {"shape":"InvalidArgumentException"},
         {"shape":"ServiceUnavailableException"}
       ],
-      "documentation":"<p>Writes multiple data records into a delivery stream in a single call, which can achieve higher throughput per producer than when writing single records. To write single data records into a delivery stream, use <a>PutRecord</a>. Applications using these operations are referred to as producers.</p> <p>By default, each delivery stream can take in up to 2,000 transactions per second, 5,000 records per second, or 5 MB per second. If you use <a>PutRecord</a> and <a>PutRecordBatch</a>, the limits are an aggregate across these two operations for each delivery stream. For more information about limits, see <a href=\"http://docs.aws.amazon.com/firehose/latest/dev/limits.html\">Amazon Kinesis Firehose Limits</a>.</p> <p>Each <a>PutRecordBatch</a> request supports up to 500 records. Each record in the request can be as large as 1,000 KB (before 64-bit encoding), up to a limit of 4 MB for the entire request. These limits cannot be changed.</p> <p>You must specify the name of the delivery stream and the data record when using <a>PutRecord</a>. The data record consists of a data blob that can be up to 1,000 KB in size, and any kind of data. For example, it could be a segment from a log file, geographic location data, web site clickstream data, and so on.</p> <p>Kinesis Firehose buffers records before delivering them to the destination. To disambiguate the data blobs at the destination, a common solution is to use delimiters in the data, such as a newline (<code>\\n</code>) or some other character unique within the data. This allows the consumer application to parse individual data items when reading the data from the destination.</p> <p>The <a>PutRecordBatch</a> response includes a count of failed records, <b>FailedPutCount</b>, and an array of responses, <b>RequestResponses</b>. Each entry in the <b>RequestResponses</b> array provides additional information about the processed record. It directly correlates with a record in the request array using the same ordering, from the top to the bottom. The response array always includes the same number of records as the request array. <b>RequestResponses</b> includes both successfully and unsuccessfully processed records. Kinesis Firehose attempts to process all records in each <a>PutRecordBatch</a> request. A single record failure does not stop the processing of subsequent records.</p> <p>A successfully processed record includes a <b>RecordId</b> value, which is unique for the record. An unsuccessfully processed record includes <b>ErrorCode</b> and <b>ErrorMessage</b> values. <b>ErrorCode</b> reflects the type of error, and is one of the following values: <code>ServiceUnavailable</code> or <code>InternalFailure</code>. <b>ErrorMessage</b> provides more detailed information about the error.</p> <p>If there is an internal server error or a timeout, the write might have completed or it might have failed. If <b>FailedPutCount</b> is greater than 0, retry the request, resending only those records that might have failed processing. This minimizes the possible duplicate records and also reduces the total bytes sent (and corresponding charges). We recommend that you handle any duplicates at the destination.</p> <p>If <a>PutRecordBatch</a> throws <b>ServiceUnavailableException</b>, back off and retry. If the exception persists, it is possible that the throughput limits have been exceeded for the delivery stream.</p> <p>Data records sent to Kinesis Firehose are stored for 24 hours from the time they are added to a delivery stream as it attempts to send the records to the destination. If the destination is unreachable for more than 24 hours, the data is no longer available.</p>"
+      "documentation":"<p>Writes multiple data records into a delivery stream in a single call, which can achieve higher throughput per producer than when writing single records. To write single data records into a delivery stream, use <a>PutRecord</a>. Applications using these operations are referred to as producers.</p> <p>By default, each delivery stream can take in up to 2,000 transactions per second, 5,000 records per second, or 5 MB per second. Note that if you use <a>PutRecord</a> and <a>PutRecordBatch</a>, the limits are an aggregate across these two operations for each delivery stream. For more information about limits, see <a href=\"http://docs.aws.amazon.com/firehose/latest/dev/limits.html\">Amazon Kinesis Firehose Limits</a>.</p> <p>Each <a>PutRecordBatch</a> request supports up to 500 records. Each record in the request can be as large as 1,000 KB (before 64-bit encoding), up to a limit of 4 MB for the entire request. These limits cannot be changed.</p> <p>You must specify the name of the delivery stream and the data record when using <a>PutRecord</a>. The data record consists of a data blob that can be up to 1,000 KB in size, and any kind of data, for example, a segment from a log file, geographic location data, web site clickstream data, and so on.</p> <p>Firehose buffers records before delivering them to the destination. To disambiguate the data blobs at the destination, a common solution is to use delimiters in the data, such as a newline (<code>\\n</code>) or some other character unique within the data. This allows the consumer application(s) to parse individual data items when reading the data from the destination.</p> <p>The <a>PutRecordBatch</a> response includes a count of failed records, <b>FailedPutCount</b>, and an array of responses, <b>RequestResponses</b>. Each entry in the <b>RequestResponses</b> array provides additional information about the processed record, and directly correlates with a record in the request array using the same ordering, from the top to the bottom. The response array always includes the same number of records as the request array. <b>RequestResponses</b> includes both successfully and unsuccessfully processed records. Firehose attempts to process all records in each <a>PutRecordBatch</a> request. A single record failure does not stop the processing of subsequent records.</p> <p>A successfully processed record includes a <b>RecordId</b> value, which is unique for the record. An unsuccessfully processed record includes <b>ErrorCode</b> and <b>ErrorMessage</b> values. <b>ErrorCode</b> reflects the type of error, and is one of the following values: <code>ServiceUnavailable</code> or <code>InternalFailure</code>. <b>ErrorMessage</b> provides more detailed information about the error.</p> <p>If there is an internal server error or a timeout, the write might have completed or it might have failed. If <b>FailedPutCount</b> is greater than 0, retry the request, resending only those records that might have failed processing. This minimizes the possible duplicate records and also reduces the total bytes sent (and corresponding charges). We recommend that you handle any duplicates at the destination.</p> <p>If <a>PutRecordBatch</a> throws <b>ServiceUnavailableException</b>, back off and retry. If the exception persists, it is possible that the throughput limits have been exceeded for the delivery stream.</p> <p>Data records sent to Firehose are stored for 24 hours from the time they are added to a delivery stream as it attempts to send the records to the destination. If the destination is unreachable for more than 24 hours, the data is no longer available.</p>"
     },
     "UpdateDestination":{
       "name":"UpdateDestination",
@@ -123,7 +108,7 @@
         {"shape":"ResourceNotFoundException"},
         {"shape":"ConcurrentModificationException"}
       ],
-      "documentation":"<p>Updates the specified destination of the specified delivery stream.</p> <p>You can use this operation to change the destination type (for example, to replace the Amazon S3 destination with Amazon Redshift) or change the parameters associated with a destination (for example, to change the bucket name of the Amazon S3 destination). The update might not occur immediately. The target delivery stream remains active while the configurations are updated, so data writes to the delivery stream can continue during this process. The updated configurations are usually effective within a few minutes.</p> <p>Note that switching between Amazon ES and other services is not supported. For an Amazon ES destination, you can only update to another Amazon ES destination.</p> <p>If the destination type is the same, Kinesis Firehose merges the configuration parameters specified with the destination configuration that already exists on the delivery stream. If any of the parameters are not specified in the call, the existing values are retained. For example, in the Amazon S3 destination, if <a>EncryptionConfiguration</a> is not specified, then the existing <a>EncryptionConfiguration</a> is maintained on the destination.</p> <p>If the destination type is not the same, for example, changing the destination from Amazon S3 to Amazon Redshift, Kinesis Firehose does not merge any parameters. In this case, all parameters must be specified.</p> <p>Kinesis Firehose uses <b>CurrentDeliveryStreamVersionId</b> to avoid race conditions and conflicting merges. This is a required field, and the service updates the configuration only if the existing configuration has a version ID that matches. After the update is applied successfully, the version ID is updated, and can be retrieved using <a>DescribeDeliveryStream</a>. Use the new version ID to set <b>CurrentDeliveryStreamVersionId</b> in the next call.</p>"
+      "documentation":"<p>Updates the specified destination of the specified delivery stream.</p> <p>You can use this operation to change the destination type (for example, to replace the Amazon S3 destination with Amazon Redshift) or change the parameters associated with a destination (for example, to change the bucket name of the Amazon S3 destination). The update might not occur immediately. The target delivery stream remains active while the configurations are updated, so data writes to the delivery stream can continue during this process. The updated configurations are usually effective within a few minutes.</p> <p>Note that switching between Amazon ES and other services is not supported. For an Amazon ES destination, you can only update to another Amazon ES destination.</p> <p>If the destination type is the same, Firehose merges the configuration parameters specified with the destination configuration that already exists on the delivery stream. If any of the parameters are not specified in the call, the existing values are retained. For example, in the Amazon S3 destination, if <a>EncryptionConfiguration</a> is not specified then the existing <a>EncryptionConfiguration</a> is maintained on the destination.</p> <p>If the destination type is not the same, for example, changing the destination from Amazon S3 to Amazon Redshift, Firehose does not merge any parameters. In this case, all parameters must be specified.</p> <p>Firehose uses <b>CurrentDeliveryStreamVersionId</b> to avoid race conditions and conflicting merges. This is a required field, and the service updates the configuration only if the existing configuration has a version ID that matches. After the update is applied successfully, the version ID is updated, and can be retrieved using <a>DescribeDeliveryStream</a>. You should use the new version ID to set <b>CurrentDeliveryStreamVersionId</b> in the next call.</p>"
     }
   },
   "shapes":{
@@ -133,7 +118,6 @@
       "min":1,
       "pattern":"arn:.*"
     },
-    "AccessKeyId":{"type":"string"},
     "BooleanObject":{"type":"boolean"},
     "BucketARN":{
       "type":"string",
@@ -153,7 +137,7 @@
           "documentation":"<p>Buffer incoming data for the specified period of time, in seconds, before delivering it to the destination. The default value is 300.</p>"
         }
       },
-      "documentation":"<p>Describes hints for the buffering to perform before delivering data to the destination. Please note that these options are treated as hints, and therefore Kinesis Firehose may choose to use different values when it is optimal.</p>"
+      "documentation":"<p>Describes hints for the buffering to perform before delivering data to the destination. Please note that these options are treated as hints, and therefore Firehose may choose to use different values when it is optimal.</p>"
     },
     "CloudWatchLoggingOptions":{
       "type":"structure",
@@ -171,7 +155,7 @@
           "documentation":"<p>The CloudWatch log stream name for logging. This value is required if CloudWatch logging is enabled.</p>"
         }
       },
-      "documentation":"<p>Describes the Amazon CloudWatch logging options for your delivery stream.</p>"
+      "documentation":"<p>Describes the CloudWatch logging options for your delivery stream.</p>"
     },
     "ClusterJDBCURL":{
       "type":"string",
@@ -212,7 +196,7 @@
         },
         "CopyOptions":{
           "shape":"CopyOptions",
-          "documentation":"<p>Optional parameters to use with the Amazon Redshift <code>COPY</code> command. For more information, see the \"Optional Parameters\" section of <a href=\"http://docs.aws.amazon.com/redshift/latest/dg/r_COPY.html\">Amazon Redshift COPY command</a>. Some possible examples that would apply to Kinesis Firehose are as follows:</p> <p> <code>delimiter '\\t' lzop;</code> - fields are delimited with \"\\t\" (TAB character) and compressed using lzop.</p> <p> <code>delimiter '|'</code> - fields are delimited with \"|\" (this is the default delimiter).</p> <p> <code>delimiter '|' escape</code> - the delimiter should be escaped.</p> <p> <code>fixedwidth 'venueid:3,venuename:25,venuecity:12,venuestate:2,venueseats:6'</code> - fields are fixed width in the source, with each width specified after every column in the table.</p> <p> <code>JSON 's3://mybucket/jsonpaths.txt'</code> - data is in JSON format, and the path specified is the format of the data.</p> <p>For more examples, see <a href=\"http://docs.aws.amazon.com/redshift/latest/dg/r_COPY_command_examples.html\">Amazon Redshift COPY command examples</a>.</p>"
+          "documentation":"<p>Optional parameters to use with the Amazon Redshift <code>COPY</code> command. For more information, see the \"Optional Parameters\" section of <a href=\"http://docs.aws.amazon.com/redshift/latest/dg/r_COPY.html\">Amazon Redshift COPY command</a>. Some possible examples that would apply to Firehose are as follows:</p> <p> <code>delimiter '\\t' lzop;</code> - fields are delimited with \"\\t\" (TAB character) and compressed using lzop.</p> <p> <code>delimiter '|</code> - fields are delimited with \"|\" (this is the default delimiter).</p> <p> <code>delimiter '|' escape</code> - the delimiter should be escaped.</p> <p> <code>fixedwidth 'venueid:3,venuename:25,venuecity:12,venuestate:2,venueseats:6'</code> - fields are fixed width in the source, with each width specified after every column in the table.</p> <p> <code>JSON 's3://mybucket/jsonpaths.txt'</code> - data is in JSON format, and the path specified is the format of the data.</p> <p>For more examples, see <a href=\"http://docs.aws.amazon.com/redshift/latest/dg/r_COPY_command_examples.html\">Amazon Redshift COPY command examples</a>.</p>"
         }
       },
       "documentation":"<p>Describes a <code>COPY</code> command for Amazon Redshift.</p>"
@@ -224,15 +208,7 @@
       "members":{
         "DeliveryStreamName":{
           "shape":"DeliveryStreamName",
-          "documentation":"<p>The name of the delivery stream. This name must be unique per AWS account in the same region. If the delivery streams are in different accounts or different regions, you can have multiple delivery streams with the same name.</p>"
-        },
-        "DeliveryStreamType":{
-          "shape":"DeliveryStreamType",
-          "documentation":"<p>The delivery stream type. This parameter can be one of the following values:</p> <ul> <li> <p> <code>DirectPut</code>: Provider applications access the delivery stream directly.</p> </li> <li> <p> <code>KinesisStreamAsSource</code>: The delivery stream uses a Kinesis stream as a source.</p> </li> </ul>"
-        },
-        "KinesisStreamSourceConfiguration":{
-          "shape":"KinesisStreamSourceConfiguration",
-          "documentation":"<p>When a Kinesis stream is used as the source for the delivery stream, a <a>KinesisStreamSourceConfiguration</a> containing the Kinesis stream ARN and the role ARN for the source stream.</p>"
+          "documentation":"<p>The name of the delivery stream. This name must be unique per AWS account in the same region. You can have multiple delivery streams with the same name if they are in different accounts or different regions.</p>"
         },
         "S3DestinationConfiguration":{
           "shape":"S3DestinationConfiguration",
@@ -287,7 +263,6 @@
       "members":{
       }
     },
-    "DeliveryStartTimestamp":{"type":"timestamp"},
     "DeliveryStreamARN":{
       "type":"string",
       "max":512,
@@ -300,7 +275,6 @@
         "DeliveryStreamName",
         "DeliveryStreamARN",
         "DeliveryStreamStatus",
-        "DeliveryStreamType",
         "VersionId",
         "Destinations",
         "HasMoreDestinations"
@@ -318,10 +292,6 @@
           "shape":"DeliveryStreamStatus",
           "documentation":"<p>The status of the delivery stream.</p>"
         },
-        "DeliveryStreamType":{
-          "shape":"DeliveryStreamType",
-          "documentation":"<p>The delivery stream type. This can be one of the following values:</p> <ul> <li> <p> <code>DirectPut</code>: Provider applications access the delivery stream directly.</p> </li> <li> <p> <code>KinesisStreamAsSource</code>: The delivery stream uses a Kinesis stream as a source.</p> </li> </ul>"
-        },
         "VersionId":{
           "shape":"DeliveryStreamVersionId",
           "documentation":"<p>Each time the destination is updated for a delivery stream, the version ID is changed, and the current version ID is required when updating the destination. This is so that the service knows it is applying the changes to the correct version of the delivery stream.</p>"
@@ -334,10 +304,6 @@
           "shape":"Timestamp",
           "documentation":"<p>The date and time that the delivery stream was last updated.</p>"
         },
-        "Source":{
-          "shape":"SourceDescription",
-          "documentation":"<p>If the <code>DeliveryStreamType</code> parameter is <code>KinesisStreamAsSource</code>, a <a>SourceDescription</a> object describing the source Kinesis stream.</p>"
-        },
         "Destinations":{
           "shape":"DestinationDescriptionList",
           "documentation":"<p>The destinations.</p>"
@@ -367,13 +333,6 @@
         "ACTIVE"
       ]
     },
-    "DeliveryStreamType":{
-      "type":"string",
-      "enum":[
-        "DirectPut",
-        "KinesisStreamAsSource"
-      ]
-    },
     "DeliveryStreamVersionId":{
       "type":"string",
       "max":50,
@@ -394,7 +353,7 @@
         },
         "ExclusiveStartDestinationId":{
           "shape":"DestinationId",
-          "documentation":"<p>The ID of the destination to start returning the destination information. Currently, Kinesis Firehose supports one destination per delivery stream.</p>"
+          "documentation":"<p>The ID of the destination to start returning the destination information. Currently Firehose supports one destination per delivery stream.</p>"
         }
       }
     },
@@ -485,7 +444,7 @@
       "members":{
         "RoleARN":{
           "shape":"RoleARN",
-          "documentation":"<p>The ARN of the IAM role to be assumed by Kinesis Firehose for calling the Amazon ES Configuration API and for indexing documents. For more information, see <a href=\"http://docs.aws.amazon.com/firehose/latest/dev/controlling-access.html#using-iam-s3\">Amazon S3 Bucket Access</a>.</p>"
+          "documentation":"<p>The ARN of the IAM role to be assumed by Firehose for calling the Amazon ES Configuration API and for indexing documents. For more information, see <a href=\"http://docs.aws.amazon.com/firehose/latest/dev/controlling-access.html#using-iam-s3\">Amazon S3 Bucket Access</a>.</p>"
         },
         "DomainARN":{
           "shape":"ElasticsearchDomainARN",
@@ -501,7 +460,7 @@
         },
         "IndexRotationPeriod":{
           "shape":"ElasticsearchIndexRotationPeriod",
-          "documentation":"<p>The Elasticsearch index rotation period. Index rotation appends a time stamp to the IndexName to facilitate the expiration of old data. For more information, see <a href=\"http://docs.aws.amazon.com/firehose/latest/dev/basic-deliver.html#es-index-rotation\">Index Rotation for Amazon Elasticsearch Service Destination</a>. The default value is <code>OneDay</code>.</p>"
+          "documentation":"<p>The Elasticsearch index rotation period. Index rotation appends a timestamp to the IndexName to facilitate expiration of old data. For more information, see <a href=\"http://docs.aws.amazon.com/firehose/latest/dev/basic-deliver.html#es-index-rotation\">Index Rotation for Amazon Elasticsearch Service Destination</a>. The default value is <code>OneDay</code>.</p>"
         },
         "BufferingHints":{
           "shape":"ElasticsearchBufferingHints",
@@ -509,15 +468,15 @@
         },
         "RetryOptions":{
           "shape":"ElasticsearchRetryOptions",
-          "documentation":"<p>The retry behavior in case Kinesis Firehose is unable to deliver documents to Amazon ES. The default value is 300 (5 minutes).</p>"
+          "documentation":"<p>The retry behavior in the event that Firehose is unable to deliver documents to Amazon ES. The default value is 300 (5 minutes).</p>"
         },
         "S3BackupMode":{
           "shape":"ElasticsearchS3BackupMode",
-          "documentation":"<p>Defines how documents should be delivered to Amazon S3. When set to FailedDocumentsOnly, Kinesis Firehose writes any documents that could not be indexed to the configured Amazon S3 destination, with elasticsearch-failed/ appended to the key prefix. When set to AllDocuments, Kinesis Firehose delivers all incoming records to Amazon S3, and also writes failed documents with elasticsearch-failed/ appended to the prefix. For more information, see <a href=\"http://docs.aws.amazon.com/firehose/latest/dev/basic-deliver.html#es-s3-backup\">Amazon S3 Backup for Amazon Elasticsearch Service Destination</a>. Default value is FailedDocumentsOnly.</p>"
+          "documentation":"<p>Defines how documents should be delivered to Amazon S3. When set to FailedDocumentsOnly, Firehose writes any documents that could not be indexed to the configured Amazon S3 destination, with elasticsearch-failed/ appended to the key prefix. When set to AllDocuments, Firehose delivers all incoming records to Amazon S3, and also writes failed documents with elasticsearch-failed/ appended to the prefix. For more information, see <a href=\"http://docs.aws.amazon.com/firehose/latest/dev/basic-deliver.html#es-s3-backup\">Amazon S3 Backup for Amazon Elasticsearch Service Destination</a>. Default value is FailedDocumentsOnly.</p>"
         },
         "S3Configuration":{
           "shape":"S3DestinationConfiguration",
-          "documentation":"<p>The configuration for the backup Amazon S3 location.</p>"
+          "documentation":"<p>The configuration for the intermediate Amazon S3 location from which Amazon ES obtains data.</p>"
         },
         "ProcessingConfiguration":{
           "shape":"ProcessingConfiguration",
@@ -585,7 +544,7 @@
       "members":{
         "RoleARN":{
           "shape":"RoleARN",
-          "documentation":"<p>The ARN of the IAM role to be assumed by Kinesis Firehose for calling the Amazon ES Configuration API and for indexing documents. For more information, see <a href=\"http://docs.aws.amazon.com/firehose/latest/dev/controlling-access.html#using-iam-s3\">Amazon S3 Bucket Access</a>.</p>"
+          "documentation":"<p>The ARN of the IAM role to be assumed by Firehose for calling the Amazon ES Configuration API and for indexing documents. For more information, see <a href=\"http://docs.aws.amazon.com/firehose/latest/dev/controlling-access.html#using-iam-s3\">Amazon S3 Bucket Access</a>.</p>"
         },
         "DomainARN":{
           "shape":"ElasticsearchDomainARN",
@@ -601,7 +560,7 @@
         },
         "IndexRotationPeriod":{
           "shape":"ElasticsearchIndexRotationPeriod",
-          "documentation":"<p>The Elasticsearch index rotation period. Index rotation appends a time stamp to IndexName to facilitate the expiration of old data. For more information, see <a href=\"http://docs.aws.amazon.com/firehose/latest/dev/basic-deliver.html#es-index-rotation\">Index Rotation for Amazon Elasticsearch Service Destination</a>. Default value is <code>OneDay</code>.</p>"
+          "documentation":"<p>The Elasticsearch index rotation period. Index rotation appends a timestamp to IndexName to facilitate the expiration of old data. For more information, see <a href=\"http://docs.aws.amazon.com/firehose/latest/dev/basic-deliver.html#es-index-rotation\">Index Rotation for Amazon Elasticsearch Service Destination</a>. Default value is <code>OneDay</code>.</p>"
         },
         "BufferingHints":{
           "shape":"ElasticsearchBufferingHints",
@@ -609,7 +568,7 @@
         },
         "RetryOptions":{
           "shape":"ElasticsearchRetryOptions",
-          "documentation":"<p>The retry behavior in case Kinesis Firehose is unable to deliver documents to Amazon ES. The default value is 300 (5 minutes).</p>"
+          "documentation":"<p>The retry behavior in the event that Firehose is unable to deliver documents to Amazon ES. Default value is 300 (5 minutes).</p>"
         },
         "S3Update":{
           "shape":"S3DestinationUpdate",
@@ -657,10 +616,10 @@
       "members":{
         "DurationInSeconds":{
           "shape":"ElasticsearchRetryDurationInSeconds",
-          "documentation":"<p>After an initial failure to deliver to Amazon ES, the total amount of time during which Kinesis Firehose re-attempts delivery (including the first attempt). After this time has elapsed, the failed documents are written to Amazon S3. Default value is 300 seconds (5 minutes). A value of 0 (zero) results in no retries.</p>"
+          "documentation":"<p>After an initial failure to deliver to Amazon ES, the total amount of time during which Firehose re-attempts delivery (including the first attempt). After this time has elapsed, the failed documents are written to Amazon S3. Default value is 300 seconds (5 minutes). A value of 0 (zero) results in no retries.</p>"
         }
       },
-      "documentation":"<p>Configures retry behavior in case Kinesis Firehose is unable to deliver documents to Amazon ES.</p>"
+      "documentation":"<p>Configures retry behavior in the event that Firehose is unable to deliver documents to Amazon ES.</p>"
     },
     "ElasticsearchS3BackupMode":{
       "type":"string",
@@ -679,7 +638,7 @@
       "members":{
         "NoEncryptionConfig":{
           "shape":"NoEncryptionConfig",
-          "documentation":"<p>Specifically override existing encryption information to ensure that no encryption is used.</p>"
+          "documentation":"<p>Specifically override existing encryption information to ensure no encryption is used.</p>"
         },
         "KMSEncryptionConfig":{
           "shape":"KMSEncryptionConfig",
@@ -707,7 +666,7 @@
         },
         "Prefix":{
           "shape":"Prefix",
-          "documentation":"<p>The \"YYYY/MM/DD/HH\" time format prefix is automatically used for delivered S3 files. You can specify an extra prefix to be added in front of the time format prefix. If the prefix ends with a slash, it appears as a folder in the S3 bucket. For more information, see <a href=\"http://docs.aws.amazon.com/firehose/latest/dev/basic-deliver.html\">Amazon S3 Object Name Format</a> in the <i>Amazon Kinesis Firehose Developer Guide</i>.</p>"
+          "documentation":"<p>The \"YYYY/MM/DD/HH\" time format prefix is automatically used for delivered S3 files. You can specify an extra prefix to be added in front of the time format prefix. Note that if the prefix ends with a slash, it appears as a folder in the S3 bucket. For more information, see <a href=\"http://docs.aws.amazon.com/firehose/latest/dev/basic-deliver.html\">Amazon S3 Object Name Format</a> in the <i>Amazon Kinesis Firehose Developer Guide</i>.</p>"
         },
         "BufferingHints":{
           "shape":"BufferingHints",
@@ -760,7 +719,7 @@
         },
         "Prefix":{
           "shape":"Prefix",
-          "documentation":"<p>The \"YYYY/MM/DD/HH\" time format prefix is automatically used for delivered S3 files. You can specify an extra prefix to be added in front of the time format prefix. If the prefix ends with a slash, it appears as a folder in the S3 bucket. For more information, see <a href=\"http://docs.aws.amazon.com/firehose/latest/dev/basic-deliver.html\">Amazon S3 Object Name Format</a> in the <i>Amazon Kinesis Firehose Developer Guide</i>.</p>"
+          "documentation":"<p>The \"YYYY/MM/DD/HH\" time format prefix is automatically used for delivered S3 files. You can specify an extra prefix to be added in front of the time format prefix. Note that if the prefix ends with a slash, it appears as a folder in the S3 bucket. For more information, see <a href=\"http://docs.aws.amazon.com/firehose/latest/dev/basic-deliver.html\">Amazon S3 Object Name Format</a> in the <i>Amazon Kinesis Firehose Developer Guide</i>.</p>"
         },
         "BufferingHints":{
           "shape":"BufferingHints",
@@ -806,7 +765,7 @@
         },
         "Prefix":{
           "shape":"Prefix",
-          "documentation":"<p>The \"YYYY/MM/DD/HH\" time format prefix is automatically used for delivered S3 files. You can specify an extra prefix to be added in front of the time format prefix. If the prefix ends with a slash, it appears as a folder in the S3 bucket. For more information, see <a href=\"http://docs.aws.amazon.com/firehose/latest/dev/basic-deliver.html\">Amazon S3 Object Name Format</a> in the <i>Amazon Kinesis Firehose Developer Guide</i>.</p>"
+          "documentation":"<p>The \"YYYY/MM/DD/HH\" time format prefix is automatically used for delivered S3 files. You can specify an extra prefix to be added in front of the time format prefix. Note that if the prefix ends with a slash, it appears as a folder in the S3 bucket. For more information, see <a href=\"http://docs.aws.amazon.com/firehose/latest/dev/basic-deliver.html\">Amazon S3 Object Name Format</a> in the <i>Amazon Kinesis Firehose Developer Guide</i>.</p>"
         },
         "BufferingHints":{
           "shape":"BufferingHints",
@@ -839,21 +798,6 @@
       },
       "documentation":"<p>Describes an update for a destination in Amazon S3.</p>"
     },
-    "FirehoseSource":{"type":"string"},
-    "GetKinesisStreamInput":{
-      "type":"structure",
-      "required":["DeliveryStreamARN"],
-      "members":{
-        "DeliveryStreamARN":{"shape":"DeliveryStreamARN"}
-      }
-    },
-    "GetKinesisStreamOutput":{
-      "type":"structure",
-      "members":{
-        "KinesisStreamARN":{"shape":"KinesisStreamARN"},
-        "CredentialsForReadingKinesisStream":{"shape":"SessionCredentials"}
-      }
-    },
     "IntervalInSeconds":{
       "type":"integer",
       "max":900,
@@ -867,15 +811,7 @@
           "documentation":"<p>A message that provides information about the error.</p>"
         }
       },
-      "documentation":"<p>The specified input parameter has a value that is not valid.</p>",
-      "exception":true
-    },
-    "InvalidStreamTypeException":{
-      "type":"structure",
-      "members":{
-        "message":{"shape":"ErrorMessage"},
-        "source":{"shape":"FirehoseSource"}
-      },
+      "documentation":"<p>The specified input parameter has an value that is not valid.</p>",
       "exception":true
     },
     "KMSEncryptionConfig":{
@@ -889,48 +825,6 @@
       },
       "documentation":"<p>Describes an encryption key for a destination in Amazon S3.</p>"
     },
-    "KinesisStreamARN":{
-      "type":"string",
-      "max":512,
-      "min":1,
-      "pattern":"arn:.*"
-    },
-    "KinesisStreamSourceConfiguration":{
-      "type":"structure",
-      "required":[
-        "KinesisStreamARN",
-        "RoleARN"
-      ],
-      "members":{
-        "KinesisStreamARN":{
-          "shape":"KinesisStreamARN",
-          "documentation":"<p>The ARN of the source Kinesis stream.</p>"
-        },
-        "RoleARN":{
-          "shape":"RoleARN",
-          "documentation":"<p>The ARN of the role that provides access to the source Kinesis stream.</p>"
-        }
-      },
-      "documentation":"<p>The stream and role ARNs for a Kinesis stream used as the source for a delivery stream.</p>"
-    },
-    "KinesisStreamSourceDescription":{
-      "type":"structure",
-      "members":{
-        "KinesisStreamARN":{
-          "shape":"KinesisStreamARN",
-          "documentation":"<p>The ARN of the source Kinesis stream.</p>"
-        },
-        "RoleARN":{
-          "shape":"RoleARN",
-          "documentation":"<p>The ARN of the role used by the source Kinesis stream.</p>"
-        },
-        "DeliveryStartTimestamp":{
-          "shape":"DeliveryStartTimestamp",
-          "documentation":"<p>Kinesis Firehose starts retrieving records from the Kinesis stream starting with this time stamp.</p>"
-        }
-      },
-      "documentation":"<p>Details about a Kinesis stream used as the source for a Kinesis Firehose delivery stream.</p>"
-    },
     "LimitExceededException":{
       "type":"structure",
       "members":{
@@ -949,10 +843,6 @@
           "shape":"ListDeliveryStreamsInputLimit",
           "documentation":"<p>The maximum number of delivery streams to list.</p>"
         },
-        "DeliveryStreamType":{
-          "shape":"DeliveryStreamType",
-          "documentation":"<p>The delivery stream type. This can be one of the following values:</p> <ul> <li> <p> <code>DirectPut</code>: Provider applications access the delivery stream directly.</p> </li> <li> <p> <code>KinesisStreamAsSource</code>: The delivery stream uses a Kinesis stream as a source.</p> </li> </ul> <p>This parameter is optional. If this parameter is omitted, delivery streams of all types are returned.</p>"
-        },
         "ExclusiveStartDeliveryStreamName":{
           "shape":"DeliveryStreamName",
           "documentation":"<p>The name of the delivery stream to start the list with.</p>"
@@ -1207,7 +1097,7 @@
         },
         "RetryOptions":{
           "shape":"RedshiftRetryOptions",
-          "documentation":"<p>The retry behavior in case Kinesis Firehose is unable to deliver documents to Amazon Redshift. Default value is 3600 (60 minutes).</p>"
+          "documentation":"<p>The retry behavior in the event that Firehose is unable to deliver documents to Amazon Redshift. Default value is 3600 (60 minutes).</p>"
         },
         "S3Configuration":{
           "shape":"S3DestinationConfiguration",
@@ -1260,7 +1150,7 @@
         },
         "RetryOptions":{
           "shape":"RedshiftRetryOptions",
-          "documentation":"<p>The retry behavior in case Kinesis Firehose is unable to deliver documents to Amazon Redshift. Default value is 3600 (60 minutes).</p>"
+          "documentation":"<p>The retry behavior in the event that Firehose is unable to deliver documents to Amazon Redshift. Default value is 3600 (60 minutes).</p>"
         },
         "S3DestinationDescription":{
           "shape":"S3DestinationDescription",
@@ -1310,7 +1200,7 @@
         },
         "RetryOptions":{
           "shape":"RedshiftRetryOptions",
-          "documentation":"<p>The retry behavior in case Kinesis Firehose is unable to deliver documents to Amazon Redshift. Default value is 3600 (60 minutes).</p>"
+          "documentation":"<p>The retry behavior in the event that Firehose is unable to deliver documents to Amazon Redshift. Default value is 3600 (60 minutes).</p>"
         },
         "S3Update":{
           "shape":"S3DestinationUpdate",
@@ -1345,10 +1235,10 @@
       "members":{
         "DurationInSeconds":{
           "shape":"RedshiftRetryDurationInSeconds",
-          "documentation":"<p>The length of time during which Kinesis Firehose retries delivery after a failure, starting from the initial request and including the first attempt. The default value is 3600 seconds (60 minutes). Kinesis Firehose does not retry if the value of <code>DurationInSeconds</code> is 0 (zero) or if the first delivery attempt takes longer than the current value.</p>"
+          "documentation":"<p>The length of time during which Firehose retries delivery after a failure, starting from the initial request and including the first attempt. The default value is 3600 seconds (60 minutes). Firehose does not retry if the value of <code>DurationInSeconds</code> is 0 (zero) or if the first delivery attempt takes longer than the current value.</p>"
         }
       },
-      "documentation":"<p>Configures retry behavior in case Kinesis Firehose is unable to deliver documents to Amazon Redshift.</p>"
+      "documentation":"<p>Configures retry behavior in the event that Firehose is unable to deliver documents to Amazon Redshift.</p>"
     },
     "RedshiftS3BackupMode":{
       "type":"string",
@@ -1409,7 +1299,7 @@
         },
         "Prefix":{
           "shape":"Prefix",
-          "documentation":"<p>The \"YYYY/MM/DD/HH\" time format prefix is automatically used for delivered S3 files. You can specify an extra prefix to be added in front of the time format prefix. If the prefix ends with a slash, it appears as a folder in the S3 bucket. For more information, see <a href=\"http://docs.aws.amazon.com/firehose/latest/dev/basic-deliver.html\">Amazon S3 Object Name Format</a> in the <i>Amazon Kinesis Firehose Developer Guide</i>.</p>"
+          "documentation":"<p>The \"YYYY/MM/DD/HH\" time format prefix is automatically used for delivered S3 files. You can specify an extra prefix to be added in front of the time format prefix. Note that if the prefix ends with a slash, it appears as a folder in the S3 bucket. For more information, see <a href=\"http://docs.aws.amazon.com/firehose/latest/dev/basic-deliver.html\">Amazon S3 Object Name Format</a> in the <i>Amazon Kinesis Firehose Developer Guide</i>.</p>"
         },
         "BufferingHints":{
           "shape":"BufferingHints",
@@ -1450,7 +1340,7 @@
         },
         "Prefix":{
           "shape":"Prefix",
-          "documentation":"<p>The \"YYYY/MM/DD/HH\" time format prefix is automatically used for delivered S3 files. You can specify an extra prefix to be added in front of the time format prefix. If the prefix ends with a slash, it appears as a folder in the S3 bucket. For more information, see <a href=\"http://docs.aws.amazon.com/firehose/latest/dev/basic-deliver.html\">Amazon S3 Object Name Format</a> in the <i>Amazon Kinesis Firehose Developer Guide</i>.</p>"
+          "documentation":"<p>The \"YYYY/MM/DD/HH\" time format prefix is automatically used for delivered S3 files. You can specify an extra prefix to be added in front of the time format prefix. Note that if the prefix ends with a slash, it appears as a folder in the S3 bucket. For more information, see <a href=\"http://docs.aws.amazon.com/firehose/latest/dev/basic-deliver.html\">Amazon S3 Object Name Format</a> in the <i>Amazon Kinesis Firehose Developer Guide</i>.</p>"
         },
         "BufferingHints":{
           "shape":"BufferingHints",
@@ -1484,7 +1374,7 @@
         },
         "Prefix":{
           "shape":"Prefix",
-          "documentation":"<p>The \"YYYY/MM/DD/HH\" time format prefix is automatically used for delivered S3 files. You can specify an extra prefix to be added in front of the time format prefix. If the prefix ends with a slash, it appears as a folder in the S3 bucket. For more information, see <a href=\"http://docs.aws.amazon.com/firehose/latest/dev/basic-deliver.html\">Amazon S3 Object Name Format</a> in the <i>Amazon Kinesis Firehose Developer Guide</i>.</p>"
+          "documentation":"<p>The \"YYYY/MM/DD/HH\" time format prefix is automatically used for delivered S3 files. You can specify an extra prefix to be added in front of the time format prefix. Note that if the prefix ends with a slash, it appears as a folder in the S3 bucket. For more information, see <a href=\"http://docs.aws.amazon.com/firehose/latest/dev/basic-deliver.html\">Amazon S3 Object Name Format</a> in the <i>Amazon Kinesis Firehose Developer Guide</i>.</p>"
         },
         "BufferingHints":{
           "shape":"BufferingHints",
@@ -1505,7 +1395,6 @@
       },
       "documentation":"<p>Describes an update for a destination in Amazon S3.</p>"
     },
-    "SecretAccessKey":{"type":"string"},
     "ServiceUnavailableException":{
       "type":"structure",
       "members":{
@@ -1518,37 +1407,11 @@
       "exception":true,
       "fault":true
     },
-    "SessionCredentials":{
-      "type":"structure",
-      "required":[
-        "AccessKeyId",
-        "SecretAccessKey",
-        "SessionToken",
-        "Expiration"
-      ],
-      "members":{
-        "AccessKeyId":{"shape":"AccessKeyId"},
-        "SecretAccessKey":{"shape":"SecretAccessKey"},
-        "SessionToken":{"shape":"SessionToken"},
-        "Expiration":{"shape":"Timestamp"}
-      }
-    },
-    "SessionToken":{"type":"string"},
     "SizeInMBs":{
       "type":"integer",
       "max":128,
       "min":1
     },
-    "SourceDescription":{
-      "type":"structure",
-      "members":{
-        "KinesisStreamSourceDescription":{
-          "shape":"KinesisStreamSourceDescription",
-          "documentation":"<p>The <a>KinesisStreamSourceDescription</a> value for the source Kinesis stream.</p>"
-        }
-      },
-      "documentation":"<p>Details about a Kinesis stream used as the source for a Kinesis Firehose delivery stream.</p>"
-    },
     "Timestamp":{"type":"timestamp"},
     "UpdateDestinationInput":{
       "type":"structure",
@@ -1564,7 +1427,7 @@
         },
         "CurrentDeliveryStreamVersionId":{
           "shape":"DeliveryStreamVersionId",
-          "documentation":"<p>Obtain this value from the <b>VersionId</b> result of <a>DeliveryStreamDescription</a>. This value is required, and helps the service to perform conditional operations. For example, if there is an interleaving update and this value is null, then the update destination fails. After the update is successful, the <b>VersionId</b> value is updated. The service then performs a merge of the old configuration with the new configuration.</p>"
+          "documentation":"<p>Obtain this value from the <b>VersionId</b> result of <a>DeliveryStreamDescription</a>. This value is required, and helps the service to perform conditional operations. For example, if there is a interleaving update and this value is null, then the update destination fails. After the update is successful, the <b>VersionId</b> value is updated. The service then performs a merge of the old configuration with the new configuration.</p>"
         },
         "DestinationId":{
           "shape":"DestinationId",
@@ -1600,5 +1463,5 @@
       "sensitive":true
     }
   },
-  "documentation":"<fullname>Amazon Kinesis Firehose API Reference</fullname> <p>Amazon Kinesis Firehose is a fully managed service that delivers real-time streaming data to destinations such as Amazon Simple Storage Service (Amazon S3), Amazon Elasticsearch Service (Amazon ES), and Amazon Redshift.</p>"
+  "documentation":"<fullname>Amazon Kinesis Firehose API Reference</fullname> <p>Amazon Kinesis Firehose is a fully-managed service that delivers real-time streaming data to destinations such as Amazon Simple Storage Service (Amazon S3), Amazon Elasticsearch Service (Amazon ES), and Amazon Redshift.</p>"
 }
diff --git a/botocore/data/gamelift/2015-10-01/service-2.json b/botocore/data/gamelift/2015-10-01/service-2.json
index dbe491d1a..86c7f1d1a 100644
--- a/botocore/data/gamelift/2015-10-01/service-2.json
+++ b/botocore/data/gamelift/2015-10-01/service-2.json
@@ -3284,8 +3284,8 @@
     "MatchmakingConfigurationStatus":{
       "type":"string",
       "enum":[
-        "CANCELLED",
-        "COMPLETED",
+        "CANCELED",
+        "COMPLETE",
         "FAILED",
         "PLACING",
         "QUEUED",
diff --git a/botocore/data/rds/2014-10-31/service-2.json b/botocore/data/rds/2014-10-31/service-2.json
index 362e4dd56..b72b47ac5 100644
--- a/botocore/data/rds/2014-10-31/service-2.json
+++ b/botocore/data/rds/2014-10-31/service-2.json
@@ -2293,7 +2293,7 @@
         },
         "AllocatedStorage":{
           "shape":"IntegerOptional",
-          "documentation":"<p>The amount of storage (in gigabytes) to be initially allocated for the database instance.</p> <p>Type: Integer</p> <p> <b>Amazon Aurora</b> </p> <p>Not applicable. Aurora cluster volumes automatically grow as the amount of data in your database increases, though you are only charged for the space that you use in an Aurora cluster volume.</p> <p> <b>MySQL</b> </p> <p>Constraints to the amount of storage for each storage type are the following: </p> <ul> <li> <p>General Purpose (SSD) storage (gp2): Must be an integer from 5 to 6144.</p> </li> <li> <p>Provisioned IOPS storage (io1): Must be an integer from 100 to 6144.</p> </li> <li> <p>Magnetic storage (standard): Must be an integer from 5 to 3072.</p> </li> </ul> <p> <b>MariaDB</b> </p> <p>Constraints to the amount of storage for each storage type are the following: </p> <ul> <li> <p>General Purpose (SSD) storage (gp2): Must be an integer from 5 to 6144.</p> </li> <li> <p>Provisioned IOPS storage (io1): Must be an integer from 100 to 6144.</p> </li> <li> <p>Magnetic storage (standard): Must be an integer from 5 to 3072.</p> </li> </ul> <p> <b>PostgreSQL</b> </p> <p>Constraints to the amount of storage for each storage type are the following: </p> <ul> <li> <p>General Purpose (SSD) storage (gp2): Must be an integer from 5 to 6144.</p> </li> <li> <p>Provisioned IOPS storage (io1): Must be an integer from 100 to 6144.</p> </li> <li> <p>Magnetic storage (standard): Must be an integer from 5 to 3072.</p> </li> </ul> <p> <b>Oracle</b> </p> <p>Constraints to the amount of storage for each storage type are the following: </p> <ul> <li> <p>General Purpose (SSD) storage (gp2): Must be an integer from 10 to 6144.</p> </li> <li> <p>Provisioned IOPS storage (io1): Must be an integer from 100 to 6144.</p> </li> <li> <p>Magnetic storage (standard): Must be an integer from 10 to 3072.</p> </li> </ul> <p> <b>SQL Server</b> </p> <p>Constraints to the amount of storage for each storage type are the following: </p> <ul> <li> <p>General Purpose (SSD) storage (gp2):</p> <ul> <li> <p>Enterprise and Standard editions: Must be an integer from 200 to 16384.</p> </li> <li> <p>Web and Express editions: Must be an integer from 20 to 16384.</p> </li> </ul> </li> <li> <p>Provisioned IOPS storage (io1):</p> <ul> <li> <p>Enterprise and Standard editions: Must be an integer from 200 to 16384.</p> </li> <li> <p>Web and Express editions: Must be an integer from 100 to 16384.</p> </li> </ul> </li> <li> <p>Magnetic storage (standard):</p> <ul> <li> <p>Enterprise and Standard editions: Must be an integer from 200 to 1024.</p> </li> <li> <p>Web and Express editions: Must be an integer from 20 to 1024.</p> </li> </ul> </li> </ul>"
+          "documentation":"<p>The amount of storage (in gigabytes) to be initially allocated for the database instance.</p> <p>Type: Integer</p> <p> <b>Amazon Aurora</b> </p> <p>Not applicable. Aurora cluster volumes automatically grow as the amount of data in your database increases, though you are only charged for the space that you use in an Aurora cluster volume.</p> <p> <b>MySQL</b> </p> <p>Constraints: Must be an integer from 5 to 6144.</p> <p> <b>MariaDB</b> </p> <p>Constraints: Must be an integer from 5 to 6144.</p> <p> <b>PostgreSQL</b> </p> <p>Constraints: Must be an integer from 5 to 6144.</p> <p> <b>Oracle</b> </p> <p>Constraints: Must be an integer from 10 to 6144.</p> <p> <b>SQL Server</b> </p> <p>Constraints: Must be an integer from 200 to 4096 (Standard Edition and Enterprise Edition) or from 20 to 4096 (Express Edition and Web Edition)</p>"
         },
         "DBInstanceClass":{
           "shape":"String",
@@ -2353,7 +2353,7 @@
         },
         "EngineVersion":{
           "shape":"String",
-          "documentation":"<p>The version number of the database engine to use.</p> <p>The following are the database engines and major and minor versions that are available with Amazon RDS. Not every database engine is available for every AWS Region.</p> <p> <b>Amazon Aurora</b> </p> <p>Not applicable. The version number of the database engine to be used by the DB instance is managed by the DB cluster. For more information, see <a>CreateDBCluster</a>.</p> <p> <b>MariaDB</b> </p> <ul> <li> <p> <code>10.1.23</code> (supported in all AWS regions)</p> </li> <li> <p> <code>10.1.19</code> (supported in all AWS regions)</p> </li> <li> <p> <code>10.1.14</code> (supported in all regions except us-east-2)</p> </li> </ul> <p/> <ul> <li> <p> <code>10.0.31</code> (supported in all AWS regions)</p> </li> <li> <p> <code>10.0.28</code> (supported in all AWS regions)</p> </li> <li> <p> <code>10.0.24</code> (supported in all AWS regions)</p> </li> <li> <p> <code>10.0.17</code> (supported in all regions except us-east-2, ca-central-1, eu-west-2)</p> </li> </ul> <p> <b>Microsoft SQL Server 2016</b> </p> <ul> <li> <p> <code>13.00.4422.0.v1</code> (supported for all editions, and all AWS regions)</p> </li> <li> <p> <code>13.00.2164.0.v1</code> (supported for all editions, and all AWS regions)</p> </li> </ul> <p> <b>Microsoft SQL Server 2014</b> </p> <ul> <li> <p> <code>12.00.5546.0.v1</code> (supported for all editions, and all AWS regions)</p> </li> <li> <p> <code>12.00.5000.0.v1</code> (supported for all editions, and all AWS regions)</p> </li> <li> <p> <code>12.00.4422.0.v1</code> (supported for all editions except Enterprise Edition, and all AWS regions except ca-central-1 and eu-west-2)</p> </li> </ul> <p> <b>Microsoft SQL Server 2012</b> </p> <ul> <li> <p> <code>11.00.6594.0.v1</code> (supported for all editions, and all AWS regions)</p> </li> <li> <p> <code>11.00.6020.0.v1</code> (supported for all editions, and all AWS regions)</p> </li> <li> <p> <code>11.00.5058.0.v1</code> (supported for all editions, and all AWS regions except us-east-2, ca-central-1, and eu-west-2)</p> </li> <li> <p> <code>11.00.2100.60.v1</code> (supported for all editions, and all AWS regions except us-east-2, ca-central-1, and eu-west-2)</p> </li> </ul> <p> <b>Microsoft SQL Server 2008 R2</b> </p> <ul> <li> <p> <code>10.50.6529.0.v1</code> (supported for all editions, and all AWS regions except us-east-2, ca-central-1, and eu-west-2)</p> </li> <li> <p> <code>10.50.6000.34.v1</code> (supported for all editions, and all AWS regions except us-east-2, ca-central-1, and eu-west-2)</p> </li> <li> <p> <code>10.50.2789.0.v1</code> (supported for all editions, and all AWS regions except us-east-2, ca-central-1, and eu-west-2)</p> </li> </ul> <p> <b>MySQL</b> </p> <ul> <li> <p> <code>5.7.17</code> (supported in all AWS regions)</p> </li> <li> <p> <code>5.7.16</code> (supported in all AWS regions)</p> </li> <li> <p> <code>5.7.11</code> (supported in all AWS regions)</p> </li> </ul> <p/> <ul> <li> <p> <code>5.6.35</code> (supported in all AWS regions)</p> </li> <li> <p> <code>5.6.34</code> (supported in all AWS regions)</p> </li> <li> <p> <code>5.6.29</code> (supported in all AWS regions)</p> </li> <li> <p> <code>5.6.27</code> (supported in all regions except us-east-2, ca-central-1, eu-west-2)</p> </li> </ul> <p/> <ul> <li> <p> <code>5.5.54</code> (supported in all AWS regions)</p> </li> <li> <p> <code>5.5.53</code> (supported in all AWS regions)</p> </li> <li> <p> <code>5.5.46</code> (supported in all AWS regions)</p> </li> </ul> <p> <b>Oracle 12c</b> </p> <ul> <li> <p> <code>12.1.0.2.v8</code> (supported for EE in all AWS regions, and SE2 in all AWS regions except us-gov-west-1)</p> </li> <li> <p> <code>12.1.0.2.v7</code> (supported for EE in all AWS regions, and SE2 in all AWS regions except us-gov-west-1)</p> </li> <li> <p> <code>12.1.0.2.v6</code> (supported for EE in all AWS regions, and SE2 in all AWS regions except us-gov-west-1)</p> </li> <li> <p> <code>12.1.0.2.v5</code> (supported for EE in all AWS regions, and SE2 in all AWS regions except us-gov-west-1)</p> </li> <li> <p> <code>12.1.0.2.v4</code> (supported for EE in all AWS regions, and SE2 in all AWS regions except us-gov-west-1)</p> </li> <li> <p> <code>12.1.0.2.v3</code> (supported for EE in all AWS regions, and SE2 in all AWS regions except us-gov-west-1)</p> </li> <li> <p> <code>12.1.0.2.v2</code> (supported for EE in all AWS regions, and SE2 in all AWS regions except us-gov-west-1)</p> </li> <li> <p> <code>12.1.0.2.v1</code> (supported for EE in all AWS regions, and SE2 in all AWS regions except us-gov-west-1)</p> </li> </ul> <p> <b>Oracle 11g</b> </p> <ul> <li> <p> <code>11.2.0.4.v12</code> (supported for EE, SE1, and SE, in all AWS regions)</p> </li> <li> <p> <code>11.2.0.4.v11</code> (supported for EE, SE1, and SE, in all AWS regions)</p> </li> <li> <p> <code>11.2.0.4.v10</code> (supported for EE, SE1, and SE, in all AWS regions)</p> </li> <li> <p> <code>11.2.0.4.v9</code> (supported for EE, SE1, and SE, in all AWS regions)</p> </li> <li> <p> <code>11.2.0.4.v8</code> (supported for EE, SE1, and SE, in all AWS regions)</p> </li> <li> <p> <code>11.2.0.4.v7</code> (supported for EE, SE1, and SE, in all AWS regions)</p> </li> <li> <p> <code>11.2.0.4.v6</code> (supported for EE, SE1, and SE, in all AWS regions)</p> </li> <li> <p> <code>11.2.0.4.v5</code> (supported for EE, SE1, and SE, in all AWS regions)</p> </li> <li> <p> <code>11.2.0.4.v4</code> (supported for EE, SE1, and SE, in all AWS regions)</p> </li> <li> <p> <code>11.2.0.4.v3</code> (supported for EE, SE1, and SE, in all AWS regions)</p> </li> <li> <p> <code>11.2.0.4.v1</code> (supported for EE, SE1, and SE, in all AWS regions)</p> </li> </ul> <p> <b>PostgreSQL</b> </p> <ul> <li> <p> <b>Version 9.6.x:</b> <code> 9.6.1 | 9.6.2</code> </p> </li> <li> <p> <b>Version 9.5.x:</b> <code>9.5.6 | 9.5.4 | 9.5.2</code> </p> </li> <li> <p> <b>Version 9.4.x:</b> <code>9.4.11 | 9.4.9 | 9.4.7</code> </p> </li> <li> <p> <b>Version 9.3.x:</b> <code>9.3.16 | 9.3.14 | 9.3.12</code> </p> </li> </ul>"
+          "documentation":"<p>The version number of the database engine to use.</p> <p>The following are the database engines and major and minor versions that are available with Amazon RDS. Not every database engine is available for every AWS Region.</p> <p> <b>Amazon Aurora</b> </p> <p>Not applicable. The version number of the database engine to be used by the DB instance is managed by the DB cluster. For more information, see <a>CreateDBCluster</a>.</p> <p> <b>MariaDB</b> </p> <ul> <li> <p> <code>10.1.19</code> (supported in all AWS regions)</p> </li> <li> <p> <code>10.1.14</code> (supported in all regions except us-east-2)</p> </li> </ul> <p/> <ul> <li> <p> <code>10.0.28</code> (supported in all AWS regions)</p> </li> <li> <p> <code>10.0.24</code> (supported in all AWS regions)</p> </li> <li> <p> <code>10.0.17</code> (supported in all regions except us-east-2, ca-central-1, eu-west-2)</p> </li> </ul> <p> <b>Microsoft SQL Server 2016</b> </p> <ul> <li> <p> <code>13.00.4422.0.v1</code> (supported for all editions, and all AWS regions)</p> </li> <li> <p> <code>13.00.2164.0.v1</code> (supported for all editions, and all AWS regions)</p> </li> </ul> <p> <b>Microsoft SQL Server 2014</b> </p> <ul> <li> <p> <code>12.00.5546.0.v1</code> (supported for all editions, and all AWS regions)</p> </li> <li> <p> <code>12.00.5000.0.v1</code> (supported for all editions, and all AWS regions)</p> </li> <li> <p> <code>12.00.4422.0.v1</code> (supported for all editions except Enterprise Edition, and all AWS regions except ca-central-1 and eu-west-2)</p> </li> </ul> <p> <b>Microsoft SQL Server 2012</b> </p> <ul> <li> <p> <code>11.00.6594.0.v1</code> (supported for all editions, and all AWS regions)</p> </li> <li> <p> <code>11.00.6020.0.v1</code> (supported for all editions, and all AWS regions)</p> </li> <li> <p> <code>11.00.5058.0.v1</code> (supported for all editions, and all AWS regions except us-east-2, ca-central-1, and eu-west-2)</p> </li> <li> <p> <code>11.00.2100.60.v1</code> (supported for all editions, and all AWS regions except us-east-2, ca-central-1, and eu-west-2)</p> </li> </ul> <p> <b>Microsoft SQL Server 2008 R2</b> </p> <ul> <li> <p> <code>10.50.6529.0.v1</code> (supported for all editions, and all AWS regions except us-east-2, ca-central-1, and eu-west-2)</p> </li> <li> <p> <code>10.50.6000.34.v1</code> (supported for all editions, and all AWS regions except us-east-2, ca-central-1, and eu-west-2)</p> </li> <li> <p> <code>10.50.2789.0.v1</code> (supported for all editions, and all AWS regions except us-east-2, ca-central-1, and eu-west-2)</p> </li> </ul> <p> <b>MySQL</b> </p> <ul> <li> <p> <code>5.7.17</code> (supported in all AWS regions)</p> </li> <li> <p> <code>5.7.16</code> (supported in all AWS regions)</p> </li> <li> <p> <code>5.7.11</code> (supported in all AWS regions)</p> </li> </ul> <p/> <ul> <li> <p> <code>5.6.35</code> (supported in all AWS regions)</p> </li> <li> <p> <code>5.6.34</code> (supported in all AWS regions)</p> </li> <li> <p> <code>5.6.29</code> (supported in all AWS regions)</p> </li> <li> <p> <code>5.6.27</code> (supported in all regions except us-east-2, ca-central-1, eu-west-2)</p> </li> </ul> <p/> <ul> <li> <p> <code>5.5.54</code> (supported in all AWS regions)</p> </li> <li> <p> <code>5.5.53</code> (supported in all AWS regions)</p> </li> <li> <p> <code>5.5.46</code> (supported in all AWS regions)</p> </li> </ul> <p> <b>Oracle 12c</b> </p> <ul> <li> <p> <code>12.1.0.2.v8</code> (supported for EE in all AWS regions, and SE2 in all AWS regions except us-gov-west-1)</p> </li> <li> <p> <code>12.1.0.2.v7</code> (supported for EE in all AWS regions, and SE2 in all AWS regions except us-gov-west-1)</p> </li> <li> <p> <code>12.1.0.2.v6</code> (supported for EE in all AWS regions, and SE2 in all AWS regions except us-gov-west-1)</p> </li> <li> <p> <code>12.1.0.2.v5</code> (supported for EE in all AWS regions, and SE2 in all AWS regions except us-gov-west-1)</p> </li> <li> <p> <code>12.1.0.2.v4</code> (supported for EE in all AWS regions, and SE2 in all AWS regions except us-gov-west-1)</p> </li> <li> <p> <code>12.1.0.2.v3</code> (supported for EE in all AWS regions, and SE2 in all AWS regions except us-gov-west-1)</p> </li> <li> <p> <code>12.1.0.2.v2</code> (supported for EE in all AWS regions, and SE2 in all AWS regions except us-gov-west-1)</p> </li> <li> <p> <code>12.1.0.2.v1</code> (supported for EE in all AWS regions, and SE2 in all AWS regions except us-gov-west-1)</p> </li> </ul> <p> <b>Oracle 11g</b> </p> <ul> <li> <p> <code>11.2.0.4.v12</code> (supported for EE, SE1, and SE, in all AWS regions)</p> </li> <li> <p> <code>11.2.0.4.v11</code> (supported for EE, SE1, and SE, in all AWS regions)</p> </li> <li> <p> <code>11.2.0.4.v10</code> (supported for EE, SE1, and SE, in all AWS regions)</p> </li> <li> <p> <code>11.2.0.4.v9</code> (supported for EE, SE1, and SE, in all AWS regions)</p> </li> <li> <p> <code>11.2.0.4.v8</code> (supported for EE, SE1, and SE, in all AWS regions)</p> </li> <li> <p> <code>11.2.0.4.v7</code> (supported for EE, SE1, and SE, in all AWS regions)</p> </li> <li> <p> <code>11.2.0.4.v6</code> (supported for EE, SE1, and SE, in all AWS regions)</p> </li> <li> <p> <code>11.2.0.4.v5</code> (supported for EE, SE1, and SE, in all AWS regions)</p> </li> <li> <p> <code>11.2.0.4.v4</code> (supported for EE, SE1, and SE, in all AWS regions)</p> </li> <li> <p> <code>11.2.0.4.v3</code> (supported for EE, SE1, and SE, in all AWS regions)</p> </li> <li> <p> <code>11.2.0.4.v1</code> (supported for EE, SE1, and SE, in all AWS regions)</p> </li> </ul> <p> <b>PostgreSQL</b> </p> <ul> <li> <p> <b>Version 9.6.x:</b> <code> 9.6.1 | 9.6.2</code> </p> </li> <li> <p> <b>Version 9.5.x:</b> <code>9.5.6 | 9.5.4 | 9.5.2</code> </p> </li> <li> <p> <b>Version 9.4.x:</b> <code>9.4.11 | 9.4.9 | 9.4.7</code> </p> </li> <li> <p> <b>Version 9.3.x:</b> <code>9.3.16 | 9.3.14 | 9.3.12</code> </p> </li> </ul>"
         },
         "AutoMinorVersionUpgrade":{
           "shape":"BooleanOptional",
@@ -2452,7 +2452,7 @@
         },
         "SourceDBInstanceIdentifier":{
           "shape":"String",
-          "documentation":"<p>The identifier of the DB instance that will act as the source for the Read Replica. Each DB instance can have up to five Read Replicas.</p> <p>Constraints:</p> <ul> <li> <p>Must be the identifier of an existing MySQL, MariaDB, or PostgreSQL DB instance.</p> </li> <li> <p>Can specify a DB instance that is a MySQL Read Replica only if the source is running MySQL 5.6.</p> </li> <li> <p>Can specify a DB instance that is a PostgreSQL DB instance only if the source is running PostgreSQL 9.3.5 or later (9.4.7 and higher for cross region replication).</p> </li> <li> <p>The specified DB instance must have automatic backups enabled, its backup retention period must be greater than 0.</p> </li> <li> <p>If the source DB instance is in the same AWS Region as the Read Replica, specify a valid DB instance identifier.</p> </li> <li> <p>If the source DB instance is in a different AWS Region than the Read Replica, specify a valid DB instance ARN. For more information, go to <a href=\"http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Tagging.ARN.html#USER_Tagging.ARN.Constructing\"> Constructing a Amazon RDS Amazon Resource Name (ARN)</a>.</p> </li> </ul>"
+          "documentation":"<p>The identifier of the DB instance that will act as the source for the Read Replica. Each DB instance can have up to five Read Replicas.</p> <p>Constraints:</p> <ul> <li> <p>Must be the identifier of an existing MySQL, MariaDB, or PostgreSQL DB instance.</p> </li> <li> <p>Can specify a DB instance that is a MySQL Read Replica only if the source is running MySQL 5.6.</p> </li> <li> <p>Can specify a DB instance that is a PostgreSQL DB instance only if the source is running PostgreSQL 9.3.5 or later.</p> </li> <li> <p>The specified DB instance must have automatic backups enabled, its backup retention period must be greater than 0.</p> </li> <li> <p>If the source DB instance is in the same AWS Region as the Read Replica, specify a valid DB instance identifier.</p> </li> <li> <p>If the source DB instance is in a different AWS Region than the Read Replica, specify a valid DB instance ARN. For more information, go to <a href=\"http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Tagging.ARN.html#USER_Tagging.ARN.Constructing\"> Constructing a Amazon RDS Amazon Resource Name (ARN)</a>.</p> </li> </ul>"
         },
         "DBInstanceClass":{
           "shape":"String",
@@ -6456,18 +6456,6 @@
           "shape":"Boolean",
           "documentation":"<p>Permanent options can never be removed from an option group. An option group containing a permanent option can't be removed from a DB instance.</p>"
         },
-        "RequiresAutoMinorEngineVersionUpgrade":{
-          "shape":"Boolean",
-          "documentation":"<p>If true, you must enable the Auto Minor Version Upgrade setting for your DB instance before you can use this option. You can enable Auto Minor Version Upgrade when you first create your DB instance, or by modifying your DB instance later. </p>"
-        },
-        "VpcOnly":{
-          "shape":"Boolean",
-          "documentation":"<p>If true, you can only use this option with a DB instance that is in a VPC. </p>"
-        },
-        "SupportsOptionVersionDowngrade":{
-          "shape":"BooleanOptional",
-          "documentation":"<p>If true, you can change the option to an earlier version of the option. This only applies to options that have different versions available. </p>"
-        },
         "OptionGroupOptionSettings":{
           "shape":"OptionGroupOptionSettingsList",
           "documentation":"<p>The option settings that are available (and the default value) for each option in an option group.</p>"
diff --git a/botocore/data/rekognition/2016-06-27/service-2.json b/botocore/data/rekognition/2016-06-27/service-2.json
index c85898aa2..3340b4147 100644
--- a/botocore/data/rekognition/2016-06-27/service-2.json
+++ b/botocore/data/rekognition/2016-06-27/service-2.json
@@ -888,8 +888,8 @@
     "GenderType":{
       "type":"string",
       "enum":[
-        "Male",
-        "Female"
+        "MALE",
+        "FEMALE"
       ]
     },
     "GetCelebrityInfoRequest":{
@@ -1060,11 +1060,11 @@
         },
         "X":{
           "shape":"Float",
-          "documentation":"<p>x-coordinate from the top left of the landmark expressed as the ratio of the width of the image. For example, if the images is 700x200 and the x-coordinate of the landmark is at 350 pixels, this value is 0.5. </p>"
+          "documentation":"<p>x-coordinate from the top left of the landmark expressed as the ration of the width of the image. For example, if the images is 700x200 and the x-coordinate of the landmark is at 350 pixels, this value is 0.5. </p>"
         },
         "Y":{
           "shape":"Float",
-          "documentation":"<p>y-coordinate from the top left of the landmark expressed as the ratio of the height of the image. For example, if the images is 700x200 and the y-coordinate of the landmark is at 100 pixels, this value is 0.5.</p>"
+          "documentation":"<p>y-coordinate from the top left of the landmark expressed as the ration of the height of the image. For example, if the images is 700x200 and the y-coordinate of the landmark is at 100 pixels, this value is 0.5.</p>"
         }
       },
       "documentation":"<p>Indicates the location of the landmark on the face.</p>"
@@ -1072,31 +1072,31 @@
     "LandmarkType":{
       "type":"string",
       "enum":[
-        "eyeLeft",
-        "eyeRight",
-        "nose",
-        "mouthLeft",
-        "mouthRight",
-        "leftEyeBrowLeft",
-        "leftEyeBrowRight",
-        "leftEyeBrowUp",
-        "rightEyeBrowLeft",
-        "rightEyeBrowRight",
-        "rightEyeBrowUp",
-        "leftEyeLeft",
-        "leftEyeRight",
-        "leftEyeUp",
-        "leftEyeDown",
-        "rightEyeLeft",
-        "rightEyeRight",
-        "rightEyeUp",
-        "rightEyeDown",
-        "noseLeft",
-        "noseRight",
-        "mouthUp",
-        "mouthDown",
-        "leftPupil",
-        "rightPupil"
+        "EYE_LEFT",
+        "EYE_RIGHT",
+        "NOSE",
+        "MOUTH_LEFT",
+        "MOUTH_RIGHT",
+        "LEFT_EYEBROW_LEFT",
+        "LEFT_EYEBROW_RIGHT",
+        "LEFT_EYEBROW_UP",
+        "RIGHT_EYEBROW_LEFT",
+        "RIGHT_EYEBROW_RIGHT",
+        "RIGHT_EYEBROW_UP",
+        "LEFT_EYE_LEFT",
+        "LEFT_EYE_RIGHT",
+        "LEFT_EYE_UP",
+        "LEFT_EYE_DOWN",
+        "RIGHT_EYE_LEFT",
+        "RIGHT_EYE_RIGHT",
+        "RIGHT_EYE_UP",
+        "RIGHT_EYE_DOWN",
+        "NOSE_LEFT",
+        "NOSE_RIGHT",
+        "MOUTH_UP",
+        "MOUTH_DOWN",
+        "LEFT_PUPIL",
+        "RIGHT_PUPIL"
       ]
     },
     "Landmarks":{
diff --git a/botocore/data/route53/2013-04-01/service-2.json b/botocore/data/route53/2013-04-01/service-2.json
index 7e2c8d790..e277beaf6 100644
--- a/botocore/data/route53/2013-04-01/service-2.json
+++ b/botocore/data/route53/2013-04-01/service-2.json
@@ -2328,7 +2328,6 @@
         }
       },
       "documentation":"<p>This error code is not in use.</p>",
-      "deprecated":true,
       "error":{"httpStatusCode":400},
       "exception":true
     },
@@ -2890,7 +2889,7 @@
         },
         "StartRecordType":{
           "shape":"RRType",
-          "documentation":"<p>The type of resource record set to begin the record listing from.</p> <p>Valid values for basic resource record sets: <code>A</code> | <code>AAAA</code> | <code>CAA</code> | <code>CNAME</code> | <code>MX</code> | <code>NAPTR</code> | <code>NS</code> | <code>PTR</code> | <code>SOA</code> | <code>SPF</code> | <code>SRV</code> | <code>TXT</code> </p> <p>Values for weighted, latency, geo, and failover resource record sets: <code>A</code> | <code>AAAA</code> | <code>CAA</code> | <code>CNAME</code> | <code>MX</code> | <code>NAPTR</code> | <code>PTR</code> | <code>SPF</code> | <code>SRV</code> | <code>TXT</code> </p> <p>Values for alias resource record sets: </p> <ul> <li> <p> <b>CloudFront distribution</b>: A or AAAA</p> </li> <li> <p> <b>Elastic Beanstalk environment that has a regionalized subdomain</b>: A</p> </li> <li> <p> <b>ELB load balancer</b>: A | AAAA</p> </li> <li> <p> <b>Amazon S3 bucket</b>: A</p> </li> <li> <p> <b>Another resource record set in this hosted zone:</b> The type of the resource record set that the alias references.</p> </li> </ul> <p>Constraint: Specifying <code>type</code> without specifying <code>name</code> returns an <code>InvalidInput</code> error.</p>",
+          "documentation":"<p>The type of resource record set to begin the record listing from.</p> <p>Valid values for basic resource record sets: <code>A</code> | <code>AAAA</code> | <code>CNAME</code> | <code>MX</code> | <code>NAPTR</code> | <code>NS</code> | <code>PTR</code> | <code>SOA</code> | <code>SPF</code> | <code>SRV</code> | <code>TXT</code> </p> <p>Values for weighted, latency, geo, and failover resource record sets: <code>A</code> | <code>AAAA</code> | <code>CNAME</code> | <code>MX</code> | <code>NAPTR</code> | <code>PTR</code> | <code>SPF</code> | <code>SRV</code> | <code>TXT</code> </p> <p>Values for alias resource record sets: </p> <ul> <li> <p> <b>CloudFront distribution</b>: A or AAAA</p> </li> <li> <p> <b>Elastic Beanstalk environment that has a regionalized subdomain</b>: A</p> </li> <li> <p> <b>ELB load balancer</b>: A | AAAA</p> </li> <li> <p> <b>Amazon S3 bucket</b>: A</p> </li> </ul> <p>Constraint: Specifying <code>type</code> without specifying <code>name</code> returns an <code>InvalidInput</code> error.</p>",
           "location":"querystring",
           "locationName":"type"
         },
@@ -3587,8 +3586,7 @@
         "PTR",
         "SRV",
         "SPF",
-        "AAAA",
-        "CAA"
+        "AAAA"
       ]
     },
     "RecordData":{
@@ -3645,7 +3643,7 @@
         },
         "Type":{
           "shape":"RRType",
-          "documentation":"<p>The DNS record type. For information about different record types and how data is encoded for them, see <a href=\"http://docs.aws.amazon.com/Route53/latest/DeveloperGuide/ResourceRecordTypes.html\">Supported DNS Resource Record Types</a> in the <i>Amazon Route 53 Developer Guide</i>.</p> <p>Valid values for basic resource record sets: <code>A</code> | <code>AAAA</code> | <code>CAA</code> | <code>CNAME</code> | <code>MX</code> | <code>NAPTR</code> | <code>NS</code> | <code>PTR</code> | <code>SOA</code> | <code>SPF</code> | <code>SRV</code> | <code>TXT</code> </p> <p>Values for weighted, latency, geolocation, and failover resource record sets: <code>A</code> | <code>AAAA</code> | <code>CAA</code> | <code>CNAME</code> | <code>MX</code> | <code>NAPTR</code> | <code>PTR</code> | <code>SPF</code> | <code>SRV</code> | <code>TXT</code>. When creating a group of weighted, latency, geolocation, or failover resource record sets, specify the same value for all of the resource record sets in the group.</p> <p>Valid values for multivalue answer resource record sets: <code>A</code> | <code>AAAA</code> | <code>MX</code> | <code>NAPTR</code> | <code>PTR</code> | <code>SPF</code> | <code>SRV</code> | <code>TXT</code> </p> <note> <p>SPF records were formerly used to verify the identity of the sender of email messages. However, we no longer recommend that you create resource record sets for which the value of <code>Type</code> is <code>SPF</code>. RFC 7208, <i>Sender Policy Framework (SPF) for Authorizing Use of Domains in Email, Version 1</i>, has been updated to say, \"...[I]ts existence and mechanism defined in [RFC4408] have led to some interoperability issues. Accordingly, its use is no longer appropriate for SPF version 1; implementations are not to use it.\" In RFC 7208, see section 14.1, <a href=\"http://tools.ietf.org/html/rfc7208#section-14.1\">The SPF DNS Record Type</a>.</p> </note> <p>Values for alias resource record sets:</p> <ul> <li> <p> <b>CloudFront distributions:</b> <code>A</code> </p> <p>If IPv6 is enabled for the distribution, create two resource record sets to route traffic to your distribution, one with a value of <code>A</code> and one with a value of <code>AAAA</code>. </p> </li> <li> <p> <b>AWS Elastic Beanstalk environment that has a regionalized subdomain</b>: <code>A</code> </p> </li> <li> <p> <b>ELB load balancers:</b> <code>A</code> | <code>AAAA</code> </p> </li> <li> <p> <b>Amazon S3 buckets:</b> <code>A</code> </p> </li> <li> <p> <b>Another resource record set in this hosted zone:</b> Specify the type of the resource record set that you're creating the alias for. All values are supported except <code>NS</code> and <code>SOA</code>.</p> </li> </ul>"
+          "documentation":"<p>The DNS record type. For information about different record types and how data is encoded for them, see <a href=\"http://docs.aws.amazon.com/Route53/latest/DeveloperGuide/ResourceRecordTypes.html\">Supported DNS Resource Record Types</a> in the <i>Amazon Route 53 Developer Guide</i>.</p> <p>Valid values for basic resource record sets: <code>A</code> | <code>AAAA</code> | <code>CNAME</code> | <code>MX</code> | <code>NAPTR</code> | <code>NS</code> | <code>PTR</code> | <code>SOA</code> | <code>SPF</code> | <code>SRV</code> | <code>TXT</code> </p> <p>Values for weighted, latency, geolocation, and failover resource record sets: <code>A</code> | <code>AAAA</code> | <code>CNAME</code> | <code>MX</code> | <code>NAPTR</code> | <code>PTR</code> | <code>SPF</code> | <code>SRV</code> | <code>TXT</code>. When creating a group of weighted, latency, geolocation, or failover resource record sets, specify the same value for all of the resource record sets in the group.</p> <p>Valid values for multivalue answer resource record sets: <code>A</code> | <code>AAAA</code> | <code>MX</code> | <code>NAPTR</code> | <code>PTR</code> | <code>SPF</code> | <code>SRV</code> | <code>TXT</code> </p> <note> <p>SPF records were formerly used to verify the identity of the sender of email messages. However, we no longer recommend that you create resource record sets for which the value of <code>Type</code> is <code>SPF</code>. RFC 7208, <i>Sender Policy Framework (SPF) for Authorizing Use of Domains in Email, Version 1</i>, has been updated to say, \"...[I]ts existence and mechanism defined in [RFC4408] have led to some interoperability issues. Accordingly, its use is no longer appropriate for SPF version 1; implementations are not to use it.\" In RFC 7208, see section 14.1, <a href=\"http://tools.ietf.org/html/rfc7208#section-14.1\">The SPF DNS Record Type</a>.</p> </note> <p>Values for alias resource record sets:</p> <ul> <li> <p> <b>CloudFront distributions:</b> <code>A</code> </p> <p>If IPv6 is enabled for the distribution, create two resource record sets to route traffic to your distribution, one with a value of <code>A</code> and one with a value of <code>AAAA</code>. </p> </li> <li> <p> <b>AWS Elastic Beanstalk environment that has a regionalized subdomain</b>: <code>A</code> </p> </li> <li> <p> <b>ELB load balancers:</b> <code>A</code> | <code>AAAA</code> </p> </li> <li> <p> <b>Amazon S3 buckets:</b> <code>A</code> </p> </li> <li> <p> <b>Another resource record set in this hosted zone:</b> Specify the type of the resource record set that you're creating the alias for. All values are supported except <code>NS</code> and <code>SOA</code>.</p> </li> </ul>"
         },
         "SetIdentifier":{
           "shape":"ResourceRecordSetIdentifier",
diff --git a/botocore/data/ssm/2014-11-06/service-2.json b/botocore/data/ssm/2014-11-06/service-2.json
index f8de2f998..fb7f34782 100644
--- a/botocore/data/ssm/2014-11-06/service-2.json
+++ b/botocore/data/ssm/2014-11-06/service-2.json
@@ -365,7 +365,6 @@
       "output":{"shape":"DescribeAssociationResult"},
       "errors":[
         {"shape":"AssociationDoesNotExist"},
-        {"shape":"InvalidAssociationVersion"},
         {"shape":"InternalServerError"},
         {"shape":"InvalidDocument"},
         {"shape":"InvalidInstanceId"}
@@ -942,21 +941,6 @@
       ],
       "documentation":"<p>Retrieves the patch baseline that should be used for the specified patch group.</p>"
     },
-    "ListAssociationVersions":{
-      "name":"ListAssociationVersions",
-      "http":{
-        "method":"POST",
-        "requestUri":"/"
-      },
-      "input":{"shape":"ListAssociationVersionsRequest"},
-      "output":{"shape":"ListAssociationVersionsResult"},
-      "errors":[
-        {"shape":"InternalServerError"},
-        {"shape":"InvalidNextToken"},
-        {"shape":"AssociationDoesNotExist"}
-      ],
-      "documentation":"<p>Retrieves all versions of an association for a specific association ID.</p>"
-    },
     "ListAssociations":{
       "name":"ListAssociations",
       "http":{
@@ -1020,7 +1004,7 @@
         {"shape":"InvalidFilter"},
         {"shape":"InvalidNextToken"}
       ],
-      "documentation":"<p>For a specified resource ID, this API action returns a list of compliance statuses for different resource types. Currently, you can only specify one resource ID per call. List results depend on the criteria specified in the filter. </p>"
+      "documentation":"<p>For a specified resource ID, this API returns a list of compliance statuses for different resource types. Currently, you can only specify one resource ID per call. List results depend on the criteria specified in the filter. </p>"
     },
     "ListComplianceSummaries":{
       "name":"ListComplianceSummaries",
@@ -1035,7 +1019,7 @@
         {"shape":"InvalidNextToken"},
         {"shape":"InternalServerError"}
       ],
-      "documentation":"<p>Returns a summary count of compliant and non-compliant resources for a compliance type. For example, this call can return State Manager associations, patches, or custom compliance types according to the filter criteria that you specify. </p>"
+      "documentation":"<p>Returns a summary count of compliant and non-compliant resources for a compliance type. For example, this call can return State Manager associations, patches, or custom compliance types according to the filter criteria you specify. </p>"
     },
     "ListDocumentVersions":{
       "name":"ListDocumentVersions",
@@ -1162,7 +1146,7 @@
         {"shape":"InvalidResourceType"},
         {"shape":"InvalidResourceId"}
       ],
-      "documentation":"<p>Registers a compliance type and other compliance details on a designated resource. This action lets you register custom compliance details with a resource. This call overwrites existing compliance information on the resource, so you must provide a full list of compliance items each time that you send the request.</p>"
+      "documentation":"<p>Registers a compliance type and other compliance details on a designated resource. This API lets you register custom compliance details with a resource. This call overwrites existing compliance information on the resource, so you must provide a full list of compliance items each time you send the request.</p>"
     },
     "PutInventory":{
       "name":"PutInventory",
@@ -1376,11 +1360,9 @@
         {"shape":"InvalidUpdate"},
         {"shape":"TooManyUpdates"},
         {"shape":"InvalidDocument"},
-        {"shape":"InvalidTarget"},
-        {"shape":"InvalidAssociationVersion"},
-        {"shape":"AssociationVersionLimitExceeded"}
+        {"shape":"InvalidTarget"}
       ],
-      "documentation":"<p>Updates an association. You can update the association name and version, the document version, schedule, parameters, and Amazon S3 output.</p>"
+      "documentation":"<p>Updates an association. You can only update the document version, schedule, parameters, and Amazon S3 output of an association.</p>"
     },
     "UpdateAssociationStatus":{
       "name":"UpdateAssociationStatus",
@@ -1462,7 +1444,7 @@
         {"shape":"DoesNotExistException"},
         {"shape":"InternalServerError"}
       ],
-      "documentation":"<p>Modifies the target of an existing Maintenance Window. You can't change the target type, but you can change the following:</p> <p>The target from being an ID target to a Tag target, or a Tag target to an ID target.</p> <p>IDs for an ID target.</p> <p>Tags for a Tag target.</p> <p>Owner.</p> <p>Name.</p> <p>Description.</p> <p>If a parameter is null, then the corresponding field is not modified.</p>"
+      "documentation":"<p>Modifies the target of an existing Maintenance Window. You can't change the target type, but you can change the following:</p> <p>The target from being an ID target to a Tag target, or a Tag target to an ID target.</p> <p>The IDs of an ID target.</p> <p>The tags of a Tag target.</p> <p>The Owner.</p> <p>The Name.</p> <p>The Description.</p> <p>Also note that if a parameter is null, then the corresponding field is not modified.</p>"
     },
     "UpdateMaintenanceWindowTask":{
       "name":"UpdateMaintenanceWindowTask",
@@ -1476,7 +1458,7 @@
         {"shape":"DoesNotExistException"},
         {"shape":"InternalServerError"}
       ],
-      "documentation":"<p>Modifies a task assigned to a Maintenance Window. You can't change the task type, but you can change the following values:</p> <p>Task ARN. For example, you can change a RUN_COMMAND task from AWS-RunPowerShellScript to AWS-RunShellScript.</p> <p>Service role ARN.</p> <p>Task parameters.</p> <p>Task priority.</p> <p>Task MaxConcurrency and MaxErrors.</p> <p>Log location.</p> <p>If a parameter is null, then the corresponding field is not modified. Also, if you set Replace to true, then all fields required by the RegisterTaskWithMaintenanceWindow action are required for this request. Optional fields that aren't specified are set to null.</p>"
+      "documentation":"<p>Modifies a task assigned to a Maintenance Window. You can't change the task type, but you can change the following:</p> <p>The Task Arn. For example, you can change a RUN_COMMAND task from AWS-RunPowerShellScript to AWS-RunShellScript.</p> <p>The service role ARN.</p> <p>The task parameters.</p> <p>The task priority.</p> <p>The task MaxConcurrency and MaxErrors.</p> <p>The log location.</p> <p>If a parameter is null, then the corresponding field is not modified. Also, if you set Replace to true, then all fields required by the RegisterTaskWithMaintenanceWindow operation are required for this request. Optional fields that aren't specified are be set to null.</p>"
     },
     "UpdateManagedInstanceRole":{
       "name":"UpdateManagedInstanceRole",
@@ -1651,10 +1633,6 @@
           "shape":"AssociationId",
           "documentation":"<p>The ID created by the system when you create an association. An association is a binding between a document and a set of targets with a schedule.</p>"
         },
-        "AssociationVersion":{
-          "shape":"AssociationVersion",
-          "documentation":"<p>The association version.</p>"
-        },
         "DocumentVersion":{
           "shape":"DocumentVersion",
           "documentation":"<p>The version of the document used in the association.</p>"
@@ -1674,10 +1652,6 @@
         "ScheduleExpression":{
           "shape":"ScheduleExpression",
           "documentation":"<p>A cron expression that specifies a schedule when the association runs.</p>"
-        },
-        "AssociationName":{
-          "shape":"AssociationName",
-          "documentation":"<p>The association name.</p>"
         }
       },
       "documentation":"<p>Describes an association of a Systems Manager document and an instance.</p>"
@@ -1700,10 +1674,6 @@
           "shape":"InstanceId",
           "documentation":"<p>The ID of the instance.</p>"
         },
-        "AssociationVersion":{
-          "shape":"AssociationVersion",
-          "documentation":"<p>The association version.</p>"
-        },
         "Date":{
           "shape":"DateTime",
           "documentation":"<p>The date when the association was made.</p>"
@@ -1751,10 +1721,6 @@
         "LastSuccessfulExecutionDate":{
           "shape":"DateTime",
           "documentation":"<p>The last date on which the association was successfully run.</p>"
-        },
-        "AssociationName":{
-          "shape":"AssociationName",
-          "documentation":"<p>The association name.</p>"
         }
       },
       "documentation":"<p>Describes the parameters for a document.</p>"
@@ -1800,8 +1766,7 @@
         "AssociationId",
         "AssociationStatusName",
         "LastExecutedBefore",
-        "LastExecutedAfter",
-        "AssociationName"
+        "LastExecutedAfter"
       ]
     },
     "AssociationFilterList":{
@@ -1834,10 +1799,6 @@
         "locationName":"Association"
       }
     },
-    "AssociationName":{
-      "type":"string",
-      "pattern":"^[a-zA-Z0-9_\\-.]{3,128}$"
-    },
     "AssociationOverview":{
       "type":"structure",
       "members":{
@@ -1896,69 +1857,6 @@
         "Failed"
       ]
     },
-    "AssociationVersion":{
-      "type":"string",
-      "pattern":"([$]LATEST)|([1-9][0-9]*)"
-    },
-    "AssociationVersionInfo":{
-      "type":"structure",
-      "members":{
-        "AssociationId":{
-          "shape":"AssociationId",
-          "documentation":"<p>The ID created by the system when the association was created.</p>"
-        },
-        "AssociationVersion":{
-          "shape":"AssociationVersion",
-          "documentation":"<p>The association version.</p>"
-        },
-        "CreatedDate":{
-          "shape":"DateTime",
-          "documentation":"<p>The date the association version was created.</p>"
-        },
-        "Name":{
-          "shape":"DocumentName",
-          "documentation":"<p>The name specified when the association was created.</p>"
-        },
-        "DocumentVersion":{
-          "shape":"DocumentVersion",
-          "documentation":"<p>The version of an SSM document used when the association version was created.</p>"
-        },
-        "Parameters":{
-          "shape":"Parameters",
-          "documentation":"<p>Parameters specified when the association version was created.</p>"
-        },
-        "Targets":{
-          "shape":"Targets",
-          "documentation":"<p>The targets specified for the association when the association version was created. </p>"
-        },
-        "ScheduleExpression":{
-          "shape":"ScheduleExpression",
-          "documentation":"<p>The cron or rate schedule specified for the association when the association version was created.</p>"
-        },
-        "OutputLocation":{
-          "shape":"InstanceAssociationOutputLocation",
-          "documentation":"<p>The location in Amazon S3 specified for the association when the association version was created.</p>"
-        },
-        "AssociationName":{
-          "shape":"AssociationName",
-          "documentation":"<p>The name specified for the association version when the association version was created.</p>"
-        }
-      },
-      "documentation":"<p>Information about the association version.</p>"
-    },
-    "AssociationVersionLimitExceeded":{
-      "type":"structure",
-      "members":{
-        "Message":{"shape":"String"}
-      },
-      "documentation":"<p>You have reached the maximum number versions allowed for an association. Each association has a limit of 1,000 versions. </p>",
-      "exception":true
-    },
-    "AssociationVersionList":{
-      "type":"list",
-      "member":{"shape":"AssociationVersionInfo"},
-      "min":1
-    },
     "AttributeName":{
       "type":"string",
       "max":64,
@@ -2565,7 +2463,7 @@
       "members":{
         "ComplianceType":{
           "shape":"ComplianceTypeName",
-          "documentation":"<p>The compliance type. For example, Association (for a State Manager association), Patch, or Custom:<code>string</code> are all valid compliance types.</p>"
+          "documentation":"<p>The compliance type. For example, Association (for a State Manager association), Patch, or Custom:<code>string</code> are all valide compliance types.</p>"
         },
         "ResourceType":{
           "shape":"ComplianceResourceType",
@@ -2589,7 +2487,7 @@
         },
         "Severity":{
           "shape":"ComplianceSeverity",
-          "documentation":"<p>The severity of the compliance status. Severity can be one of the following: Critical, High, Medium, Low, Informational, Unspecified.</p>"
+          "documentation":"<p>The severity of the compliance status. Severity can be one of the following: Critical, HIGH, Medium, Low, Informational, Unspecified.</p>"
         },
         "ExecutionSummary":{
           "shape":"ComplianceExecutionSummary",
@@ -2720,7 +2618,7 @@
         },
         "Values":{
           "shape":"ComplianceStringFilterValueList",
-          "documentation":"<p>The value for which to search.</p>"
+          "documentation":"<p>The value you want to search for.</p>"
         },
         "Type":{
           "shape":"ComplianceQueryOperatorType",
@@ -2898,10 +2796,6 @@
         "OutputLocation":{
           "shape":"InstanceAssociationOutputLocation",
           "documentation":"<p>An Amazon S3 bucket where you want to store the results of this request.</p>"
-        },
-        "AssociationName":{
-          "shape":"AssociationName",
-          "documentation":"<p>Specify a descriptive name for the association.</p>"
         }
       },
       "documentation":"<p>Describes the association of a Systems Manager document and an instance.</p>"
@@ -2950,10 +2844,6 @@
         "OutputLocation":{
           "shape":"InstanceAssociationOutputLocation",
           "documentation":"<p>An Amazon S3 bucket where you want to store the output details of the request.</p>"
-        },
-        "AssociationName":{
-          "shape":"AssociationName",
-          "documentation":"<p>Specify a descriptive name for the association.</p>"
         }
       }
     },
@@ -3012,7 +2902,7 @@
         },
         "Description":{
           "shape":"MaintenanceWindowDescription",
-          "documentation":"<p>An optional description for the Maintenance Window. We recommend specifying a description to help you organize your Maintenance Windows. </p>"
+          "documentation":"<p>An optional description for the Maintenance Window. We recommend specifying a description to help your organize your Maintenance Windows. </p>"
         },
         "Schedule":{
           "shape":"MaintenanceWindowSchedule",
@@ -3028,7 +2918,7 @@
         },
         "AllowUnassociatedTargets":{
           "shape":"MaintenanceWindowAllowUnassociatedTargets",
-          "documentation":"<p>Enables a Maintenance Window task to execute on managed instances, even if you have not registered those instances as targets. If enabled, then you must specify the unregistered instances (by instance ID) when you register a task with the Maintenance Window </p> <p>If you don't enable this option, then you must specify previously-registered targets when you register a task with the Maintenance Window. </p>"
+          "documentation":"<p>Whether targets must be registered with the Maintenance Window before tasks can be defined for those targets.</p>"
         },
         "ClientToken":{
           "shape":"ClientToken",
@@ -3342,7 +3232,7 @@
         },
         "Safe":{
           "shape":"Boolean",
-          "documentation":"<p>The system checks if the target is being referenced by a task. If the target is being referenced, the system returns an error and does not deregister the target from the Maintenance Window.</p>",
+          "documentation":"<p>The system checks if the target is being referenced by a task. If the target is being referenced, the system returns and error and does not deregister the target from the Maintenance Window.</p>",
           "box":true
         }
       }
@@ -3461,10 +3351,6 @@
         "AssociationId":{
           "shape":"AssociationId",
           "documentation":"<p>The association ID for which you want information.</p>"
-        },
-        "AssociationVersion":{
-          "shape":"AssociationVersion",
-          "documentation":"<p>Specify the association version to retrieve. To view the latest version, either specify <code>$LATEST</code> for this parameter, or omit this parameter. To view a list of all associations for an instance, use ListInstanceAssociations. To get a list of versions for a specific association, use ListAssociationVersions. </p>"
         }
       }
     },
@@ -4594,7 +4480,7 @@
       "members":{
         "Message":{"shape":"String"}
       },
-      "documentation":"<p>You attempted to register a LAMBDA or STEP_FUNCTION task in a region where the corresponding service is not available. </p>",
+      "documentation":"<p>You attempted to register a LAMBDA or STEP_FUNCTION task in a region where there corresponding service is not available. </p>",
       "exception":true
     },
     "GetAutomationExecutionRequest":{
@@ -4922,7 +4808,7 @@
       "members":{
         "WindowExecutionId":{
           "shape":"MaintenanceWindowExecutionId",
-          "documentation":"<p>The ID of the Maintenance Window execution for which the task is a part.</p>"
+          "documentation":"<p>The ID of the Maintenance Window execution the task is part of.</p>"
         },
         "TaskId":{
           "shape":"MaintenanceWindowExecutionTaskId",
@@ -4959,7 +4845,7 @@
         },
         "Parameters":{
           "shape":"MaintenanceWindowExecutionTaskInvocationParameters",
-          "documentation":"<p>The parameters used at the time that the task executed.</p>"
+          "documentation":"<p>The parameters used at the time the task executed.</p>"
         },
         "Status":{
           "shape":"MaintenanceWindowExecutionStatus",
@@ -4971,15 +4857,15 @@
         },
         "StartTime":{
           "shape":"DateTime",
-          "documentation":"<p>The time that the task started executing on the target.</p>"
+          "documentation":"<p>The time the task started executing on the target.</p>"
         },
         "EndTime":{
           "shape":"DateTime",
-          "documentation":"<p>The time that the task finished executing on the target.</p>"
+          "documentation":"<p>The time the task finished executing on the target.</p>"
         },
         "OwnerInformation":{
           "shape":"OwnerInformation",
-          "documentation":"<p>User-provided value to be included in any CloudWatch events raised while running tasks for these targets in this Maintenance Window. </p>"
+          "documentation":"<p>User-provided value that will be included in any CloudWatch events raised while running tasks for these targets in this Maintenance Window. </p>"
         },
         "WindowTargetId":{
           "shape":"MaintenanceWindowTaskTargetId",
@@ -5150,7 +5036,7 @@
         },
         "TaskArn":{
           "shape":"MaintenanceWindowTaskArn",
-          "documentation":"<p>The resource that the task used during execution. For RUN_COMMAND and AUTOMATION task types, the TaskArn is the SSM Document name/ARN. For LAMBDA tasks, the value is the function name/ARN. For STEP_FUNCTION tasks, the value is the state machine ARN.</p>"
+          "documentation":"<p>TaskArn is the resource that the task used during execution. For RUN_COMMAND and AUTOMATION task types, the TaskArn is the SSM Document Name/ARN. For LAMBDA tasks, TaskArn is the Function Name/ARN. For STEP_FUNCTION tasks, the TaskArn is the State Machine ARN.</p>"
         },
         "ServiceRoleArn":{
           "shape":"ServiceRole",
@@ -5182,7 +5068,7 @@
         },
         "LoggingInfo":{
           "shape":"LoggingInfo",
-          "documentation":"<p>The location in Amazon S3 where the task results are logged.</p>"
+          "documentation":"<p>The location in Amazon S3 where the task results will be logged.</p>"
         },
         "Name":{
           "shape":"MaintenanceWindowName",
@@ -5495,10 +5381,6 @@
         "Content":{
           "shape":"DocumentContent",
           "documentation":"<p>The content of the association document for the instance(s).</p>"
-        },
-        "AssociationVersion":{
-          "shape":"AssociationVersion",
-          "documentation":"<p>Version information for the association on the instance.</p>"
         }
       },
       "documentation":"<p>One or more association documents on the instance. </p>"
@@ -5552,10 +5434,6 @@
           "shape":"DocumentVersion",
           "documentation":"<p>The association document verions.</p>"
         },
-        "AssociationVersion":{
-          "shape":"AssociationVersion",
-          "documentation":"<p>The version of the association applied to the instance.</p>"
-        },
         "InstanceId":{
           "shape":"InstanceId",
           "documentation":"<p>The instance ID where the association was created.</p>"
@@ -5583,10 +5461,6 @@
         "OutputUrl":{
           "shape":"InstanceAssociationOutputUrl",
           "documentation":"<p>A URL for an Amazon S3 bucket where you want to store the results of this request.</p>"
-        },
-        "AssociationName":{
-          "shape":"AssociationName",
-          "documentation":"<p>The name of the association applied to the instance.</p>"
         }
       },
       "documentation":"<p>Status information about the instance association.</p>"
@@ -5946,14 +5820,6 @@
       "documentation":"<p>The request does not meet the regular expression requirement.</p>",
       "exception":true
     },
-    "InvalidAssociationVersion":{
-      "type":"structure",
-      "members":{
-        "Message":{"shape":"String"}
-      },
-      "documentation":"<p>The version you specified is not valid. Use ListAssociationVersions to view all versions of an association according to the association ID. Or, use the <code>$LATEST</code> parameter to view the latest version of the association.</p>",
-      "exception":true
-    },
     "InvalidAutomationExecutionParametersException":{
       "type":"structure",
       "members":{
@@ -6519,38 +6385,6 @@
     },
     "LastResourceDataSyncTime":{"type":"timestamp"},
     "LastSuccessfulResourceDataSyncTime":{"type":"timestamp"},
-    "ListAssociationVersionsRequest":{
-      "type":"structure",
-      "required":["AssociationId"],
-      "members":{
-        "AssociationId":{
-          "shape":"AssociationId",
-          "documentation":"<p>The association ID for which you want to view all versions.</p>"
-        },
-        "MaxResults":{
-          "shape":"MaxResults",
-          "documentation":"<p>The maximum number of items to return for this call. The call also returns a token that you can specify in a subsequent call to get the next set of results.</p>",
-          "box":true
-        },
-        "NextToken":{
-          "shape":"NextToken",
-          "documentation":"<p>A token to start the list. Use this token to get the next set of results. </p>"
-        }
-      }
-    },
-    "ListAssociationVersionsResult":{
-      "type":"structure",
-      "members":{
-        "AssociationVersions":{
-          "shape":"AssociationVersionList",
-          "documentation":"<p>Information about all versions of the association for the specified association ID.</p>"
-        },
-        "NextToken":{
-          "shape":"NextToken",
-          "documentation":"<p>The token for the next set of items to return. Use this token to get the next set of results.</p>"
-        }
-      }
-    },
     "ListAssociationsRequest":{
       "type":"structure",
       "members":{
@@ -6673,11 +6507,11 @@
         },
         "ResourceIds":{
           "shape":"ComplianceResourceIdList",
-          "documentation":"<p>The ID for the resources from which to get compliance information. Currently, you can only specify one resource ID.</p>"
+          "documentation":"<p>The ID for the resources from which you want to get compliance information. Currently, you can only specify one resource ID.</p>"
         },
         "ResourceTypes":{
           "shape":"ComplianceResourceTypeList",
-          "documentation":"<p>The type of resource from which to get compliance information. Currently, the only supported resource type is <code>ManagedInstance</code>.</p>"
+          "documentation":"<p>The type of resource from which you want to get compliance information. Currently, the only supported resource type is <code>ManagedInstance</code>.</p>"
         },
         "NextToken":{
           "shape":"NextToken",
@@ -6726,7 +6560,7 @@
       "members":{
         "ComplianceSummaryItems":{
           "shape":"ComplianceSummaryItemList",
-          "documentation":"<p>A list of compliant and non-compliant summary counts based on compliance types. For example, this call returns State Manager associations, patches, or custom compliance types according to the filter criteria that you specified.</p>"
+          "documentation":"<p>A list of compliant and non-compliant summary counts based on compliance types. For example, this call returns State Manager associations, patches, or custom compliance types according to the filter criteria you specified.</p>"
         },
         "NextToken":{
           "shape":"NextToken",
@@ -6879,7 +6713,7 @@
       "members":{
         "ResourceComplianceSummaryItems":{
           "shape":"ResourceComplianceSummaryItemList",
-          "documentation":"<p>A summary count for specified or targeted managed instances. Summary count includes information about compliant and non-compliant State Manager associations, patch status, or custom items according to the filter criteria that you specify. </p>"
+          "documentation":"<p>A summary count for specified or targeted managed instances. Summary count includes information about compliant and non-compliant State Manager associations, patch statuses, or custom items according to the filter criteria you specify. </p>"
         },
         "NextToken":{
           "shape":"NextToken",
@@ -6968,14 +6802,14 @@
       "members":{
         "DocumentVersion":{
           "shape":"DocumentVersion",
-          "documentation":"<p>The version of an Automation document to use during task execution.</p>"
+          "documentation":"<p>The version of an SSM Automation document to use during task execution.</p>"
         },
         "Parameters":{
           "shape":"AutomationParameterMap",
-          "documentation":"<p>The parameters for the AUTOMATION task.</p>"
+          "documentation":"<p>Parameters for the AUTOMATION task.</p>"
         }
       },
-      "documentation":"<p>The parameters for an AUTOMATION task type.</p>"
+      "documentation":"<p>Parameters for an AUTOMATION task type.</p>"
     },
     "MaintenanceWindowCutoff":{
       "type":"integer",
@@ -7257,18 +7091,18 @@
       "members":{
         "ClientContext":{
           "shape":"MaintenanceWindowLambdaClientContext",
-          "documentation":"<p>Pass client-specific information to the Lambda function that you are invoking. You can then process the client information in your Lambda function as you choose through the context variable.</p>"
+          "documentation":"<p>Using the ClientContext you can pass client-specific information to the Lambda function you are invoking. You can then process the client information in your Lambda function as you choose through the context variable.</p>"
         },
         "Qualifier":{
           "shape":"MaintenanceWindowLambdaQualifier",
-          "documentation":"<p>(Optional) Specify a Lambda function version or alias name. If you specify a function version, the action uses the qualified function ARN to invoke a specific Lambda function. If you specify an alias name, the action uses the alias ARN to invoke the Lambda function version to which the alias points.</p>"
+          "documentation":"<p>You can use this optional parameter to specify a Lambda function version or alias name. If you specify a function version, the API uses the qualified function ARN to invoke a specific Lambda function. If you specify an alias name, the API uses the alias ARN to invoke the Lambda function version to which the alias points.</p>"
         },
         "Payload":{
           "shape":"MaintenanceWindowLambdaPayload",
-          "documentation":"<p>JSON to provide to your Lambda function as input.</p>"
+          "documentation":"<p>JSON that you want to provide to your Lambda function as input.</p>"
         }
       },
-      "documentation":"<p>The parameters for a LAMBDA task type.</p>"
+      "documentation":"<p>Parameters for a LAMBDA task type.</p>"
     },
     "MaintenanceWindowLambdaPayload":{
       "type":"blob",
@@ -7304,15 +7138,15 @@
         },
         "DocumentHash":{
           "shape":"DocumentHash",
-          "documentation":"<p>The SHA-256 or SHA-1 hash created by the system when the document was created. SHA-1 hashes have been deprecated.</p>"
+          "documentation":"<p>The Sha256 or Sha1 hash created by the system when the document was created. Sha1 hashes have been deprecated.</p>"
         },
         "DocumentHashType":{
           "shape":"DocumentHashType",
-          "documentation":"<p>SHA-256 or SHA-1. SHA-1 hashes have been deprecated.</p>"
+          "documentation":"<p>Sha256 or Sha1. Sha1 hashes have been deprecated.</p>"
         },
         "NotificationConfig":{
           "shape":"NotificationConfig",
-          "documentation":"<p>Configurations for sending notifications about command status changes on a per-instance basis.</p>"
+          "documentation":"<p>Configurations for sending notifications about command status changes on a per instance basis.</p>"
         },
         "OutputS3BucketName":{
           "shape":"S3BucketName",
@@ -7324,19 +7158,19 @@
         },
         "Parameters":{
           "shape":"Parameters",
-          "documentation":"<p>The parameters for the RUN_COMMAND task execution.</p>"
+          "documentation":"<p>Parameters for the RUN_COMMAND task execution.</p>"
         },
         "ServiceRoleArn":{
           "shape":"ServiceRole",
-          "documentation":"<p>The IAM service role to assume during task execution.</p>"
+          "documentation":"<p>The IAM service role that to assume during task execution.</p>"
         },
         "TimeoutSeconds":{
           "shape":"TimeoutSeconds",
-          "documentation":"<p>If this time is reached and the command has not already started executing, it doesn not execute.</p>",
+          "documentation":"<p>If this time is reached and the command has not already started executing, it will not execute.</p>",
           "box":true
         }
       },
-      "documentation":"<p>The parameters for a RUN_COMMAND task type.</p>"
+      "documentation":"<p>Parameters for a RUN_COMMAND task type.</p>"
     },
     "MaintenanceWindowSchedule":{
       "type":"string",
@@ -7365,7 +7199,7 @@
           "documentation":"<p>The name of the STEP_FUNCTION task.</p>"
         }
       },
-      "documentation":"<p>The parameters for the STEP_FUNCTION execution.</p>"
+      "documentation":"<p>Parameters for the STEP_FUNCTION execution.</p>"
     },
     "MaintenanceWindowTarget":{
       "type":"structure",
@@ -7424,7 +7258,7 @@
         },
         "TaskArn":{
           "shape":"MaintenanceWindowTaskArn",
-          "documentation":"<p>The resource that the task uses during execution. For RUN_COMMAND and AUTOMATION task types, <code>TaskArn</code> is the SSM document name or ARN. For LAMBDA tasks, it's the function name or ARN. For STEP_FUNCTION tasks, it's the state machine ARN.</p>"
+          "documentation":"<p>TaskArn is the resource that the task uses during execution. For RUN_COMMAND and AUTOMATION task types, the TaskArn is the SSM Document Name/ARN. For LAMBDA tasks, it's the Function Name/ARN. For STEP_FUNCTION tasks, it's the State Machine ARN.</p>"
         },
         "Type":{
           "shape":"MaintenanceWindowTaskType",
@@ -7485,22 +7319,22 @@
       "members":{
         "RunCommand":{
           "shape":"MaintenanceWindowRunCommandParameters",
-          "documentation":"<p>The parameters for a RUN_COMMAND task type.</p>"
+          "documentation":"<p>Parameters for a RUN_COMMAND task type.</p>"
         },
         "Automation":{
           "shape":"MaintenanceWindowAutomationParameters",
-          "documentation":"<p>The parameters for a AUTOMATION task type.</p>"
+          "documentation":"<p>Parameters for a AUTOMATION task type.</p>"
         },
         "StepFunctions":{
           "shape":"MaintenanceWindowStepFunctionsParameters",
-          "documentation":"<p>The parameters for a STEP_FUNCTION task type.</p>"
+          "documentation":"<p>Parameters for a STEP_FUNCTION task type.</p>"
         },
         "Lambda":{
           "shape":"MaintenanceWindowLambdaParameters",
-          "documentation":"<p>The parameters for a LAMBDA task type.</p>"
+          "documentation":"<p>Parameters for a LAMBDA task type.</p>"
         }
       },
-      "documentation":"<p>The parameters for task execution.</p>"
+      "documentation":"<p>Parameters for task execution.</p>"
     },
     "MaintenanceWindowTaskList":{
       "type":"list",
@@ -8412,7 +8246,7 @@
         },
         "ItemContentHash":{
           "shape":"ComplianceItemContentHash",
-          "documentation":"<p>MD5 or SHA-256 content hash. The content hash is used to determine if existing information should be overwritten or ignored. If the content hashes match, the request to put compliance information is ignored.</p>"
+          "documentation":"<p>MD5 or Sha256 content hash. The content hash is used to determine if existing information should be overwritten or ignored. If the content hashes match, ,the request to put compliance information is ignored.</p>"
         }
       }
     },
@@ -8622,7 +8456,7 @@
         },
         "TaskInvocationParameters":{
           "shape":"MaintenanceWindowTaskInvocationParameters",
-          "documentation":"<p>The parameters that the task should use during execution. Populate only the fields that match the task type. All other fields should be empty. </p>"
+          "documentation":"<p>Parameters the task should use during execution. Populate only the fields that match the task type. All other fields should be empty. </p>"
         },
         "Priority":{
           "shape":"MaintenanceWindowTaskPriority",
@@ -9369,7 +9203,7 @@
         "TypeName":{"shape":"InventoryItemTypeName"},
         "Message":{"shape":"String"}
       },
-      "documentation":"<p>The <code>Context</code> attribute that you specified for the <code>InventoryItem</code> is not allowed for this inventory type. You can only use the <code>Context</code> attribute with inventory types like <code>AWS:ComplianceItem</code>.</p>",
+      "documentation":"<p>The <code>Context</code> attribute you specified for the <code>InventoryItem</code> is not allowed for this inventory type. You can only use the <code>Context</code> attribute with inventory types like <code>AWS:ComplianceItem</code>.</p>",
       "exception":true
     },
     "UnsupportedInventorySchemaVersionException":{
@@ -9435,14 +9269,6 @@
         "Targets":{
           "shape":"Targets",
           "documentation":"<p>The targets of the association.</p>"
-        },
-        "AssociationName":{
-          "shape":"AssociationName",
-          "documentation":"<p>The name of the association that you want to update.</p>"
-        },
-        "AssociationVersion":{
-          "shape":"AssociationVersion",
-          "documentation":"<p>This parameter is provided for concurrency control purposes. You must specify the latest association version in the service. If you want to ensure that this request succeeds, either specify <code>$LATEST</code>, or omit this parameter.</p>"
         }
       }
     },
@@ -9584,7 +9410,7 @@
         },
         "Replace":{
           "shape":"Boolean",
-          "documentation":"<p>If True, then all fields that are required by the CreateMaintenanceWindow action are also required for this API request. Optional fields that are not specified are set to null. </p>",
+          "documentation":"<p>If you specify True, then all fields that are required by the CreateMaintenanceWindow API are also required for this API request. Optional fields that are not specified will be set to null. </p>",
           "box":true
         }
       }
@@ -9635,15 +9461,15 @@
       "members":{
         "WindowId":{
           "shape":"MaintenanceWindowId",
-          "documentation":"<p>The Maintenance Window ID with which to modify the target.</p>"
+          "documentation":"<p>The Maintenance Window ID for which you want to modify the target.</p>"
         },
         "WindowTargetId":{
           "shape":"MaintenanceWindowTargetId",
-          "documentation":"<p>The target ID to modify.</p>"
+          "documentation":"<p>The target ID that you want to modify.</p>"
         },
         "Targets":{
           "shape":"Targets",
-          "documentation":"<p>The targets to add or replace.</p>"
+          "documentation":"<p>The targets that you want to add or replace.</p>"
         },
         "OwnerInformation":{
           "shape":"OwnerInformation",
@@ -9659,7 +9485,7 @@
         },
         "Replace":{
           "shape":"Boolean",
-          "documentation":"<p>If True, then all fields that are required by the RegisterTargetWithMaintenanceWindow action are also required for this API request. Optional fields that are not specified are set to null.</p>",
+          "documentation":"<p>If you specify True, then all fields that are required by the RegisterTargetWithMaintenanceWindow API are also required for this API request. Optional fields that are not specified will be set to null.</p>",
           "box":true
         }
       }
@@ -9702,35 +9528,35 @@
       "members":{
         "WindowId":{
           "shape":"MaintenanceWindowId",
-          "documentation":"<p>The Maintenance Window ID that contains the task to modify.</p>"
+          "documentation":"<p>The Maintenance Window ID that contains the task that you want to modify.</p>"
         },
         "WindowTaskId":{
           "shape":"MaintenanceWindowTaskId",
-          "documentation":"<p>The task ID to modify.</p>"
+          "documentation":"<p>The task ID that you want to modify.</p>"
         },
         "Targets":{
           "shape":"Targets",
-          "documentation":"<p>The targets (either instances or tags) to modify. Instances are specified using Key=instanceids,Values=instanceID_1,instanceID_2. Tags are specified using Key=tag_name,Values=tag_value. </p>"
+          "documentation":"<p>The targets (either instances or tags) that you want to modify. Instances are specified using Key=instanceids,Values=instanceID_1,instanceID_2. Tags are specified using Key=tag_name,Values=tag_value. </p>"
         },
         "TaskArn":{
           "shape":"MaintenanceWindowTaskArn",
-          "documentation":"<p>The task ARN to modify.</p>"
+          "documentation":"<p>The task ARN that you want to modify.</p>"
         },
         "ServiceRoleArn":{
           "shape":"ServiceRole",
-          "documentation":"<p>The IAM service role ARN to modify. The system assumes this role during task execution. </p>"
+          "documentation":"<p>The IAM service role ARN that you want to modify. The system assumes this role during task exectuion. </p>"
         },
         "TaskParameters":{
           "shape":"MaintenanceWindowTaskParameters",
-          "documentation":"<p>The parameters to modify. The map has the following format:</p> <p>Key: string, between 1 and 255 characters</p> <p>Value: an array of strings, each string is between 1 and 255 characters</p>"
+          "documentation":"<p>The parameters that you want to modify. The map has the following format:</p> <p>Key: string, between 1 and 255 characters</p> <p>Value: an array of strings, each string is between 1 and 255 characters</p>"
         },
         "TaskInvocationParameters":{
           "shape":"MaintenanceWindowTaskInvocationParameters",
-          "documentation":"<p>The parameters that the task should use during execution. Populate only the fields that match the task type. All other fields should be empty.</p>"
+          "documentation":"<p>Parameters the task should use during execution. Populate only the fields that match the task type. All other fields should be empty.</p>"
         },
         "Priority":{
           "shape":"MaintenanceWindowTaskPriority",
-          "documentation":"<p>The new task priority to specify. The lower the number, the higher the priority. Tasks that have the same priority are scheduled in parallel.</p>",
+          "documentation":"<p>The new task priority that you want to specify. The lower the number, the higher the priority. Tasks that have the same priority are scheduled in parallel.</p>",
           "box":true
         },
         "MaxConcurrency":{
@@ -9739,23 +9565,23 @@
         },
         "MaxErrors":{
           "shape":"MaxErrors",
-          "documentation":"<p>The new <code>MaxErrors</code> value to specify. <code>MaxErrors</code> is the maximum number of errors that are allowed before the task stops being scheduled.</p>"
+          "documentation":"<p>The new <code>MaxErrors</code> value you want to specify. <code>MaxErrors</code> is the maximum number of errors that are allowed before the task stops being scheduled.</p>"
         },
         "LoggingInfo":{
           "shape":"LoggingInfo",
-          "documentation":"<p>The new logging location in Amazon S3 to specify.</p>"
+          "documentation":"<p>The new logging location in Amazon S3 that you want to specify.</p>"
         },
         "Name":{
           "shape":"MaintenanceWindowName",
-          "documentation":"<p>The new task name to specify.</p>"
+          "documentation":"<p>The new task name that you want to specify.</p>"
         },
         "Description":{
           "shape":"MaintenanceWindowDescription",
-          "documentation":"<p>The new task description to specify.</p>"
+          "documentation":"<p>The new task description that you want to specify.</p>"
         },
         "Replace":{
           "shape":"Boolean",
-          "documentation":"<p>If True, then all fields that are required by the RegisterTaskWithMaintenanceWndow action are also required for this API request. Optional fields that are not specified are set to null.</p>",
+          "documentation":"<p>If you specify True, then all fields that are required by the RegisterTaskWithMaintenanceWndow API are also required for this API request. Optional fields that are not specified will be set to null.</p>",
           "box":true
         }
       }
@@ -9765,11 +9591,11 @@
       "members":{
         "WindowId":{
           "shape":"MaintenanceWindowId",
-          "documentation":"<p>The ID of the Maintenance Window that was updated.</p>"
+          "documentation":"<p>The Maintenance Window ID that was updated.</p>"
         },
         "WindowTaskId":{
           "shape":"MaintenanceWindowTaskId",
-          "documentation":"<p>The task ID of the Maintenance Window that was updated.</p>"
+          "documentation":"<p>The Maintenance Window task ID that was updated.</p>"
         },
         "Targets":{
           "shape":"Targets",
diff --git a/botocore/docs/bcdoc/style.py b/botocore/docs/bcdoc/style.py
index ac42d55e2..622974b26 100644
--- a/botocore/docs/bcdoc/style.py
+++ b/botocore/docs/bcdoc/style.py
@@ -220,18 +220,18 @@ class ReSTStyle(BaseStyle):
                 if ':' in last_write:
                     last_write = last_write.replace(':', r'\:')
                 self.doc.push_write(last_write)
-                self.doc.push_write(' <%s>`__' % self.a_href)
+                self.doc.push_write(' <%s>`_' % self.a_href)
             elif last_write == '`':
                 # Look at start_a().  It will do a self.doc.write('`')
                 # which is the start of the link title.  If that is the
                 # case then there was no link text.  We should just
                 # use an inline link.  The syntax of this is
                 # `<http://url>`_
-                self.doc.push_write('`<%s>`__' % self.a_href)
+                self.doc.push_write('`<%s>`_' % self.a_href)
             else:
                 self.doc.push_write(self.a_href)
                 self.doc.hrefs[self.a_href] = self.a_href
-                self.doc.write('`__')
+                self.doc.write('`_')
             self.a_href = None
         self.doc.write(' ')
 
diff --git a/botocore/docs/waiter.py b/botocore/docs/waiter.py
index 2fd3ec758..a38049c2d 100644
--- a/botocore/docs/waiter.py
+++ b/botocore/docs/waiter.py
@@ -11,6 +11,8 @@
 # ANY KIND, either express or implied. See the License for the specific
 # language governing permissions and limitations under the License.
 from botocore import xform_name
+from botocore.compat import OrderedDict
+from botocore.docs.utils import DocumentedShape
 from botocore.utils import get_service_module_name
 from botocore.docs.method import document_model_driven_method
 
@@ -82,6 +84,29 @@ def document_wait_method(section, waiter_name, event_emitter,
     operation_model = service_model.operation_model(
         waiter_model.operation)
 
+    waiter_config_members = OrderedDict()
+
+    waiter_config_members['Delay'] = DocumentedShape(
+        name='Delay', type_name='integer',
+        documentation=(
+            '<p>The amount of time in seconds to wait between '
+            'attempts. Default: {0}</p>'.format(waiter_model.delay)))
+
+    waiter_config_members['MaxAttempts'] = DocumentedShape(
+        name='MaxAttempts', type_name='integer',
+        documentation=(
+            '<p>The maximum number of attempts to be made. '
+            'Default: {0}</p>'.format(waiter_model.max_attempts)))
+
+    botocore_waiter_params = [
+        DocumentedShape(
+            name='WaiterConfig', type_name='structure',
+            documentation=(
+                '<p>A dictionary that provides parameters to control '
+                'waiting behavior.</p>'),
+            members=waiter_config_members)
+    ]
+
     wait_description = (
         'Polls :py:meth:`{0}.Client.{1}` every {2} '
         'seconds until a successful state is reached. An error is '
@@ -96,6 +121,7 @@ def document_wait_method(section, waiter_name, event_emitter,
         event_emitter=event_emitter,
         method_description=wait_description,
         example_prefix='waiter.wait',
+        include_input=botocore_waiter_params,
         document_output=False,
         include_signature=include_signature
     )
diff --git a/botocore/waiter.py b/botocore/waiter.py
index 78b6beb15..bc51facf1 100644
--- a/botocore/waiter.py
+++ b/botocore/waiter.py
@@ -287,9 +287,11 @@ class Waiter(object):
     def wait(self, **kwargs):
         acceptors = list(self.config.acceptors)
         current_state = 'waiting'
-        sleep_amount = self.config.delay
+        # pop the invocation specific config
+        config = kwargs.pop('WaiterConfig', {})
+        sleep_amount = config.get('Delay', self.config.delay)
+        max_attempts = config.get('MaxAttempts', self.config.max_attempts)
         num_attempts = 0
-        max_attempts = self.config.max_attempts
 
         while True:
             response = self._operation_method(**kwargs)
diff --git a/docs/source/conf.py b/docs/source/conf.py
index a93ec674e..4b7f74802 100644
--- a/docs/source/conf.py
+++ b/docs/source/conf.py
@@ -54,7 +54,7 @@ copyright = u'2013, Mitch Garnaat'
 # The short X.Y version.
 version = '1.6'
 # The full version, including alpha/beta/rc tags.
-release = '1.6.8'
+release = '1.6.3'
 
 # The language for content autogenerated by Sphinx. Refer to documentation
 # for a list of supported languages.


Test patch:
diff --git a/tests/unit/docs/bcdoc/test_style.py b/tests/unit/docs/bcdoc/test_style.py
index a6278733a..c561a0fad 100644
--- a/tests/unit/docs/bcdoc/test_style.py
+++ b/tests/unit/docs/bcdoc/test_style.py
@@ -153,7 +153,7 @@ class TestStyle(unittest.TestCase):
         style.end_a()
         self.assertEqual(
             style.doc.getvalue(),
-            six.b('`example <http://example.org>`__ ')
+            six.b('`example <http://example.org>`_ ')
         )
 
     def test_escape_href_link(self):
@@ -163,14 +163,14 @@ class TestStyle(unittest.TestCase):
         style.end_a()
         self.assertEqual(
             style.doc.getvalue(),
-            six.b('`foo\\: the next bar <http://example.org>`__ '))
+            six.b('`foo\\: the next bar <http://example.org>`_ '))
 
     def test_handle_no_text_hrefs(self):
         style = ReSTStyle(ReSTDocument())
         style.start_a(attrs=[('href', 'http://example.org')])
         style.end_a()
         self.assertEqual(style.doc.getvalue(),
-                         six.b('`<http://example.org>`__ '))
+                         six.b('`<http://example.org>`_ '))
 
     def test_sphinx_reference_label_html(self):
         style = ReSTStyle(ReSTDocument())
diff --git a/tests/unit/docs/test_waiter.py b/tests/unit/docs/test_waiter.py
index 23459d4c2..3529d1b8f 100644
--- a/tests/unit/docs/test_waiter.py
+++ b/tests/unit/docs/test_waiter.py
@@ -47,5 +47,14 @@ class TestWaiterDocumenter(BaseDocsTest):
             '      )',
             '    :type Biz: string',
             '    :param Biz:',
+            '    :type WaiterConfig: dict',
+            '    :param WaiterConfig:',
+            ('A dictionary that provides parameters to control waiting '
+             'behavior.'),
+            '     - **Delay** *(integer) --*',
+            ('        The amount of time in seconds to wait between attempts. '
+             'Default: 15'),
+            '      - **MaxAttempts** *(integer) --*',
+            '        The maximum number of attempts to be made. Default: 40',
             '    :returns: None'
         ])
diff --git a/tests/unit/test_waiters.py b/tests/unit/test_waiters.py
index d8ee6df38..6c431048c 100644
--- a/tests/unit/test_waiters.py
+++ b/tests/unit/test_waiters.py
@@ -493,6 +493,41 @@ class TestWaitersObjects(unittest.TestCase):
         self.assertEqual(sleep_mock.call_count, 2)
         sleep_mock.assert_called_with(delay_time)
 
+    @mock.patch('time.sleep')
+    def test_waiter_invocation_config_honors_delay(self, sleep_mock):
+        config = self.create_waiter_config()
+        operation_method = mock.Mock()
+        self.client_responses_are(
+            {'Success': False},
+            {'Success': False},
+            {'Success': False},
+            for_operation=operation_method
+        )
+        waiter = Waiter('MyWaiter', config, operation_method)
+        custom_delay = 3
+        with self.assertRaises(WaiterError):
+            waiter.wait(WaiterConfig={'Delay': custom_delay})
+
+        # We attempt three times, which means we need to sleep
+        # twice, once before each subsequent request.
+        self.assertEqual(sleep_mock.call_count, 2)
+        sleep_mock.assert_called_with(custom_delay)
+
+    def test_waiter_invocation_config_honors_max_attempts(self):
+        config = self.create_waiter_config()
+        operation_method = mock.Mock()
+        self.client_responses_are(
+            {'Success': False},
+            {'Success': False},
+            for_operation=operation_method
+        )
+        waiter = Waiter('MyWaiter', config, operation_method)
+        custom_max = 2
+        with self.assertRaises(WaiterError):
+            waiter.wait(WaiterConfig={'MaxAttempts': custom_max})
+
+        self.assertEqual(operation_method.call_count, 2)
+
 
 class TestCreateWaiter(unittest.TestCase):
     def setUp(self):