diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -8,7 +8,7 @@
 
 ## Version
 
-`1.5.0`
+`1.6.0`
 
 
 ## Description
diff --git a/amazonka-budgets.cabal b/amazonka-budgets.cabal
--- a/amazonka-budgets.cabal
+++ b/amazonka-budgets.cabal
@@ -1,5 +1,5 @@
 name:                  amazonka-budgets
-version:               1.5.0
+version:               1.6.0
 synopsis:              Amazon Budgets SDK.
 homepage:              https://github.com/brendanhay/amazonka
 bug-reports:           https://github.com/brendanhay/amazonka/issues
@@ -7,7 +7,7 @@
 license-file:          LICENSE
 author:                Brendan Hay
 maintainer:            Brendan Hay <brendan.g.hay+amazonka@gmail.com>
-copyright:             Copyright (c) 2013-2017 Brendan Hay
+copyright:             Copyright (c) 2013-2018 Brendan Hay
 category:              Network, AWS, Cloud, Distributed Computing
 build-type:            Simple
 cabal-version:         >= 1.10
@@ -66,7 +66,7 @@
         , Network.AWS.Budgets.Types.Sum
 
     build-depends:
-          amazonka-core == 1.5.0.*
+          amazonka-core == 1.6.0.*
         , base          >= 4.7     && < 5
 
 test-suite amazonka-budgets-test
@@ -86,8 +86,8 @@
         , Test.AWS.Budgets.Internal
 
     build-depends:
-          amazonka-core == 1.5.0.*
-        , amazonka-test == 1.5.0.*
+          amazonka-core == 1.6.0.*
+        , amazonka-test == 1.6.0.*
         , amazonka-budgets
         , base
         , bytestring
diff --git a/gen/Network/AWS/Budgets.hs b/gen/Network/AWS/Budgets.hs
--- a/gen/Network/AWS/Budgets.hs
+++ b/gen/Network/AWS/Budgets.hs
@@ -5,13 +5,35 @@
 
 -- |
 -- Module      : Network.AWS.Budgets
--- Copyright   : (c) 2013-2017 Brendan Hay
+-- Copyright   : (c) 2013-2018 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- All public APIs for AWS Budgets
+-- Budgets enable you to plan your service usage, service costs, and your RI utilization. You can also track how close your plan is to your budgeted amount or to the free tier limits. Budgets provide you with a quick way to see your usage-to-date and current estimated charges from AWS and to see how much your predicted usage accrues in charges by the end of the month. Budgets also compare current estimates and charges to the amount that you indicated you want to use or spend and lets you see how much of your budget has been used. AWS updates your budget status several times a day. Budgets track your unblended costs, subscriptions, and refunds. You can create the following types of budgets:
+--
+--
+--     * Cost budgets allow you to say how much you want to spend on a service.
+--
+--     * Usage budgets allow you to say how many hours you want to use for one or more services.
+--
+--     * RI utilization budgets allow you to define a utilization threshold and receive alerts when RIs are tracking below that threshold.
+--
+--
+--
+-- You can create up to 20,000 budgets per AWS master account. Your first two budgets are free of charge. Each additional budget costs $0.02 per day. You can set up optional notifications that warn you if you exceed, or are forecasted to exceed, your budgeted amount. You can have notifications sent to an Amazon SNS topic, to an email address, or to both. For more information, see <https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/budgets-sns-policy.html Creating an Amazon SNS Topic for Budget Notifications> . AWS Free Tier usage alerts via AWS Budgets are provided for you, and do not count toward your budget limits.
+--
+-- Service Endpoint
+--
+-- The AWS Budgets API provides the following endpoint:
+--
+--     * https://budgets.amazonaws.com
+--
+--
+--
+-- For information about costs associated with the AWS Budgets API, see <https://aws.amazon.com/aws-cost-management/pricing/ AWS Cost Management Pricing> .
+--
 module Network.AWS.Budgets
     (
     -- * Service Configuration
@@ -110,12 +132,12 @@
     , Budget
     , budget
     , bCalculatedSpend
-    , bCostFilters
-    , bBudgetName
     , bBudgetLimit
+    , bTimePeriod
     , bCostTypes
+    , bCostFilters
+    , bBudgetName
     , bTimeUnit
-    , bTimePeriod
     , bBudgetType
 
     -- ** CalculatedSpend
@@ -127,9 +149,17 @@
     -- ** CostTypes
     , CostTypes
     , costTypes
-    , ctIncludeTax
-    , ctIncludeSubscription
+    , ctUseAmortized
+    , ctIncludeRecurring
     , ctUseBlended
+    , ctIncludeSupport
+    , ctIncludeDiscount
+    , ctIncludeSubscription
+    , ctIncludeRefund
+    , ctIncludeUpfront
+    , ctIncludeOtherSubscription
+    , ctIncludeTax
+    , ctIncludeCredit
 
     -- ** Notification
     , Notification
diff --git a/gen/Network/AWS/Budgets/CreateBudget.hs b/gen/Network/AWS/Budgets/CreateBudget.hs
--- a/gen/Network/AWS/Budgets/CreateBudget.hs
+++ b/gen/Network/AWS/Budgets/CreateBudget.hs
@@ -12,13 +12,15 @@
 
 -- |
 -- Module      : Network.AWS.Budgets.CreateBudget
--- Copyright   : (c) 2013-2017 Brendan Hay
+-- Copyright   : (c) 2013-2018 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Create a new budget
+-- Creates a budget and, if included, notifications and subscribers.
+--
+--
 module Network.AWS.Budgets.CreateBudget
     (
     -- * Creating a Request
@@ -45,6 +47,8 @@
 
 -- | Request of CreateBudget
 --
+--
+--
 -- /See:/ 'createBudget' smart constructor.
 data CreateBudget = CreateBudget'
   { _cbNotificationsWithSubscribers :: !(Maybe [NotificationWithSubscribers])
@@ -57,34 +61,34 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'cbNotificationsWithSubscribers' - Undocumented member.
+-- * 'cbNotificationsWithSubscribers' - A notification that you want to associate with a budget. A budget can have up to five notifications, and each notification can have one SNS subscriber and up to ten email subscribers. If you include notifications and subscribers in your @CreateBudget@ call, AWS creates the notifications and subscribers for you.
 --
--- * 'cbAccountId' - Undocumented member.
+-- * 'cbAccountId' - The @accountId@ that is associated with the budget.
 --
--- * 'cbBudget' - Undocumented member.
+-- * 'cbBudget' - The budget object that you want to create.
 createBudget
     :: Text -- ^ 'cbAccountId'
     -> Budget -- ^ 'cbBudget'
     -> CreateBudget
 createBudget pAccountId_ pBudget_ =
   CreateBudget'
-  { _cbNotificationsWithSubscribers = Nothing
-  , _cbAccountId = pAccountId_
-  , _cbBudget = pBudget_
-  }
+    { _cbNotificationsWithSubscribers = Nothing
+    , _cbAccountId = pAccountId_
+    , _cbBudget = pBudget_
+    }
 
 
--- | Undocumented member.
+-- | A notification that you want to associate with a budget. A budget can have up to five notifications, and each notification can have one SNS subscriber and up to ten email subscribers. If you include notifications and subscribers in your @CreateBudget@ call, AWS creates the notifications and subscribers for you.
 cbNotificationsWithSubscribers :: Lens' CreateBudget [NotificationWithSubscribers]
-cbNotificationsWithSubscribers = lens _cbNotificationsWithSubscribers (\ s a -> s{_cbNotificationsWithSubscribers = a}) . _Default . _Coerce;
+cbNotificationsWithSubscribers = lens _cbNotificationsWithSubscribers (\ s a -> s{_cbNotificationsWithSubscribers = a}) . _Default . _Coerce
 
--- | Undocumented member.
+-- | The @accountId@ that is associated with the budget.
 cbAccountId :: Lens' CreateBudget Text
-cbAccountId = lens _cbAccountId (\ s a -> s{_cbAccountId = a});
+cbAccountId = lens _cbAccountId (\ s a -> s{_cbAccountId = a})
 
--- | Undocumented member.
+-- | The budget object that you want to create.
 cbBudget :: Lens' CreateBudget Budget
-cbBudget = lens _cbBudget (\ s a -> s{_cbBudget = a});
+cbBudget = lens _cbBudget (\ s a -> s{_cbBudget = a})
 
 instance AWSRequest CreateBudget where
         type Rs CreateBudget = CreateBudgetResponse
@@ -125,6 +129,8 @@
 
 -- | Response of CreateBudget
 --
+--
+--
 -- /See:/ 'createBudgetResponse' smart constructor.
 newtype CreateBudgetResponse = CreateBudgetResponse'
   { _cbrsResponseStatus :: Int
@@ -145,6 +151,6 @@
 
 -- | -- | The response status code.
 cbrsResponseStatus :: Lens' CreateBudgetResponse Int
-cbrsResponseStatus = lens _cbrsResponseStatus (\ s a -> s{_cbrsResponseStatus = a});
+cbrsResponseStatus = lens _cbrsResponseStatus (\ s a -> s{_cbrsResponseStatus = a})
 
 instance NFData CreateBudgetResponse where
diff --git a/gen/Network/AWS/Budgets/CreateNotification.hs b/gen/Network/AWS/Budgets/CreateNotification.hs
--- a/gen/Network/AWS/Budgets/CreateNotification.hs
+++ b/gen/Network/AWS/Budgets/CreateNotification.hs
@@ -12,13 +12,15 @@
 
 -- |
 -- Module      : Network.AWS.Budgets.CreateNotification
--- Copyright   : (c) 2013-2017 Brendan Hay
+-- Copyright   : (c) 2013-2018 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Create a new Notification with subscribers for a budget
+-- Creates a notification. You must create the budget before you create the associated notification.
+--
+--
 module Network.AWS.Budgets.CreateNotification
     (
     -- * Creating a Request
@@ -46,6 +48,8 @@
 
 -- | Request of CreateNotification
 --
+--
+--
 -- /See:/ 'createNotification' smart constructor.
 data CreateNotification = CreateNotification'
   { _cnAccountId    :: !Text
@@ -59,13 +63,13 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'cnAccountId' - Undocumented member.
+-- * 'cnAccountId' - The @accountId@ that is associated with the budget that you want to create a notification for.
 --
--- * 'cnBudgetName' - Undocumented member.
+-- * 'cnBudgetName' - The name of the budget that you want AWS to notified you about. Budget names must be unique within an account.
 --
--- * 'cnNotification' - Undocumented member.
+-- * 'cnNotification' - The notification that you want to create.
 --
--- * 'cnSubscribers' - Undocumented member.
+-- * 'cnSubscribers' - A list of subscribers that you want to associate with the notification. Each notification can have one SNS subscriber and up to ten email subscribers.
 createNotification
     :: Text -- ^ 'cnAccountId'
     -> Text -- ^ 'cnBudgetName'
@@ -74,28 +78,28 @@
     -> CreateNotification
 createNotification pAccountId_ pBudgetName_ pNotification_ pSubscribers_ =
   CreateNotification'
-  { _cnAccountId = pAccountId_
-  , _cnBudgetName = pBudgetName_
-  , _cnNotification = pNotification_
-  , _cnSubscribers = _List1 # pSubscribers_
-  }
+    { _cnAccountId = pAccountId_
+    , _cnBudgetName = pBudgetName_
+    , _cnNotification = pNotification_
+    , _cnSubscribers = _List1 # pSubscribers_
+    }
 
 
--- | Undocumented member.
+-- | The @accountId@ that is associated with the budget that you want to create a notification for.
 cnAccountId :: Lens' CreateNotification Text
-cnAccountId = lens _cnAccountId (\ s a -> s{_cnAccountId = a});
+cnAccountId = lens _cnAccountId (\ s a -> s{_cnAccountId = a})
 
--- | Undocumented member.
+-- | The name of the budget that you want AWS to notified you about. Budget names must be unique within an account.
 cnBudgetName :: Lens' CreateNotification Text
-cnBudgetName = lens _cnBudgetName (\ s a -> s{_cnBudgetName = a});
+cnBudgetName = lens _cnBudgetName (\ s a -> s{_cnBudgetName = a})
 
--- | Undocumented member.
+-- | The notification that you want to create.
 cnNotification :: Lens' CreateNotification Notification
-cnNotification = lens _cnNotification (\ s a -> s{_cnNotification = a});
+cnNotification = lens _cnNotification (\ s a -> s{_cnNotification = a})
 
--- | Undocumented member.
+-- | A list of subscribers that you want to associate with the notification. Each notification can have one SNS subscriber and up to ten email subscribers.
 cnSubscribers :: Lens' CreateNotification (NonEmpty Subscriber)
-cnSubscribers = lens _cnSubscribers (\ s a -> s{_cnSubscribers = a}) . _List1;
+cnSubscribers = lens _cnSubscribers (\ s a -> s{_cnSubscribers = a}) . _List1
 
 instance AWSRequest CreateNotification where
         type Rs CreateNotification =
@@ -137,6 +141,8 @@
 
 -- | Response of CreateNotification
 --
+--
+--
 -- /See:/ 'createNotificationResponse' smart constructor.
 newtype CreateNotificationResponse = CreateNotificationResponse'
   { _cnrsResponseStatus :: Int
@@ -157,6 +163,6 @@
 
 -- | -- | The response status code.
 cnrsResponseStatus :: Lens' CreateNotificationResponse Int
-cnrsResponseStatus = lens _cnrsResponseStatus (\ s a -> s{_cnrsResponseStatus = a});
+cnrsResponseStatus = lens _cnrsResponseStatus (\ s a -> s{_cnrsResponseStatus = a})
 
 instance NFData CreateNotificationResponse where
diff --git a/gen/Network/AWS/Budgets/CreateSubscriber.hs b/gen/Network/AWS/Budgets/CreateSubscriber.hs
--- a/gen/Network/AWS/Budgets/CreateSubscriber.hs
+++ b/gen/Network/AWS/Budgets/CreateSubscriber.hs
@@ -12,13 +12,15 @@
 
 -- |
 -- Module      : Network.AWS.Budgets.CreateSubscriber
--- Copyright   : (c) 2013-2017 Brendan Hay
+-- Copyright   : (c) 2013-2018 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Create a new Subscriber for a notification
+-- Creates a subscriber. You must create the associated budget and notification before you create the subscriber.
+--
+--
 module Network.AWS.Budgets.CreateSubscriber
     (
     -- * Creating a Request
@@ -46,6 +48,8 @@
 
 -- | Request of CreateSubscriber
 --
+--
+--
 -- /See:/ 'createSubscriber' smart constructor.
 data CreateSubscriber = CreateSubscriber'
   { _csAccountId    :: !Text
@@ -59,13 +63,13 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'csAccountId' - Undocumented member.
+-- * 'csAccountId' - The @accountId@ associated with the budget that you want to create a subscriber for.
 --
--- * 'csBudgetName' - Undocumented member.
+-- * 'csBudgetName' - The name of the budget that you want to subscribe to. Budget names must be unique within an account.
 --
--- * 'csNotification' - Undocumented member.
+-- * 'csNotification' - The notification that you want to create a subscriber for.
 --
--- * 'csSubscriber' - Undocumented member.
+-- * 'csSubscriber' - The subscriber that you want to associate with a budget notification.
 createSubscriber
     :: Text -- ^ 'csAccountId'
     -> Text -- ^ 'csBudgetName'
@@ -74,28 +78,28 @@
     -> CreateSubscriber
 createSubscriber pAccountId_ pBudgetName_ pNotification_ pSubscriber_ =
   CreateSubscriber'
-  { _csAccountId = pAccountId_
-  , _csBudgetName = pBudgetName_
-  , _csNotification = pNotification_
-  , _csSubscriber = pSubscriber_
-  }
+    { _csAccountId = pAccountId_
+    , _csBudgetName = pBudgetName_
+    , _csNotification = pNotification_
+    , _csSubscriber = pSubscriber_
+    }
 
 
--- | Undocumented member.
+-- | The @accountId@ associated with the budget that you want to create a subscriber for.
 csAccountId :: Lens' CreateSubscriber Text
-csAccountId = lens _csAccountId (\ s a -> s{_csAccountId = a});
+csAccountId = lens _csAccountId (\ s a -> s{_csAccountId = a})
 
--- | Undocumented member.
+-- | The name of the budget that you want to subscribe to. Budget names must be unique within an account.
 csBudgetName :: Lens' CreateSubscriber Text
-csBudgetName = lens _csBudgetName (\ s a -> s{_csBudgetName = a});
+csBudgetName = lens _csBudgetName (\ s a -> s{_csBudgetName = a})
 
--- | Undocumented member.
+-- | The notification that you want to create a subscriber for.
 csNotification :: Lens' CreateSubscriber Notification
-csNotification = lens _csNotification (\ s a -> s{_csNotification = a});
+csNotification = lens _csNotification (\ s a -> s{_csNotification = a})
 
--- | Undocumented member.
+-- | The subscriber that you want to associate with a budget notification.
 csSubscriber :: Lens' CreateSubscriber Subscriber
-csSubscriber = lens _csSubscriber (\ s a -> s{_csSubscriber = a});
+csSubscriber = lens _csSubscriber (\ s a -> s{_csSubscriber = a})
 
 instance AWSRequest CreateSubscriber where
         type Rs CreateSubscriber = CreateSubscriberResponse
@@ -136,6 +140,8 @@
 
 -- | Response of CreateSubscriber
 --
+--
+--
 -- /See:/ 'createSubscriberResponse' smart constructor.
 newtype CreateSubscriberResponse = CreateSubscriberResponse'
   { _csrsResponseStatus :: Int
@@ -156,6 +162,6 @@
 
 -- | -- | The response status code.
 csrsResponseStatus :: Lens' CreateSubscriberResponse Int
-csrsResponseStatus = lens _csrsResponseStatus (\ s a -> s{_csrsResponseStatus = a});
+csrsResponseStatus = lens _csrsResponseStatus (\ s a -> s{_csrsResponseStatus = a})
 
 instance NFData CreateSubscriberResponse where
diff --git a/gen/Network/AWS/Budgets/DeleteBudget.hs b/gen/Network/AWS/Budgets/DeleteBudget.hs
--- a/gen/Network/AWS/Budgets/DeleteBudget.hs
+++ b/gen/Network/AWS/Budgets/DeleteBudget.hs
@@ -12,13 +12,17 @@
 
 -- |
 -- Module      : Network.AWS.Budgets.DeleteBudget
--- Copyright   : (c) 2013-2017 Brendan Hay
+-- Copyright   : (c) 2013-2018 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Delete a budget and related notifications
+-- Deletes a budget. You can delete your budget at any time.
+--
+--
+-- __Deleting a budget also deletes the notifications and subscribers associated with that budget.__
+--
 module Network.AWS.Budgets.DeleteBudget
     (
     -- * Creating a Request
@@ -44,6 +48,8 @@
 
 -- | Request of DeleteBudget
 --
+--
+--
 -- /See:/ 'deleteBudget' smart constructor.
 data DeleteBudget = DeleteBudget'
   { _dAccountId  :: !Text
@@ -55,9 +61,9 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'dAccountId' - Undocumented member.
+-- * 'dAccountId' - The @accountId@ that is associated with the budget that you want to delete.
 --
--- * 'dBudgetName' - Undocumented member.
+-- * 'dBudgetName' - The name of the budget that you want to delete.
 deleteBudget
     :: Text -- ^ 'dAccountId'
     -> Text -- ^ 'dBudgetName'
@@ -66,13 +72,13 @@
   DeleteBudget' {_dAccountId = pAccountId_, _dBudgetName = pBudgetName_}
 
 
--- | Undocumented member.
+-- | The @accountId@ that is associated with the budget that you want to delete.
 dAccountId :: Lens' DeleteBudget Text
-dAccountId = lens _dAccountId (\ s a -> s{_dAccountId = a});
+dAccountId = lens _dAccountId (\ s a -> s{_dAccountId = a})
 
--- | Undocumented member.
+-- | The name of the budget that you want to delete.
 dBudgetName :: Lens' DeleteBudget Text
-dBudgetName = lens _dBudgetName (\ s a -> s{_dBudgetName = a});
+dBudgetName = lens _dBudgetName (\ s a -> s{_dBudgetName = a})
 
 instance AWSRequest DeleteBudget where
         type Rs DeleteBudget = DeleteBudgetResponse
@@ -111,6 +117,8 @@
 
 -- | Response of DeleteBudget
 --
+--
+--
 -- /See:/ 'deleteBudgetResponse' smart constructor.
 newtype DeleteBudgetResponse = DeleteBudgetResponse'
   { _drsResponseStatus :: Int
@@ -131,6 +139,6 @@
 
 -- | -- | The response status code.
 drsResponseStatus :: Lens' DeleteBudgetResponse Int
-drsResponseStatus = lens _drsResponseStatus (\ s a -> s{_drsResponseStatus = a});
+drsResponseStatus = lens _drsResponseStatus (\ s a -> s{_drsResponseStatus = a})
 
 instance NFData DeleteBudgetResponse where
diff --git a/gen/Network/AWS/Budgets/DeleteNotification.hs b/gen/Network/AWS/Budgets/DeleteNotification.hs
--- a/gen/Network/AWS/Budgets/DeleteNotification.hs
+++ b/gen/Network/AWS/Budgets/DeleteNotification.hs
@@ -12,13 +12,17 @@
 
 -- |
 -- Module      : Network.AWS.Budgets.DeleteNotification
--- Copyright   : (c) 2013-2017 Brendan Hay
+-- Copyright   : (c) 2013-2018 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Delete a notification and related subscribers
+-- Deletes a notification.
+--
+--
+-- __Deleting a notification also deletes the subscribers associated with the notification.__
+--
 module Network.AWS.Budgets.DeleteNotification
     (
     -- * Creating a Request
@@ -45,6 +49,8 @@
 
 -- | Request of DeleteNotification
 --
+--
+--
 -- /See:/ 'deleteNotification' smart constructor.
 data DeleteNotification = DeleteNotification'
   { _dnAccountId    :: !Text
@@ -57,11 +63,11 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'dnAccountId' - Undocumented member.
+-- * 'dnAccountId' - The @accountId@ that is associated with the budget whose notification you want to delete.
 --
--- * 'dnBudgetName' - Undocumented member.
+-- * 'dnBudgetName' - The name of the budget whose notification you want to delete.
 --
--- * 'dnNotification' - Undocumented member.
+-- * 'dnNotification' - The notification that you want to delete.
 deleteNotification
     :: Text -- ^ 'dnAccountId'
     -> Text -- ^ 'dnBudgetName'
@@ -69,23 +75,23 @@
     -> DeleteNotification
 deleteNotification pAccountId_ pBudgetName_ pNotification_ =
   DeleteNotification'
-  { _dnAccountId = pAccountId_
-  , _dnBudgetName = pBudgetName_
-  , _dnNotification = pNotification_
-  }
+    { _dnAccountId = pAccountId_
+    , _dnBudgetName = pBudgetName_
+    , _dnNotification = pNotification_
+    }
 
 
--- | Undocumented member.
+-- | The @accountId@ that is associated with the budget whose notification you want to delete.
 dnAccountId :: Lens' DeleteNotification Text
-dnAccountId = lens _dnAccountId (\ s a -> s{_dnAccountId = a});
+dnAccountId = lens _dnAccountId (\ s a -> s{_dnAccountId = a})
 
--- | Undocumented member.
+-- | The name of the budget whose notification you want to delete.
 dnBudgetName :: Lens' DeleteNotification Text
-dnBudgetName = lens _dnBudgetName (\ s a -> s{_dnBudgetName = a});
+dnBudgetName = lens _dnBudgetName (\ s a -> s{_dnBudgetName = a})
 
--- | Undocumented member.
+-- | The notification that you want to delete.
 dnNotification :: Lens' DeleteNotification Notification
-dnNotification = lens _dnNotification (\ s a -> s{_dnNotification = a});
+dnNotification = lens _dnNotification (\ s a -> s{_dnNotification = a})
 
 instance AWSRequest DeleteNotification where
         type Rs DeleteNotification =
@@ -126,6 +132,8 @@
 
 -- | Response of DeleteNotification
 --
+--
+--
 -- /See:/ 'deleteNotificationResponse' smart constructor.
 newtype DeleteNotificationResponse = DeleteNotificationResponse'
   { _dnrsResponseStatus :: Int
@@ -146,6 +154,6 @@
 
 -- | -- | The response status code.
 dnrsResponseStatus :: Lens' DeleteNotificationResponse Int
-dnrsResponseStatus = lens _dnrsResponseStatus (\ s a -> s{_dnrsResponseStatus = a});
+dnrsResponseStatus = lens _dnrsResponseStatus (\ s a -> s{_dnrsResponseStatus = a})
 
 instance NFData DeleteNotificationResponse where
diff --git a/gen/Network/AWS/Budgets/DeleteSubscriber.hs b/gen/Network/AWS/Budgets/DeleteSubscriber.hs
--- a/gen/Network/AWS/Budgets/DeleteSubscriber.hs
+++ b/gen/Network/AWS/Budgets/DeleteSubscriber.hs
@@ -12,13 +12,17 @@
 
 -- |
 -- Module      : Network.AWS.Budgets.DeleteSubscriber
--- Copyright   : (c) 2013-2017 Brendan Hay
+-- Copyright   : (c) 2013-2018 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Delete a Subscriber for a notification
+-- Deletes a subscriber.
+--
+--
+-- __Deleting the last subscriber to a notification also deletes the notification.__
+--
 module Network.AWS.Budgets.DeleteSubscriber
     (
     -- * Creating a Request
@@ -46,6 +50,8 @@
 
 -- | Request of DeleteSubscriber
 --
+--
+--
 -- /See:/ 'deleteSubscriber' smart constructor.
 data DeleteSubscriber = DeleteSubscriber'
   { _dsAccountId    :: !Text
@@ -59,13 +65,13 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'dsAccountId' - Undocumented member.
+-- * 'dsAccountId' - The @accountId@ that is associated with the budget whose subscriber you want to delete.
 --
--- * 'dsBudgetName' - Undocumented member.
+-- * 'dsBudgetName' - The name of the budget whose subscriber you want to delete.
 --
--- * 'dsNotification' - Undocumented member.
+-- * 'dsNotification' - The notification whose subscriber you want to delete.
 --
--- * 'dsSubscriber' - Undocumented member.
+-- * 'dsSubscriber' - The subscriber that you want to delete.
 deleteSubscriber
     :: Text -- ^ 'dsAccountId'
     -> Text -- ^ 'dsBudgetName'
@@ -74,28 +80,28 @@
     -> DeleteSubscriber
 deleteSubscriber pAccountId_ pBudgetName_ pNotification_ pSubscriber_ =
   DeleteSubscriber'
-  { _dsAccountId = pAccountId_
-  , _dsBudgetName = pBudgetName_
-  , _dsNotification = pNotification_
-  , _dsSubscriber = pSubscriber_
-  }
+    { _dsAccountId = pAccountId_
+    , _dsBudgetName = pBudgetName_
+    , _dsNotification = pNotification_
+    , _dsSubscriber = pSubscriber_
+    }
 
 
--- | Undocumented member.
+-- | The @accountId@ that is associated with the budget whose subscriber you want to delete.
 dsAccountId :: Lens' DeleteSubscriber Text
-dsAccountId = lens _dsAccountId (\ s a -> s{_dsAccountId = a});
+dsAccountId = lens _dsAccountId (\ s a -> s{_dsAccountId = a})
 
--- | Undocumented member.
+-- | The name of the budget whose subscriber you want to delete.
 dsBudgetName :: Lens' DeleteSubscriber Text
-dsBudgetName = lens _dsBudgetName (\ s a -> s{_dsBudgetName = a});
+dsBudgetName = lens _dsBudgetName (\ s a -> s{_dsBudgetName = a})
 
--- | Undocumented member.
+-- | The notification whose subscriber you want to delete.
 dsNotification :: Lens' DeleteSubscriber Notification
-dsNotification = lens _dsNotification (\ s a -> s{_dsNotification = a});
+dsNotification = lens _dsNotification (\ s a -> s{_dsNotification = a})
 
--- | Undocumented member.
+-- | The subscriber that you want to delete.
 dsSubscriber :: Lens' DeleteSubscriber Subscriber
-dsSubscriber = lens _dsSubscriber (\ s a -> s{_dsSubscriber = a});
+dsSubscriber = lens _dsSubscriber (\ s a -> s{_dsSubscriber = a})
 
 instance AWSRequest DeleteSubscriber where
         type Rs DeleteSubscriber = DeleteSubscriberResponse
@@ -136,6 +142,8 @@
 
 -- | Response of DeleteSubscriber
 --
+--
+--
 -- /See:/ 'deleteSubscriberResponse' smart constructor.
 newtype DeleteSubscriberResponse = DeleteSubscriberResponse'
   { _dsrsResponseStatus :: Int
@@ -156,6 +164,6 @@
 
 -- | -- | The response status code.
 dsrsResponseStatus :: Lens' DeleteSubscriberResponse Int
-dsrsResponseStatus = lens _dsrsResponseStatus (\ s a -> s{_dsrsResponseStatus = a});
+dsrsResponseStatus = lens _dsrsResponseStatus (\ s a -> s{_dsrsResponseStatus = a})
 
 instance NFData DeleteSubscriberResponse where
diff --git a/gen/Network/AWS/Budgets/DescribeBudget.hs b/gen/Network/AWS/Budgets/DescribeBudget.hs
--- a/gen/Network/AWS/Budgets/DescribeBudget.hs
+++ b/gen/Network/AWS/Budgets/DescribeBudget.hs
@@ -12,13 +12,15 @@
 
 -- |
 -- Module      : Network.AWS.Budgets.DescribeBudget
--- Copyright   : (c) 2013-2017 Brendan Hay
+-- Copyright   : (c) 2013-2018 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Get a single budget
+-- Describes a budget.
+--
+--
 module Network.AWS.Budgets.DescribeBudget
     (
     -- * Creating a Request
@@ -45,6 +47,8 @@
 
 -- | Request of DescribeBudget
 --
+--
+--
 -- /See:/ 'describeBudget' smart constructor.
 data DescribeBudget = DescribeBudget'
   { _desAccountId  :: !Text
@@ -56,9 +60,9 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'desAccountId' - Undocumented member.
+-- * 'desAccountId' - The @accountId@ that is associated with the budget that you want a description of.
 --
--- * 'desBudgetName' - Undocumented member.
+-- * 'desBudgetName' - The name of the budget that you want a description of.
 describeBudget
     :: Text -- ^ 'desAccountId'
     -> Text -- ^ 'desBudgetName'
@@ -67,13 +71,13 @@
   DescribeBudget' {_desAccountId = pAccountId_, _desBudgetName = pBudgetName_}
 
 
--- | Undocumented member.
+-- | The @accountId@ that is associated with the budget that you want a description of.
 desAccountId :: Lens' DescribeBudget Text
-desAccountId = lens _desAccountId (\ s a -> s{_desAccountId = a});
+desAccountId = lens _desAccountId (\ s a -> s{_desAccountId = a})
 
--- | Undocumented member.
+-- | The name of the budget that you want a description of.
 desBudgetName :: Lens' DescribeBudget Text
-desBudgetName = lens _desBudgetName (\ s a -> s{_desBudgetName = a});
+desBudgetName = lens _desBudgetName (\ s a -> s{_desBudgetName = a})
 
 instance AWSRequest DescribeBudget where
         type Rs DescribeBudget = DescribeBudgetResponse
@@ -113,6 +117,8 @@
 
 -- | Response of DescribeBudget
 --
+--
+--
 -- /See:/ 'describeBudgetResponse' smart constructor.
 data DescribeBudgetResponse = DescribeBudgetResponse'
   { _desrsBudget         :: !(Maybe Budget)
@@ -124,7 +130,7 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'desrsBudget' - Undocumented member.
+-- * 'desrsBudget' - The description of the budget.
 --
 -- * 'desrsResponseStatus' - -- | The response status code.
 describeBudgetResponse
@@ -132,15 +138,15 @@
     -> DescribeBudgetResponse
 describeBudgetResponse pResponseStatus_ =
   DescribeBudgetResponse'
-  {_desrsBudget = Nothing, _desrsResponseStatus = pResponseStatus_}
+    {_desrsBudget = Nothing, _desrsResponseStatus = pResponseStatus_}
 
 
--- | Undocumented member.
+-- | The description of the budget.
 desrsBudget :: Lens' DescribeBudgetResponse (Maybe Budget)
-desrsBudget = lens _desrsBudget (\ s a -> s{_desrsBudget = a});
+desrsBudget = lens _desrsBudget (\ s a -> s{_desrsBudget = a})
 
 -- | -- | The response status code.
 desrsResponseStatus :: Lens' DescribeBudgetResponse Int
-desrsResponseStatus = lens _desrsResponseStatus (\ s a -> s{_desrsResponseStatus = a});
+desrsResponseStatus = lens _desrsResponseStatus (\ s a -> s{_desrsResponseStatus = a})
 
 instance NFData DescribeBudgetResponse where
diff --git a/gen/Network/AWS/Budgets/DescribeBudgets.hs b/gen/Network/AWS/Budgets/DescribeBudgets.hs
--- a/gen/Network/AWS/Budgets/DescribeBudgets.hs
+++ b/gen/Network/AWS/Budgets/DescribeBudgets.hs
@@ -12,13 +12,15 @@
 
 -- |
 -- Module      : Network.AWS.Budgets.DescribeBudgets
--- Copyright   : (c) 2013-2017 Brendan Hay
+-- Copyright   : (c) 2013-2018 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Get all budgets for an account
+-- Lists the budgets associated with an account.
+--
+--
 module Network.AWS.Budgets.DescribeBudgets
     (
     -- * Creating a Request
@@ -47,6 +49,8 @@
 
 -- | Request of DescribeBudgets
 --
+--
+--
 -- /See:/ 'describeBudgets' smart constructor.
 data DescribeBudgets = DescribeBudgets'
   { _dbNextToken  :: !(Maybe Text)
@@ -59,30 +63,33 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'dbNextToken' - Undocumented member.
+-- * 'dbNextToken' - The pagination token that indicates the next set of results to retrieve.
 --
--- * 'dbMaxResults' - Undocumented member.
+-- * 'dbMaxResults' - Optional integer. Specifies the maximum number of results to return in response.
 --
--- * 'dbAccountId' - Undocumented member.
+-- * 'dbAccountId' - The @accountId@ that is associated with the budgets that you want descriptions of.
 describeBudgets
     :: Text -- ^ 'dbAccountId'
     -> DescribeBudgets
 describeBudgets pAccountId_ =
   DescribeBudgets'
-  {_dbNextToken = Nothing, _dbMaxResults = Nothing, _dbAccountId = pAccountId_}
+    { _dbNextToken = Nothing
+    , _dbMaxResults = Nothing
+    , _dbAccountId = pAccountId_
+    }
 
 
--- | Undocumented member.
+-- | The pagination token that indicates the next set of results to retrieve.
 dbNextToken :: Lens' DescribeBudgets (Maybe Text)
-dbNextToken = lens _dbNextToken (\ s a -> s{_dbNextToken = a});
+dbNextToken = lens _dbNextToken (\ s a -> s{_dbNextToken = a})
 
--- | Undocumented member.
+-- | Optional integer. Specifies the maximum number of results to return in response.
 dbMaxResults :: Lens' DescribeBudgets (Maybe Natural)
-dbMaxResults = lens _dbMaxResults (\ s a -> s{_dbMaxResults = a}) . mapping _Nat;
+dbMaxResults = lens _dbMaxResults (\ s a -> s{_dbMaxResults = a}) . mapping _Nat
 
--- | Undocumented member.
+-- | The @accountId@ that is associated with the budgets that you want descriptions of.
 dbAccountId :: Lens' DescribeBudgets Text
-dbAccountId = lens _dbAccountId (\ s a -> s{_dbAccountId = a});
+dbAccountId = lens _dbAccountId (\ s a -> s{_dbAccountId = a})
 
 instance AWSRequest DescribeBudgets where
         type Rs DescribeBudgets = DescribeBudgetsResponse
@@ -124,6 +131,8 @@
 
 -- | Response of DescribeBudgets
 --
+--
+--
 -- /See:/ 'describeBudgetsResponse' smart constructor.
 data DescribeBudgetsResponse = DescribeBudgetsResponse'
   { _dbrsNextToken      :: !(Maybe Text)
@@ -136,9 +145,9 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'dbrsNextToken' - Undocumented member.
+-- * 'dbrsNextToken' - The pagination token that indicates the next set of results that you can retrieve.
 --
--- * 'dbrsBudgets' - Undocumented member.
+-- * 'dbrsBudgets' - A list of budgets.
 --
 -- * 'dbrsResponseStatus' - -- | The response status code.
 describeBudgetsResponse
@@ -146,22 +155,22 @@
     -> DescribeBudgetsResponse
 describeBudgetsResponse pResponseStatus_ =
   DescribeBudgetsResponse'
-  { _dbrsNextToken = Nothing
-  , _dbrsBudgets = Nothing
-  , _dbrsResponseStatus = pResponseStatus_
-  }
+    { _dbrsNextToken = Nothing
+    , _dbrsBudgets = Nothing
+    , _dbrsResponseStatus = pResponseStatus_
+    }
 
 
--- | Undocumented member.
+-- | The pagination token that indicates the next set of results that you can retrieve.
 dbrsNextToken :: Lens' DescribeBudgetsResponse (Maybe Text)
-dbrsNextToken = lens _dbrsNextToken (\ s a -> s{_dbrsNextToken = a});
+dbrsNextToken = lens _dbrsNextToken (\ s a -> s{_dbrsNextToken = a})
 
--- | Undocumented member.
+-- | A list of budgets.
 dbrsBudgets :: Lens' DescribeBudgetsResponse [Budget]
-dbrsBudgets = lens _dbrsBudgets (\ s a -> s{_dbrsBudgets = a}) . _Default . _Coerce;
+dbrsBudgets = lens _dbrsBudgets (\ s a -> s{_dbrsBudgets = a}) . _Default . _Coerce
 
 -- | -- | The response status code.
 dbrsResponseStatus :: Lens' DescribeBudgetsResponse Int
-dbrsResponseStatus = lens _dbrsResponseStatus (\ s a -> s{_dbrsResponseStatus = a});
+dbrsResponseStatus = lens _dbrsResponseStatus (\ s a -> s{_dbrsResponseStatus = a})
 
 instance NFData DescribeBudgetsResponse where
diff --git a/gen/Network/AWS/Budgets/DescribeNotificationsForBudget.hs b/gen/Network/AWS/Budgets/DescribeNotificationsForBudget.hs
--- a/gen/Network/AWS/Budgets/DescribeNotificationsForBudget.hs
+++ b/gen/Network/AWS/Budgets/DescribeNotificationsForBudget.hs
@@ -12,13 +12,15 @@
 
 -- |
 -- Module      : Network.AWS.Budgets.DescribeNotificationsForBudget
--- Copyright   : (c) 2013-2017 Brendan Hay
+-- Copyright   : (c) 2013-2018 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Get notifications of a budget
+-- Lists the notifications associated with a budget.
+--
+--
 module Network.AWS.Budgets.DescribeNotificationsForBudget
     (
     -- * Creating a Request
@@ -48,6 +50,8 @@
 
 -- | Request of DescribeNotificationsForBudget
 --
+--
+--
 -- /See:/ 'describeNotificationsForBudget' smart constructor.
 data DescribeNotificationsForBudget = DescribeNotificationsForBudget'
   { _dnfbNextToken  :: !(Maybe Text)
@@ -61,41 +65,41 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'dnfbNextToken' - Undocumented member.
+-- * 'dnfbNextToken' - The pagination token that indicates the next set of results to retrieve.
 --
--- * 'dnfbMaxResults' - Undocumented member.
+-- * 'dnfbMaxResults' - Optional integer. Specifies the maximum number of results to return in response.
 --
--- * 'dnfbAccountId' - Undocumented member.
+-- * 'dnfbAccountId' - The @accountId@ that is associated with the budget whose notifications you want descriptions of.
 --
--- * 'dnfbBudgetName' - Undocumented member.
+-- * 'dnfbBudgetName' - The name of the budget whose notifications you want descriptions of.
 describeNotificationsForBudget
     :: Text -- ^ 'dnfbAccountId'
     -> Text -- ^ 'dnfbBudgetName'
     -> DescribeNotificationsForBudget
 describeNotificationsForBudget pAccountId_ pBudgetName_ =
   DescribeNotificationsForBudget'
-  { _dnfbNextToken = Nothing
-  , _dnfbMaxResults = Nothing
-  , _dnfbAccountId = pAccountId_
-  , _dnfbBudgetName = pBudgetName_
-  }
+    { _dnfbNextToken = Nothing
+    , _dnfbMaxResults = Nothing
+    , _dnfbAccountId = pAccountId_
+    , _dnfbBudgetName = pBudgetName_
+    }
 
 
--- | Undocumented member.
+-- | The pagination token that indicates the next set of results to retrieve.
 dnfbNextToken :: Lens' DescribeNotificationsForBudget (Maybe Text)
-dnfbNextToken = lens _dnfbNextToken (\ s a -> s{_dnfbNextToken = a});
+dnfbNextToken = lens _dnfbNextToken (\ s a -> s{_dnfbNextToken = a})
 
--- | Undocumented member.
+-- | Optional integer. Specifies the maximum number of results to return in response.
 dnfbMaxResults :: Lens' DescribeNotificationsForBudget (Maybe Natural)
-dnfbMaxResults = lens _dnfbMaxResults (\ s a -> s{_dnfbMaxResults = a}) . mapping _Nat;
+dnfbMaxResults = lens _dnfbMaxResults (\ s a -> s{_dnfbMaxResults = a}) . mapping _Nat
 
--- | Undocumented member.
+-- | The @accountId@ that is associated with the budget whose notifications you want descriptions of.
 dnfbAccountId :: Lens' DescribeNotificationsForBudget Text
-dnfbAccountId = lens _dnfbAccountId (\ s a -> s{_dnfbAccountId = a});
+dnfbAccountId = lens _dnfbAccountId (\ s a -> s{_dnfbAccountId = a})
 
--- | Undocumented member.
+-- | The name of the budget whose notifications you want descriptions of.
 dnfbBudgetName :: Lens' DescribeNotificationsForBudget Text
-dnfbBudgetName = lens _dnfbBudgetName (\ s a -> s{_dnfbBudgetName = a});
+dnfbBudgetName = lens _dnfbBudgetName (\ s a -> s{_dnfbBudgetName = a})
 
 instance AWSRequest DescribeNotificationsForBudget
          where
@@ -143,6 +147,8 @@
 
 -- | Response of GetNotificationsForBudget
 --
+--
+--
 -- /See:/ 'describeNotificationsForBudgetResponse' smart constructor.
 data DescribeNotificationsForBudgetResponse = DescribeNotificationsForBudgetResponse'
   { _dnfbrsNextToken      :: !(Maybe Text)
@@ -155,9 +161,9 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'dnfbrsNextToken' - Undocumented member.
+-- * 'dnfbrsNextToken' - The pagination token that indicates the next set of results that you can retrieve.
 --
--- * 'dnfbrsNotifications' - Undocumented member.
+-- * 'dnfbrsNotifications' - A list of notifications associated with a budget.
 --
 -- * 'dnfbrsResponseStatus' - -- | The response status code.
 describeNotificationsForBudgetResponse
@@ -165,23 +171,23 @@
     -> DescribeNotificationsForBudgetResponse
 describeNotificationsForBudgetResponse pResponseStatus_ =
   DescribeNotificationsForBudgetResponse'
-  { _dnfbrsNextToken = Nothing
-  , _dnfbrsNotifications = Nothing
-  , _dnfbrsResponseStatus = pResponseStatus_
-  }
+    { _dnfbrsNextToken = Nothing
+    , _dnfbrsNotifications = Nothing
+    , _dnfbrsResponseStatus = pResponseStatus_
+    }
 
 
--- | Undocumented member.
+-- | The pagination token that indicates the next set of results that you can retrieve.
 dnfbrsNextToken :: Lens' DescribeNotificationsForBudgetResponse (Maybe Text)
-dnfbrsNextToken = lens _dnfbrsNextToken (\ s a -> s{_dnfbrsNextToken = a});
+dnfbrsNextToken = lens _dnfbrsNextToken (\ s a -> s{_dnfbrsNextToken = a})
 
--- | Undocumented member.
+-- | A list of notifications associated with a budget.
 dnfbrsNotifications :: Lens' DescribeNotificationsForBudgetResponse [Notification]
-dnfbrsNotifications = lens _dnfbrsNotifications (\ s a -> s{_dnfbrsNotifications = a}) . _Default . _Coerce;
+dnfbrsNotifications = lens _dnfbrsNotifications (\ s a -> s{_dnfbrsNotifications = a}) . _Default . _Coerce
 
 -- | -- | The response status code.
 dnfbrsResponseStatus :: Lens' DescribeNotificationsForBudgetResponse Int
-dnfbrsResponseStatus = lens _dnfbrsResponseStatus (\ s a -> s{_dnfbrsResponseStatus = a});
+dnfbrsResponseStatus = lens _dnfbrsResponseStatus (\ s a -> s{_dnfbrsResponseStatus = a})
 
 instance NFData
            DescribeNotificationsForBudgetResponse
diff --git a/gen/Network/AWS/Budgets/DescribeSubscribersForNotification.hs b/gen/Network/AWS/Budgets/DescribeSubscribersForNotification.hs
--- a/gen/Network/AWS/Budgets/DescribeSubscribersForNotification.hs
+++ b/gen/Network/AWS/Budgets/DescribeSubscribersForNotification.hs
@@ -12,13 +12,15 @@
 
 -- |
 -- Module      : Network.AWS.Budgets.DescribeSubscribersForNotification
--- Copyright   : (c) 2013-2017 Brendan Hay
+-- Copyright   : (c) 2013-2018 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Get subscribers of a notification
+-- Lists the subscribers associated with a notification.
+--
+--
 module Network.AWS.Budgets.DescribeSubscribersForNotification
     (
     -- * Creating a Request
@@ -49,6 +51,8 @@
 
 -- | Request of DescribeSubscribersForNotification
 --
+--
+--
 -- /See:/ 'describeSubscribersForNotification' smart constructor.
 data DescribeSubscribersForNotification = DescribeSubscribersForNotification'
   { _dsfnNextToken    :: !(Maybe Text)
@@ -63,15 +67,15 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'dsfnNextToken' - Undocumented member.
+-- * 'dsfnNextToken' - The pagination token that indicates the next set of results to retrieve.
 --
--- * 'dsfnMaxResults' - Undocumented member.
+-- * 'dsfnMaxResults' - Optional integer. Specifies the maximum number of results to return in response.
 --
--- * 'dsfnAccountId' - Undocumented member.
+-- * 'dsfnAccountId' - The @accountId@ that is associated with the budget whose subscribers you want descriptions of.
 --
--- * 'dsfnBudgetName' - Undocumented member.
+-- * 'dsfnBudgetName' - The name of the budget whose subscribers you want descriptions of.
 --
--- * 'dsfnNotification' - Undocumented member.
+-- * 'dsfnNotification' - The notification whose subscribers you want to list.
 describeSubscribersForNotification
     :: Text -- ^ 'dsfnAccountId'
     -> Text -- ^ 'dsfnBudgetName'
@@ -79,33 +83,33 @@
     -> DescribeSubscribersForNotification
 describeSubscribersForNotification pAccountId_ pBudgetName_ pNotification_ =
   DescribeSubscribersForNotification'
-  { _dsfnNextToken = Nothing
-  , _dsfnMaxResults = Nothing
-  , _dsfnAccountId = pAccountId_
-  , _dsfnBudgetName = pBudgetName_
-  , _dsfnNotification = pNotification_
-  }
+    { _dsfnNextToken = Nothing
+    , _dsfnMaxResults = Nothing
+    , _dsfnAccountId = pAccountId_
+    , _dsfnBudgetName = pBudgetName_
+    , _dsfnNotification = pNotification_
+    }
 
 
--- | Undocumented member.
+-- | The pagination token that indicates the next set of results to retrieve.
 dsfnNextToken :: Lens' DescribeSubscribersForNotification (Maybe Text)
-dsfnNextToken = lens _dsfnNextToken (\ s a -> s{_dsfnNextToken = a});
+dsfnNextToken = lens _dsfnNextToken (\ s a -> s{_dsfnNextToken = a})
 
--- | Undocumented member.
+-- | Optional integer. Specifies the maximum number of results to return in response.
 dsfnMaxResults :: Lens' DescribeSubscribersForNotification (Maybe Natural)
-dsfnMaxResults = lens _dsfnMaxResults (\ s a -> s{_dsfnMaxResults = a}) . mapping _Nat;
+dsfnMaxResults = lens _dsfnMaxResults (\ s a -> s{_dsfnMaxResults = a}) . mapping _Nat
 
--- | Undocumented member.
+-- | The @accountId@ that is associated with the budget whose subscribers you want descriptions of.
 dsfnAccountId :: Lens' DescribeSubscribersForNotification Text
-dsfnAccountId = lens _dsfnAccountId (\ s a -> s{_dsfnAccountId = a});
+dsfnAccountId = lens _dsfnAccountId (\ s a -> s{_dsfnAccountId = a})
 
--- | Undocumented member.
+-- | The name of the budget whose subscribers you want descriptions of.
 dsfnBudgetName :: Lens' DescribeSubscribersForNotification Text
-dsfnBudgetName = lens _dsfnBudgetName (\ s a -> s{_dsfnBudgetName = a});
+dsfnBudgetName = lens _dsfnBudgetName (\ s a -> s{_dsfnBudgetName = a})
 
--- | Undocumented member.
+-- | The notification whose subscribers you want to list.
 dsfnNotification :: Lens' DescribeSubscribersForNotification Notification
-dsfnNotification = lens _dsfnNotification (\ s a -> s{_dsfnNotification = a});
+dsfnNotification = lens _dsfnNotification (\ s a -> s{_dsfnNotification = a})
 
 instance AWSRequest
            DescribeSubscribersForNotification
@@ -158,6 +162,8 @@
 
 -- | Response of DescribeSubscribersForNotification
 --
+--
+--
 -- /See:/ 'describeSubscribersForNotificationResponse' smart constructor.
 data DescribeSubscribersForNotificationResponse = DescribeSubscribersForNotificationResponse'
   { _dsfnrsNextToken      :: !(Maybe Text)
@@ -170,9 +176,9 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'dsfnrsNextToken' - Undocumented member.
+-- * 'dsfnrsNextToken' - The pagination token that indicates the next set of results that you can retrieve.
 --
--- * 'dsfnrsSubscribers' - Undocumented member.
+-- * 'dsfnrsSubscribers' - A list of subscribers associated with a notification.
 --
 -- * 'dsfnrsResponseStatus' - -- | The response status code.
 describeSubscribersForNotificationResponse
@@ -180,23 +186,23 @@
     -> DescribeSubscribersForNotificationResponse
 describeSubscribersForNotificationResponse pResponseStatus_ =
   DescribeSubscribersForNotificationResponse'
-  { _dsfnrsNextToken = Nothing
-  , _dsfnrsSubscribers = Nothing
-  , _dsfnrsResponseStatus = pResponseStatus_
-  }
+    { _dsfnrsNextToken = Nothing
+    , _dsfnrsSubscribers = Nothing
+    , _dsfnrsResponseStatus = pResponseStatus_
+    }
 
 
--- | Undocumented member.
+-- | The pagination token that indicates the next set of results that you can retrieve.
 dsfnrsNextToken :: Lens' DescribeSubscribersForNotificationResponse (Maybe Text)
-dsfnrsNextToken = lens _dsfnrsNextToken (\ s a -> s{_dsfnrsNextToken = a});
+dsfnrsNextToken = lens _dsfnrsNextToken (\ s a -> s{_dsfnrsNextToken = a})
 
--- | Undocumented member.
+-- | A list of subscribers associated with a notification.
 dsfnrsSubscribers :: Lens' DescribeSubscribersForNotificationResponse (Maybe (NonEmpty Subscriber))
-dsfnrsSubscribers = lens _dsfnrsSubscribers (\ s a -> s{_dsfnrsSubscribers = a}) . mapping _List1;
+dsfnrsSubscribers = lens _dsfnrsSubscribers (\ s a -> s{_dsfnrsSubscribers = a}) . mapping _List1
 
 -- | -- | The response status code.
 dsfnrsResponseStatus :: Lens' DescribeSubscribersForNotificationResponse Int
-dsfnrsResponseStatus = lens _dsfnrsResponseStatus (\ s a -> s{_dsfnrsResponseStatus = a});
+dsfnrsResponseStatus = lens _dsfnrsResponseStatus (\ s a -> s{_dsfnrsResponseStatus = a})
 
 instance NFData
            DescribeSubscribersForNotificationResponse
diff --git a/gen/Network/AWS/Budgets/Types.hs b/gen/Network/AWS/Budgets/Types.hs
--- a/gen/Network/AWS/Budgets/Types.hs
+++ b/gen/Network/AWS/Budgets/Types.hs
@@ -4,7 +4,7 @@
 
 -- |
 -- Module      : Network.AWS.Budgets.Types
--- Copyright   : (c) 2013-2017 Brendan Hay
+-- Copyright   : (c) 2013-2018 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
@@ -46,12 +46,12 @@
     , Budget
     , budget
     , bCalculatedSpend
-    , bCostFilters
-    , bBudgetName
     , bBudgetLimit
+    , bTimePeriod
     , bCostTypes
+    , bCostFilters
+    , bBudgetName
     , bTimeUnit
-    , bTimePeriod
     , bBudgetType
 
     -- * CalculatedSpend
@@ -63,9 +63,17 @@
     -- * CostTypes
     , CostTypes
     , costTypes
-    , ctIncludeTax
-    , ctIncludeSubscription
+    , ctUseAmortized
+    , ctIncludeRecurring
     , ctUseBlended
+    , ctIncludeSupport
+    , ctIncludeDiscount
+    , ctIncludeSubscription
+    , ctIncludeRefund
+    , ctIncludeUpfront
+    , ctIncludeOtherSubscription
+    , ctIncludeTax
+    , ctIncludeCredit
 
     -- * Notification
     , Notification
@@ -110,24 +118,24 @@
 budgets :: Service
 budgets =
   Service
-  { _svcAbbrev = "Budgets"
-  , _svcSigner = v4
-  , _svcPrefix = "budgets"
-  , _svcVersion = "2016-10-20"
-  , _svcEndpoint = defaultEndpoint budgets
-  , _svcTimeout = Just 70
-  , _svcCheck = statusSuccess
-  , _svcError = parseJSONError "Budgets"
-  , _svcRetry = retry
-  }
+    { _svcAbbrev = "Budgets"
+    , _svcSigner = v4
+    , _svcPrefix = "budgets"
+    , _svcVersion = "2016-10-20"
+    , _svcEndpoint = defaultEndpoint budgets
+    , _svcTimeout = Just 70
+    , _svcCheck = statusSuccess
+    , _svcError = parseJSONError "Budgets"
+    , _svcRetry = retry
+    }
   where
     retry =
       Exponential
-      { _retryBase = 5.0e-2
-      , _retryGrowth = 2
-      , _retryAttempts = 5
-      , _retryCheck = check
-      }
+        { _retryBase = 5.0e-2
+        , _retryGrowth = 2
+        , _retryAttempts = 5
+        , _retryCheck = check
+        }
     check e
       | has (hasCode "ThrottledException" . hasStatus 400) e =
         Just "throttled_exception"
@@ -136,6 +144,8 @@
         Just "throttling_exception"
       | has (hasCode "Throttling" . hasStatus 400) e = Just "throttling"
       | has (hasStatus 504) e = Just "gateway_timeout"
+      | has (hasCode "RequestThrottledException" . hasStatus 400) e =
+        Just "request_throttled_exception"
       | has (hasStatus 502) e = Just "bad_gateway"
       | has (hasStatus 503) e = Just "service_unavailable"
       | has (hasStatus 500) e = Just "general_server_error"
@@ -143,41 +153,55 @@
       | otherwise = Nothing
 
 
--- | This exception is thrown if any request is given an invalid parameter. E.g., if a required Date field is null.
+-- | An error on the client occurred. Typically, the cause is an invalid input value.
+--
+--
 _InvalidParameterException :: AsError a => Getting (First ServiceError) a ServiceError
 _InvalidParameterException =
   _MatchServiceError budgets "InvalidParameterException"
 
 
--- | This exception is thrown on an unknown internal failure.
+-- | An error on the server occurred during the processing of your request. Try again later.
+--
+--
 _InternalErrorException :: AsError a => Getting (First ServiceError) a ServiceError
 _InternalErrorException = _MatchServiceError budgets "InternalErrorException"
 
 
--- | This exception is thrown if the paging token is expired - past its TTL
+-- | The pagination token expired.
+--
+--
 _ExpiredNextTokenException :: AsError a => Getting (First ServiceError) a ServiceError
 _ExpiredNextTokenException =
   _MatchServiceError budgets "ExpiredNextTokenException"
 
 
--- | This exception is thrown if a requested entity is not found. E.g., if a budget id doesn't exist for an account ID.
+-- | We can’t locate the resource that you specified.
+--
+--
 _NotFoundException :: AsError a => Getting (First ServiceError) a ServiceError
 _NotFoundException = _MatchServiceError budgets "NotFoundException"
 
 
--- | This exception is thrown if paging token signature didn't match the token, or the paging token isn't for this request
+-- | The pagination token is invalid.
+--
+--
 _InvalidNextTokenException :: AsError a => Getting (First ServiceError) a ServiceError
 _InvalidNextTokenException =
   _MatchServiceError budgets "InvalidNextTokenException"
 
 
--- | The exception is thrown when customer tries to create a record (e.g. budget) that already exists.
+-- | The budget name already exists. Budget names must be unique within an account.
+--
+--
 _DuplicateRecordException :: AsError a => Getting (First ServiceError) a ServiceError
 _DuplicateRecordException =
   _MatchServiceError budgets "DuplicateRecordException"
 
 
--- | The exception is thrown when customer tries to create a record (e.g. budget), but the number this record already exceeds the limitation.
+-- | You've exceeded the notification or subscriber limit.
+--
+--
 _CreationLimitExceededException :: AsError a => Getting (First ServiceError) a ServiceError
 _CreationLimitExceededException =
   _MatchServiceError budgets "CreationLimitExceededException"
diff --git a/gen/Network/AWS/Budgets/Types/Product.hs b/gen/Network/AWS/Budgets/Types/Product.hs
--- a/gen/Network/AWS/Budgets/Types/Product.hs
+++ b/gen/Network/AWS/Budgets/Types/Product.hs
@@ -9,7 +9,7 @@
 
 -- |
 -- Module      : Network.AWS.Budgets.Types.Product
--- Copyright   : (c) 2013-2017 Brendan Hay
+-- Copyright   : (c) 2013-2018 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
@@ -21,17 +21,21 @@
 import Network.AWS.Lens
 import Network.AWS.Prelude
 
--- | AWS Budget model
+-- | Represents the output of the @CreateBudget@ operation. The content consists of the detailed metadata and data file information, and the current status of the @budget@ .
 --
+--
+-- The ARN pattern for a budget is: @arn:aws:budgetservice::AccountId:budget/budgetName@
+--
+--
 -- /See:/ 'budget' smart constructor.
 data Budget = Budget'
   { _bCalculatedSpend :: !(Maybe CalculatedSpend)
+  , _bBudgetLimit     :: !(Maybe Spend)
+  , _bTimePeriod      :: !(Maybe TimePeriod)
+  , _bCostTypes       :: !(Maybe CostTypes)
   , _bCostFilters     :: !(Maybe (Map Text [Text]))
   , _bBudgetName      :: !Text
-  , _bBudgetLimit     :: !Spend
-  , _bCostTypes       :: !CostTypes
   , _bTimeUnit        :: !TimeUnit
-  , _bTimePeriod      :: !TimePeriod
   , _bBudgetType      :: !BudgetType
   } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
@@ -40,86 +44,82 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'bCalculatedSpend' - Undocumented member.
+-- * 'bCalculatedSpend' - The actual and forecasted cost or usage being tracked by a budget.
 --
--- * 'bCostFilters' - Undocumented member.
+-- * 'bBudgetLimit' - The total amount of cost, usage, or RI utilization that you want to track with your budget. @BudgetLimit@ is required for cost or usage budgets, but optional for RI utilization budgets. RI utilization budgets default to the only valid value for RI utilization budgets, which is @100@ .
 --
--- * 'bBudgetName' - Undocumented member.
+-- * 'bTimePeriod' - The period of time covered by a budget. Has a start date and an end date. The start date must come before the end date. There are no restrictions on the end date.  If you created your budget and didn't specify a start date, AWS defaults to the start of your chosen time period (i.e. DAILY, MONTHLY, QUARTERLY, ANNUALLY). For example, if you created your budget on January 24th 2018, chose @DAILY@ , and didn't set a start date, AWS set your start date to @01/24/18 00:00 UTC@ . If you chose @MONTHLY@ , AWS set your start date to @01/01/18 00:00 UTC@ . If you didn't specify an end date, AWS set your end date to @06/15/87 00:00 UTC@ . The defaults are the same for the AWS Billing and Cost Management console and the API.  You can change either date with the @UpdateBudget@ operation. After the end date, AWS deletes the budget and all associated notifications and subscribers.
 --
--- * 'bBudgetLimit' - Undocumented member.
+-- * 'bCostTypes' - The types of costs included in this budget.
 --
--- * 'bCostTypes' - Undocumented member.
+-- * 'bCostFilters' - The cost filters applied to a budget, such as service or region.
 --
--- * 'bTimeUnit' - Undocumented member.
+-- * 'bBudgetName' - The name of a budget. Unique within accounts. @:@ and @\@ characters are not allowed in the @BudgetName@ .
 --
--- * 'bTimePeriod' - Undocumented member.
+-- * 'bTimeUnit' - The length of time until a budget resets the actual and forecasted spend.
 --
--- * 'bBudgetType' - Undocumented member.
+-- * 'bBudgetType' - Whether this budget tracks monetary costs, usage, or RI utilization.
 budget
     :: Text -- ^ 'bBudgetName'
-    -> Spend -- ^ 'bBudgetLimit'
-    -> CostTypes -- ^ 'bCostTypes'
     -> TimeUnit -- ^ 'bTimeUnit'
-    -> TimePeriod -- ^ 'bTimePeriod'
     -> BudgetType -- ^ 'bBudgetType'
     -> Budget
-budget pBudgetName_ pBudgetLimit_ pCostTypes_ pTimeUnit_ pTimePeriod_ pBudgetType_ =
+budget pBudgetName_ pTimeUnit_ pBudgetType_ =
   Budget'
-  { _bCalculatedSpend = Nothing
-  , _bCostFilters = Nothing
-  , _bBudgetName = pBudgetName_
-  , _bBudgetLimit = pBudgetLimit_
-  , _bCostTypes = pCostTypes_
-  , _bTimeUnit = pTimeUnit_
-  , _bTimePeriod = pTimePeriod_
-  , _bBudgetType = pBudgetType_
-  }
+    { _bCalculatedSpend = Nothing
+    , _bBudgetLimit = Nothing
+    , _bTimePeriod = Nothing
+    , _bCostTypes = Nothing
+    , _bCostFilters = Nothing
+    , _bBudgetName = pBudgetName_
+    , _bTimeUnit = pTimeUnit_
+    , _bBudgetType = pBudgetType_
+    }
 
 
--- | Undocumented member.
+-- | The actual and forecasted cost or usage being tracked by a budget.
 bCalculatedSpend :: Lens' Budget (Maybe CalculatedSpend)
-bCalculatedSpend = lens _bCalculatedSpend (\ s a -> s{_bCalculatedSpend = a});
+bCalculatedSpend = lens _bCalculatedSpend (\ s a -> s{_bCalculatedSpend = a})
 
--- | Undocumented member.
-bCostFilters :: Lens' Budget (HashMap Text [Text])
-bCostFilters = lens _bCostFilters (\ s a -> s{_bCostFilters = a}) . _Default . _Map;
+-- | The total amount of cost, usage, or RI utilization that you want to track with your budget. @BudgetLimit@ is required for cost or usage budgets, but optional for RI utilization budgets. RI utilization budgets default to the only valid value for RI utilization budgets, which is @100@ .
+bBudgetLimit :: Lens' Budget (Maybe Spend)
+bBudgetLimit = lens _bBudgetLimit (\ s a -> s{_bBudgetLimit = a})
 
--- | Undocumented member.
-bBudgetName :: Lens' Budget Text
-bBudgetName = lens _bBudgetName (\ s a -> s{_bBudgetName = a});
+-- | The period of time covered by a budget. Has a start date and an end date. The start date must come before the end date. There are no restrictions on the end date.  If you created your budget and didn't specify a start date, AWS defaults to the start of your chosen time period (i.e. DAILY, MONTHLY, QUARTERLY, ANNUALLY). For example, if you created your budget on January 24th 2018, chose @DAILY@ , and didn't set a start date, AWS set your start date to @01/24/18 00:00 UTC@ . If you chose @MONTHLY@ , AWS set your start date to @01/01/18 00:00 UTC@ . If you didn't specify an end date, AWS set your end date to @06/15/87 00:00 UTC@ . The defaults are the same for the AWS Billing and Cost Management console and the API.  You can change either date with the @UpdateBudget@ operation. After the end date, AWS deletes the budget and all associated notifications and subscribers.
+bTimePeriod :: Lens' Budget (Maybe TimePeriod)
+bTimePeriod = lens _bTimePeriod (\ s a -> s{_bTimePeriod = a})
 
--- | Undocumented member.
-bBudgetLimit :: Lens' Budget Spend
-bBudgetLimit = lens _bBudgetLimit (\ s a -> s{_bBudgetLimit = a});
+-- | The types of costs included in this budget.
+bCostTypes :: Lens' Budget (Maybe CostTypes)
+bCostTypes = lens _bCostTypes (\ s a -> s{_bCostTypes = a})
 
--- | Undocumented member.
-bCostTypes :: Lens' Budget CostTypes
-bCostTypes = lens _bCostTypes (\ s a -> s{_bCostTypes = a});
+-- | The cost filters applied to a budget, such as service or region.
+bCostFilters :: Lens' Budget (HashMap Text [Text])
+bCostFilters = lens _bCostFilters (\ s a -> s{_bCostFilters = a}) . _Default . _Map
 
--- | Undocumented member.
-bTimeUnit :: Lens' Budget TimeUnit
-bTimeUnit = lens _bTimeUnit (\ s a -> s{_bTimeUnit = a});
+-- | The name of a budget. Unique within accounts. @:@ and @\@ characters are not allowed in the @BudgetName@ .
+bBudgetName :: Lens' Budget Text
+bBudgetName = lens _bBudgetName (\ s a -> s{_bBudgetName = a})
 
--- | Undocumented member.
-bTimePeriod :: Lens' Budget TimePeriod
-bTimePeriod = lens _bTimePeriod (\ s a -> s{_bTimePeriod = a});
+-- | The length of time until a budget resets the actual and forecasted spend.
+bTimeUnit :: Lens' Budget TimeUnit
+bTimeUnit = lens _bTimeUnit (\ s a -> s{_bTimeUnit = a})
 
--- | Undocumented member.
+-- | Whether this budget tracks monetary costs, usage, or RI utilization.
 bBudgetType :: Lens' Budget BudgetType
-bBudgetType = lens _bBudgetType (\ s a -> s{_bBudgetType = a});
+bBudgetType = lens _bBudgetType (\ s a -> s{_bBudgetType = a})
 
 instance FromJSON Budget where
         parseJSON
           = withObject "Budget"
               (\ x ->
                  Budget' <$>
-                   (x .:? "CalculatedSpend") <*>
-                     (x .:? "CostFilters" .!= mempty)
+                   (x .:? "CalculatedSpend") <*> (x .:? "BudgetLimit")
+                     <*> (x .:? "TimePeriod")
+                     <*> (x .:? "CostTypes")
+                     <*> (x .:? "CostFilters" .!= mempty)
                      <*> (x .: "BudgetName")
-                     <*> (x .: "BudgetLimit")
-                     <*> (x .: "CostTypes")
                      <*> (x .: "TimeUnit")
-                     <*> (x .: "TimePeriod")
                      <*> (x .: "BudgetType"))
 
 instance Hashable Budget where
@@ -131,16 +131,20 @@
           = object
               (catMaybes
                  [("CalculatedSpend" .=) <$> _bCalculatedSpend,
+                  ("BudgetLimit" .=) <$> _bBudgetLimit,
+                  ("TimePeriod" .=) <$> _bTimePeriod,
+                  ("CostTypes" .=) <$> _bCostTypes,
                   ("CostFilters" .=) <$> _bCostFilters,
                   Just ("BudgetName" .= _bBudgetName),
-                  Just ("BudgetLimit" .= _bBudgetLimit),
-                  Just ("CostTypes" .= _bCostTypes),
                   Just ("TimeUnit" .= _bTimeUnit),
-                  Just ("TimePeriod" .= _bTimePeriod),
                   Just ("BudgetType" .= _bBudgetType)])
 
--- | A structure that holds the actual and forecasted spend for a budget.
+-- | The spend objects associated with this budget. The @actualSpend@ tracks how much you've used, cost, usage, or RI units, and the @forecastedSpend@ tracks how much you are predicted to spend if your current usage remains steady.
 --
+--
+-- For example, if it is the 20th of the month and you have spent @50@ dollars on Amazon EC2, your @actualSpend@ is @50 USD@ , and your @forecastedSpend@ is @75 USD@ .
+--
+--
 -- /See:/ 'calculatedSpend' smart constructor.
 data CalculatedSpend = CalculatedSpend'
   { _csForecastedSpend :: !(Maybe Spend)
@@ -152,24 +156,24 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'csForecastedSpend' - Undocumented member.
+-- * 'csForecastedSpend' - The amount of cost, usage, or RI units that you are forecasted to use.
 --
--- * 'csActualSpend' - Undocumented member.
+-- * 'csActualSpend' - The amount of cost, usage, or RI units that you have used.
 calculatedSpend
     :: Spend -- ^ 'csActualSpend'
     -> CalculatedSpend
 calculatedSpend pActualSpend_ =
   CalculatedSpend'
-  {_csForecastedSpend = Nothing, _csActualSpend = pActualSpend_}
+    {_csForecastedSpend = Nothing, _csActualSpend = pActualSpend_}
 
 
--- | Undocumented member.
+-- | The amount of cost, usage, or RI units that you are forecasted to use.
 csForecastedSpend :: Lens' CalculatedSpend (Maybe Spend)
-csForecastedSpend = lens _csForecastedSpend (\ s a -> s{_csForecastedSpend = a});
+csForecastedSpend = lens _csForecastedSpend (\ s a -> s{_csForecastedSpend = a})
 
--- | Undocumented member.
+-- | The amount of cost, usage, or RI units that you have used.
 csActualSpend :: Lens' CalculatedSpend Spend
-csActualSpend = lens _csActualSpend (\ s a -> s{_csActualSpend = a});
+csActualSpend = lens _csActualSpend (\ s a -> s{_csActualSpend = a})
 
 instance FromJSON CalculatedSpend where
         parseJSON
@@ -189,13 +193,23 @@
                  [("ForecastedSpend" .=) <$> _csForecastedSpend,
                   Just ("ActualSpend" .= _csActualSpend)])
 
--- | This includes the options for getting the cost of a budget.
+-- | The types of cost included in a budget, such as tax and subscriptions.
 --
+--
+--
 -- /See:/ 'costTypes' smart constructor.
 data CostTypes = CostTypes'
-  { _ctIncludeTax          :: !Bool
-  , _ctIncludeSubscription :: !Bool
-  , _ctUseBlended          :: !Bool
+  { _ctUseAmortized             :: !(Maybe Bool)
+  , _ctIncludeRecurring         :: !(Maybe Bool)
+  , _ctUseBlended               :: !(Maybe Bool)
+  , _ctIncludeSupport           :: !(Maybe Bool)
+  , _ctIncludeDiscount          :: !(Maybe Bool)
+  , _ctIncludeSubscription      :: !(Maybe Bool)
+  , _ctIncludeRefund            :: !(Maybe Bool)
+  , _ctIncludeUpfront           :: !(Maybe Bool)
+  , _ctIncludeOtherSubscription :: !(Maybe Bool)
+  , _ctIncludeTax               :: !(Maybe Bool)
+  , _ctIncludeCredit            :: !(Maybe Bool)
   } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
 
@@ -203,43 +217,104 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'ctIncludeTax' - Undocumented member.
+-- * 'ctUseAmortized' - Specifies whether a budget uses the amortized rate. The default value is @false@ .
 --
--- * 'ctIncludeSubscription' - Undocumented member.
+-- * 'ctIncludeRecurring' - Specifies whether a budget includes recurring fees such as monthly RI fees. The default value is @true@ .
 --
--- * 'ctUseBlended' - Undocumented member.
+-- * 'ctUseBlended' - Specifies whether a budget uses blended rate. The default value is @false@ .
+--
+-- * 'ctIncludeSupport' - Specifies whether a budget includes support subscription fees. The default value is @true@ .
+--
+-- * 'ctIncludeDiscount' - Specifies whether a budget includes discounts. The default value is @true@ .
+--
+-- * 'ctIncludeSubscription' - Specifies whether a budget includes subscriptions. The default value is @true@ .
+--
+-- * 'ctIncludeRefund' - Specifies whether a budget includes refunds. The default value is @true@ .
+--
+-- * 'ctIncludeUpfront' - Specifies whether a budget includes upfront RI costs. The default value is @true@ .
+--
+-- * 'ctIncludeOtherSubscription' - Specifies whether a budget includes non-RI subscription costs. The default value is @true@ .
+--
+-- * 'ctIncludeTax' - Specifies whether a budget includes taxes. The default value is @true@ .
+--
+-- * 'ctIncludeCredit' - Specifies whether a budget includes credits. The default value is @true@ .
 costTypes
-    :: Bool -- ^ 'ctIncludeTax'
-    -> Bool -- ^ 'ctIncludeSubscription'
-    -> Bool -- ^ 'ctUseBlended'
-    -> CostTypes
-costTypes pIncludeTax_ pIncludeSubscription_ pUseBlended_ =
+    :: CostTypes
+costTypes =
   CostTypes'
-  { _ctIncludeTax = pIncludeTax_
-  , _ctIncludeSubscription = pIncludeSubscription_
-  , _ctUseBlended = pUseBlended_
-  }
+    { _ctUseAmortized = Nothing
+    , _ctIncludeRecurring = Nothing
+    , _ctUseBlended = Nothing
+    , _ctIncludeSupport = Nothing
+    , _ctIncludeDiscount = Nothing
+    , _ctIncludeSubscription = Nothing
+    , _ctIncludeRefund = Nothing
+    , _ctIncludeUpfront = Nothing
+    , _ctIncludeOtherSubscription = Nothing
+    , _ctIncludeTax = Nothing
+    , _ctIncludeCredit = Nothing
+    }
 
 
--- | Undocumented member.
-ctIncludeTax :: Lens' CostTypes Bool
-ctIncludeTax = lens _ctIncludeTax (\ s a -> s{_ctIncludeTax = a});
+-- | Specifies whether a budget uses the amortized rate. The default value is @false@ .
+ctUseAmortized :: Lens' CostTypes (Maybe Bool)
+ctUseAmortized = lens _ctUseAmortized (\ s a -> s{_ctUseAmortized = a})
 
--- | Undocumented member.
-ctIncludeSubscription :: Lens' CostTypes Bool
-ctIncludeSubscription = lens _ctIncludeSubscription (\ s a -> s{_ctIncludeSubscription = a});
+-- | Specifies whether a budget includes recurring fees such as monthly RI fees. The default value is @true@ .
+ctIncludeRecurring :: Lens' CostTypes (Maybe Bool)
+ctIncludeRecurring = lens _ctIncludeRecurring (\ s a -> s{_ctIncludeRecurring = a})
 
--- | Undocumented member.
-ctUseBlended :: Lens' CostTypes Bool
-ctUseBlended = lens _ctUseBlended (\ s a -> s{_ctUseBlended = a});
+-- | Specifies whether a budget uses blended rate. The default value is @false@ .
+ctUseBlended :: Lens' CostTypes (Maybe Bool)
+ctUseBlended = lens _ctUseBlended (\ s a -> s{_ctUseBlended = a})
 
+-- | Specifies whether a budget includes support subscription fees. The default value is @true@ .
+ctIncludeSupport :: Lens' CostTypes (Maybe Bool)
+ctIncludeSupport = lens _ctIncludeSupport (\ s a -> s{_ctIncludeSupport = a})
+
+-- | Specifies whether a budget includes discounts. The default value is @true@ .
+ctIncludeDiscount :: Lens' CostTypes (Maybe Bool)
+ctIncludeDiscount = lens _ctIncludeDiscount (\ s a -> s{_ctIncludeDiscount = a})
+
+-- | Specifies whether a budget includes subscriptions. The default value is @true@ .
+ctIncludeSubscription :: Lens' CostTypes (Maybe Bool)
+ctIncludeSubscription = lens _ctIncludeSubscription (\ s a -> s{_ctIncludeSubscription = a})
+
+-- | Specifies whether a budget includes refunds. The default value is @true@ .
+ctIncludeRefund :: Lens' CostTypes (Maybe Bool)
+ctIncludeRefund = lens _ctIncludeRefund (\ s a -> s{_ctIncludeRefund = a})
+
+-- | Specifies whether a budget includes upfront RI costs. The default value is @true@ .
+ctIncludeUpfront :: Lens' CostTypes (Maybe Bool)
+ctIncludeUpfront = lens _ctIncludeUpfront (\ s a -> s{_ctIncludeUpfront = a})
+
+-- | Specifies whether a budget includes non-RI subscription costs. The default value is @true@ .
+ctIncludeOtherSubscription :: Lens' CostTypes (Maybe Bool)
+ctIncludeOtherSubscription = lens _ctIncludeOtherSubscription (\ s a -> s{_ctIncludeOtherSubscription = a})
+
+-- | Specifies whether a budget includes taxes. The default value is @true@ .
+ctIncludeTax :: Lens' CostTypes (Maybe Bool)
+ctIncludeTax = lens _ctIncludeTax (\ s a -> s{_ctIncludeTax = a})
+
+-- | Specifies whether a budget includes credits. The default value is @true@ .
+ctIncludeCredit :: Lens' CostTypes (Maybe Bool)
+ctIncludeCredit = lens _ctIncludeCredit (\ s a -> s{_ctIncludeCredit = a})
+
 instance FromJSON CostTypes where
         parseJSON
           = withObject "CostTypes"
               (\ x ->
                  CostTypes' <$>
-                   (x .: "IncludeTax") <*> (x .: "IncludeSubscription")
-                     <*> (x .: "UseBlended"))
+                   (x .:? "UseAmortized") <*> (x .:? "IncludeRecurring")
+                     <*> (x .:? "UseBlended")
+                     <*> (x .:? "IncludeSupport")
+                     <*> (x .:? "IncludeDiscount")
+                     <*> (x .:? "IncludeSubscription")
+                     <*> (x .:? "IncludeRefund")
+                     <*> (x .:? "IncludeUpfront")
+                     <*> (x .:? "IncludeOtherSubscription")
+                     <*> (x .:? "IncludeTax")
+                     <*> (x .:? "IncludeCredit"))
 
 instance Hashable CostTypes where
 
@@ -249,13 +324,36 @@
         toJSON CostTypes'{..}
           = object
               (catMaybes
-                 [Just ("IncludeTax" .= _ctIncludeTax),
-                  Just
-                    ("IncludeSubscription" .= _ctIncludeSubscription),
-                  Just ("UseBlended" .= _ctUseBlended)])
+                 [("UseAmortized" .=) <$> _ctUseAmortized,
+                  ("IncludeRecurring" .=) <$> _ctIncludeRecurring,
+                  ("UseBlended" .=) <$> _ctUseBlended,
+                  ("IncludeSupport" .=) <$> _ctIncludeSupport,
+                  ("IncludeDiscount" .=) <$> _ctIncludeDiscount,
+                  ("IncludeSubscription" .=) <$>
+                    _ctIncludeSubscription,
+                  ("IncludeRefund" .=) <$> _ctIncludeRefund,
+                  ("IncludeUpfront" .=) <$> _ctIncludeUpfront,
+                  ("IncludeOtherSubscription" .=) <$>
+                    _ctIncludeOtherSubscription,
+                  ("IncludeTax" .=) <$> _ctIncludeTax,
+                  ("IncludeCredit" .=) <$> _ctIncludeCredit])
 
--- | Notification model. Each budget may contain multiple notifications with different settings.
+-- | A notification associated with a budget. A budget can have up to five notifications.
 --
+--
+-- Each notification must have at least one subscriber. A notification can have one SNS subscriber and up to ten email subscribers, for a total of 11 subscribers.
+--
+-- For example, if you have a budget for 200 dollars and you want to be notified when you go over 160 dollars, create a notification with the following parameters:
+--
+--     * A notificationType of @ACTUAL@
+--
+--     * A comparisonOperator of @GREATER_THAN@
+--
+--     * A notification threshold of @80@
+--
+--
+--
+--
 -- /See:/ 'notification' smart constructor.
 data Notification = Notification'
   { _nThresholdType      :: !(Maybe ThresholdType)
@@ -269,13 +367,13 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'nThresholdType' - Undocumented member.
+-- * 'nThresholdType' - The type of threshold for a notification. For @ACTUAL@ thresholds, AWS notifies you when you go over the threshold, and for @FORECASTED@ thresholds AWS notifies you when you are forecasted to go over the threshold.
 --
--- * 'nNotificationType' - Undocumented member.
+-- * 'nNotificationType' - Whether the notification is for how much you have spent (@ACTUAL@ ) or for how much you are forecasted to spend (@FORECASTED@ ).
 --
--- * 'nComparisonOperator' - Undocumented member.
+-- * 'nComparisonOperator' - The comparison used for this notification.
 --
--- * 'nThreshold' - Undocumented member.
+-- * 'nThreshold' - The threshold associated with a notification. Thresholds are always a percentage.
 notification
     :: NotificationType -- ^ 'nNotificationType'
     -> ComparisonOperator -- ^ 'nComparisonOperator'
@@ -283,28 +381,28 @@
     -> Notification
 notification pNotificationType_ pComparisonOperator_ pThreshold_ =
   Notification'
-  { _nThresholdType = Nothing
-  , _nNotificationType = pNotificationType_
-  , _nComparisonOperator = pComparisonOperator_
-  , _nThreshold = pThreshold_
-  }
+    { _nThresholdType = Nothing
+    , _nNotificationType = pNotificationType_
+    , _nComparisonOperator = pComparisonOperator_
+    , _nThreshold = pThreshold_
+    }
 
 
--- | Undocumented member.
+-- | The type of threshold for a notification. For @ACTUAL@ thresholds, AWS notifies you when you go over the threshold, and for @FORECASTED@ thresholds AWS notifies you when you are forecasted to go over the threshold.
 nThresholdType :: Lens' Notification (Maybe ThresholdType)
-nThresholdType = lens _nThresholdType (\ s a -> s{_nThresholdType = a});
+nThresholdType = lens _nThresholdType (\ s a -> s{_nThresholdType = a})
 
--- | Undocumented member.
+-- | Whether the notification is for how much you have spent (@ACTUAL@ ) or for how much you are forecasted to spend (@FORECASTED@ ).
 nNotificationType :: Lens' Notification NotificationType
-nNotificationType = lens _nNotificationType (\ s a -> s{_nNotificationType = a});
+nNotificationType = lens _nNotificationType (\ s a -> s{_nNotificationType = a})
 
--- | Undocumented member.
+-- | The comparison used for this notification.
 nComparisonOperator :: Lens' Notification ComparisonOperator
-nComparisonOperator = lens _nComparisonOperator (\ s a -> s{_nComparisonOperator = a});
+nComparisonOperator = lens _nComparisonOperator (\ s a -> s{_nComparisonOperator = a})
 
--- | Undocumented member.
+-- | The threshold associated with a notification. Thresholds are always a percentage.
 nThreshold :: Lens' Notification Double
-nThreshold = lens _nThreshold (\ s a -> s{_nThreshold = a});
+nThreshold = lens _nThreshold (\ s a -> s{_nThreshold = a})
 
 instance FromJSON Notification where
         parseJSON
@@ -328,8 +426,10 @@
                   Just ("ComparisonOperator" .= _nComparisonOperator),
                   Just ("Threshold" .= _nThreshold)])
 
--- | A structure to relate notification and a list of subscribers who belong to the notification.
+-- | A notification with subscribers. A notification can have one SNS subscriber and up to ten email subscribers, for a total of 11 subscribers.
 --
+--
+--
 -- /See:/ 'notificationWithSubscribers' smart constructor.
 data NotificationWithSubscribers = NotificationWithSubscribers'
   { _nwsNotification :: !Notification
@@ -341,25 +441,27 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'nwsNotification' - Undocumented member.
+-- * 'nwsNotification' - The notification associated with a budget.
 --
--- * 'nwsSubscribers' - Undocumented member.
+-- * 'nwsSubscribers' - A list of subscribers who are subscribed to this notification.
 notificationWithSubscribers
     :: Notification -- ^ 'nwsNotification'
     -> NonEmpty Subscriber -- ^ 'nwsSubscribers'
     -> NotificationWithSubscribers
 notificationWithSubscribers pNotification_ pSubscribers_ =
   NotificationWithSubscribers'
-  {_nwsNotification = pNotification_, _nwsSubscribers = _List1 # pSubscribers_}
+    { _nwsNotification = pNotification_
+    , _nwsSubscribers = _List1 # pSubscribers_
+    }
 
 
--- | Undocumented member.
+-- | The notification associated with a budget.
 nwsNotification :: Lens' NotificationWithSubscribers Notification
-nwsNotification = lens _nwsNotification (\ s a -> s{_nwsNotification = a});
+nwsNotification = lens _nwsNotification (\ s a -> s{_nwsNotification = a})
 
--- | Undocumented member.
+-- | A list of subscribers who are subscribed to this notification.
 nwsSubscribers :: Lens' NotificationWithSubscribers (NonEmpty Subscriber)
-nwsSubscribers = lens _nwsSubscribers (\ s a -> s{_nwsSubscribers = a}) . _List1;
+nwsSubscribers = lens _nwsSubscribers (\ s a -> s{_nwsSubscribers = a}) . _List1
 
 instance Hashable NotificationWithSubscribers where
 
@@ -372,8 +474,18 @@
                  [Just ("Notification" .= _nwsNotification),
                   Just ("Subscribers" .= _nwsSubscribers)])
 
--- | A structure that represents either a cost spend or usage spend. Contains an amount and a unit.
+-- | The amount of cost or usage being measured for a budget.
 --
+--
+-- For example, a @Spend@ for @3 GB@ of S3 usage would have the following parameters:
+--
+--     * An @Amount@ of @3@
+--
+--     * A @unit@ of @GB@
+--
+--
+--
+--
 -- /See:/ 'spend' smart constructor.
 data Spend = Spend'
   { _sAmount :: !Text
@@ -385,9 +497,9 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'sAmount' - Undocumented member.
+-- * 'sAmount' - The cost or usage amount associated with a budget forecast, actual spend, or budget threshold.
 --
--- * 'sUnit' - Undocumented member.
+-- * 'sUnit' - The unit of measurement used for the budget forecast, actual spend, or budget threshold, such as dollars or GB.
 spend
     :: Text -- ^ 'sAmount'
     -> Text -- ^ 'sUnit'
@@ -395,13 +507,13 @@
 spend pAmount_ pUnit_ = Spend' {_sAmount = pAmount_, _sUnit = pUnit_}
 
 
--- | Undocumented member.
+-- | The cost or usage amount associated with a budget forecast, actual spend, or budget threshold.
 sAmount :: Lens' Spend Text
-sAmount = lens _sAmount (\ s a -> s{_sAmount = a});
+sAmount = lens _sAmount (\ s a -> s{_sAmount = a})
 
--- | Undocumented member.
+-- | The unit of measurement used for the budget forecast, actual spend, or budget threshold, such as dollars or GB.
 sUnit :: Lens' Spend Text
-sUnit = lens _sUnit (\ s a -> s{_sUnit = a});
+sUnit = lens _sUnit (\ s a -> s{_sUnit = a})
 
 instance FromJSON Spend where
         parseJSON
@@ -419,8 +531,18 @@
                  [Just ("Amount" .= _sAmount),
                   Just ("Unit" .= _sUnit)])
 
--- | Subscriber model. Each notification may contain multiple subscribers with different addresses.
+-- | The subscriber to a budget notification. The subscriber consists of a subscription type and either an Amazon Simple Notification Service topic or an email address.
 --
+--
+-- For example, an email subscriber would have the following parameters:
+--
+--     * A @subscriptionType@ of @EMAIL@
+--
+--     * An @address@ of @example@example.com@
+--
+--
+--
+--
 -- /See:/ 'subscriber' smart constructor.
 data Subscriber = Subscriber'
   { _sSubscriptionType :: !SubscriptionType
@@ -432,9 +554,9 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'sSubscriptionType' - Undocumented member.
+-- * 'sSubscriptionType' - The type of notification that AWS sends to a subscriber.
 --
--- * 'sAddress' - Undocumented member.
+-- * 'sAddress' - The address that AWS sends budget notifications to, either an SNS topic or an email.
 subscriber
     :: SubscriptionType -- ^ 'sSubscriptionType'
     -> Text -- ^ 'sAddress'
@@ -443,13 +565,13 @@
   Subscriber' {_sSubscriptionType = pSubscriptionType_, _sAddress = pAddress_}
 
 
--- | Undocumented member.
+-- | The type of notification that AWS sends to a subscriber.
 sSubscriptionType :: Lens' Subscriber SubscriptionType
-sSubscriptionType = lens _sSubscriptionType (\ s a -> s{_sSubscriptionType = a});
+sSubscriptionType = lens _sSubscriptionType (\ s a -> s{_sSubscriptionType = a})
 
--- | Undocumented member.
+-- | The address that AWS sends budget notifications to, either an SNS topic or an email.
 sAddress :: Lens' Subscriber Text
-sAddress = lens _sAddress (\ s a -> s{_sAddress = a});
+sAddress = lens _sAddress (\ s a -> s{_sAddress = a})
 
 instance FromJSON Subscriber where
         parseJSON
@@ -469,12 +591,14 @@
                  [Just ("SubscriptionType" .= _sSubscriptionType),
                   Just ("Address" .= _sAddress)])
 
--- | A time period indicating the start date and end date of a budget.
+-- | The period of time covered by a budget. Has a start date and an end date. The start date must come before the end date. There are no restrictions on the end date.
 --
+--
+--
 -- /See:/ 'timePeriod' smart constructor.
 data TimePeriod = TimePeriod'
-  { _tpStart :: !POSIX
-  , _tpEnd   :: !POSIX
+  { _tpStart :: !(Maybe POSIX)
+  , _tpEnd   :: !(Maybe POSIX)
   } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
 
@@ -482,30 +606,27 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'tpStart' - Undocumented member.
+-- * 'tpStart' - The start date for a budget. If you created your budget and didn't specify a start date, AWS defaults to the start of your chosen time period (i.e. DAILY, MONTHLY, QUARTERLY, ANNUALLY). For example, if you created your budget on January 24th 2018, chose @DAILY@ , and didn't set a start date, AWS set your start date to @01/24/18 00:00 UTC@ . If you chose @MONTHLY@ , AWS set your start date to @01/01/18 00:00 UTC@ . The defaults are the same for the AWS Billing and Cost Management console and the API. You can change your start date with the @UpdateBudget@ operation.
 --
--- * 'tpEnd' - Undocumented member.
+-- * 'tpEnd' - The end date for a budget. If you didn't specify an end date, AWS set your end date to @06/15/87 00:00 UTC@ . The defaults are the same for the AWS Billing and Cost Management console and the API. After the end date, AWS deletes the budget and all associated notifications and subscribers. You can change your end date with the @UpdateBudget@ operation.
 timePeriod
-    :: UTCTime -- ^ 'tpStart'
-    -> UTCTime -- ^ 'tpEnd'
-    -> TimePeriod
-timePeriod pStart_ pEnd_ =
-  TimePeriod' {_tpStart = _Time # pStart_, _tpEnd = _Time # pEnd_}
+    :: TimePeriod
+timePeriod = TimePeriod' {_tpStart = Nothing, _tpEnd = Nothing}
 
 
--- | Undocumented member.
-tpStart :: Lens' TimePeriod UTCTime
-tpStart = lens _tpStart (\ s a -> s{_tpStart = a}) . _Time;
+-- | The start date for a budget. If you created your budget and didn't specify a start date, AWS defaults to the start of your chosen time period (i.e. DAILY, MONTHLY, QUARTERLY, ANNUALLY). For example, if you created your budget on January 24th 2018, chose @DAILY@ , and didn't set a start date, AWS set your start date to @01/24/18 00:00 UTC@ . If you chose @MONTHLY@ , AWS set your start date to @01/01/18 00:00 UTC@ . The defaults are the same for the AWS Billing and Cost Management console and the API. You can change your start date with the @UpdateBudget@ operation.
+tpStart :: Lens' TimePeriod (Maybe UTCTime)
+tpStart = lens _tpStart (\ s a -> s{_tpStart = a}) . mapping _Time
 
--- | Undocumented member.
-tpEnd :: Lens' TimePeriod UTCTime
-tpEnd = lens _tpEnd (\ s a -> s{_tpEnd = a}) . _Time;
+-- | The end date for a budget. If you didn't specify an end date, AWS set your end date to @06/15/87 00:00 UTC@ . The defaults are the same for the AWS Billing and Cost Management console and the API. After the end date, AWS deletes the budget and all associated notifications and subscribers. You can change your end date with the @UpdateBudget@ operation.
+tpEnd :: Lens' TimePeriod (Maybe UTCTime)
+tpEnd = lens _tpEnd (\ s a -> s{_tpEnd = a}) . mapping _Time
 
 instance FromJSON TimePeriod where
         parseJSON
           = withObject "TimePeriod"
               (\ x ->
-                 TimePeriod' <$> (x .: "Start") <*> (x .: "End"))
+                 TimePeriod' <$> (x .:? "Start") <*> (x .:? "End"))
 
 instance Hashable TimePeriod where
 
@@ -515,4 +636,4 @@
         toJSON TimePeriod'{..}
           = object
               (catMaybes
-                 [Just ("Start" .= _tpStart), Just ("End" .= _tpEnd)])
+                 [("Start" .=) <$> _tpStart, ("End" .=) <$> _tpEnd])
diff --git a/gen/Network/AWS/Budgets/Types/Sum.hs b/gen/Network/AWS/Budgets/Types/Sum.hs
--- a/gen/Network/AWS/Budgets/Types/Sum.hs
+++ b/gen/Network/AWS/Budgets/Types/Sum.hs
@@ -9,7 +9,7 @@
 
 -- |
 -- Module      : Network.AWS.Budgets.Types.Sum
--- Copyright   : (c) 2013-2017 Brendan Hay
+-- Copyright   : (c) 2013-2018 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
@@ -20,8 +20,11 @@
 import Network.AWS.Prelude
 
 -- | The type of a budget. It should be COST, USAGE, or RI_UTILIZATION.
+--
+--
 data BudgetType
   = Cost
+  | RiCoverage
   | RiUtilization
   | Usage
   deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
@@ -30,14 +33,16 @@
 instance FromText BudgetType where
     parser = takeLowerText >>= \case
         "cost" -> pure Cost
+        "ri_coverage" -> pure RiCoverage
         "ri_utilization" -> pure RiUtilization
         "usage" -> pure Usage
         e -> fromTextError $ "Failure parsing BudgetType from value: '" <> e
-           <> "'. Accepted values: cost, ri_utilization, usage"
+           <> "'. Accepted values: cost, ri_coverage, ri_utilization, usage"
 
 instance ToText BudgetType where
     toText = \case
         Cost -> "COST"
+        RiCoverage -> "RI_COVERAGE"
         RiUtilization -> "RI_UTILIZATION"
         Usage -> "USAGE"
 
@@ -54,6 +59,8 @@
     parseJSON = parseJSONText "BudgetType"
 
 -- | The comparison operator of a notification. Currently we support less than, equal to and greater than.
+--
+--
 data ComparisonOperator
   = EqualTo
   | GreaterThan
@@ -88,6 +95,8 @@
     parseJSON = parseJSONText "ComparisonOperator"
 
 -- | The type of a notification. It should be ACTUAL or FORECASTED.
+--
+--
 data NotificationType
   = Actual
   | Forecasted
@@ -119,6 +128,8 @@
     parseJSON = parseJSONText "NotificationType"
 
 -- | The subscription type of the subscriber. It can be SMS or EMAIL.
+--
+--
 data SubscriptionType
   = Email
   | SNS
@@ -150,6 +161,8 @@
     parseJSON = parseJSONText "SubscriptionType"
 
 -- | The type of threshold for a notification. It can be PERCENTAGE or ABSOLUTE_VALUE.
+--
+--
 data ThresholdType
   = AbsoluteValue
   | Percentage
@@ -181,6 +194,8 @@
     parseJSON = parseJSONText "ThresholdType"
 
 -- | The time unit of the budget. e.g. MONTHLY, QUARTERLY, etc.
+--
+--
 data TimeUnit
   = Annually
   | Daily
diff --git a/gen/Network/AWS/Budgets/UpdateBudget.hs b/gen/Network/AWS/Budgets/UpdateBudget.hs
--- a/gen/Network/AWS/Budgets/UpdateBudget.hs
+++ b/gen/Network/AWS/Budgets/UpdateBudget.hs
@@ -12,13 +12,15 @@
 
 -- |
 -- Module      : Network.AWS.Budgets.UpdateBudget
--- Copyright   : (c) 2013-2017 Brendan Hay
+-- Copyright   : (c) 2013-2018 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Update the information of a budget already created
+-- Updates a budget. You can change every part of a budget except for the @budgetName@ and the @calculatedSpend@ . When a budget is modified, the @calculatedSpend@ drops to zero until AWS has new usage data to use for forecasting.
+--
+--
 module Network.AWS.Budgets.UpdateBudget
     (
     -- * Creating a Request
@@ -44,6 +46,8 @@
 
 -- | Request of UpdateBudget
 --
+--
+--
 -- /See:/ 'updateBudget' smart constructor.
 data UpdateBudget = UpdateBudget'
   { _ubAccountId :: !Text
@@ -55,9 +59,9 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'ubAccountId' - Undocumented member.
+-- * 'ubAccountId' - The @accountId@ that is associated with the budget that you want to update.
 --
--- * 'ubNewBudget' - Undocumented member.
+-- * 'ubNewBudget' - The budget that you want to update your budget to.
 updateBudget
     :: Text -- ^ 'ubAccountId'
     -> Budget -- ^ 'ubNewBudget'
@@ -66,13 +70,13 @@
   UpdateBudget' {_ubAccountId = pAccountId_, _ubNewBudget = pNewBudget_}
 
 
--- | Undocumented member.
+-- | The @accountId@ that is associated with the budget that you want to update.
 ubAccountId :: Lens' UpdateBudget Text
-ubAccountId = lens _ubAccountId (\ s a -> s{_ubAccountId = a});
+ubAccountId = lens _ubAccountId (\ s a -> s{_ubAccountId = a})
 
--- | Undocumented member.
+-- | The budget that you want to update your budget to.
 ubNewBudget :: Lens' UpdateBudget Budget
-ubNewBudget = lens _ubNewBudget (\ s a -> s{_ubNewBudget = a});
+ubNewBudget = lens _ubNewBudget (\ s a -> s{_ubNewBudget = a})
 
 instance AWSRequest UpdateBudget where
         type Rs UpdateBudget = UpdateBudgetResponse
@@ -111,6 +115,8 @@
 
 -- | Response of UpdateBudget
 --
+--
+--
 -- /See:/ 'updateBudgetResponse' smart constructor.
 newtype UpdateBudgetResponse = UpdateBudgetResponse'
   { _ubrsResponseStatus :: Int
@@ -131,6 +137,6 @@
 
 -- | -- | The response status code.
 ubrsResponseStatus :: Lens' UpdateBudgetResponse Int
-ubrsResponseStatus = lens _ubrsResponseStatus (\ s a -> s{_ubrsResponseStatus = a});
+ubrsResponseStatus = lens _ubrsResponseStatus (\ s a -> s{_ubrsResponseStatus = a})
 
 instance NFData UpdateBudgetResponse where
diff --git a/gen/Network/AWS/Budgets/UpdateNotification.hs b/gen/Network/AWS/Budgets/UpdateNotification.hs
--- a/gen/Network/AWS/Budgets/UpdateNotification.hs
+++ b/gen/Network/AWS/Budgets/UpdateNotification.hs
@@ -12,13 +12,15 @@
 
 -- |
 -- Module      : Network.AWS.Budgets.UpdateNotification
--- Copyright   : (c) 2013-2017 Brendan Hay
+-- Copyright   : (c) 2013-2018 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Update the information about a notification already created
+-- Updates a notification.
+--
+--
 module Network.AWS.Budgets.UpdateNotification
     (
     -- * Creating a Request
@@ -46,6 +48,8 @@
 
 -- | Request of UpdateNotification
 --
+--
+--
 -- /See:/ 'updateNotification' smart constructor.
 data UpdateNotification = UpdateNotification'
   { _unAccountId       :: !Text
@@ -59,13 +63,13 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'unAccountId' - Undocumented member.
+-- * 'unAccountId' - The @accountId@ that is associated with the budget whose notification you want to update.
 --
--- * 'unBudgetName' - Undocumented member.
+-- * 'unBudgetName' - The name of the budget whose notification you want to update.
 --
--- * 'unOldNotification' - Undocumented member.
+-- * 'unOldNotification' - The previous notification associated with a budget.
 --
--- * 'unNewNotification' - Undocumented member.
+-- * 'unNewNotification' - The updated notification to be associated with a budget.
 updateNotification
     :: Text -- ^ 'unAccountId'
     -> Text -- ^ 'unBudgetName'
@@ -74,28 +78,28 @@
     -> UpdateNotification
 updateNotification pAccountId_ pBudgetName_ pOldNotification_ pNewNotification_ =
   UpdateNotification'
-  { _unAccountId = pAccountId_
-  , _unBudgetName = pBudgetName_
-  , _unOldNotification = pOldNotification_
-  , _unNewNotification = pNewNotification_
-  }
+    { _unAccountId = pAccountId_
+    , _unBudgetName = pBudgetName_
+    , _unOldNotification = pOldNotification_
+    , _unNewNotification = pNewNotification_
+    }
 
 
--- | Undocumented member.
+-- | The @accountId@ that is associated with the budget whose notification you want to update.
 unAccountId :: Lens' UpdateNotification Text
-unAccountId = lens _unAccountId (\ s a -> s{_unAccountId = a});
+unAccountId = lens _unAccountId (\ s a -> s{_unAccountId = a})
 
--- | Undocumented member.
+-- | The name of the budget whose notification you want to update.
 unBudgetName :: Lens' UpdateNotification Text
-unBudgetName = lens _unBudgetName (\ s a -> s{_unBudgetName = a});
+unBudgetName = lens _unBudgetName (\ s a -> s{_unBudgetName = a})
 
--- | Undocumented member.
+-- | The previous notification associated with a budget.
 unOldNotification :: Lens' UpdateNotification Notification
-unOldNotification = lens _unOldNotification (\ s a -> s{_unOldNotification = a});
+unOldNotification = lens _unOldNotification (\ s a -> s{_unOldNotification = a})
 
--- | Undocumented member.
+-- | The updated notification to be associated with a budget.
 unNewNotification :: Lens' UpdateNotification Notification
-unNewNotification = lens _unNewNotification (\ s a -> s{_unNewNotification = a});
+unNewNotification = lens _unNewNotification (\ s a -> s{_unNewNotification = a})
 
 instance AWSRequest UpdateNotification where
         type Rs UpdateNotification =
@@ -137,6 +141,8 @@
 
 -- | Response of UpdateNotification
 --
+--
+--
 -- /See:/ 'updateNotificationResponse' smart constructor.
 newtype UpdateNotificationResponse = UpdateNotificationResponse'
   { _unrsResponseStatus :: Int
@@ -157,6 +163,6 @@
 
 -- | -- | The response status code.
 unrsResponseStatus :: Lens' UpdateNotificationResponse Int
-unrsResponseStatus = lens _unrsResponseStatus (\ s a -> s{_unrsResponseStatus = a});
+unrsResponseStatus = lens _unrsResponseStatus (\ s a -> s{_unrsResponseStatus = a})
 
 instance NFData UpdateNotificationResponse where
diff --git a/gen/Network/AWS/Budgets/UpdateSubscriber.hs b/gen/Network/AWS/Budgets/UpdateSubscriber.hs
--- a/gen/Network/AWS/Budgets/UpdateSubscriber.hs
+++ b/gen/Network/AWS/Budgets/UpdateSubscriber.hs
@@ -12,13 +12,15 @@
 
 -- |
 -- Module      : Network.AWS.Budgets.UpdateSubscriber
--- Copyright   : (c) 2013-2017 Brendan Hay
+-- Copyright   : (c) 2013-2018 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Update a subscriber
+-- Updates a subscriber.
+--
+--
 module Network.AWS.Budgets.UpdateSubscriber
     (
     -- * Creating a Request
@@ -47,6 +49,8 @@
 
 -- | Request of UpdateSubscriber
 --
+--
+--
 -- /See:/ 'updateSubscriber' smart constructor.
 data UpdateSubscriber = UpdateSubscriber'
   { _usAccountId     :: !Text
@@ -61,15 +65,15 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'usAccountId' - Undocumented member.
+-- * 'usAccountId' - The @accountId@ that is associated with the budget whose subscriber you want to update.
 --
--- * 'usBudgetName' - Undocumented member.
+-- * 'usBudgetName' - The name of the budget whose subscriber you want to update.
 --
--- * 'usNotification' - Undocumented member.
+-- * 'usNotification' - The notification whose subscriber you want to update.
 --
--- * 'usOldSubscriber' - Undocumented member.
+-- * 'usOldSubscriber' - The previous subscriber associated with a budget notification.
 --
--- * 'usNewSubscriber' - Undocumented member.
+-- * 'usNewSubscriber' - The updated subscriber associated with a budget notification.
 updateSubscriber
     :: Text -- ^ 'usAccountId'
     -> Text -- ^ 'usBudgetName'
@@ -79,33 +83,33 @@
     -> UpdateSubscriber
 updateSubscriber pAccountId_ pBudgetName_ pNotification_ pOldSubscriber_ pNewSubscriber_ =
   UpdateSubscriber'
-  { _usAccountId = pAccountId_
-  , _usBudgetName = pBudgetName_
-  , _usNotification = pNotification_
-  , _usOldSubscriber = pOldSubscriber_
-  , _usNewSubscriber = pNewSubscriber_
-  }
+    { _usAccountId = pAccountId_
+    , _usBudgetName = pBudgetName_
+    , _usNotification = pNotification_
+    , _usOldSubscriber = pOldSubscriber_
+    , _usNewSubscriber = pNewSubscriber_
+    }
 
 
--- | Undocumented member.
+-- | The @accountId@ that is associated with the budget whose subscriber you want to update.
 usAccountId :: Lens' UpdateSubscriber Text
-usAccountId = lens _usAccountId (\ s a -> s{_usAccountId = a});
+usAccountId = lens _usAccountId (\ s a -> s{_usAccountId = a})
 
--- | Undocumented member.
+-- | The name of the budget whose subscriber you want to update.
 usBudgetName :: Lens' UpdateSubscriber Text
-usBudgetName = lens _usBudgetName (\ s a -> s{_usBudgetName = a});
+usBudgetName = lens _usBudgetName (\ s a -> s{_usBudgetName = a})
 
--- | Undocumented member.
+-- | The notification whose subscriber you want to update.
 usNotification :: Lens' UpdateSubscriber Notification
-usNotification = lens _usNotification (\ s a -> s{_usNotification = a});
+usNotification = lens _usNotification (\ s a -> s{_usNotification = a})
 
--- | Undocumented member.
+-- | The previous subscriber associated with a budget notification.
 usOldSubscriber :: Lens' UpdateSubscriber Subscriber
-usOldSubscriber = lens _usOldSubscriber (\ s a -> s{_usOldSubscriber = a});
+usOldSubscriber = lens _usOldSubscriber (\ s a -> s{_usOldSubscriber = a})
 
--- | Undocumented member.
+-- | The updated subscriber associated with a budget notification.
 usNewSubscriber :: Lens' UpdateSubscriber Subscriber
-usNewSubscriber = lens _usNewSubscriber (\ s a -> s{_usNewSubscriber = a});
+usNewSubscriber = lens _usNewSubscriber (\ s a -> s{_usNewSubscriber = a})
 
 instance AWSRequest UpdateSubscriber where
         type Rs UpdateSubscriber = UpdateSubscriberResponse
@@ -147,6 +151,8 @@
 
 -- | Response of UpdateSubscriber
 --
+--
+--
 -- /See:/ 'updateSubscriberResponse' smart constructor.
 newtype UpdateSubscriberResponse = UpdateSubscriberResponse'
   { _usrsResponseStatus :: Int
@@ -167,6 +173,6 @@
 
 -- | -- | The response status code.
 usrsResponseStatus :: Lens' UpdateSubscriberResponse Int
-usrsResponseStatus = lens _usrsResponseStatus (\ s a -> s{_usrsResponseStatus = a});
+usrsResponseStatus = lens _usrsResponseStatus (\ s a -> s{_usrsResponseStatus = a})
 
 instance NFData UpdateSubscriberResponse where
diff --git a/gen/Network/AWS/Budgets/Waiters.hs b/gen/Network/AWS/Budgets/Waiters.hs
--- a/gen/Network/AWS/Budgets/Waiters.hs
+++ b/gen/Network/AWS/Budgets/Waiters.hs
@@ -7,7 +7,7 @@
 
 -- |
 -- Module      : Network.AWS.Budgets.Waiters
--- Copyright   : (c) 2013-2017 Brendan Hay
+-- Copyright   : (c) 2013-2018 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
diff --git a/test/Main.hs b/test/Main.hs
--- a/test/Main.hs
+++ b/test/Main.hs
@@ -2,7 +2,7 @@
 
 -- |
 -- Module      : Main
--- Copyright   : (c) 2013-2017 Brendan Hay
+-- Copyright   : (c) 2013-2018 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
diff --git a/test/Test/AWS/Budgets.hs b/test/Test/AWS/Budgets.hs
--- a/test/Test/AWS/Budgets.hs
+++ b/test/Test/AWS/Budgets.hs
@@ -1,6 +1,6 @@
 -- |
 -- Module      : Test.AWS.Budgets
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2018 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
 -- Stability   : auto-generated
diff --git a/test/Test/AWS/Budgets/Internal.hs b/test/Test/AWS/Budgets/Internal.hs
--- a/test/Test/AWS/Budgets/Internal.hs
+++ b/test/Test/AWS/Budgets/Internal.hs
@@ -1,6 +1,6 @@
 -- |
 -- Module      : Test.AWS.Budgets.Internal
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2018 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
 -- Stability   : auto-generated
diff --git a/test/Test/AWS/Gen/Budgets.hs b/test/Test/AWS/Gen/Budgets.hs
--- a/test/Test/AWS/Gen/Budgets.hs
+++ b/test/Test/AWS/Gen/Budgets.hs
@@ -5,7 +5,7 @@
 
 -- |
 -- Module      : Test.AWS.Gen.Budgets
--- Copyright   : (c) 2013-2017 Brendan Hay
+-- Copyright   : (c) 2013-2018 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
