diff --git a/amazonka-sqs.cabal b/amazonka-sqs.cabal
--- a/amazonka-sqs.cabal
+++ b/amazonka-sqs.cabal
@@ -1,5 +1,5 @@
 name:                  amazonka-sqs
-version:               0.0.7
+version:               0.0.8
 synopsis:              Amazon Simple Queue Service SDK.
 homepage:              https://github.com/brendanhay/amazonka
 license:               OtherLicense
@@ -50,6 +50,7 @@
         , Network.AWS.SQS.GetQueueUrl
         , Network.AWS.SQS.ListDeadLetterSourceQueues
         , Network.AWS.SQS.ListQueues
+        , Network.AWS.SQS.PurgeQueue
         , Network.AWS.SQS.ReceiveMessage
         , Network.AWS.SQS.RemovePermission
         , Network.AWS.SQS.SendMessage
@@ -60,5 +61,5 @@
     other-modules:
 
     build-depends:
-          amazonka-core == 0.0.7.*
+          amazonka-core == 0.0.8.*
         , base          >= 4.7     && < 5
diff --git a/gen/Network/AWS/SQS.hs b/gen/Network/AWS/SQS.hs
--- a/gen/Network/AWS/SQS.hs
+++ b/gen/Network/AWS/SQS.hs
@@ -29,6 +29,7 @@
     , module Network.AWS.SQS.GetQueueUrl
     , module Network.AWS.SQS.ListDeadLetterSourceQueues
     , module Network.AWS.SQS.ListQueues
+    , module Network.AWS.SQS.PurgeQueue
     , module Network.AWS.SQS.ReceiveMessage
     , module Network.AWS.SQS.RemovePermission
     , module Network.AWS.SQS.SendMessage
@@ -48,6 +49,7 @@
 import Network.AWS.SQS.GetQueueUrl
 import Network.AWS.SQS.ListDeadLetterSourceQueues
 import Network.AWS.SQS.ListQueues
+import Network.AWS.SQS.PurgeQueue
 import Network.AWS.SQS.ReceiveMessage
 import Network.AWS.SQS.RemovePermission
 import Network.AWS.SQS.SendMessage
diff --git a/gen/Network/AWS/SQS/AddPermission.hs b/gen/Network/AWS/SQS/AddPermission.hs
--- a/gen/Network/AWS/SQS/AddPermission.hs
+++ b/gen/Network/AWS/SQS/AddPermission.hs
@@ -29,7 +29,13 @@
 -- Only you (as owner of the queue) can grant or deny permissions to the queue.
 -- For more information about these permissions, see <http://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/acp-overview.html Shared Queues> in the /AmazonSQS Developer Guide/.
 --
--- '&Attribute.1=this'
+-- 'AddPermission' writes an Amazon SQS-generated policy. If you want to write
+-- your own policy, use 'SetQueueAttributes' to upload your policy. For more
+-- information about writing your own policy, see <http://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/AccessPolicyLanguage.html Using The Access PolicyLanguage> in the /Amazon SQS Developer Guide/.
+--
+-- Some API actions take lists of parameters. These lists are specified using
+-- the 'param.n' notation. Values of 'n' are integers starting from 1. For example,
+-- a parameter list with two elements looks like this:  '&Attribute.1=this'
 --
 -- '&Attribute.2=that'
 --
diff --git a/gen/Network/AWS/SQS/ChangeMessageVisibility.hs b/gen/Network/AWS/SQS/ChangeMessageVisibility.hs
--- a/gen/Network/AWS/SQS/ChangeMessageVisibility.hs
+++ b/gen/Network/AWS/SQS/ChangeMessageVisibility.hs
@@ -35,6 +35,14 @@
 -- ChangeMessageVisiblity, but this time the maximum allowed timeout would be 9
 -- hours and 30 minutes.
 --
+-- There is a 120,000 limit for the number of inflight messages per queue.
+-- Messages are inflight after they have been received from the queue by a
+-- consuming component, but have not yet been deleted from the queue. If you
+-- reach the 120,000 limit, you will receive an OverLimit error message from
+-- Amazon SQS. To help avoid reaching the limit, you should delete the messages
+-- from the queue after they have been processed. You can also increase the
+-- number of queues you use to process the messages.
+--
 -- If you attempt to set the 'VisibilityTimeout' to an amount more than the
 -- maximum time left, Amazon SQS returns an error. It will not automatically
 -- recalculate and increase the timeout to the maximum time remaining. Unlike
diff --git a/gen/Network/AWS/SQS/ChangeMessageVisibilityBatch.hs b/gen/Network/AWS/SQS/ChangeMessageVisibilityBatch.hs
--- a/gen/Network/AWS/SQS/ChangeMessageVisibilityBatch.hs
+++ b/gen/Network/AWS/SQS/ChangeMessageVisibilityBatch.hs
@@ -28,7 +28,10 @@
 --
 -- Because the batch request can result in a combination of successful and
 -- unsuccessful actions, you should check for batch errors even when the call
--- returns an HTTP status code of 200. '&Attribute.1=this'
+-- returns an HTTP status code of 200. Some API actions take lists of
+-- parameters. These lists are specified using the 'param.n' notation. Values of 'n'
+-- are integers starting from 1. For example, a parameter list with two elements
+-- looks like this:  '&Attribute.1=this'
 --
 -- '&Attribute.2=that'
 --
diff --git a/gen/Network/AWS/SQS/CreateQueue.hs b/gen/Network/AWS/SQS/CreateQueue.hs
--- a/gen/Network/AWS/SQS/CreateQueue.hs
+++ b/gen/Network/AWS/SQS/CreateQueue.hs
@@ -25,16 +25,24 @@
 -- | Creates a new queue, or returns the URL of an existing one. When you request 'CreateQueue', you provide a name for the queue. To successfully create a new queue, you
 -- must provide a name that is unique within the scope of your own queues.
 --
+-- If you delete a queue, you must wait at least 60 seconds before creating a
+-- queue with the same name.
+--
 -- You may pass one or more attributes in the request. If you do not provide a
 -- value for any attribute, the queue will have the default value for that
 -- attribute. Permitted attributes are the same that can be set using 'SetQueueAttributes'.
 --
+-- Use 'GetQueueUrl' to get a queue's URL. 'GetQueueUrl' requires only the 'QueueName'
+-- parameter.
+--
 -- If you provide the name of an existing queue, along with the exact names and
 -- values of all the queue's attributes, 'CreateQueue' returns the queue URL for
 -- the existing queue. If the queue name, attribute names, or attribute values
 -- do not match an existing queue, 'CreateQueue' returns an error.
 --
--- '&Attribute.1=this'
+-- Some API actions take lists of parameters. These lists are specified using
+-- the 'param.n' notation. Values of 'n' are integers starting from 1. For example,
+-- a parameter list with two elements looks like this:  '&Attribute.1=this'
 --
 -- '&Attribute.2=that'
 --
@@ -95,12 +103,11 @@
 -- attribute is 262144 (256 KiB).  'MessageRetentionPeriod' - The number of
 -- seconds Amazon SQS retains a message. Integer representing seconds, from 60
 -- (1 minute) to 1209600 (14 days). The default for this attribute is 345600 (4
--- days).  'Policy' - The queue's policy. A valid form-url-encoded policy. For
--- more information about policy structure, see <http://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/BasicStructure.html Basic Policy Structure> in the /Amazon SQS Developer Guide/. For more information about form-url-encoding, see <http://www.w3.org/MarkUp/html-spec/html-spec_8.html#SEC8.2.1 http://www.w3.org/MarkUp/html-spec/html-spec_8.html#SEC8.2.1>.  'ReceiveMessageWaitTimeSeconds' - The time for which a 'ReceiveMessage' call
--- will wait for a message to arrive. An integer from 0 to 20 (seconds). The
--- default for this attribute is 0.   'VisibilityTimeout' - The visibility timeout
--- for the queue. An integer from 0 to 43200 (12 hours). The default for this
--- attribute is 30. For more information about visibility timeout, see <http://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/AboutVT.html Visibility Timeout> in the /Amazon SQS Developer Guide/.
+-- days).  'Policy' - The queue's policy. A valid AWS policy. For more information
+-- about policy structure, see <http://docs.aws.amazon.com/IAM/latest/UserGuide/PoliciesOverview.html Overview of AWS IAM Policies> in the /Amazon IAMUser Guide/.  'ReceiveMessageWaitTimeSeconds' - The time for which a 'ReceiveMessage' call will wait for a message to arrive. An integer from 0 to 20 (seconds).
+-- The default for this attribute is 0.   'VisibilityTimeout' - The visibility
+-- timeout for the queue. An integer from 0 to 43200 (12 hours). The default for
+-- this attribute is 30. For more information about visibility timeout, see <http://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/AboutVT.html Visibility Timeout> in the /Amazon SQS Developer Guide/.
 cqAttributes :: Lens' CreateQueue (HashMap Text Text)
 cqAttributes = lens _cqAttributes (\s a -> s { _cqAttributes = a }) . _EMap
 
diff --git a/gen/Network/AWS/SQS/DeleteMessage.hs b/gen/Network/AWS/SQS/DeleteMessage.hs
--- a/gen/Network/AWS/SQS/DeleteMessage.hs
+++ b/gen/Network/AWS/SQS/DeleteMessage.hs
@@ -29,6 +29,13 @@
 -- queue. If you leave a message in the queue for longer than the queue's
 -- configured retention period, Amazon SQS automatically deletes it.
 --
+-- The receipt handle is associated with a specific instance of receiving the
+-- message. If you receive a message more than once, the receipt handle you get
+-- each time you receive the message is different. When you request 'DeleteMessage'
+-- , if you don't provide the most recently received receipt handle for the
+-- message, the request will still succeed, but the message might not be
+-- deleted.
+--
 -- It is possible you will receive a message even after you have deleted it.
 -- This might happen on rare occasions if one of the servers storing a copy of
 -- the message is unavailable when you request to delete the message. The copy
diff --git a/gen/Network/AWS/SQS/DeleteMessageBatch.hs b/gen/Network/AWS/SQS/DeleteMessageBatch.hs
--- a/gen/Network/AWS/SQS/DeleteMessageBatch.hs
+++ b/gen/Network/AWS/SQS/DeleteMessageBatch.hs
@@ -22,15 +22,17 @@
 --
 -- Derived from AWS service descriptions, licensed under Apache 2.0.
 
--- | Deletes multiple messages. This is a batch version of 'DeleteMessage'. The
--- result of the delete action on each message is reported individually in the
--- response.
+-- | Deletes up to ten messages from the specified queue. This is a batch version
+-- of 'DeleteMessage'. The result of the delete action on each message is reported
+-- individually in the response.
 --
 -- Because the batch request can result in a combination of successful and
 -- unsuccessful actions, you should check for batch errors even when the call
 -- returns an HTTP status code of 200.
 --
--- '&Attribute.1=this'
+-- Some API actions take lists of parameters. These lists are specified using
+-- the 'param.n' notation. Values of 'n' are integers starting from 1. For example,
+-- a parameter list with two elements looks like this:  '&Attribute.1=this'
 --
 -- '&Attribute.2=that'
 --
diff --git a/gen/Network/AWS/SQS/GetQueueAttributes.hs b/gen/Network/AWS/SQS/GetQueueAttributes.hs
--- a/gen/Network/AWS/SQS/GetQueueAttributes.hs
+++ b/gen/Network/AWS/SQS/GetQueueAttributes.hs
@@ -38,7 +38,12 @@
 -- parameters for dead letter queue functionality of the source queue. For more
 -- information about RedrivePolicy and dead letter queues, see <http://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/SQSDeadLetterQueue.html Using Amazon SQSDead Letter Queues> in the /Amazon SQS Developer Guide/.
 --
--- '&Attribute.1=this'
+-- Going forward, new attributes might be added. If you are writing code that
+-- calls this action, we recommend that you structure your code so that it can
+-- handle new attributes gracefully. Some API actions take lists of parameters.
+-- These lists are specified using the 'param.n' notation. Values of 'n' are
+-- integers starting from 1. For example, a parameter list with two elements
+-- looks like this:  '&Attribute.1=this'
 --
 -- '&Attribute.2=that'
 --
diff --git a/gen/Network/AWS/SQS/PurgeQueue.hs b/gen/Network/AWS/SQS/PurgeQueue.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/SQS/PurgeQueue.hs
@@ -0,0 +1,97 @@
+{-# LANGUAGE DataKinds                   #-}
+{-# LANGUAGE DeriveGeneric               #-}
+{-# LANGUAGE FlexibleInstances           #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
+{-# LANGUAGE LambdaCase                  #-}
+{-# LANGUAGE NoImplicitPrelude           #-}
+{-# LANGUAGE OverloadedStrings           #-}
+{-# LANGUAGE RecordWildCards             #-}
+{-# LANGUAGE TypeFamilies                #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Module      : Network.AWS.SQS.PurgeQueue
+-- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
+-- License     : This Source Code Form is subject to the terms of
+--               the Mozilla Public License, v. 2.0.
+--               A copy of the MPL can be found in the LICENSE file or
+--               you can obtain it at http://mozilla.org/MPL/2.0/.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : experimental
+-- Portability : non-portable (GHC extensions)
+--
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- | Deletes the messages in a queue specified by the queue URL.
+--
+-- When you use the 'PurgeQueue' API, the deleted messages in the queue cannot be
+-- retrieved. When you purge a queue, the message deletion process takes up to
+-- 60 seconds. All messages sent to the queue before calling 'PurgeQueue' will be
+-- deleted; messages sent to the queue while it is being purged may be deleted.
+-- While the queue is being purged, messages sent to the queue before 'PurgeQueue'
+-- was called may be received, but will be deleted within the next minute.
+--
+-- <http://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_PurgeQueue.html>
+module Network.AWS.SQS.PurgeQueue
+    (
+    -- * Request
+      PurgeQueue
+    -- ** Request constructor
+    , purgeQueue
+    -- ** Request lenses
+    , pqQueueUrl
+
+    -- * Response
+    , PurgeQueueResponse
+    -- ** Response constructor
+    , purgeQueueResponse
+    ) where
+
+import Network.AWS.Prelude
+import Network.AWS.Request.Query
+import Network.AWS.SQS.Types
+import qualified GHC.Exts
+
+newtype PurgeQueue = PurgeQueue
+    { _pqQueueUrl :: Text
+    } deriving (Eq, Ord, Show, Monoid, IsString)
+
+-- | 'PurgeQueue' constructor.
+--
+-- The fields accessible through corresponding lenses are:
+--
+-- * 'pqQueueUrl' @::@ 'Text'
+--
+purgeQueue :: Text -- ^ 'pqQueueUrl'
+           -> PurgeQueue
+purgeQueue p1 = PurgeQueue
+    { _pqQueueUrl = p1
+    }
+
+-- | The queue URL of the queue to delete the messages from when using the 'PurgeQueue' API.
+pqQueueUrl :: Lens' PurgeQueue Text
+pqQueueUrl = lens _pqQueueUrl (\s a -> s { _pqQueueUrl = a })
+
+data PurgeQueueResponse = PurgeQueueResponse
+    deriving (Eq, Ord, Show, Generic)
+
+-- | 'PurgeQueueResponse' constructor.
+purgeQueueResponse :: PurgeQueueResponse
+purgeQueueResponse = PurgeQueueResponse
+
+instance ToPath PurgeQueue where
+    toPath = const "/"
+
+instance ToQuery PurgeQueue where
+    toQuery PurgeQueue{..} = mconcat
+        [ "QueueUrl" =? _pqQueueUrl
+        ]
+
+instance ToHeaders PurgeQueue
+
+instance AWSRequest PurgeQueue where
+    type Sv PurgeQueue = SQS
+    type Rs PurgeQueue = PurgeQueueResponse
+
+    request  = post "PurgeQueue"
+    response = nullResponse PurgeQueueResponse
diff --git a/gen/Network/AWS/SQS/ReceiveMessage.hs b/gen/Network/AWS/SQS/ReceiveMessage.hs
--- a/gen/Network/AWS/SQS/ReceiveMessage.hs
+++ b/gen/Network/AWS/SQS/ReceiveMessage.hs
@@ -56,6 +56,12 @@
 -- used for the returned messages. For more information, see <http://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/AboutVT.html Visibility Timeout>
 -- in the /Amazon SQS Developer Guide/.
 --
+-- Going forward, new attributes might be added. If you are writing code that
+-- calls this action, we recommend that you structure your code so that it can
+-- handle new attributes gracefully.
+--
+--
+--
 -- <http://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_ReceiveMessage.html>
 module Network.AWS.SQS.ReceiveMessage
     (
@@ -126,9 +132,12 @@
 -- be returned:
 --
 -- 'All' - returns all values.  'ApproximateFirstReceiveTimestamp' - returns the
--- time when the message was first received (epoch time in milliseconds).  'ApproximateReceiveCount' - returns the number of times a message has been received but not deleted.  'SenderId' - returns the AWS account number (or the IP address, if anonymous access is
--- allowed) of the sender.  'SentTimestamp' - returns the time when the message
--- was sent (epoch time in milliseconds).
+-- time when the message was first received from the queue (epoch time in
+-- milliseconds).  'ApproximateReceiveCount' - returns the number of times a
+-- message has been received from the queue but not deleted.  'SenderId' - returns
+-- the AWS account number (or the IP address, if anonymous access is allowed) of
+-- the sender.  'SentTimestamp' - returns the time when the message was sent to
+-- the queue (epoch time in milliseconds).
 rmAttributeNames :: Lens' ReceiveMessage [Text]
 rmAttributeNames = lens _rmAttributeNames (\s a -> s { _rmAttributeNames = a }) . _List
 
@@ -141,13 +150,19 @@
 rmMaxNumberOfMessages =
     lens _rmMaxNumberOfMessages (\s a -> s { _rmMaxNumberOfMessages = a })
 
--- | The message attribute Name can contain the following characters: A-Z, a-z,
--- 0-9, underscore(_), hyphen(-), and period (.). The message attribute name
--- must not start or end with a period, and it should not have successive
--- periods. The message attribute name is case sensitive and must be unique
--- among all attribute names for the message. The message attribute name can be
--- up to 256 characters long. Attribute names cannot start with "AWS." or
--- "Amazon." because these prefixes are reserved for use by Amazon Web Services.
+-- | The name of the message attribute, where /N/ is the index. The message
+-- attribute name can contain the following characters: A-Z, a-z, 0-9,
+-- underscore (_), hyphen (-), and period (.). The name must not start or end
+-- with a period, and it should not have successive periods. The name is case
+-- sensitive and must be unique among all attribute names for the message. The
+-- name can be up to 256 characters long. The name cannot start with "AWS." or
+-- "Amazon." (or any variations in casing), because these prefixes are reserved
+-- for use by Amazon Web Services.
+--
+-- When using 'ReceiveMessage', you can send a list of attribute names to
+-- receive, or you can return all of the attributes by specifying "All" or ".*"
+-- in your request. You can also use "foo.*" to return all message attributes
+-- starting with the "foo" prefix.
 rmMessageAttributeNames :: Lens' ReceiveMessage [Text]
 rmMessageAttributeNames =
     lens _rmMessageAttributeNames (\s a -> s { _rmMessageAttributeNames = a })
diff --git a/gen/Network/AWS/SQS/SendMessageBatch.hs b/gen/Network/AWS/SQS/SendMessageBatch.hs
--- a/gen/Network/AWS/SQS/SendMessageBatch.hs
+++ b/gen/Network/AWS/SQS/SendMessageBatch.hs
@@ -41,7 +41,10 @@
 --
 -- Because the batch request can result in a combination of successful and
 -- unsuccessful actions, you should check for batch errors even when the call
--- returns an HTTP status code of 200.  '&Attribute.1=this'
+-- returns an HTTP status code of 200.  Some API actions take lists of
+-- parameters. These lists are specified using the 'param.n' notation. Values of 'n'
+-- are integers starting from 1. For example, a parameter list with two elements
+-- looks like this:  '&Attribute.1=this'
 --
 -- '&Attribute.2=that'
 --
diff --git a/gen/Network/AWS/SQS/SetQueueAttributes.hs b/gen/Network/AWS/SQS/SetQueueAttributes.hs
--- a/gen/Network/AWS/SQS/SetQueueAttributes.hs
+++ b/gen/Network/AWS/SQS/SetQueueAttributes.hs
@@ -26,6 +26,10 @@
 -- attributes, the change can take up to 60 seconds for most of the attributes
 -- to propagate throughout the SQS system. Changes made to the 'MessageRetentionPeriod' attribute can take up to 15 minutes.
 --
+-- Going forward, new attributes might be added. If you are writing code that
+-- calls this action, we recommend that you structure your code so that it can
+-- handle new attributes gracefully.
+--
 -- <http://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_SetQueueAttributes.html>
 module Network.AWS.SQS.SetQueueAttributes
     (
@@ -81,16 +85,15 @@
 -- attribute is 262144 (256 KiB).  'MessageRetentionPeriod' - The number of
 -- seconds Amazon SQS retains a message. Integer representing seconds, from 60
 -- (1 minute) to 1209600 (14 days). The default for this attribute is 345600 (4
--- days).  'Policy' - The queue's policy. A valid form-url-encoded policy. For
--- more information about policy structure, see <http://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/BasicStructure.html Basic Policy Structure> in the /Amazon SQS Developer Guide/. For more information about form-url-encoding, see <http://www.w3.org/MarkUp/html-spec/html-spec_8.html#SEC8.2.1 http://www.w3.org/MarkUp/html-spec/html-spec_8.html#SEC8.2.1>.  'ReceiveMessageWaitTimeSeconds' - The time for which a ReceiveMessage call
--- will wait for a message to arrive. An integer from 0 to 20 (seconds). The
--- default for this attribute is 0.   'VisibilityTimeout' - The visibility timeout
--- for the queue. An integer from 0 to 43200 (12 hours). The default for this
--- attribute is 30. For more information about visibility timeout, see
--- Visibility Timeout in the /Amazon SQS Developer Guide/.  'RedrivePolicy' - The
--- parameters for dead letter queue functionality of the source queue. For more
--- information about RedrivePolicy and dead letter queues, see Using Amazon SQS
--- Dead Letter Queues in the /Amazon SQS Developer Guide/.
+-- days).  'Policy' - The queue's policy. A valid AWS policy. For more information
+-- about policy structure, see <http://docs.aws.amazon.com/IAM/latest/UserGuide/PoliciesOverview.html Overview of AWS IAM Policies> in the /Amazon IAMUser Guide/.  'ReceiveMessageWaitTimeSeconds' - The time for which a
+-- ReceiveMessage call will wait for a message to arrive. An integer from 0 to
+-- 20 (seconds). The default for this attribute is 0.   'VisibilityTimeout' - The
+-- visibility timeout for the queue. An integer from 0 to 43200 (12 hours). The
+-- default for this attribute is 30. For more information about visibility
+-- timeout, see Visibility Timeout in the /Amazon SQS Developer Guide/.  'RedrivePolicy' - The parameters for dead letter queue functionality of the source queue.
+-- For more information about RedrivePolicy and dead letter queues, see Using
+-- Amazon SQS Dead Letter Queues in the /Amazon SQS Developer Guide/.
 sqaAttributes :: Lens' SetQueueAttributes (HashMap Text Text)
 sqaAttributes = lens _sqaAttributes (\s a -> s { _sqaAttributes = a }) . _EMap
 
diff --git a/gen/Network/AWS/SQS/Types.hs b/gen/Network/AWS/SQS/Types.hs
--- a/gen/Network/AWS/SQS/Types.hs
+++ b/gen/Network/AWS/SQS/Types.hs
@@ -7,6 +7,7 @@
 {-# LANGUAGE OverloadedStrings           #-}
 {-# LANGUAGE RecordWildCards             #-}
 {-# LANGUAGE TypeFamilies                #-}
+{-# LANGUAGE ViewPatterns                #-}
 
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 
@@ -99,7 +100,6 @@
     , breeSenderFault
     ) where
 
-import Network.AWS.Error
 import Network.AWS.Prelude
 import Network.AWS.Signing
 import qualified GHC.Exts
@@ -111,18 +111,44 @@
     type Sg SQS = V4
     type Er SQS = RESTError
 
-    service = Service
-        { _svcAbbrev       = "SQS"
-        , _svcPrefix       = "sqs"
-        , _svcVersion      = "2012-11-05"
-        , _svcTargetPrefix = Nothing
-        , _svcJSONVersion  = Nothing
-        }
+    service = service'
+      where
+        service' :: Service SQS
+        service' = Service
+            { _svcAbbrev       = "SQS"
+            , _svcPrefix       = "sqs"
+            , _svcVersion      = "2012-11-05"
+            , _svcTargetPrefix = Nothing
+            , _svcJSONVersion  = Nothing
+            , _svcHandle       = handle
+            , _svcRetry        = retry
+            }
 
-    handle = restError statusSuccess
+        handle :: Status
+               -> Maybe (LazyByteString -> ServiceError RESTError)
+        handle = restError statusSuccess service'
 
+        retry :: Retry SQS
+        retry = Exponential
+            { _retryBase     = 0.05
+            , _retryGrowth   = 2
+            , _retryAttempts = 5
+            , _retryCheck    = check
+            }
+
+        check :: Status
+              -> RESTError
+              -> Bool
+        check (statusCode -> s) (awsErrorCode -> e)
+            | s == 403 && "RequestThrottled" == e = True -- Request Limit Exceeded
+            | s == 500  = True -- General Server Error
+            | s == 509  = True -- Limit Exceeded
+            | s == 503  = True -- Service Unavailable
+            | otherwise = False
+
 ns :: Text
 ns = "http://queue.amazonaws.com/doc/2012-11-05/"
+{-# INLINE ns #-}
 
 data DeleteMessageBatchRequestEntry = DeleteMessageBatchRequestEntry
     { _dmbreId            :: Text
