Repository: boto/botocore
Pull request #1253 (2017-07-28 21:12:28)

Fix escaped characters in shared example doc generation
Some shared examples have escape characters in them that get interpolated and rendered into the generated documentation which causes issues when we hand it off to sphinx.

Before:
<img width="956" alt="screen shot 2017-07-28 at 2 03 44 pm" src="https://user-images.githubusercontent.com/1935727/28736445-aeaadb66-739e-11e7-804c-1f66718661b0.png">

After:
<img width="838" alt="screen shot 2017-07-28 at 2 10 04 pm" src="https://user-images.githubusercontent.com/1935727/28736457-b2bd102a-739e-11e7-9e0f-b8e34f36ae68.png">


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

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

```diff
@@             Coverage Diff             @@
##           develop    #1253      +/-   ##
===========================================
- Coverage    98.03%   96.63%   -1.41%     
===========================================
  Files           45       45              
  Lines         7345     7345              
===========================================
- Hits          7201     7098     -103     
- Misses         144      247     +103
```


| [Impacted Files](https://codecov.io/gh/boto/botocore/pull/1253?src=pr&el=tree) | Coverage Δ | |
|---|---|---|
| [botocore/docs/sharedexample.py](https://codecov.io/gh/boto/botocore/pull/1253?src=pr&el=tree#diff-Ym90b2NvcmUvZG9jcy9zaGFyZWRleGFtcGxlLnB5) | `98.58% <100%> (ø)` | :arrow_up: |
| [botocore/compat.py](https://codecov.io/gh/boto/botocore/pull/1253?src=pr&el=tree#diff-Ym90b2NvcmUvY29tcGF0LnB5) | `57.77% <0%> (-34.08%)` | :arrow_down: |
| [botocore/awsrequest.py](https://codecov.io/gh/boto/botocore/pull/1253?src=pr&el=tree#diff-Ym90b2NvcmUvYXdzcmVxdWVzdC5weQ==) | `74.09% <0%> (-24.55%)` | :arrow_down: |
| [botocore/handlers.py](https://codecov.io/gh/boto/botocore/pull/1253?src=pr&el=tree#diff-Ym90b2NvcmUvaGFuZGxlcnMucHk=) | `95.83% <0%> (-0.5%)` | :arrow_down: |
| [botocore/utils.py](https://codecov.io/gh/boto/botocore/pull/1253?src=pr&el=tree#diff-Ym90b2NvcmUvdXRpbHMucHk=) | `95.79% <0%> (-0.21%)` | :arrow_down: |

------

[Continue to review full report at Codecov](https://codecov.io/gh/boto/botocore/pull/1253?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/1253?src=pr&el=footer). Last update [f83648d...36e58c3](https://codecov.io/gh/boto/botocore/pull/1253?src=pr&el=lastupdated). Read the [comment docs](https://docs.codecov.io/docs/pull-request-comments).


Patch:
diff --git a/.changes/1.5.91.json b/.changes/1.5.91.json
deleted file mode 100644
index 65ee113d1..000000000
--- a/.changes/1.5.91.json
+++ /dev/null
@@ -1,12 +0,0 @@
-[
-  {
-    "category": "``ssm``", 
-    "description": "Update ssm client to latest version", 
-    "type": "api-change"
-  }, 
-  {
-    "category": "``inspector``", 
-    "description": "Update inspector client to latest version", 
-    "type": "api-change"
-  }
-]
\ No newline at end of file
diff --git a/.changes/1.5.92.json b/.changes/1.5.92.json
deleted file mode 100644
index 156a05019..000000000
--- a/.changes/1.5.92.json
+++ /dev/null
@@ -1,22 +0,0 @@
-[
-  {
-    "category": "``ses``", 
-    "description": "Update ses client to latest version", 
-    "type": "api-change"
-  }, 
-  {
-    "category": "``pinpoint``", 
-    "description": "Update pinpoint client to latest version", 
-    "type": "api-change"
-  }, 
-  {
-    "category": "``codedeploy``", 
-    "description": "Update codedeploy client to latest version", 
-    "type": "api-change"
-  }, 
-  {
-    "category": "``config``", 
-    "description": "Update config client to latest version", 
-    "type": "api-change"
-  }
-]
\ No newline at end of file
diff --git a/CHANGELOG.rst b/CHANGELOG.rst
index 3ecbafc3d..e12d1cc6e 100644
--- a/CHANGELOG.rst
+++ b/CHANGELOG.rst
@@ -2,22 +2,6 @@
 CHANGELOG
 =========
 
-1.5.92
-======
-
-* api-change:``ses``: Update ses client to latest version
-* api-change:``pinpoint``: Update pinpoint client to latest version
-* api-change:``codedeploy``: Update codedeploy client to latest version
-* api-change:``config``: Update config client to latest version
-
-
-1.5.91
-======
-
-* api-change:``ssm``: Update ssm client to latest version
-* api-change:``inspector``: Update inspector client to latest version
-
-
 1.5.90
 ======
 
diff --git a/botocore/__init__.py b/botocore/__init__.py
index 4413e0751..1210364e3 100644
--- a/botocore/__init__.py
+++ b/botocore/__init__.py
@@ -16,7 +16,7 @@ import os
 import re
 import logging
 
-__version__ = '1.5.92'
+__version__ = '1.5.90'
 
 
 class NullHandler(logging.Handler):
diff --git a/botocore/data/codedeploy/2014-10-06/service-2.json b/botocore/data/codedeploy/2014-10-06/service-2.json
index c957487af..b9fcceeca 100644
--- a/botocore/data/codedeploy/2014-10-06/service-2.json
+++ b/botocore/data/codedeploy/2014-10-06/service-2.json
@@ -240,10 +240,7 @@
         {"shape":"InvalidAutoRollbackConfigException"},
         {"shape":"InvalidLoadBalancerInfoException"},
         {"shape":"InvalidDeploymentStyleException"},
-        {"shape":"InvalidBlueGreenDeploymentConfigurationException"},
-        {"shape":"InvalidEC2TagCombinationException"},
-        {"shape":"InvalidOnPremisesTagCombinationException"},
-        {"shape":"TagSetListLimitExceededException"}
+        {"shape":"InvalidBlueGreenDeploymentConfigurationException"}
       ],
       "documentation":"<p>Creates a deployment group to which application revisions will be deployed.</p>"
     },
@@ -686,10 +683,7 @@
         {"shape":"InvalidAutoRollbackConfigException"},
         {"shape":"InvalidLoadBalancerInfoException"},
         {"shape":"InvalidDeploymentStyleException"},
-        {"shape":"InvalidBlueGreenDeploymentConfigurationException"},
-        {"shape":"InvalidEC2TagCombinationException"},
-        {"shape":"InvalidOnPremisesTagCombinationException"},
-        {"shape":"TagSetListLimitExceededException"}
+        {"shape":"InvalidBlueGreenDeploymentConfigurationException"}
       ],
       "documentation":"<p>Changes information about a deployment group.</p>"
     }
@@ -1173,11 +1167,11 @@
         },
         "ec2TagFilters":{
           "shape":"EC2TagFilterList",
-          "documentation":"<p>The Amazon EC2 tags on which to filter. The deployment group will include EC2 instances with any of the specified tags. Cannot be used in the same call as ec2TagSet.</p>"
+          "documentation":"<p>The Amazon EC2 tags on which to filter. The deployment group will include EC2 instances with any of the specified tags.</p>"
         },
         "onPremisesInstanceTagFilters":{
           "shape":"TagFilterList",
-          "documentation":"<p>The on-premises instance tags on which to filter. The deployment group will include on-premises instances with any of the specified tags. Cannot be used in the same call as OnPremisesTagSet.</p>"
+          "documentation":"<p>The on-premises instance tags on which to filter. The deployment group will include on-premises instances with any of the specified tags.</p>"
         },
         "autoScalingGroups":{
           "shape":"AutoScalingGroupNameList",
@@ -1210,14 +1204,6 @@
         "loadBalancerInfo":{
           "shape":"LoadBalancerInfo",
           "documentation":"<p>Information about the load balancer used in a deployment.</p>"
-        },
-        "ec2TagSet":{
-          "shape":"EC2TagSet",
-          "documentation":"<p>Information about groups of tags applied to EC2 instances. The deployment group will include only EC2 instances identified by all the tag groups. Cannot be used in the same call as ec2TagFilters.</p>"
-        },
-        "onPremisesTagSet":{
-          "shape":"OnPremisesTagSet",
-          "documentation":"<p>Information about groups of tags applied to on-premises instances. The deployment group will include only on-premises instances identified by all the tag groups. Cannot be used in the same call as onPremisesInstanceTagFilters.</p>"
         }
       },
       "documentation":"<p>Represents the input of a CreateDeploymentGroup operation.</p>"
@@ -1464,11 +1450,11 @@
         },
         "ec2TagFilters":{
           "shape":"EC2TagFilterList",
-          "documentation":"<p>The Amazon EC2 tags on which to filter. The deployment group includes EC2 instances with any of the specified tags.</p>"
+          "documentation":"<p>The Amazon EC2 tags on which to filter.</p>"
         },
         "onPremisesInstanceTagFilters":{
           "shape":"TagFilterList",
-          "documentation":"<p>The on-premises instance tags on which to filter. The deployment group includes on-premises instances with any of the specified tags.</p>"
+          "documentation":"<p>The on-premises instance tags on which to filter.</p>"
         },
         "autoScalingGroups":{
           "shape":"AutoScalingGroupList",
@@ -1513,14 +1499,6 @@
         "lastAttemptedDeployment":{
           "shape":"LastDeploymentInfo",
           "documentation":"<p>Information about the most recent attempted deployment to the deployment group.</p>"
-        },
-        "ec2TagSet":{
-          "shape":"EC2TagSet",
-          "documentation":"<p>Information about groups of tags applied to an EC2 instance. The deployment group includes only EC2 instances identified by all the tag groups. Cannot be used in the same call as ec2TagFilters.</p>"
-        },
-        "onPremisesTagSet":{
-          "shape":"OnPremisesTagSet",
-          "documentation":"<p>Information about groups of tags applied to an on-premises instance. The deployment group includes only on-premises instances identified by all the tag groups. Cannot be used in the same call as onPremisesInstanceTagFilters.</p>"
         }
       },
       "documentation":"<p>Information about a deployment group.</p>"
@@ -1862,20 +1840,6 @@
         "KEY_AND_VALUE"
       ]
     },
-    "EC2TagSet":{
-      "type":"structure",
-      "members":{
-        "ec2TagSetList":{
-          "shape":"EC2TagSetList",
-          "documentation":"<p>A list containing other lists of EC2 instance tag groups. In order for an instance to be included in the deployment group, it must be identified by all the tag groups in the list.</p>"
-        }
-      },
-      "documentation":"<p>Information about groups of EC2 instance tags.</p>"
-    },
-    "EC2TagSetList":{
-      "type":"list",
-      "member":{"shape":"EC2TagFilterList"}
-    },
     "ELBInfo":{
       "type":"structure",
       "members":{
@@ -2464,13 +2428,6 @@
       "documentation":"<p>An invalid deployment style was specified. Valid deployment types include \"IN_PLACE\" and \"BLUE_GREEN\". Valid deployment options include \"WITH_TRAFFIC_CONTROL\" and \"WITHOUT_TRAFFIC_CONTROL\".</p>",
       "exception":true
     },
-    "InvalidEC2TagCombinationException":{
-      "type":"structure",
-      "members":{
-      },
-      "documentation":"<p>A call was submitted that specified both Ec2TagFilters and Ec2TagSet, but only one of these data types can be used in a single call.</p>",
-      "exception":true
-    },
     "InvalidEC2TagException":{
       "type":"structure",
       "members":{
@@ -2548,13 +2505,6 @@
       "documentation":"<p>The next token was specified in an invalid format.</p>",
       "exception":true
     },
-    "InvalidOnPremisesTagCombinationException":{
-      "type":"structure",
-      "members":{
-      },
-      "documentation":"<p>A call was submitted that specified both OnPremisesTagFilters and OnPremisesTagSet, but only one of these data types can be used in a single call.</p>",
-      "exception":true
-    },
     "InvalidOperationException":{
       "type":"structure",
       "members":{
@@ -3030,20 +2980,6 @@
     },
     "NextToken":{"type":"string"},
     "NullableBoolean":{"type":"boolean"},
-    "OnPremisesTagSet":{
-      "type":"structure",
-      "members":{
-        "onPremisesTagSetList":{
-          "shape":"OnPremisesTagSetList",
-          "documentation":"<p>A list containing other lists of on-premises instance tag groups. In order for an instance to be included in the deployment group, it must be identified by all the tag groups in the list.</p>"
-        }
-      },
-      "documentation":"<p>Information about groups of on-premises instance tags.</p>"
-    },
-    "OnPremisesTagSetList":{
-      "type":"list",
-      "member":{"shape":"TagFilterList"}
-    },
     "RegisterApplicationRevisionInput":{
       "type":"structure",
       "required":[
@@ -3348,27 +3284,16 @@
       "documentation":"<p>A tag was not specified.</p>",
       "exception":true
     },
-    "TagSetListLimitExceededException":{
-      "type":"structure",
-      "members":{
-      },
-      "documentation":"<p>The number of tag groups included in the tag set list exceeded the maximum allowed limit of 3.</p>",
-      "exception":true
-    },
     "TargetInstances":{
       "type":"structure",
       "members":{
         "tagFilters":{
           "shape":"EC2TagFilterList",
-          "documentation":"<p>The tag filter key, type, and value used to identify Amazon EC2 instances in a replacement environment for a blue/green deployment. Cannot be used in the same call as ec2TagSet.</p>"
+          "documentation":"<p>The tag filter key, type, and value used to identify Amazon EC2 instances in a replacement environment for a blue/green deployment.</p>"
         },
         "autoScalingGroups":{
           "shape":"AutoScalingGroupNameList",
           "documentation":"<p>The names of one or more Auto Scaling groups to identify a replacement environment for a blue/green deployment.</p>"
-        },
-        "ec2TagSet":{
-          "shape":"EC2TagSet",
-          "documentation":"<p>Information about the groups of EC2 instance tags that an instance must be identified by in order for it to be included in the replacement environment for a blue/green deployment. Cannot be used in the same call as tagFilters.</p>"
         }
       },
       "documentation":"<p>Information about the instances to be used in the replacement environment in a blue/green deployment.</p>"
@@ -3521,14 +3446,6 @@
         "loadBalancerInfo":{
           "shape":"LoadBalancerInfo",
           "documentation":"<p>Information about the load balancer used in a deployment.</p>"
-        },
-        "ec2TagSet":{
-          "shape":"EC2TagSet",
-          "documentation":"<p>Information about groups of tags applied to on-premises instances. The deployment group will include only EC2 instances identified by all the tag groups.</p>"
-        },
-        "onPremisesTagSet":{
-          "shape":"OnPremisesTagSet",
-          "documentation":"<p>Information about an on-premises instance tag set. The deployment group will include only on-premises instances identified by all the tag groups.</p>"
         }
       },
       "documentation":"<p>Represents the input of an UpdateDeploymentGroup operation.</p>"
diff --git a/botocore/data/config/2014-11-12/service-2.json b/botocore/data/config/2014-11-12/service-2.json
index bdea5c422..3258b4071 100644
--- a/botocore/data/config/2014-11-12/service-2.json
+++ b/botocore/data/config/2014-11-12/service-2.json
@@ -239,21 +239,6 @@
       ],
       "documentation":"<p>Returns the number of resources that are compliant and the number that are noncompliant. You can specify one or more resource types to get these numbers for each resource type. The maximum number returned is 100.</p>"
     },
-    "GetDiscoveredResourceCounts":{
-      "name":"GetDiscoveredResourceCounts",
-      "http":{
-        "method":"POST",
-        "requestUri":"/"
-      },
-      "input":{"shape":"GetDiscoveredResourceCountsRequest"},
-      "output":{"shape":"GetDiscoveredResourceCountsResponse"},
-      "errors":[
-        {"shape":"ValidationException"},
-        {"shape":"InvalidLimitException"},
-        {"shape":"InvalidNextTokenException"}
-      ],
-      "documentation":"<p>Returns the resource types, the number of each resource type, and the total number of resources that AWS Config is recording in this region for your AWS account. </p> <p class=\"title\"> <b>Example</b> </p> <ol> <li> <p>AWS Config is recording three resource types in the US East (Ohio) Region for your account: 25 EC2 instances, 20 IAM users, and 15 S3 buckets.</p> </li> <li> <p>You make a call to the <code>GetDiscoveredResourceCounts</code> action and specify that you want all resource types. </p> </li> <li> <p>AWS Config returns the following:</p> <ul> <li> <p>The resource types (EC2 instances, IAM users, and S3 buckets)</p> </li> <li> <p>The number of each resource type (25, 20, and 15)</p> </li> <li> <p>The total number of all resources (60)</p> </li> </ul> </li> </ol> <p>The response is paginated. By default, AWS Config lists 100 <a>ResourceCount</a> objects on each page. You can customize this number with the <code>limit</code> parameter. The response includes a <code>nextToken</code> string. To get the next page of results, run the request again and specify the string for the <code>nextToken</code> parameter.</p> <note> <p>If you make a call to the <a>GetDiscoveredResourceCounts</a> action, you may not immediately receive resource counts in the following situations:</p> <ul> <li> <p>You are a new AWS Config customer</p> </li> <li> <p>You just enabled resource recording</p> </li> </ul> <p>It may take a few minutes for AWS Config to record and count your resources. Wait a few minutes and then retry the <a>GetDiscoveredResourceCounts</a> action. </p> </note>"
-    },
     "GetResourceConfigHistory":{
       "name":"GetResourceConfigHistory",
       "http":{
@@ -270,7 +255,7 @@
         {"shape":"NoAvailableConfigurationRecorderException"},
         {"shape":"ResourceNotDiscoveredException"}
       ],
-      "documentation":"<p>Returns a list of configuration items for the specified resource. The list contains details about each state of the resource during the specified time interval.</p> <p>The response is paginated. By default, AWS Config returns a limit of 10 configuration items per page. You can customize this number with the <code>limit</code> parameter. The response includes a <code>nextToken</code> string. To get the next page of results, run the request again and specify the string for the <code>nextToken</code> parameter.</p> <note> <p>Each call to the API is limited to span a duration of seven days. It is likely that the number of records returned is smaller than the specified <code>limit</code>. In such cases, you can make another call, using the <code>nextToken</code>.</p> </note>"
+      "documentation":"<p>Returns a list of configuration items for the specified resource. The list contains details about each state of the resource during the specified time interval.</p> <p>The response is paginated, and by default, AWS Config returns a limit of 10 configuration items per page. You can customize this number with the <code>limit</code> parameter. The response includes a <code>nextToken</code> string, and to get the next page of results, run the request again and enter this string for the <code>nextToken</code> parameter.</p> <note> <p>Each call to the API is limited to span a duration of seven days. It is likely that the number of records returned is smaller than the specified <code>limit</code>. In such cases, you can make another call, using the <code>nextToken</code>.</p> </note>"
     },
     "ListDiscoveredResources":{
       "name":"ListDiscoveredResources",
@@ -286,7 +271,7 @@
         {"shape":"InvalidNextTokenException"},
         {"shape":"NoAvailableConfigurationRecorderException"}
       ],
-      "documentation":"<p>Accepts a resource type and returns a list of resource identifiers for the resources of that type. A resource identifier includes the resource type, ID, and (if available) the custom resource name. The results consist of resources that AWS Config has discovered, including those that AWS Config is not currently recording. You can narrow the results to include only resources that have specific resource IDs or a resource name.</p> <note> <p>You can specify either resource IDs or a resource name but not both in the same request.</p> </note> <p>The response is paginated. By default, AWS Config lists 100 resource identifiers on each page. You can customize this number with the <code>limit</code> parameter. The response includes a <code>nextToken</code> string. To get the next page of results, run the request again and specify the string for the <code>nextToken</code> parameter.</p>"
+      "documentation":"<p>Accepts a resource type and returns a list of resource identifiers for the resources of that type. A resource identifier includes the resource type, ID, and (if available) the custom resource name. The results consist of resources that AWS Config has discovered, including those that AWS Config is not currently recording. You can narrow the results to include only resources that have specific resource IDs or a resource name.</p> <note> <p>You can specify either resource IDs or a resource name but not both in the same request.</p> </note> <p>The response is paginated, and by default AWS Config lists 100 resource identifiers on each page. You can customize this number with the <code>limit</code> parameter. The response includes a <code>nextToken</code> string, and to get the next page of results, run the request again and enter this string for the <code>nextToken</code> parameter.</p>"
     },
     "PutConfigRule":{
       "name":"PutConfigRule",
@@ -1452,40 +1437,6 @@
       },
       "documentation":"<p/>"
     },
-    "GetDiscoveredResourceCountsRequest":{
-      "type":"structure",
-      "members":{
-        "resourceTypes":{
-          "shape":"ResourceTypes",
-          "documentation":"<p>The comma-separated list that specifies the resource types that you want the AWS Config to return. For example, (<code>\"AWS::EC2::Instance\"</code>, <code>\"AWS::IAM::User\"</code>).</p> <p>If a value for <code>resourceTypes</code> is not specified, AWS Config returns all resource types that AWS Config is recording in the region for your account.</p> <note> <p>If the configuration recorder is turned off, AWS Config returns an empty list of <a>ResourceCount</a> objects. If the configuration recorder is not recording a specific resource type (for example, S3 buckets), that resource type is not returned in the list of <a>ResourceCount</a> objects.</p> </note>"
-        },
-        "limit":{
-          "shape":"Limit",
-          "documentation":"<p>The maximum number of <a>ResourceCount</a> objects returned on each page. The default is 100. You cannot specify a limit greater than 100. If you specify 0, AWS Config uses the default.</p>"
-        },
-        "nextToken":{
-          "shape":"NextToken",
-          "documentation":"<p>The <code>nextToken</code> string returned on a previous page that you use to get the next page of results in a paginated response.</p>"
-        }
-      }
-    },
-    "GetDiscoveredResourceCountsResponse":{
-      "type":"structure",
-      "members":{
-        "totalDiscoveredResources":{
-          "shape":"Long",
-          "documentation":"<p>The total number of resources that AWS Config is recording in the region for your account. If you specify resource types in the request, AWS Config returns only the total number of resources for those resource types.</p> <p class=\"title\"> <b>Example</b> </p> <ol> <li> <p>AWS Config is recording three resource types in the US East (Ohio) Region for your account: 25 EC2 instances, 20 IAM users, and 15 S3 buckets, for a total of 60 resources.</p> </li> <li> <p>You make a call to the <code>GetDiscoveredResourceCounts</code> action and specify the resource type, <code>\"AWS::EC2::Instances\"</code> in the request.</p> </li> <li> <p>AWS Config returns 25 for <code>totalDiscoveredResources</code>.</p> </li> </ol>"
-        },
-        "resourceCounts":{
-          "shape":"ResourceCounts",
-          "documentation":"<p>The list of <code>ResourceCount</code> objects. Each object is listed in descending order by the number of resources.</p>"
-        },
-        "nextToken":{
-          "shape":"NextToken",
-          "documentation":"<p>The string that you use in a subsequent request to get the next page of results in a paginated response.</p>"
-        }
-      }
-    },
     "GetResourceConfigHistoryRequest":{
       "type":"structure",
       "required":[
@@ -1696,7 +1647,6 @@
       },
       "documentation":"<p/>"
     },
-    "Long":{"type":"long"},
     "MaxNumberOfConfigRulesExceededException":{
       "type":"structure",
       "members":{
@@ -1926,24 +1876,6 @@
       "member":{"shape":"Relationship"}
     },
     "RelationshipName":{"type":"string"},
-    "ResourceCount":{
-      "type":"structure",
-      "members":{
-        "resourceType":{
-          "shape":"ResourceType",
-          "documentation":"<p>The resource type, for example <code>\"AWS::EC2::Instance\"</code>.</p>"
-        },
-        "count":{
-          "shape":"Long",
-          "documentation":"<p>The number of resources.</p>"
-        }
-      },
-      "documentation":"<p>An object that contains the resource type and the number of resources.</p>"
-    },
-    "ResourceCounts":{
-      "type":"list",
-      "member":{"shape":"ResourceCount"}
-    },
     "ResourceCreationTime":{"type":"timestamp"},
     "ResourceDeletionTime":{"type":"timestamp"},
     "ResourceId":{"type":"string"},
@@ -2029,8 +1961,7 @@
         "AWS::Redshift::ClusterSecurityGroup",
         "AWS::Redshift::ClusterSubnetGroup",
         "AWS::Redshift::EventSubscription",
-        "AWS::CloudWatch::Alarm",
-        "AWS::CloudFormation::Stack"
+        "AWS::CloudWatch::Alarm"
       ]
     },
     "ResourceTypeList":{
@@ -2083,7 +2014,7 @@
         },
         "SourceIdentifier":{
           "shape":"StringWithCharLimit256",
-          "documentation":"<p>For AWS Config managed rules, a predefined identifier from a list. For example, <code>IAM_PASSWORD_POLICY</code> is a managed rule. To reference a managed rule, see <a href=\"http://docs.aws.amazon.com/config/latest/developerguide/evaluate-config_use-managed-rules.html\">Using AWS Managed Config Rules</a>.</p> <p>For custom rules, the identifier is the Amazon Resource Name (ARN) of the rule's AWS Lambda function, such as <code>arn:aws:lambda:us-east-2:123456789012:function:custom_rule_name</code>.</p>"
+          "documentation":"<p>For AWS Config managed rules, a predefined identifier from a list. For example, <code>IAM_PASSWORD_POLICY</code> is a managed rule. To reference a managed rule, see <a href=\"http://docs.aws.amazon.com/config/latest/developerguide/evaluate-config_use-managed-rules.html\">Using AWS Managed Config Rules</a>.</p> <p>For custom rules, the identifier is the Amazon Resource Name (ARN) of the rule's AWS Lambda function, such as <code>arn:aws:lambda:us-east-1:123456789012:function:custom_rule_name</code>.</p>"
         },
         "SourceDetails":{
           "shape":"SourceDetails",
diff --git a/botocore/data/endpoints.json b/botocore/data/endpoints.json
index 7ee07357f..0a778d0d4 100644
--- a/botocore/data/endpoints.json
+++ b/botocore/data/endpoints.json
@@ -341,9 +341,6 @@
       },
       "codestar" : {
         "endpoints" : {
-          "ap-southeast-1" : { },
-          "ap-southeast-2" : { },
-          "eu-central-1" : { },
           "eu-west-1" : { },
           "us-east-1" : { },
           "us-east-2" : { },
@@ -2003,4 +2000,4 @@
     }
   } ],
   "version" : 3
-}
\ No newline at end of file
+}
diff --git a/botocore/data/inspector/2016-02-16/service-2.json b/botocore/data/inspector/2016-02-16/service-2.json
index a93d0e72b..3c9b3e408 100644
--- a/botocore/data/inspector/2016-02-16/service-2.json
+++ b/botocore/data/inspector/2016-02-16/service-2.json
@@ -1027,8 +1027,7 @@
         "FAILED",
         "ERROR",
         "COMPLETED",
-        "COMPLETED_WITH_ERRORS",
-        "CANCELED"
+        "COMPLETED_WITH_ERRORS"
       ]
     },
     "AssessmentRunStateChange":{
@@ -1331,7 +1330,7 @@
         },
         "userAttributesForFindings":{
           "shape":"UserAttributeList",
-          "documentation":"<p>The user-defined attributes that are assigned to every finding that is generated by the assessment run that uses this assessment template. An attribute is a key and value pair (an <a>Attribute</a> object). Within an assessment template, each key must be unique.</p>"
+          "documentation":"<p>The user-defined attributes that are assigned to every finding that is generated by the assessment run that uses this assessment template.</p>"
         }
       }
     },
@@ -2670,13 +2669,6 @@
         }
       }
     },
-    "StopAction":{
-      "type":"string",
-      "enum":[
-        "START_EVALUATION",
-        "SKIP_EVALUATION"
-      ]
-    },
     "StopAssessmentRunRequest":{
       "type":"structure",
       "required":["assessmentRunArn"],
@@ -2684,10 +2676,6 @@
         "assessmentRunArn":{
           "shape":"Arn",
           "documentation":"<p>The ARN of the assessment run that you want to stop.</p>"
-        },
-        "stopAction":{
-          "shape":"StopAction",
-          "documentation":"<p>An input option that can be set to either START_EVALUATION or SKIP_EVALUATION. START_EVALUATION (the default value), stops the AWS agent from collecting data and begins the results evaluation and the findings generation process. SKIP_EVALUATION cancels the assessment run immediately, after which no findings are generated.</p>"
         }
       }
     },
diff --git a/botocore/data/pinpoint/2016-12-01/service-2.json b/botocore/data/pinpoint/2016-12-01/service-2.json
index 6ceb040b3..fa7ab4c52 100644
--- a/botocore/data/pinpoint/2016-12-01/service-2.json
+++ b/botocore/data/pinpoint/2016-12-01/service-2.json
@@ -9,34 +9,6 @@
     "jsonVersion" : "1.1"
   },
   "operations" : {
-    "CreateApp" : {
-      "name" : "CreateApp",
-      "http" : {
-        "method" : "POST",
-        "requestUri" : "/v1/apps",
-        "responseCode" : 201
-      },
-      "input" : {
-        "shape" : "CreateAppRequest"
-      },
-      "output" : {
-        "shape" : "CreateAppResponse"
-      },
-      "errors" : [ {
-        "shape" : "BadRequestException"
-      }, {
-        "shape" : "InternalServerErrorException"
-      }, {
-        "shape" : "ForbiddenException"
-      }, {
-        "shape" : "NotFoundException"
-      }, {
-        "shape" : "MethodNotAllowedException"
-      }, {
-        "shape" : "TooManyRequestsException"
-      } ],
-      "documentation" : "Used to create an app."
-    },
     "CreateCampaign" : {
       "name" : "CreateCampaign",
       "http" : {
@@ -177,34 +149,6 @@
       } ],
       "documentation" : "Delete an APNS sandbox channel"
     },
-    "DeleteApp" : {
-      "name" : "DeleteApp",
-      "http" : {
-        "method" : "DELETE",
-        "requestUri" : "/v1/apps/{application-id}",
-        "responseCode" : 200
-      },
-      "input" : {
-        "shape" : "DeleteAppRequest"
-      },
-      "output" : {
-        "shape" : "DeleteAppResponse"
-      },
-      "errors" : [ {
-        "shape" : "BadRequestException"
-      }, {
-        "shape" : "InternalServerErrorException"
-      }, {
-        "shape" : "ForbiddenException"
-      }, {
-        "shape" : "NotFoundException"
-      }, {
-        "shape" : "MethodNotAllowedException"
-      }, {
-        "shape" : "TooManyRequestsException"
-      } ],
-      "documentation" : "Deletes an app."
-    },
     "DeleteCampaign" : {
       "name" : "DeleteCampaign",
       "http" : {
@@ -429,34 +373,6 @@
       } ],
       "documentation" : "Get an APNS sandbox channel"
     },
-    "GetApp" : {
-      "name" : "GetApp",
-      "http" : {
-        "method" : "GET",
-        "requestUri" : "/v1/apps/{application-id}",
-        "responseCode" : 200
-      },
-      "input" : {
-        "shape" : "GetAppRequest"
-      },
-      "output" : {
-        "shape" : "GetAppResponse"
-      },
-      "errors" : [ {
-        "shape" : "BadRequestException"
-      }, {
-        "shape" : "InternalServerErrorException"
-      }, {
-        "shape" : "ForbiddenException"
-      }, {
-        "shape" : "NotFoundException"
-      }, {
-        "shape" : "MethodNotAllowedException"
-      }, {
-        "shape" : "TooManyRequestsException"
-      } ],
-      "documentation" : "Returns information about an app."
-    },
     "GetApplicationSettings" : {
       "name" : "GetApplicationSettings",
       "http" : {
@@ -485,34 +401,6 @@
       } ],
       "documentation" : "Used to request the settings for an app."
     },
-    "GetApps" : {
-      "name" : "GetApps",
-      "http" : {
-        "method" : "GET",
-        "requestUri" : "/v1/apps",
-        "responseCode" : 200
-      },
-      "input" : {
-        "shape" : "GetAppsRequest"
-      },
-      "output" : {
-        "shape" : "GetAppsResponse"
-      },
-      "errors" : [ {
-        "shape" : "BadRequestException"
-      }, {
-        "shape" : "InternalServerErrorException"
-      }, {
-        "shape" : "ForbiddenException"
-      }, {
-        "shape" : "NotFoundException"
-      }, {
-        "shape" : "MethodNotAllowedException"
-      }, {
-        "shape" : "TooManyRequestsException"
-      } ],
-      "documentation" : "Returns information about your apps."
-    },
     "GetCampaign" : {
       "name" : "GetCampaign",
       "http" : {
@@ -1362,7 +1250,7 @@
         },
         "Id" : {
           "shape" : "__string",
-          "documentation" : "Channel ID. Not used. Present only for backwards compatibility."
+          "documentation" : "Channel ID. Not used, only for backwards compatibility."
         },
         "IsArchived" : {
           "shape" : "__boolean",
@@ -1496,7 +1384,7 @@
         },
         "Platform" : {
           "shape" : "__string",
-          "documentation" : "The platform type. Will be APNS_SANDBOX."
+          "documentation" : "The platform type. Will be APNS."
         },
         "Version" : {
           "shape" : "__integer",
@@ -1586,7 +1474,7 @@
         },
         "ChannelType" : {
           "shape" : "ChannelType",
-          "documentation" : "The channel type.\n\nValid values: GCM | APNS | SMS | EMAIL"
+          "documentation" : "Type of channel of this address"
         },
         "Context" : {
           "shape" : "MapOf__string",
@@ -1607,20 +1495,6 @@
       },
       "documentation" : "Address configuration."
     },
-    "ApplicationResponse" : {
-      "type" : "structure",
-      "members" : {
-        "Id" : {
-          "shape" : "__string",
-          "documentation" : "The unique application ID."
-        },
-        "Name" : {
-          "shape" : "__string",
-          "documentation" : "The display name of the application."
-        }
-      },
-      "documentation" : "Application Response."
-    },
     "ApplicationSettingsResource" : {
       "type" : "structure",
       "members" : {
@@ -1643,20 +1517,6 @@
       },
       "documentation" : "Application settings."
     },
-    "ApplicationsResponse" : {
-      "type" : "structure",
-      "members" : {
-        "Item" : {
-          "shape" : "ListOfApplicationResponse",
-          "documentation" : "List of applications returned in this page."
-        },
-        "NextToken" : {
-          "shape" : "__string",
-          "documentation" : "The string that you use in a subsequent request to get the next page of results in a paginated response."
-        }
-      },
-      "documentation" : "Get Applications Result."
-    },
     "AttributeDimension" : {
       "type" : "structure",
       "members" : {
@@ -1700,10 +1560,6 @@
           "shape" : "__string",
           "documentation" : "The email text body."
         },
-        "FromAddress" : {
-          "shape" : "__string",
-          "documentation" : "The email address used to send the email from. Defaults to use FromAddress specified in the Email Channel."
-        },
         "HtmlBody" : {
           "shape" : "__string",
           "documentation" : "The email html body."
@@ -1861,36 +1717,6 @@
       "type" : "string",
       "enum" : [ "GCM", "APNS", "APNS_SANDBOX", "ADM", "SMS", "EMAIL" ]
     },
-    "CreateAppRequest" : {
-      "type" : "structure",
-      "members" : {
-        "CreateApplicationRequest" : {
-          "shape" : "CreateApplicationRequest"
-        }
-      },
-      "required" : [ "CreateApplicationRequest" ],
-      "payload" : "CreateApplicationRequest"
-    },
-    "CreateAppResponse" : {
-      "type" : "structure",
-      "members" : {
-        "ApplicationResponse" : {
-          "shape" : "ApplicationResponse"
-        }
-      },
-      "required" : [ "ApplicationResponse" ],
-      "payload" : "ApplicationResponse"
-    },
-    "CreateApplicationRequest" : {
-      "type" : "structure",
-      "members" : {
-        "Name" : {
-          "shape" : "__string",
-          "documentation" : "The display name of the application. Used in the Amazon Pinpoint console."
-        }
-      },
-      "documentation" : "Application Request."
-    },
     "CreateCampaignRequest" : {
       "type" : "structure",
       "members" : {
@@ -2056,27 +1882,6 @@
       "required" : [ "APNSSandboxChannelResponse" ],
       "payload" : "APNSSandboxChannelResponse"
     },
-    "DeleteAppRequest" : {
-      "type" : "structure",
-      "members" : {
-        "ApplicationId" : {
-          "shape" : "__string",
-          "location" : "uri",
-          "locationName" : "application-id"
-        }
-      },
-      "required" : [ "ApplicationId" ]
-    },
-    "DeleteAppResponse" : {
-      "type" : "structure",
-      "members" : {
-        "ApplicationResponse" : {
-          "shape" : "ApplicationResponse"
-        }
-      },
-      "required" : [ "ApplicationResponse" ],
-      "payload" : "ApplicationResponse"
-    },
     "DeleteCampaignRequest" : {
       "type" : "structure",
       "members" : {
@@ -2281,7 +2086,7 @@
       "members" : {
         "ApplicationId" : {
           "shape" : "__string",
-          "documentation" : "The unique ID of the application to which the email channel belongs."
+          "documentation" : "Application id"
         },
         "CreationDate" : {
           "shape" : "__string",
@@ -2343,7 +2148,7 @@
         },
         "ChannelType" : {
           "shape" : "ChannelType",
-          "documentation" : "The channel type.\n\nValid values: GCM | APNS | SMS | EMAIL"
+          "documentation" : "The channel type.\n\nValid values: APNS, GCM"
         },
         "Demographic" : {
           "shape" : "EndpointDemographic",
@@ -2371,7 +2176,7 @@
         },
         "OptOut" : {
           "shape" : "__string",
-          "documentation" : "Indicates whether a user has opted out of receiving messages with one of the following values:\n\nALL - User has opted out of all messages.\n\nNONE - Users has not opted out and receives all messages."
+          "documentation" : "Indicates whether a user has opted out of receiving messages with one of the following values:\n\nALL – User receives all messages.\nNONE – User receives no messages."
         },
         "RequestId" : {
           "shape" : "__string",
@@ -2475,7 +2280,7 @@
         },
         "ChannelType" : {
           "shape" : "ChannelType",
-          "documentation" : "The channel type.\n\nValid values: GCM | APNS | SMS | EMAIL"
+          "documentation" : "The channel type.\n\nValid values: APNS, GCM"
         },
         "Demographic" : {
           "shape" : "EndpointDemographic",
@@ -2499,7 +2304,7 @@
         },
         "OptOut" : {
           "shape" : "__string",
-          "documentation" : "Indicates whether a user has opted out of receiving messages with one of the following values:\n\nALL - User has opted out of all messages.\n\nNONE - Users has not opted out and receives all messages."
+          "documentation" : "Indicates whether a user has opted out of receiving messages with one of the following values:\n\nALL – User receives all messages.\nNONE – User receives no messages."
         },
         "RequestId" : {
           "shape" : "__string",
@@ -2529,7 +2334,7 @@
         },
         "ChannelType" : {
           "shape" : "ChannelType",
-          "documentation" : "The channel type.\n\nValid values: GCM | APNS | SMS | EMAIL"
+          "documentation" : "The channel type.\n\nValid values: APNS, GCM"
         },
         "CohortId" : {
           "shape" : "__string",
@@ -2565,7 +2370,7 @@
         },
         "OptOut" : {
           "shape" : "__string",
-          "documentation" : "Indicates whether a user has opted out of receiving messages with one of the following values:\n\nALL - User has opted out of all messages.\n\nNONE - Users has not opted out and receives all messages."
+          "documentation" : "Indicates whether a user has opted out of receiving messages with one of the following values:\n\nALL – User receives all messages.\nNONE – User receives no messages."
         },
         "RequestId" : {
           "shape" : "__string",
@@ -2687,7 +2492,7 @@
         },
         "Id" : {
           "shape" : "__string",
-          "documentation" : "Channel ID. Not used. Present only for backwards compatibility."
+          "documentation" : "Channel ID. Not used, only for backwards compatibility."
         },
         "IsArchived" : {
           "shape" : "__boolean",
@@ -2820,27 +2625,6 @@
       "required" : [ "APNSSandboxChannelResponse" ],
       "payload" : "APNSSandboxChannelResponse"
     },
-    "GetAppRequest" : {
-      "type" : "structure",
-      "members" : {
-        "ApplicationId" : {
-          "shape" : "__string",
-          "location" : "uri",
-          "locationName" : "application-id"
-        }
-      },
-      "required" : [ "ApplicationId" ]
-    },
-    "GetAppResponse" : {
-      "type" : "structure",
-      "members" : {
-        "ApplicationResponse" : {
-          "shape" : "ApplicationResponse"
-        }
-      },
-      "required" : [ "ApplicationResponse" ],
-      "payload" : "ApplicationResponse"
-    },
     "GetApplicationSettingsRequest" : {
       "type" : "structure",
       "members" : {
@@ -2862,31 +2646,6 @@
       "required" : [ "ApplicationSettingsResource" ],
       "payload" : "ApplicationSettingsResource"
     },
-    "GetAppsRequest" : {
-      "type" : "structure",
-      "members" : {
-        "PageSize" : {
-          "shape" : "__string",
-          "location" : "querystring",
-          "locationName" : "page-size"
-        },
-        "Token" : {
-          "shape" : "__string",
-          "location" : "querystring",
-          "locationName" : "token"
-        }
-      }
-    },
-    "GetAppsResponse" : {
-      "type" : "structure",
-      "members" : {
-        "ApplicationsResponse" : {
-          "shape" : "ApplicationsResponse"
-        }
-      },
-      "required" : [ "ApplicationsResponse" ],
-      "payload" : "ApplicationsResponse"
-    },
     "GetCampaignActivitiesRequest" : {
       "type" : "structure",
       "members" : {
@@ -2903,14 +2662,12 @@
         "PageSize" : {
           "shape" : "__string",
           "location" : "querystring",
-          "locationName" : "page-size",
-          "documentation" : "The number of entries you want on each page in the response."
+          "locationName" : "page-size"
         },
         "Token" : {
           "shape" : "__string",
           "location" : "querystring",
-          "locationName" : "token",
-          "documentation" : "The NextToken string returned on a previous page that you use to get the next page of results in a paginated response."
+          "locationName" : "token"
         }
       },
       "required" : [ "ApplicationId", "CampaignId" ]
@@ -2998,14 +2755,12 @@
         "PageSize" : {
           "shape" : "__string",
           "location" : "querystring",
-          "locationName" : "page-size",
-          "documentation" : "The number of entries you want on each page in the response."
+          "locationName" : "page-size"
         },
         "Token" : {
           "shape" : "__string",
           "location" : "querystring",
-          "locationName" : "token",
-          "documentation" : "The NextToken string returned on a previous page that you use to get the next page of results in a paginated response."
+          "locationName" : "token"
         }
       },
       "required" : [ "ApplicationId", "CampaignId" ]
@@ -3031,14 +2786,12 @@
         "PageSize" : {
           "shape" : "__string",
           "location" : "querystring",
-          "locationName" : "page-size",
-          "documentation" : "The number of entries you want on each page in the response."
+          "locationName" : "page-size"
         },
         "Token" : {
           "shape" : "__string",
           "location" : "querystring",
-          "locationName" : "token",
-          "documentation" : "The NextToken string returned on a previous page that you use to get the next page of results in a paginated response."
+          "locationName" : "token"
         }
       },
       "required" : [ "ApplicationId" ]
@@ -3182,14 +2935,12 @@
         "PageSize" : {
           "shape" : "__string",
           "location" : "querystring",
-          "locationName" : "page-size",
-          "documentation" : "The number of entries you want on each page in the response."
+          "locationName" : "page-size"
         },
         "Token" : {
           "shape" : "__string",
           "location" : "querystring",
-          "locationName" : "token",
-          "documentation" : "The NextToken string returned on a previous page that you use to get the next page of results in a paginated response."
+          "locationName" : "token"
         }
       },
       "required" : [ "ApplicationId" ]
@@ -3215,8 +2966,7 @@
         "PageSize" : {
           "shape" : "__string",
           "location" : "querystring",
-          "locationName" : "page-size",
-          "documentation" : "The number of entries you want on each page in the response."
+          "locationName" : "page-size"
         },
         "SegmentId" : {
           "shape" : "__string",
@@ -3226,8 +2976,7 @@
         "Token" : {
           "shape" : "__string",
           "location" : "querystring",
-          "locationName" : "token",
-          "documentation" : "The NextToken string returned on a previous page that you use to get the next page of results in a paginated response."
+          "locationName" : "token"
         }
       },
       "required" : [ "SegmentId", "ApplicationId" ]
@@ -3310,8 +3059,7 @@
         "PageSize" : {
           "shape" : "__string",
           "location" : "querystring",
-          "locationName" : "page-size",
-          "documentation" : "The number of entries you want on each page in the response."
+          "locationName" : "page-size"
         },
         "SegmentId" : {
           "shape" : "__string",
@@ -3321,8 +3069,7 @@
         "Token" : {
           "shape" : "__string",
           "location" : "querystring",
-          "locationName" : "token",
-          "documentation" : "The NextToken string returned on a previous page that you use to get the next page of results in a paginated response."
+          "locationName" : "token"
         }
       },
       "required" : [ "SegmentId", "ApplicationId" ]
@@ -3348,14 +3095,12 @@
         "PageSize" : {
           "shape" : "__string",
           "location" : "querystring",
-          "locationName" : "page-size",
-          "documentation" : "The number of entries you want on each page in the response."
+          "locationName" : "page-size"
         },
         "Token" : {
           "shape" : "__string",
           "location" : "querystring",
-          "locationName" : "token",
-          "documentation" : "The NextToken string returned on a previous page that you use to get the next page of results in a paginated response."
+          "locationName" : "token"
         }
       },
       "required" : [ "ApplicationId" ]
@@ -3564,12 +3309,6 @@
         "shape" : "ActivityResponse"
       }
     },
-    "ListOfApplicationResponse" : {
-      "type" : "list",
-      "member" : {
-        "shape" : "ApplicationResponse"
-      }
-    },
     "ListOfCampaignResponse" : {
       "type" : "list",
       "member" : {
@@ -3706,10 +3445,6 @@
           "shape" : "__string",
           "documentation" : "The URL that points to the media resource, for example a .mp4 or .gif file."
         },
-        "RawContent" : {
-          "shape" : "__string",
-          "documentation" : "The Raw JSON formatted string to be used as the payload. This value overrides the message."
-        },
         "SilentPush" : {
           "shape" : "__boolean",
           "documentation" : "Indicates if the message should display on the users device.\n\nSilent pushes can be used for Remote Configuration and Phone Home use cases. "
@@ -3888,7 +3623,8 @@
         }
       },
       "required" : [ "EventStream" ],
-      "payload" : "EventStream"
+      "payload" : "EventStream",
+      "documentation": "PutEventStream Response"
     },
     "QuietTime" : {
       "type" : "structure",
@@ -3941,7 +3677,7 @@
       "members" : {
         "ApplicationId" : {
           "shape" : "__string",
-          "documentation" : "The unique ID of the application to which the SMS channel belongs."
+          "documentation" : "Application id"
         },
         "CreationDate" : {
           "shape" : "__string",
diff --git a/botocore/data/ses/2010-12-01/service-2.json b/botocore/data/ses/2010-12-01/service-2.json
index 39a3b41ae..a9ec298fc 100644
--- a/botocore/data/ses/2010-12-01/service-2.json
+++ b/botocore/data/ses/2010-12-01/service-2.json
@@ -1,6 +1,7 @@
 {
   "version":"2.0",
   "metadata":{
+    "uid":"email-2010-12-01",
     "apiVersion":"2010-12-01",
     "endpointPrefix":"email",
     "protocol":"query",
@@ -8,7 +9,6 @@
     "serviceFullName":"Amazon Simple Email Service",
     "signatureVersion":"v4",
     "signingName":"ses",
-    "uid":"email-2010-12-01",
     "xmlNamespace":"http://ses.amazonaws.com/doc/2010-12-01/"
   },
   "operations":{
@@ -64,10 +64,9 @@
         {"shape":"EventDestinationAlreadyExistsException"},
         {"shape":"InvalidCloudWatchDestinationException"},
         {"shape":"InvalidFirehoseDestinationException"},
-        {"shape":"InvalidSNSDestinationException"},
         {"shape":"LimitExceededException"}
       ],
-      "documentation":"<p>Creates a configuration set event destination.</p> <note> <p>When you create or update an event destination, you must provide one, and only one, destination. The destination can be Amazon CloudWatch, Amazon Kinesis Firehose, or Amazon Simple Notification Service (Amazon SNS).</p> </note> <p>An event destination is the AWS service to which Amazon SES publishes the email sending events associated with a configuration set. For information about using configuration sets, see the <a href=\"http://docs.aws.amazon.com/ses/latest/DeveloperGuide/monitor-sending-activity.html\">Amazon SES Developer Guide</a>.</p> <p>This action is throttled at one request per second.</p>"
+      "documentation":"<p>Creates a configuration set event destination.</p> <note> <p>When you create or update an event destination, you must provide one, and only one, destination. The destination can be either Amazon CloudWatch or Amazon Kinesis Firehose.</p> </note> <p>An event destination is the AWS service to which Amazon SES publishes the email sending events associated with a configuration set. For information about using configuration sets, see the <a href=\"http://docs.aws.amazon.com/ses/latest/DeveloperGuide/monitor-sending-activity.html\">Amazon SES Developer Guide</a>.</p> <p>This action is throttled at one request per second.</p>"
     },
     "CreateReceiptFilter":{
       "name":"CreateReceiptFilter",
@@ -363,7 +362,7 @@
         "shape":"GetIdentityVerificationAttributesResponse",
         "resultWrapper":"GetIdentityVerificationAttributesResult"
       },
-      "documentation":"<p>Given a list of identities (email addresses and/or domains), returns the verification status and (for domain identities) the verification token for each identity.</p> <p>The verification status of an email address is \"Pending\" until the email address owner clicks the link within the verification email that Amazon SES sent to that address. If the email address owner clicks the link within 24 hours, the verification status of the email address changes to \"Success\". If the link is not clicked within 24 hours, the verification status changes to \"Failed.\" In that case, if you still want to verify the email address, you must restart the verification process from the beginning.</p> <p>For domain identities, the domain's verification status is \"Pending\" as Amazon SES searches for the required TXT record in the DNS settings of the domain. When Amazon SES detects the record, the domain's verification status changes to \"Success\". If Amazon SES is unable to detect the record within 72 hours, the domain's verification status changes to \"Failed.\" In that case, if you still want to verify the domain, you must restart the verification process from the beginning.</p> <p>This action is throttled at one request per second and can only get verification attributes for up to 100 identities at a time.</p>"
+      "documentation":"<p>Given a list of identities (email addresses and/or domains), returns the verification status and (for domain identities) the verification token for each identity.</p> <p>This action is throttled at one request per second and can only get verification attributes for up to 100 identities at a time.</p>"
     },
     "GetSendQuota":{
       "name":"GetSendQuota",
@@ -531,7 +530,7 @@
         {"shape":"MailFromDomainNotVerifiedException"},
         {"shape":"ConfigurationSetDoesNotExistException"}
       ],
-      "documentation":"<p>Composes an email message based on input data, and then immediately queues the message for sending.</p> <p>There are several important points to know about <code>SendEmail</code>:</p> <ul> <li> <p>You can only send email from verified email addresses and domains; otherwise, you will get an \"Email address not verified\" error. If your account is still in the Amazon SES sandbox, you must also verify every recipient email address except for the recipients provided by the Amazon SES mailbox simulator. For more information, go to the <a href=\"http://docs.aws.amazon.com/ses/latest/DeveloperGuide/verify-addresses-and-domains.html\">Amazon SES Developer Guide</a>.</p> </li> <li> <p>The total size of the message cannot exceed 10 MB. This includes any attachments that are part of the message.</p> </li> <li> <p>You must provide at least one recipient email address. The recipient address can be a To: address, a CC: address, or a BCC: address. If any email address you provide is invalid, Amazon SES rejects the entire email.</p> </li> <li> <p>Amazon SES has a limit on the total number of recipients per message. The combined number of To:, CC: and BCC: email addresses cannot exceed 50. If you need to send an email message to a larger audience, you can divide your recipient list into groups of 50 or fewer, and then call Amazon SES repeatedly to send the message to each group.</p> </li> <li> <p>For every message that you send, the total number of recipients (To:, CC: and BCC:) is counted against your sending quota - the maximum number of emails you can send in a 24-hour period. For information about your sending quota, go to the <a href=\"http://docs.aws.amazon.com/ses/latest/DeveloperGuide/manage-sending-limits.html\">Amazon SES Developer Guide</a>.</p> </li> </ul>"
+      "documentation":"<p>Composes an email message based on input data, and then immediately queues the message for sending.</p> <p>There are several important points to know about <code>SendEmail</code>:</p> <ul> <li> <p>You can only send email from verified email addresses and domains; otherwise, you will get an \"Email address not verified\" error. If your account is still in the Amazon SES sandbox, you must also verify every recipient email address except for the recipients provided by the Amazon SES mailbox simulator. For more information, go to the <a href=\"http://docs.aws.amazon.com/ses/latest/DeveloperGuide/verify-addresses-and-domains.html\">Amazon SES Developer Guide</a>.</p> </li> <li> <p>The total size of the message cannot exceed 10 MB. This includes any attachments that are part of the message.</p> </li> <li> <p>Amazon SES has a limit on the total number of recipients per message. The combined number of To:, CC: and BCC: email addresses cannot exceed 50. If you need to send an email message to a larger audience, you can divide your recipient list into groups of 50 or fewer, and then call Amazon SES repeatedly to send the message to each group.</p> </li> <li> <p>For every message that you send, the total number of recipients (To:, CC: and BCC:) is counted against your sending quota - the maximum number of emails you can send in a 24-hour period. For information about your sending quota, go to the <a href=\"http://docs.aws.amazon.com/ses/latest/DeveloperGuide/manage-sending-limits.html\">Amazon SES Developer Guide</a>.</p> </li> </ul>"
     },
     "SendRawEmail":{
       "name":"SendRawEmail",
@@ -549,7 +548,7 @@
         {"shape":"MailFromDomainNotVerifiedException"},
         {"shape":"ConfigurationSetDoesNotExistException"}
       ],
-      "documentation":"<p>Sends an email message, with header and content specified by the client. The <code>SendRawEmail</code> action is useful for sending multipart MIME emails. The raw text of the message must comply with Internet email standards; otherwise, the message cannot be sent. </p> <p>There are several important points to know about <code>SendRawEmail</code>:</p> <ul> <li> <p>You can only send email from verified email addresses and domains; otherwise, you will get an \"Email address not verified\" error. If your account is still in the Amazon SES sandbox, you must also verify every recipient email address except for the recipients provided by the Amazon SES mailbox simulator. For more information, go to the <a href=\"http://docs.aws.amazon.com/ses/latest/DeveloperGuide/verify-addresses-and-domains.html\">Amazon SES Developer Guide</a>.</p> </li> <li> <p>The total size of the message cannot exceed 10 MB. This includes any attachments that are part of the message.</p> </li> <li> <p>You must provide at least one recipient email address. The recipient address can be a To: address, a CC: address, or a BCC: address. If any email address you provide is invalid, Amazon SES rejects the entire email.</p> </li> <li> <p>Amazon SES has a limit on the total number of recipients per message. The combined number of To:, CC: and BCC: email addresses cannot exceed 50. If you need to send an email message to a larger audience, you can divide your recipient list into groups of 50 or fewer, and then call Amazon SES repeatedly to send the message to each group.</p> </li> <li> <p>The To:, CC:, and BCC: headers in the raw message can contain a group list. Note that each recipient in a group list counts towards the 50-recipient limit.</p> </li> <li> <p>Amazon SES overrides any Message-ID and Date headers you provide.</p> </li> <li> <p>For every message that you send, the total number of recipients (To:, CC: and BCC:) is counted against your sending quota - the maximum number of emails you can send in a 24-hour period. For information about your sending quota, go to the <a href=\"http://docs.aws.amazon.com/ses/latest/DeveloperGuide/manage-sending-limits.html\">Amazon SES Developer Guide</a>.</p> </li> <li> <p>If you are using sending authorization to send on behalf of another user, <code>SendRawEmail</code> enables you to specify the cross-account identity for the email's \"Source,\" \"From,\" and \"Return-Path\" parameters in one of two ways: you can pass optional parameters <code>SourceArn</code>, <code>FromArn</code>, and/or <code>ReturnPathArn</code> to the API, or you can include the following X-headers in the header of your raw email:</p> <ul> <li> <p> <code>X-SES-SOURCE-ARN</code> </p> </li> <li> <p> <code>X-SES-FROM-ARN</code> </p> </li> <li> <p> <code>X-SES-RETURN-PATH-ARN</code> </p> </li> </ul> <important> <p>Do not include these X-headers in the DKIM signature, because they are removed by Amazon SES before sending the email.</p> </important> <p>For the most common sending authorization use case, we recommend that you specify the <code>SourceIdentityArn</code> and do not specify either the <code>FromIdentityArn</code> or <code>ReturnPathIdentityArn</code>. (The same note applies to the corresponding X-headers.) If you only specify the <code>SourceIdentityArn</code>, Amazon SES will simply set the \"From\" address and the \"Return Path\" address to the identity specified in <code>SourceIdentityArn</code>. For more information about sending authorization, see the <a href=\"http://docs.aws.amazon.com/ses/latest/DeveloperGuide/sending-authorization.html\">Amazon SES Developer Guide</a>.</p> </li> </ul>"
+      "documentation":"<p>Sends an email message, with header and content specified by the client. The <code>SendRawEmail</code> action is useful for sending multipart MIME emails. The raw text of the message must comply with Internet email standards; otherwise, the message cannot be sent. </p> <p>There are several important points to know about <code>SendRawEmail</code>:</p> <ul> <li> <p>You can only send email from verified email addresses and domains; otherwise, you will get an \"Email address not verified\" error. If your account is still in the Amazon SES sandbox, you must also verify every recipient email address except for the recipients provided by the Amazon SES mailbox simulator. For more information, go to the <a href=\"http://docs.aws.amazon.com/ses/latest/DeveloperGuide/verify-addresses-and-domains.html\">Amazon SES Developer Guide</a>.</p> </li> <li> <p>The total size of the message cannot exceed 10 MB. This includes any attachments that are part of the message.</p> </li> <li> <p>Amazon SES has a limit on the total number of recipients per message. The combined number of To:, CC: and BCC: email addresses cannot exceed 50. If you need to send an email message to a larger audience, you can divide your recipient list into groups of 50 or fewer, and then call Amazon SES repeatedly to send the message to each group.</p> </li> <li> <p>The To:, CC:, and BCC: headers in the raw message can contain a group list. Note that each recipient in a group list counts towards the 50-recipient limit.</p> </li> <li> <p>Amazon SES overrides any Message-ID and Date headers you provide.</p> </li> <li> <p>For every message that you send, the total number of recipients (To:, CC: and BCC:) is counted against your sending quota - the maximum number of emails you can send in a 24-hour period. For information about your sending quota, go to the <a href=\"http://docs.aws.amazon.com/ses/latest/DeveloperGuide/manage-sending-limits.html\">Amazon SES Developer Guide</a>.</p> </li> <li> <p>If you are using sending authorization to send on behalf of another user, <code>SendRawEmail</code> enables you to specify the cross-account identity for the email's \"Source,\" \"From,\" and \"Return-Path\" parameters in one of two ways: you can pass optional parameters <code>SourceArn</code>, <code>FromArn</code>, and/or <code>ReturnPathArn</code> to the API, or you can include the following X-headers in the header of your raw email:</p> <ul> <li> <p> <code>X-SES-SOURCE-ARN</code> </p> </li> <li> <p> <code>X-SES-FROM-ARN</code> </p> </li> <li> <p> <code>X-SES-RETURN-PATH-ARN</code> </p> </li> </ul> <important> <p>Do not include these X-headers in the DKIM signature, because they are removed by Amazon SES before sending the email.</p> </important> <p>For the most common sending authorization use case, we recommend that you specify the <code>SourceIdentityArn</code> and do not specify either the <code>FromIdentityArn</code> or <code>ReturnPathIdentityArn</code>. (The same note applies to the corresponding X-headers.) If you only specify the <code>SourceIdentityArn</code>, Amazon SES will simply set the \"From\" address and the \"Return Path\" address to the identity specified in <code>SourceIdentityArn</code>. For more information about sending authorization, see the <a href=\"http://docs.aws.amazon.com/ses/latest/DeveloperGuide/sending-authorization.html\">Amazon SES Developer Guide</a>.</p> </li> </ul>"
     },
     "SetActiveReceiptRuleSet":{
       "name":"SetActiveReceiptRuleSet",
@@ -664,10 +663,9 @@
         {"shape":"ConfigurationSetDoesNotExistException"},
         {"shape":"EventDestinationDoesNotExistException"},
         {"shape":"InvalidCloudWatchDestinationException"},
-        {"shape":"InvalidFirehoseDestinationException"},
-        {"shape":"InvalidSNSDestinationException"}
+        {"shape":"InvalidFirehoseDestinationException"}
       ],
-      "documentation":"<p>Updates the event destination of a configuration set.</p> <note> <p>When you create or update an event destination, you must provide one, and only one, destination. The destination can be Amazon CloudWatch, Amazon Kinesis Firehose, or Amazon Simple Notification Service (Amazon SNS).</p> </note> <p>Event destinations are associated with configuration sets, which enable you to publish email sending events to Amazon CloudWatch, Amazon Kinesis Firehose, or Amazon Simple Notification Service (Amazon SNS). For information about using configuration sets, see the <a href=\"http://docs.aws.amazon.com/ses/latest/DeveloperGuide/monitor-sending-activity.html\">Amazon SES Developer Guide</a>.</p> <p>This action is throttled at one request per second.</p>"
+      "documentation":"<p>Updates the event destination of a configuration set.</p> <note> <p>When you create or update an event destination, you must provide one, and only one, destination. The destination can be either Amazon CloudWatch or Amazon Kinesis Firehose.</p> </note> <p>Event destinations are associated with configuration sets, which enable you to publish email sending events to Amazon CloudWatch or Amazon Kinesis Firehose. For information about using configuration sets, see the <a href=\"http://docs.aws.amazon.com/ses/latest/DeveloperGuide/monitor-sending-activity.html\">Amazon SES Developer Guide</a>.</p> <p>This action is throttled at one request per second.</p>"
     },
     "UpdateReceiptRule":{
       "name":"UpdateReceiptRule",
@@ -1404,8 +1402,7 @@
       "type":"string",
       "enum":[
         "messageTag",
-        "emailHeader",
-        "linkTag"
+        "emailHeader"
       ]
     },
     "DkimAttributes":{
@@ -1452,13 +1449,9 @@
         "CloudWatchDestination":{
           "shape":"CloudWatchDestination",
           "documentation":"<p>An object that contains the names, default values, and sources of the dimensions associated with an Amazon CloudWatch event destination.</p>"
-        },
-        "SNSDestination":{
-          "shape":"SNSDestination",
-          "documentation":"<p>An object that contains the topic ARN associated with an Amazon Simple Notification Service (Amazon SNS) event destination.</p>"
         }
       },
-      "documentation":"<p>Contains information about the event destination to which the specified email sending events are published.</p> <note> <p>When you create or update an event destination, you must provide one, and only one, destination. The destination can be Amazon CloudWatch, Amazon Kinesis Firehose or Amazon Simple Notification Service (Amazon SNS).</p> </note> <p>Event destinations are associated with configuration sets, which enable you to publish email sending events to Amazon CloudWatch, Amazon Kinesis Firehose, or Amazon Simple Notification Service (Amazon SNS). For information about using configuration sets, see the <a href=\"http://docs.aws.amazon.com/ses/latest/DeveloperGuide/monitor-sending-activity.html\">Amazon SES Developer Guide</a>.</p>"
+      "documentation":"<p>Contains information about the event destination to which the specified email sending events are published.</p> <note> <p>When you create or update an event destination, you must provide one, and only one, destination. The destination can be either Amazon CloudWatch or Amazon Kinesis Firehose.</p> </note> <p>Event destinations are associated with configuration sets, which enable you to publish email sending events to Amazon CloudWatch or Amazon Kinesis Firehose. For information about using configuration sets, see the <a href=\"http://docs.aws.amazon.com/ses/latest/DeveloperGuide/monitor-sending-activity.html\">Amazon SES Developer Guide</a>.</p>"
     },
     "EventDestinationAlreadyExistsException":{
       "type":"structure",
@@ -1500,9 +1493,7 @@
         "reject",
         "bounce",
         "complaint",
-        "delivery",
-        "open",
-        "click"
+        "delivery"
       ]
     },
     "EventTypes":{
@@ -1871,26 +1862,6 @@
       },
       "exception":true
     },
-    "InvalidSNSDestinationException":{
-      "type":"structure",
-      "members":{
-        "ConfigurationSetName":{
-          "shape":"ConfigurationSetName",
-          "documentation":"<p>Indicates that the configuration set does not exist.</p>"
-        },
-        "EventDestinationName":{
-          "shape":"EventDestinationName",
-          "documentation":"<p>Indicates that the event destination does not exist.</p>"
-        }
-      },
-      "documentation":"<p>Indicates that the Amazon Simple Notification Service (Amazon SNS) destination is invalid. See the error message for details.</p>",
-      "error":{
-        "code":"InvalidSNSDestination",
-        "httpStatusCode":400,
-        "senderFault":true
-      },
-      "exception":true
-    },
     "InvalidSnsTopicException":{
       "type":"structure",
       "members":{
@@ -2258,7 +2229,7 @@
       "members":{
         "Data":{
           "shape":"RawMessageData",
-          "documentation":"<p>The raw data of the message. This data needs to base64-encoded if you are accessing Amazon SES directly through the HTTPS interface. If you are accessing Amazon SES using an AWS SDK, the SDK takes care of the base 64-encoding for you. In all cases, the client must ensure that the message format complies with Internet email standards regarding email header fields, MIME types, and MIME encoding.</p> <p>The To:, CC:, and BCC: headers in the raw message can contain a group list.</p> <p>If you are using <code>SendRawEmail</code> with sending authorization, you can include X-headers in the raw message to specify the \"Source,\" \"From,\" and \"Return-Path\" addresses. For more information, see the documentation for <code>SendRawEmail</code>. </p> <important> <p>Do not include these X-headers in the DKIM signature, because they are removed by Amazon SES before sending the email.</p> </important> <p>For more information, go to the <a href=\"http://docs.aws.amazon.com/ses/latest/DeveloperGuide/send-email-raw.html\">Amazon SES Developer Guide</a>. </p>"
+          "documentation":"<p>The raw data of the message. The client must ensure that the message format complies with Internet email standards regarding email header fields, MIME types, MIME encoding, and base64 encoding.</p> <p>The To:, CC:, and BCC: headers in the raw message can contain a group list.</p> <p>If you are using <code>SendRawEmail</code> with sending authorization, you can include X-headers in the raw message to specify the \"Source,\" \"From,\" and \"Return-Path\" addresses. For more information, see the documentation for <code>SendRawEmail</code>. </p> <important> <p>Do not include these X-headers in the DKIM signature, because they are removed by Amazon SES before sending the email.</p> </important> <p>For more information, go to the <a href=\"http://docs.aws.amazon.com/ses/latest/DeveloperGuide/send-email-raw.html\">Amazon SES Developer Guide</a>. </p>"
         }
       },
       "documentation":"<p>Represents the raw data of the message.</p>"
@@ -2552,17 +2523,6 @@
         "Base64"
       ]
     },
-    "SNSDestination":{
-      "type":"structure",
-      "required":["TopicARN"],
-      "members":{
-        "TopicARN":{
-          "shape":"AmazonResourceName",
-          "documentation":"<p>The ARN of the Amazon SNS topic to which you want to publish email sending events. An example of an Amazon SNS topic ARN is arn:aws:sns:us-west-2:123456789012:MyTopic. For more information about Amazon SNS topics, see the <a href=\"http://docs.aws.amazon.com/http:/alpha-docs-aws.amazon.com/sns/latest/dg/CreateTopic.html\"> <i>Amazon SNS Developer Guide</i> </a>.</p>"
-        }
-      },
-      "documentation":"<p>Contains the topic ARN associated with an Amazon Simple Notification Service (Amazon SNS) event destination.</p> <p>Event destinations, such as Amazon SNS, are associated with configuration sets, which enable you to publish email sending events. For information about using configuration sets, see the <a href=\"http://docs.aws.amazon.com/ses/latest/DeveloperGuide/monitor-sending-activity.html\">Amazon SES Developer Guide</a>.</p>"
-    },
     "SendBounceRequest":{
       "type":"structure",
       "required":[
@@ -2710,7 +2670,7 @@
         },
         "RawMessage":{
           "shape":"RawMessage",
-          "documentation":"<p>The raw text of the message. The client is responsible for ensuring the following:</p> <ul> <li> <p>Message must contain a header and a body, separated by a blank line.</p> </li> <li> <p>All required header fields must be present.</p> </li> <li> <p>Each part of a multipart MIME message must be formatted properly.</p> </li> <li> <p>MIME content types must be among those supported by Amazon SES. For more information, go to the <a href=\"http://docs.aws.amazon.com/ses/latest/DeveloperGuide/mime-types.html\">Amazon SES Developer Guide</a>.</p> </li> <li> <p>Must be base64-encoded.</p> </li> <li> <p>Per <a href=\"https://tools.ietf.org/html/rfc5321#section-4.5.3.1.6\">RFC 5321</a>, the maximum length of each line of text, including the &lt;CRLF&gt;, must not exceed 1,000 characters.</p> </li> </ul>"
+          "documentation":"<p>The raw text of the message. The client is responsible for ensuring the following:</p> <ul> <li> <p>Message must contain a header and a body, separated by a blank line.</p> </li> <li> <p>All required header fields must be present.</p> </li> <li> <p>Each part of a multipart MIME message must be formatted properly.</p> </li> <li> <p>MIME content types must be among those supported by Amazon SES. For more information, go to the <a href=\"http://docs.aws.amazon.com/ses/latest/DeveloperGuide/mime-types.html\">Amazon SES Developer Guide</a>.</p> </li> <li> <p>Must be base64-encoded.</p> </li> </ul>"
         },
         "FromArn":{
           "shape":"AmazonResourceName",
@@ -3055,7 +3015,7 @@
       "members":{
         "VerificationToken":{
           "shape":"VerificationToken",
-          "documentation":"<p>A TXT record that you must place in the DNS settings of the domain to complete domain verification with Amazon SES.</p> <p>As Amazon SES searches for the TXT record, the domain's verification status is \"Pending\". When Amazon SES detects the record, the domain's verification status changes to \"Success\". If Amazon SES is unable to detect the record within 72 hours, the domain's verification status changes to \"Failed.\" In that case, if you still want to verify the domain, you must restart the verification process from the beginning.</p>"
+          "documentation":"<p>A TXT record that must be placed in the DNS settings for the domain, in order to complete domain verification.</p>"
         }
       },
       "documentation":"<p>Returns a TXT record that you must publish to the DNS server of your domain to complete domain verification with Amazon SES.</p>"
diff --git a/botocore/data/ssm/2014-11-06/service-2.json b/botocore/data/ssm/2014-11-06/service-2.json
index 12e5f5c82..5055e338f 100644
--- a/botocore/data/ssm/2014-11-06/service-2.json
+++ b/botocore/data/ssm/2014-11-06/service-2.json
@@ -253,7 +253,7 @@
       "errors":[
         {"shape":"InternalServerError"}
       ],
-      "documentation":"<p>Delete a list of parameters. This API is used to delete parameters by using the Amazon EC2 console.</p>"
+      "documentation":"<p>Delete a list of parameters.</p>"
     },
     "DeletePatchBaseline":{
       "name":"DeletePatchBaseline",
@@ -632,7 +632,7 @@
         {"shape":"InvalidFilterValue"},
         {"shape":"InvalidNextToken"}
       ],
-      "documentation":"<p>Get information about a parameter.</p> <p>Request results are returned on a best-effort basis. If you specify <code>MaxResults</code> in the request, the response includes information up to the limit specified. The number of items returned, however, can be between zero and the value of <code>MaxResults</code>. If the service reaches an internal limit while processing the results, it stops the operation and returns the matching values up to that point and a <code>NextToken</code>. You can specify the <code>NextToken</code> in a subsequent call to get the next set of results.</p>"
+      "documentation":"<p>Get information about a parameter.</p>"
     },
     "DescribePatchBaselines":{
       "name":"DescribePatchBaselines",
@@ -882,7 +882,7 @@
         {"shape":"InvalidKeyId"},
         {"shape":"InvalidNextToken"}
       ],
-      "documentation":"<p>Retrieve parameters in a specific hierarchy. For more information, see <a href=\"http://docs.aws.amazon.com/systems-manager/latest/userguide/sysman-paramstore-working.html\">Working with Systems Manager Parameters</a>. </p> <p>Request results are returned on a best-effort basis. If you specify <code>MaxResults</code> in the request, the response includes information up to the limit specified. The number of items returned, however, can be between zero and the value of <code>MaxResults</code>. If the service reaches an internal limit while processing the results, it stops the operation and returns the matching values up to that point and a <code>NextToken</code>. You can specify the <code>NextToken</code> in a subsequent call to get the next set of results.</p>"
+      "documentation":"<p>Retrieve parameters in a specific hierarchy. For more information, see <a href=\"http://docs.aws.amazon.com/systems-manager/latest/userguide/sysman-paramstore-working.html\">Working with Systems Manager Parameters</a>. </p>"
     },
     "GetPatchBaseline":{
       "name":"GetPatchBaseline",
@@ -1175,21 +1175,6 @@
       ],
       "documentation":"<p>Removes all tags from the specified resource.</p>"
     },
-    "SendAutomationSignal":{
-      "name":"SendAutomationSignal",
-      "http":{
-        "method":"POST",
-        "requestUri":"/"
-      },
-      "input":{"shape":"SendAutomationSignalRequest"},
-      "output":{"shape":"SendAutomationSignalResult"},
-      "errors":[
-        {"shape":"AutomationExecutionNotFoundException"},
-        {"shape":"InvalidAutomationSignalException"},
-        {"shape":"InternalServerError"}
-      ],
-      "documentation":"<p>Sends a signal to an Automation execution to change the current behavior or status of the execution. </p>"
-    },
     "SendCommand":{
       "name":"SendCommand",
       "http":{
@@ -1922,7 +1907,6 @@
       "enum":[
         "Pending",
         "InProgress",
-        "Waiting",
         "Success",
         "TimedOut",
         "Cancelled",
@@ -5250,14 +5234,6 @@
       "documentation":"<p>The supplied parameters for invoking the specified Automation document are incorrect. For example, they may not match the set of parameters permitted for the specified Automation document.</p>",
       "exception":true
     },
-    "InvalidAutomationSignalException":{
-      "type":"structure",
-      "members":{
-        "Message":{"shape":"String"}
-      },
-      "documentation":"<p>The signal is not valid for the current Automation execution.</p>",
-      "exception":true
-    },
     "InvalidCommandId":{
       "type":"structure",
       "members":{
@@ -7810,32 +7786,6 @@
       "max":256,
       "min":1
     },
-    "SendAutomationSignalRequest":{
-      "type":"structure",
-      "required":[
-        "AutomationExecutionId",
-        "SignalType"
-      ],
-      "members":{
-        "AutomationExecutionId":{
-          "shape":"AutomationExecutionId",
-          "documentation":"<p>The unique identifier for an existing Automation execution that you want to send the signal to.</p>"
-        },
-        "SignalType":{
-          "shape":"SignalType",
-          "documentation":"<p>The type of signal. Valid signal types include the following: Approve and Reject </p>"
-        },
-        "Payload":{
-          "shape":"AutomationParameterMap",
-          "documentation":"<p>The data sent with the signal. The data schema depends on the type of signal used in the request. </p>"
-        }
-      }
-    },
-    "SendAutomationSignalResult":{
-      "type":"structure",
-      "members":{
-      }
-    },
     "SendCommandRequest":{
       "type":"structure",
       "required":["DocumentName"],
@@ -7913,13 +7863,6 @@
       }
     },
     "ServiceRole":{"type":"string"},
-    "SignalType":{
-      "type":"string",
-      "enum":[
-        "Approve",
-        "Reject"
-      ]
-    },
     "SnapshotDownloadUrl":{"type":"string"},
     "SnapshotId":{
       "type":"string",
diff --git a/botocore/docs/sharedexample.py b/botocore/docs/sharedexample.py
index cb08d1f47..1a31b6e48 100644
--- a/botocore/docs/sharedexample.py
+++ b/botocore/docs/sharedexample.py
@@ -13,6 +13,7 @@
 import re
 import numbers
 from botocore.utils import parse_timestamp
+from botocore.docs.utils import escape_controls
 from botocore.compat import six
 
 
@@ -165,7 +166,8 @@ class SharedExampleDocumenter(object):
     def _document_str(self, section, value, path):
         # We do the string conversion because this might accept a type that
         # we don't specifically address.
-        section.write(u"'%s'," % six.text_type(value))
+        safe_value = escape_controls(value)
+        section.write(u"'%s'," % six.text_type(safe_value))
 
     def _document_number(self, section, value, path):
         section.write("%s," % str(value))
diff --git a/botocore/docs/utils.py b/botocore/docs/utils.py
index 3d79d1ce6..a0d2d6623 100644
--- a/botocore/docs/utils.py
+++ b/botocore/docs/utils.py
@@ -10,6 +10,7 @@
 # distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
 # ANY KIND, either express or implied. See the License for the specific
 # language governing permissions and limitations under the License.
+import re
 from collections import namedtuple
 
 
@@ -177,3 +178,20 @@ class AppendParamDocumentation(object):
             description_section = section.get_section(
                 'param-documentation')
             description_section.writeln(self._doc_string)
+
+
+_CONTROLS = {
+    '\n': '\\n',
+    '\r': '\\r',
+    '\t': '\\t',
+    '\b': '\\b',
+    '\f': '\\f',
+}
+# Combines all CONTROLS keys into a big or regular expression
+_ESCAPE_CONTROLS_RE = re.compile('|'.join(map(re.escape, _CONTROLS)))
+# Based on the match get the appropriate replacement from CONTROLS
+_CONTROLS_MATCH_HANDLER = lambda match: _CONTROLS[match.group(0)]
+
+
+def escape_controls(value):
+    return _ESCAPE_CONTROLS_RE.sub(_CONTROLS_MATCH_HANDLER, value)
diff --git a/docs/source/conf.py b/docs/source/conf.py
index 5b9bd316b..5d378ecb0 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.5.'
 # The full version, including alpha/beta/rc tags.
-release = '1.5.92'
+release = '1.5.90'
 
 # The language for content autogenerated by Sphinx. Refer to documentation
 # for a list of supported languages.


Test patch:
diff --git a/tests/unit/docs/test_sharedexample.py b/tests/unit/docs/test_sharedexample.py
index 26931ad9a..0a8463540 100644
--- a/tests/unit/docs/test_sharedexample.py
+++ b/tests/unit/docs/test_sharedexample.py
@@ -299,3 +299,22 @@ class TestSharedExampleDocumenter(BaseDocsTest):
             u"    foo='\u2713'",
             u")"
         ])
+
+    def test_escape_character_example(self):
+        self.add_shape_to_params('foo', 'String')
+        self.documenter.document_shared_example(
+            example={
+                'output': {
+                    'foo': 'good\n\rintentions!\n\r'
+                }
+            },
+            prefix='foo.bar',
+            section=self.doc_structure,
+            operation_model=self.operation_model
+        )
+        self.assert_contains_lines_in_order([
+            "Expected Output:",
+            "  {",
+            "      'foo': 'good\\n\\rintentions!\\n\\r',",
+            "  }",
+        ])
diff --git a/tests/unit/docs/test_utils.py b/tests/unit/docs/test_utils.py
index 7611a7e4b..c526d24fe 100644
--- a/tests/unit/docs/test_utils.py
+++ b/tests/unit/docs/test_utils.py
@@ -18,6 +18,7 @@ from botocore.docs.utils import get_official_service_name
 from botocore.docs.utils import AutoPopulatedParam
 from botocore.docs.utils import HideParamFromOperations
 from botocore.docs.utils import AppendParamDocumentation
+from botocore.docs.utils import escape_controls
 
 
 class TestPythonTypeName(unittest.TestCase):
@@ -217,3 +218,10 @@ class TestAppendParamDocumentation(BaseDocsTest):
             'docs.request-params', self.doc_structure)
         self.assert_contains_line('foo\n')
         self.assert_contains_line('hello!')
+
+
+class TestEscapeControls(unittest.TestCase):
+    def test_escapes_controls(self):
+        escaped = escape_controls('\na\rb\tc\fd\be')
+        self.assertEquals(escaped, '\\na\\rb\\tc\\fd\\be')
+