-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/


-- | Amazon Budgets SDK.
--   
--   The types from this library are intended to be used with
--   <a>amazonka</a>, which provides mechanisms for specifying AuthN/AuthZ
--   information, sending requests, and receiving responses.
--   
--   Lenses are used for constructing and manipulating types, due to the
--   depth of nesting of AWS types and transparency regarding
--   de/serialisation into more palatable Haskell values. The provided
--   lenses should be compatible with any of the major lens libraries such
--   as <a>lens</a> or <a>lens-family-core</a>.
--   
--   See <a>Network.AWS.Budgets</a> or <a>the AWS documentation</a> to get
--   started.
@package amazonka-budgets
@version 1.6.1


module Network.AWS.Budgets.Types

-- | API version <tt>2016-10-20</tt> of the Amazon Budgets SDK
--   configuration.
budgets :: Service

-- | An error on the client occurred. Typically, the cause is an invalid
--   input value.
_InvalidParameterException :: AsError a => Getting (First ServiceError) a ServiceError

-- | An error on the server occurred during the processing of your request.
--   Try again later.
_InternalErrorException :: AsError a => Getting (First ServiceError) a ServiceError

-- | The pagination token expired.
_ExpiredNextTokenException :: AsError a => Getting (First ServiceError) a ServiceError

-- | We can’t locate the resource that you specified.
_NotFoundException :: AsError a => Getting (First ServiceError) a ServiceError

-- | The pagination token is invalid.
_InvalidNextTokenException :: AsError a => Getting (First ServiceError) a ServiceError

-- | The budget name already exists. Budget names must be unique within an
--   account.
_DuplicateRecordException :: AsError a => Getting (First ServiceError) a ServiceError

-- | You've exceeded the notification or subscriber limit.
_CreationLimitExceededException :: AsError a => Getting (First ServiceError) a ServiceError

-- | The type of a budget. It should be COST, USAGE, or RI_UTILIZATION.
data BudgetType
Cost :: BudgetType
RiCoverage :: BudgetType
RiUtilization :: BudgetType
Usage :: BudgetType

-- | The comparison operator of a notification. Currently we support less
--   than, equal to and greater than.
data ComparisonOperator
EqualTo :: ComparisonOperator
GreaterThan :: ComparisonOperator
LessThan :: ComparisonOperator

-- | The type of a notification. It should be ACTUAL or FORECASTED.
data NotificationType
Actual :: NotificationType
Forecasted :: NotificationType

-- | The subscription type of the subscriber. It can be SMS or EMAIL.
data SubscriptionType
Email :: SubscriptionType
SNS :: SubscriptionType

-- | The type of threshold for a notification. It can be PERCENTAGE or
--   ABSOLUTE_VALUE.
data ThresholdType
AbsoluteValue :: ThresholdType
Percentage :: ThresholdType

-- | The time unit of the budget. e.g. MONTHLY, QUARTERLY, etc.
data TimeUnit
Annually :: TimeUnit
Daily :: TimeUnit
Monthly :: TimeUnit
Quarterly :: TimeUnit

-- | Represents the output of the <tt>CreateBudget</tt> operation. The
--   content consists of the detailed metadata and data file information,
--   and the current status of the <tt>budget</tt> .
--   
--   The ARN pattern for a budget is:
--   <tt>arn:aws:budgetservice::AccountId:budget/budgetName</tt>
--   
--   <i>See:</i> <a>budget</a> smart constructor.
data Budget

-- | Creates a value of <a>Budget</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>bCalculatedSpend</a> - The actual and forecasted cost or usage
--   being tracked by a budget.</li>
--   <li><a>bBudgetLimit</a> - The total amount of cost, usage, or RI
--   utilization that you want to track with your budget.
--   <tt>BudgetLimit</tt> 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 <tt>100</tt>
--   .</li>
--   <li><a>bTimePeriod</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
--   <tt>DAILY</tt> , and didn't set a start date, AWS set your start date
--   to <tt>01<i>24</i>18 00:00 UTC</tt> . If you chose <tt>MONTHLY</tt> ,
--   AWS set your start date to <tt>01<i>01</i>18 00:00 UTC</tt> . If you
--   didn't specify an end date, AWS set your end date to <tt>06<i>15</i>87
--   00:00 UTC</tt> . The defaults are the same for the AWS Billing and
--   Cost Management console and the API. You can change either date with
--   the <tt>UpdateBudget</tt> operation. After the end date, AWS deletes
--   the budget and all associated notifications and subscribers.</li>
--   <li><a>bCostTypes</a> - The types of costs included in this
--   budget.</li>
--   <li><a>bCostFilters</a> - The cost filters applied to a budget, such
--   as service or region.</li>
--   <li><a>bBudgetName</a> - The name of a budget. Unique within accounts.
--   <tt>:</tt> and <tt>@ characters are not allowed in the
--   </tt>BudgetName@ .</li>
--   <li><a>bTimeUnit</a> - The length of time until a budget resets the
--   actual and forecasted spend.</li>
--   <li><a>bBudgetType</a> - Whether this budget tracks monetary costs,
--   usage, or RI utilization.</li>
--   </ul>
budget :: Text -> TimeUnit -> BudgetType -> Budget

-- | The actual and forecasted cost or usage being tracked by a budget.
bCalculatedSpend :: Lens' Budget (Maybe CalculatedSpend)

-- | The total amount of cost, usage, or RI utilization that you want to
--   track with your budget. <tt>BudgetLimit</tt> 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 <tt>100</tt> .
bBudgetLimit :: Lens' Budget (Maybe Spend)

-- | 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 <tt>DAILY</tt> , and
--   didn't set a start date, AWS set your start date to <tt>01<i>24</i>18
--   00:00 UTC</tt> . If you chose <tt>MONTHLY</tt> , AWS set your start
--   date to <tt>01<i>01</i>18 00:00 UTC</tt> . If you didn't specify an
--   end date, AWS set your end date to <tt>06<i>15</i>87 00:00 UTC</tt> .
--   The defaults are the same for the AWS Billing and Cost Management
--   console and the API. You can change either date with the
--   <tt>UpdateBudget</tt> operation. After the end date, AWS deletes the
--   budget and all associated notifications and subscribers.
bTimePeriod :: Lens' Budget (Maybe TimePeriod)

-- | The types of costs included in this budget.
bCostTypes :: Lens' Budget (Maybe CostTypes)

-- | The cost filters applied to a budget, such as service or region.
bCostFilters :: Lens' Budget (HashMap Text [Text])

-- | The name of a budget. Unique within accounts. <tt>:</tt> and <tt>@
--   characters are not allowed in the </tt>BudgetName@ .
bBudgetName :: Lens' Budget Text

-- | The length of time until a budget resets the actual and forecasted
--   spend.
bTimeUnit :: Lens' Budget TimeUnit

-- | Whether this budget tracks monetary costs, usage, or RI utilization.
bBudgetType :: Lens' Budget BudgetType

-- | The spend objects associated with this budget. The
--   <tt>actualSpend</tt> tracks how much you've used, cost, usage, or RI
--   units, and the <tt>forecastedSpend</tt> 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
--   <tt>50</tt> dollars on Amazon EC2, your <tt>actualSpend</tt> is <tt>50
--   USD</tt> , and your <tt>forecastedSpend</tt> is <tt>75 USD</tt> .
--   
--   <i>See:</i> <a>calculatedSpend</a> smart constructor.
data CalculatedSpend

-- | Creates a value of <a>CalculatedSpend</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>csForecastedSpend</a> - The amount of cost, usage, or RI units
--   that you are forecasted to use.</li>
--   <li><a>csActualSpend</a> - The amount of cost, usage, or RI units that
--   you have used.</li>
--   </ul>
calculatedSpend :: Spend -> CalculatedSpend

-- | The amount of cost, usage, or RI units that you are forecasted to use.
csForecastedSpend :: Lens' CalculatedSpend (Maybe Spend)

-- | The amount of cost, usage, or RI units that you have used.
csActualSpend :: Lens' CalculatedSpend Spend

-- | The types of cost included in a budget, such as tax and subscriptions.
--   
--   <i>See:</i> <a>costTypes</a> smart constructor.
data CostTypes

-- | Creates a value of <a>CostTypes</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ctUseAmortized</a> - Specifies whether a budget uses the
--   amortized rate. The default value is <tt>false</tt> .</li>
--   <li><a>ctIncludeRecurring</a> - Specifies whether a budget includes
--   recurring fees such as monthly RI fees. The default value is
--   <tt>true</tt> .</li>
--   <li><a>ctUseBlended</a> - Specifies whether a budget uses blended
--   rate. The default value is <tt>false</tt> .</li>
--   <li><a>ctIncludeSupport</a> - Specifies whether a budget includes
--   support subscription fees. The default value is <tt>true</tt> .</li>
--   <li><a>ctIncludeDiscount</a> - Specifies whether a budget includes
--   discounts. The default value is <tt>true</tt> .</li>
--   <li><a>ctIncludeSubscription</a> - Specifies whether a budget includes
--   subscriptions. The default value is <tt>true</tt> .</li>
--   <li><a>ctIncludeRefund</a> - Specifies whether a budget includes
--   refunds. The default value is <tt>true</tt> .</li>
--   <li><a>ctIncludeUpfront</a> - Specifies whether a budget includes
--   upfront RI costs. The default value is <tt>true</tt> .</li>
--   <li><a>ctIncludeOtherSubscription</a> - Specifies whether a budget
--   includes non-RI subscription costs. The default value is <tt>true</tt>
--   .</li>
--   <li><a>ctIncludeTax</a> - Specifies whether a budget includes taxes.
--   The default value is <tt>true</tt> .</li>
--   <li><a>ctIncludeCredit</a> - Specifies whether a budget includes
--   credits. The default value is <tt>true</tt> .</li>
--   </ul>
costTypes :: CostTypes

-- | Specifies whether a budget uses the amortized rate. The default value
--   is <tt>false</tt> .
ctUseAmortized :: Lens' CostTypes (Maybe Bool)

-- | Specifies whether a budget includes recurring fees such as monthly RI
--   fees. The default value is <tt>true</tt> .
ctIncludeRecurring :: Lens' CostTypes (Maybe Bool)

-- | Specifies whether a budget uses blended rate. The default value is
--   <tt>false</tt> .
ctUseBlended :: Lens' CostTypes (Maybe Bool)

-- | Specifies whether a budget includes support subscription fees. The
--   default value is <tt>true</tt> .
ctIncludeSupport :: Lens' CostTypes (Maybe Bool)

-- | Specifies whether a budget includes discounts. The default value is
--   <tt>true</tt> .
ctIncludeDiscount :: Lens' CostTypes (Maybe Bool)

-- | Specifies whether a budget includes subscriptions. The default value
--   is <tt>true</tt> .
ctIncludeSubscription :: Lens' CostTypes (Maybe Bool)

-- | Specifies whether a budget includes refunds. The default value is
--   <tt>true</tt> .
ctIncludeRefund :: Lens' CostTypes (Maybe Bool)

-- | Specifies whether a budget includes upfront RI costs. The default
--   value is <tt>true</tt> .
ctIncludeUpfront :: Lens' CostTypes (Maybe Bool)

-- | Specifies whether a budget includes non-RI subscription costs. The
--   default value is <tt>true</tt> .
ctIncludeOtherSubscription :: Lens' CostTypes (Maybe Bool)

-- | Specifies whether a budget includes taxes. The default value is
--   <tt>true</tt> .
ctIncludeTax :: Lens' CostTypes (Maybe Bool)

-- | Specifies whether a budget includes credits. The default value is
--   <tt>true</tt> .
ctIncludeCredit :: Lens' CostTypes (Maybe Bool)

-- | 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:
--   
--   <ul>
--   <li>A notificationType of <tt>ACTUAL</tt></li>
--   <li>A comparisonOperator of <tt>GREATER_THAN</tt></li>
--   <li>A notification threshold of <tt>80</tt></li>
--   </ul>
--   
--   <i>See:</i> <a>notification</a> smart constructor.
data Notification

-- | Creates a value of <a>Notification</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>nThresholdType</a> - The type of threshold for a notification.
--   For <tt>ACTUAL</tt> thresholds, AWS notifies you when you go over the
--   threshold, and for <tt>FORECASTED</tt> thresholds AWS notifies you
--   when you are forecasted to go over the threshold.</li>
--   <li><a>nNotificationType</a> - Whether the notification is for how
--   much you have spent (<tt>ACTUAL</tt> ) or for how much you are
--   forecasted to spend (<tt>FORECASTED</tt> ).</li>
--   <li><a>nComparisonOperator</a> - The comparison used for this
--   notification.</li>
--   <li><a>nThreshold</a> - The threshold associated with a notification.
--   Thresholds are always a percentage.</li>
--   </ul>
notification :: NotificationType -> ComparisonOperator -> Double -> Notification

-- | The type of threshold for a notification. For <tt>ACTUAL</tt>
--   thresholds, AWS notifies you when you go over the threshold, and for
--   <tt>FORECASTED</tt> thresholds AWS notifies you when you are
--   forecasted to go over the threshold.
nThresholdType :: Lens' Notification (Maybe ThresholdType)

-- | Whether the notification is for how much you have spent
--   (<tt>ACTUAL</tt> ) or for how much you are forecasted to spend
--   (<tt>FORECASTED</tt> ).
nNotificationType :: Lens' Notification NotificationType

-- | The comparison used for this notification.
nComparisonOperator :: Lens' Notification ComparisonOperator

-- | The threshold associated with a notification. Thresholds are always a
--   percentage.
nThreshold :: Lens' Notification Double

-- | A notification with subscribers. A notification can have one SNS
--   subscriber and up to ten email subscribers, for a total of 11
--   subscribers.
--   
--   <i>See:</i> <a>notificationWithSubscribers</a> smart constructor.
data NotificationWithSubscribers

-- | Creates a value of <a>NotificationWithSubscribers</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>nwsNotification</a> - The notification associated with a
--   budget.</li>
--   <li><a>nwsSubscribers</a> - A list of subscribers who are subscribed
--   to this notification.</li>
--   </ul>
notificationWithSubscribers :: Notification -> NonEmpty Subscriber -> NotificationWithSubscribers

-- | The notification associated with a budget.
nwsNotification :: Lens' NotificationWithSubscribers Notification

-- | A list of subscribers who are subscribed to this notification.
nwsSubscribers :: Lens' NotificationWithSubscribers (NonEmpty Subscriber)

-- | The amount of cost or usage being measured for a budget.
--   
--   For example, a <tt>Spend</tt> for <tt>3 GB</tt> of S3 usage would have
--   the following parameters:
--   
--   <ul>
--   <li>An <tt>Amount</tt> of <tt>3</tt></li>
--   <li>A <tt>unit</tt> of <tt>GB</tt></li>
--   </ul>
--   
--   <i>See:</i> <a>spend</a> smart constructor.
data Spend

-- | Creates a value of <a>Spend</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>sAmount</a> - The cost or usage amount associated with a budget
--   forecast, actual spend, or budget threshold.</li>
--   <li><a>sUnit</a> - The unit of measurement used for the budget
--   forecast, actual spend, or budget threshold, such as dollars or
--   GB.</li>
--   </ul>
spend :: Text -> Text -> Spend

-- | The cost or usage amount associated with a budget forecast, actual
--   spend, or budget threshold.
sAmount :: Lens' Spend Text

-- | The unit of measurement used for the budget forecast, actual spend, or
--   budget threshold, such as dollars or GB.
sUnit :: Lens' Spend Text

-- | 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:
--   
--   <ul>
--   <li>A <tt>subscriptionType</tt> of <tt>EMAIL</tt></li>
--   <li>An <tt>address</tt> of <tt>example</tt>example.com@</li>
--   </ul>
--   
--   <i>See:</i> <a>subscriber</a> smart constructor.
data Subscriber

-- | Creates a value of <a>Subscriber</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>sSubscriptionType</a> - The type of notification that AWS sends
--   to a subscriber.</li>
--   <li><a>sAddress</a> - The address that AWS sends budget notifications
--   to, either an SNS topic or an email.</li>
--   </ul>
subscriber :: SubscriptionType -> Text -> Subscriber

-- | The type of notification that AWS sends to a subscriber.
sSubscriptionType :: Lens' Subscriber SubscriptionType

-- | The address that AWS sends budget notifications to, either an SNS
--   topic or an email.
sAddress :: Lens' Subscriber Text

-- | 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.
--   
--   <i>See:</i> <a>timePeriod</a> smart constructor.
data TimePeriod

-- | Creates a value of <a>TimePeriod</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>tpStart</a> - 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
--   <tt>DAILY</tt> , and didn't set a start date, AWS set your start date
--   to <tt>01<i>24</i>18 00:00 UTC</tt> . If you chose <tt>MONTHLY</tt> ,
--   AWS set your start date to <tt>01<i>01</i>18 00:00 UTC</tt> . The
--   defaults are the same for the AWS Billing and Cost Management console
--   and the API. You can change your start date with the
--   <tt>UpdateBudget</tt> operation.</li>
--   <li><a>tpEnd</a> - The end date for a budget. If you didn't specify an
--   end date, AWS set your end date to <tt>06<i>15</i>87 00:00 UTC</tt> .
--   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 <tt>UpdateBudget</tt> operation.</li>
--   </ul>
timePeriod :: TimePeriod

-- | 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 <tt>DAILY</tt> , and
--   didn't set a start date, AWS set your start date to <tt>01<i>24</i>18
--   00:00 UTC</tt> . If you chose <tt>MONTHLY</tt> , AWS set your start
--   date to <tt>01<i>01</i>18 00:00 UTC</tt> . The defaults are the same
--   for the AWS Billing and Cost Management console and the API. You can
--   change your start date with the <tt>UpdateBudget</tt> operation.
tpStart :: Lens' TimePeriod (Maybe UTCTime)

-- | The end date for a budget. If you didn't specify an end date, AWS set
--   your end date to <tt>06<i>15</i>87 00:00 UTC</tt> . 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
--   <tt>UpdateBudget</tt> operation.
tpEnd :: Lens' TimePeriod (Maybe UTCTime)


-- | Lists the subscribers associated with a notification.
module Network.AWS.Budgets.DescribeSubscribersForNotification

-- | Creates a value of <a>DescribeSubscribersForNotification</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dsfnNextToken</a> - The pagination token that indicates the
--   next set of results to retrieve.</li>
--   <li><a>dsfnMaxResults</a> - Optional integer. Specifies the maximum
--   number of results to return in response.</li>
--   <li><a>dsfnAccountId</a> - The <tt>accountId</tt> that is associated
--   with the budget whose subscribers you want descriptions of.</li>
--   <li><a>dsfnBudgetName</a> - The name of the budget whose subscribers
--   you want descriptions of.</li>
--   <li><a>dsfnNotification</a> - The notification whose subscribers you
--   want to list.</li>
--   </ul>
describeSubscribersForNotification :: Text -> Text -> Notification -> DescribeSubscribersForNotification

-- | Request of DescribeSubscribersForNotification
--   
--   <i>See:</i> <a>describeSubscribersForNotification</a> smart
--   constructor.
data DescribeSubscribersForNotification

-- | The pagination token that indicates the next set of results to
--   retrieve.
dsfnNextToken :: Lens' DescribeSubscribersForNotification (Maybe Text)

-- | Optional integer. Specifies the maximum number of results to return in
--   response.
dsfnMaxResults :: Lens' DescribeSubscribersForNotification (Maybe Natural)

-- | The <tt>accountId</tt> that is associated with the budget whose
--   subscribers you want descriptions of.
dsfnAccountId :: Lens' DescribeSubscribersForNotification Text

-- | The name of the budget whose subscribers you want descriptions of.
dsfnBudgetName :: Lens' DescribeSubscribersForNotification Text

-- | The notification whose subscribers you want to list.
dsfnNotification :: Lens' DescribeSubscribersForNotification Notification

-- | Creates a value of <a>DescribeSubscribersForNotificationResponse</a>
--   with the minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dsfnrsNextToken</a> - The pagination token that indicates the
--   next set of results that you can retrieve.</li>
--   <li><a>dsfnrsSubscribers</a> - A list of subscribers associated with a
--   notification.</li>
--   <li><a>dsfnrsResponseStatus</a> - -- | The response status code.</li>
--   </ul>
describeSubscribersForNotificationResponse :: Int -> DescribeSubscribersForNotificationResponse

-- | Response of DescribeSubscribersForNotification
--   
--   <i>See:</i> <a>describeSubscribersForNotificationResponse</a> smart
--   constructor.
data DescribeSubscribersForNotificationResponse

-- | The pagination token that indicates the next set of results that you
--   can retrieve.
dsfnrsNextToken :: Lens' DescribeSubscribersForNotificationResponse (Maybe Text)

-- | A list of subscribers associated with a notification.
dsfnrsSubscribers :: Lens' DescribeSubscribersForNotificationResponse (Maybe (NonEmpty Subscriber))

-- | <ul>
--   <li>- | The response status code.</li>
--   </ul>
dsfnrsResponseStatus :: Lens' DescribeSubscribersForNotificationResponse Int
instance GHC.Generics.Generic Network.AWS.Budgets.DescribeSubscribersForNotification.DescribeSubscribersForNotificationResponse
instance Data.Data.Data Network.AWS.Budgets.DescribeSubscribersForNotification.DescribeSubscribersForNotificationResponse
instance GHC.Show.Show Network.AWS.Budgets.DescribeSubscribersForNotification.DescribeSubscribersForNotificationResponse
instance GHC.Read.Read Network.AWS.Budgets.DescribeSubscribersForNotification.DescribeSubscribersForNotificationResponse
instance GHC.Classes.Eq Network.AWS.Budgets.DescribeSubscribersForNotification.DescribeSubscribersForNotificationResponse
instance GHC.Generics.Generic Network.AWS.Budgets.DescribeSubscribersForNotification.DescribeSubscribersForNotification
instance Data.Data.Data Network.AWS.Budgets.DescribeSubscribersForNotification.DescribeSubscribersForNotification
instance GHC.Show.Show Network.AWS.Budgets.DescribeSubscribersForNotification.DescribeSubscribersForNotification
instance GHC.Read.Read Network.AWS.Budgets.DescribeSubscribersForNotification.DescribeSubscribersForNotification
instance GHC.Classes.Eq Network.AWS.Budgets.DescribeSubscribersForNotification.DescribeSubscribersForNotification
instance Network.AWS.Types.AWSRequest Network.AWS.Budgets.DescribeSubscribersForNotification.DescribeSubscribersForNotification
instance Control.DeepSeq.NFData Network.AWS.Budgets.DescribeSubscribersForNotification.DescribeSubscribersForNotificationResponse
instance Data.Hashable.Class.Hashable Network.AWS.Budgets.DescribeSubscribersForNotification.DescribeSubscribersForNotification
instance Control.DeepSeq.NFData Network.AWS.Budgets.DescribeSubscribersForNotification.DescribeSubscribersForNotification
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.Budgets.DescribeSubscribersForNotification.DescribeSubscribersForNotification
instance Data.Aeson.Types.ToJSON.ToJSON Network.AWS.Budgets.DescribeSubscribersForNotification.DescribeSubscribersForNotification
instance Network.AWS.Data.Path.ToPath Network.AWS.Budgets.DescribeSubscribersForNotification.DescribeSubscribersForNotification
instance Network.AWS.Data.Query.ToQuery Network.AWS.Budgets.DescribeSubscribersForNotification.DescribeSubscribersForNotification


-- | Lists the notifications associated with a budget.
module Network.AWS.Budgets.DescribeNotificationsForBudget

-- | Creates a value of <a>DescribeNotificationsForBudget</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dnfbNextToken</a> - The pagination token that indicates the
--   next set of results to retrieve.</li>
--   <li><a>dnfbMaxResults</a> - Optional integer. Specifies the maximum
--   number of results to return in response.</li>
--   <li><a>dnfbAccountId</a> - The <tt>accountId</tt> that is associated
--   with the budget whose notifications you want descriptions of.</li>
--   <li><a>dnfbBudgetName</a> - The name of the budget whose notifications
--   you want descriptions of.</li>
--   </ul>
describeNotificationsForBudget :: Text -> Text -> DescribeNotificationsForBudget

-- | Request of DescribeNotificationsForBudget
--   
--   <i>See:</i> <a>describeNotificationsForBudget</a> smart constructor.
data DescribeNotificationsForBudget

-- | The pagination token that indicates the next set of results to
--   retrieve.
dnfbNextToken :: Lens' DescribeNotificationsForBudget (Maybe Text)

-- | Optional integer. Specifies the maximum number of results to return in
--   response.
dnfbMaxResults :: Lens' DescribeNotificationsForBudget (Maybe Natural)

-- | The <tt>accountId</tt> that is associated with the budget whose
--   notifications you want descriptions of.
dnfbAccountId :: Lens' DescribeNotificationsForBudget Text

-- | The name of the budget whose notifications you want descriptions of.
dnfbBudgetName :: Lens' DescribeNotificationsForBudget Text

-- | Creates a value of <a>DescribeNotificationsForBudgetResponse</a> with
--   the minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dnfbrsNextToken</a> - The pagination token that indicates the
--   next set of results that you can retrieve.</li>
--   <li><a>dnfbrsNotifications</a> - A list of notifications associated
--   with a budget.</li>
--   <li><a>dnfbrsResponseStatus</a> - -- | The response status code.</li>
--   </ul>
describeNotificationsForBudgetResponse :: Int -> DescribeNotificationsForBudgetResponse

-- | Response of GetNotificationsForBudget
--   
--   <i>See:</i> <a>describeNotificationsForBudgetResponse</a> smart
--   constructor.
data DescribeNotificationsForBudgetResponse

-- | The pagination token that indicates the next set of results that you
--   can retrieve.
dnfbrsNextToken :: Lens' DescribeNotificationsForBudgetResponse (Maybe Text)

-- | A list of notifications associated with a budget.
dnfbrsNotifications :: Lens' DescribeNotificationsForBudgetResponse [Notification]

-- | <ul>
--   <li>- | The response status code.</li>
--   </ul>
dnfbrsResponseStatus :: Lens' DescribeNotificationsForBudgetResponse Int
instance GHC.Generics.Generic Network.AWS.Budgets.DescribeNotificationsForBudget.DescribeNotificationsForBudgetResponse
instance Data.Data.Data Network.AWS.Budgets.DescribeNotificationsForBudget.DescribeNotificationsForBudgetResponse
instance GHC.Show.Show Network.AWS.Budgets.DescribeNotificationsForBudget.DescribeNotificationsForBudgetResponse
instance GHC.Read.Read Network.AWS.Budgets.DescribeNotificationsForBudget.DescribeNotificationsForBudgetResponse
instance GHC.Classes.Eq Network.AWS.Budgets.DescribeNotificationsForBudget.DescribeNotificationsForBudgetResponse
instance GHC.Generics.Generic Network.AWS.Budgets.DescribeNotificationsForBudget.DescribeNotificationsForBudget
instance Data.Data.Data Network.AWS.Budgets.DescribeNotificationsForBudget.DescribeNotificationsForBudget
instance GHC.Show.Show Network.AWS.Budgets.DescribeNotificationsForBudget.DescribeNotificationsForBudget
instance GHC.Read.Read Network.AWS.Budgets.DescribeNotificationsForBudget.DescribeNotificationsForBudget
instance GHC.Classes.Eq Network.AWS.Budgets.DescribeNotificationsForBudget.DescribeNotificationsForBudget
instance Network.AWS.Types.AWSRequest Network.AWS.Budgets.DescribeNotificationsForBudget.DescribeNotificationsForBudget
instance Control.DeepSeq.NFData Network.AWS.Budgets.DescribeNotificationsForBudget.DescribeNotificationsForBudgetResponse
instance Data.Hashable.Class.Hashable Network.AWS.Budgets.DescribeNotificationsForBudget.DescribeNotificationsForBudget
instance Control.DeepSeq.NFData Network.AWS.Budgets.DescribeNotificationsForBudget.DescribeNotificationsForBudget
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.Budgets.DescribeNotificationsForBudget.DescribeNotificationsForBudget
instance Data.Aeson.Types.ToJSON.ToJSON Network.AWS.Budgets.DescribeNotificationsForBudget.DescribeNotificationsForBudget
instance Network.AWS.Data.Path.ToPath Network.AWS.Budgets.DescribeNotificationsForBudget.DescribeNotificationsForBudget
instance Network.AWS.Data.Query.ToQuery Network.AWS.Budgets.DescribeNotificationsForBudget.DescribeNotificationsForBudget


-- | Lists the budgets associated with an account.
module Network.AWS.Budgets.DescribeBudgets

-- | Creates a value of <a>DescribeBudgets</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dbNextToken</a> - The pagination token that indicates the next
--   set of results to retrieve.</li>
--   <li><a>dbMaxResults</a> - Optional integer. Specifies the maximum
--   number of results to return in response.</li>
--   <li><a>dbAccountId</a> - The <tt>accountId</tt> that is associated
--   with the budgets that you want descriptions of.</li>
--   </ul>
describeBudgets :: Text -> DescribeBudgets

-- | Request of DescribeBudgets
--   
--   <i>See:</i> <a>describeBudgets</a> smart constructor.
data DescribeBudgets

-- | The pagination token that indicates the next set of results to
--   retrieve.
dbNextToken :: Lens' DescribeBudgets (Maybe Text)

-- | Optional integer. Specifies the maximum number of results to return in
--   response.
dbMaxResults :: Lens' DescribeBudgets (Maybe Natural)

-- | The <tt>accountId</tt> that is associated with the budgets that you
--   want descriptions of.
dbAccountId :: Lens' DescribeBudgets Text

-- | Creates a value of <a>DescribeBudgetsResponse</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dbrsNextToken</a> - The pagination token that indicates the
--   next set of results that you can retrieve.</li>
--   <li><a>dbrsBudgets</a> - A list of budgets.</li>
--   <li><a>dbrsResponseStatus</a> - -- | The response status code.</li>
--   </ul>
describeBudgetsResponse :: Int -> DescribeBudgetsResponse

-- | Response of DescribeBudgets
--   
--   <i>See:</i> <a>describeBudgetsResponse</a> smart constructor.
data DescribeBudgetsResponse

-- | The pagination token that indicates the next set of results that you
--   can retrieve.
dbrsNextToken :: Lens' DescribeBudgetsResponse (Maybe Text)

-- | A list of budgets.
dbrsBudgets :: Lens' DescribeBudgetsResponse [Budget]

-- | <ul>
--   <li>- | The response status code.</li>
--   </ul>
dbrsResponseStatus :: Lens' DescribeBudgetsResponse Int
instance GHC.Generics.Generic Network.AWS.Budgets.DescribeBudgets.DescribeBudgetsResponse
instance Data.Data.Data Network.AWS.Budgets.DescribeBudgets.DescribeBudgetsResponse
instance GHC.Show.Show Network.AWS.Budgets.DescribeBudgets.DescribeBudgetsResponse
instance GHC.Read.Read Network.AWS.Budgets.DescribeBudgets.DescribeBudgetsResponse
instance GHC.Classes.Eq Network.AWS.Budgets.DescribeBudgets.DescribeBudgetsResponse
instance GHC.Generics.Generic Network.AWS.Budgets.DescribeBudgets.DescribeBudgets
instance Data.Data.Data Network.AWS.Budgets.DescribeBudgets.DescribeBudgets
instance GHC.Show.Show Network.AWS.Budgets.DescribeBudgets.DescribeBudgets
instance GHC.Read.Read Network.AWS.Budgets.DescribeBudgets.DescribeBudgets
instance GHC.Classes.Eq Network.AWS.Budgets.DescribeBudgets.DescribeBudgets
instance Network.AWS.Types.AWSRequest Network.AWS.Budgets.DescribeBudgets.DescribeBudgets
instance Control.DeepSeq.NFData Network.AWS.Budgets.DescribeBudgets.DescribeBudgetsResponse
instance Data.Hashable.Class.Hashable Network.AWS.Budgets.DescribeBudgets.DescribeBudgets
instance Control.DeepSeq.NFData Network.AWS.Budgets.DescribeBudgets.DescribeBudgets
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.Budgets.DescribeBudgets.DescribeBudgets
instance Data.Aeson.Types.ToJSON.ToJSON Network.AWS.Budgets.DescribeBudgets.DescribeBudgets
instance Network.AWS.Data.Path.ToPath Network.AWS.Budgets.DescribeBudgets.DescribeBudgets
instance Network.AWS.Data.Query.ToQuery Network.AWS.Budgets.DescribeBudgets.DescribeBudgets


-- | Describes a budget.
module Network.AWS.Budgets.DescribeBudget

-- | Creates a value of <a>DescribeBudget</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>desAccountId</a> - The <tt>accountId</tt> that is associated
--   with the budget that you want a description of.</li>
--   <li><a>desBudgetName</a> - The name of the budget that you want a
--   description of.</li>
--   </ul>
describeBudget :: Text -> Text -> DescribeBudget

-- | Request of DescribeBudget
--   
--   <i>See:</i> <a>describeBudget</a> smart constructor.
data DescribeBudget

-- | The <tt>accountId</tt> that is associated with the budget that you
--   want a description of.
desAccountId :: Lens' DescribeBudget Text

-- | The name of the budget that you want a description of.
desBudgetName :: Lens' DescribeBudget Text

-- | Creates a value of <a>DescribeBudgetResponse</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>desrsBudget</a> - The description of the budget.</li>
--   <li><a>desrsResponseStatus</a> - -- | The response status code.</li>
--   </ul>
describeBudgetResponse :: Int -> DescribeBudgetResponse

-- | Response of DescribeBudget
--   
--   <i>See:</i> <a>describeBudgetResponse</a> smart constructor.
data DescribeBudgetResponse

-- | The description of the budget.
desrsBudget :: Lens' DescribeBudgetResponse (Maybe Budget)

-- | <ul>
--   <li>- | The response status code.</li>
--   </ul>
desrsResponseStatus :: Lens' DescribeBudgetResponse Int
instance GHC.Generics.Generic Network.AWS.Budgets.DescribeBudget.DescribeBudgetResponse
instance Data.Data.Data Network.AWS.Budgets.DescribeBudget.DescribeBudgetResponse
instance GHC.Show.Show Network.AWS.Budgets.DescribeBudget.DescribeBudgetResponse
instance GHC.Read.Read Network.AWS.Budgets.DescribeBudget.DescribeBudgetResponse
instance GHC.Classes.Eq Network.AWS.Budgets.DescribeBudget.DescribeBudgetResponse
instance GHC.Generics.Generic Network.AWS.Budgets.DescribeBudget.DescribeBudget
instance Data.Data.Data Network.AWS.Budgets.DescribeBudget.DescribeBudget
instance GHC.Show.Show Network.AWS.Budgets.DescribeBudget.DescribeBudget
instance GHC.Read.Read Network.AWS.Budgets.DescribeBudget.DescribeBudget
instance GHC.Classes.Eq Network.AWS.Budgets.DescribeBudget.DescribeBudget
instance Network.AWS.Types.AWSRequest Network.AWS.Budgets.DescribeBudget.DescribeBudget
instance Control.DeepSeq.NFData Network.AWS.Budgets.DescribeBudget.DescribeBudgetResponse
instance Data.Hashable.Class.Hashable Network.AWS.Budgets.DescribeBudget.DescribeBudget
instance Control.DeepSeq.NFData Network.AWS.Budgets.DescribeBudget.DescribeBudget
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.Budgets.DescribeBudget.DescribeBudget
instance Data.Aeson.Types.ToJSON.ToJSON Network.AWS.Budgets.DescribeBudget.DescribeBudget
instance Network.AWS.Data.Path.ToPath Network.AWS.Budgets.DescribeBudget.DescribeBudget
instance Network.AWS.Data.Query.ToQuery Network.AWS.Budgets.DescribeBudget.DescribeBudget


-- | Deletes a subscriber.
--   
--   <b>Deleting the last subscriber to a notification also deletes the
--   notification.</b>
module Network.AWS.Budgets.DeleteSubscriber

-- | Creates a value of <a>DeleteSubscriber</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dsAccountId</a> - The <tt>accountId</tt> that is associated
--   with the budget whose subscriber you want to delete.</li>
--   <li><a>dsBudgetName</a> - The name of the budget whose subscriber you
--   want to delete.</li>
--   <li><a>dsNotification</a> - The notification whose subscriber you want
--   to delete.</li>
--   <li><a>dsSubscriber</a> - The subscriber that you want to delete.</li>
--   </ul>
deleteSubscriber :: Text -> Text -> Notification -> Subscriber -> DeleteSubscriber

-- | Request of DeleteSubscriber
--   
--   <i>See:</i> <a>deleteSubscriber</a> smart constructor.
data DeleteSubscriber

-- | The <tt>accountId</tt> that is associated with the budget whose
--   subscriber you want to delete.
dsAccountId :: Lens' DeleteSubscriber Text

-- | The name of the budget whose subscriber you want to delete.
dsBudgetName :: Lens' DeleteSubscriber Text

-- | The notification whose subscriber you want to delete.
dsNotification :: Lens' DeleteSubscriber Notification

-- | The subscriber that you want to delete.
dsSubscriber :: Lens' DeleteSubscriber Subscriber

-- | Creates a value of <a>DeleteSubscriberResponse</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dsrsResponseStatus</a> - -- | The response status code.</li>
--   </ul>
deleteSubscriberResponse :: Int -> DeleteSubscriberResponse

-- | Response of DeleteSubscriber
--   
--   <i>See:</i> <a>deleteSubscriberResponse</a> smart constructor.
data DeleteSubscriberResponse

-- | <ul>
--   <li>- | The response status code.</li>
--   </ul>
dsrsResponseStatus :: Lens' DeleteSubscriberResponse Int
instance GHC.Generics.Generic Network.AWS.Budgets.DeleteSubscriber.DeleteSubscriberResponse
instance Data.Data.Data Network.AWS.Budgets.DeleteSubscriber.DeleteSubscriberResponse
instance GHC.Show.Show Network.AWS.Budgets.DeleteSubscriber.DeleteSubscriberResponse
instance GHC.Read.Read Network.AWS.Budgets.DeleteSubscriber.DeleteSubscriberResponse
instance GHC.Classes.Eq Network.AWS.Budgets.DeleteSubscriber.DeleteSubscriberResponse
instance GHC.Generics.Generic Network.AWS.Budgets.DeleteSubscriber.DeleteSubscriber
instance Data.Data.Data Network.AWS.Budgets.DeleteSubscriber.DeleteSubscriber
instance GHC.Show.Show Network.AWS.Budgets.DeleteSubscriber.DeleteSubscriber
instance GHC.Read.Read Network.AWS.Budgets.DeleteSubscriber.DeleteSubscriber
instance GHC.Classes.Eq Network.AWS.Budgets.DeleteSubscriber.DeleteSubscriber
instance Network.AWS.Types.AWSRequest Network.AWS.Budgets.DeleteSubscriber.DeleteSubscriber
instance Control.DeepSeq.NFData Network.AWS.Budgets.DeleteSubscriber.DeleteSubscriberResponse
instance Data.Hashable.Class.Hashable Network.AWS.Budgets.DeleteSubscriber.DeleteSubscriber
instance Control.DeepSeq.NFData Network.AWS.Budgets.DeleteSubscriber.DeleteSubscriber
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.Budgets.DeleteSubscriber.DeleteSubscriber
instance Data.Aeson.Types.ToJSON.ToJSON Network.AWS.Budgets.DeleteSubscriber.DeleteSubscriber
instance Network.AWS.Data.Path.ToPath Network.AWS.Budgets.DeleteSubscriber.DeleteSubscriber
instance Network.AWS.Data.Query.ToQuery Network.AWS.Budgets.DeleteSubscriber.DeleteSubscriber


-- | Deletes a notification.
--   
--   <b>Deleting a notification also deletes the subscribers associated
--   with the notification.</b>
module Network.AWS.Budgets.DeleteNotification

-- | Creates a value of <a>DeleteNotification</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dnAccountId</a> - The <tt>accountId</tt> that is associated
--   with the budget whose notification you want to delete.</li>
--   <li><a>dnBudgetName</a> - The name of the budget whose notification
--   you want to delete.</li>
--   <li><a>dnNotification</a> - The notification that you want to
--   delete.</li>
--   </ul>
deleteNotification :: Text -> Text -> Notification -> DeleteNotification

-- | Request of DeleteNotification
--   
--   <i>See:</i> <a>deleteNotification</a> smart constructor.
data DeleteNotification

-- | The <tt>accountId</tt> that is associated with the budget whose
--   notification you want to delete.
dnAccountId :: Lens' DeleteNotification Text

-- | The name of the budget whose notification you want to delete.
dnBudgetName :: Lens' DeleteNotification Text

-- | The notification that you want to delete.
dnNotification :: Lens' DeleteNotification Notification

-- | Creates a value of <a>DeleteNotificationResponse</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dnrsResponseStatus</a> - -- | The response status code.</li>
--   </ul>
deleteNotificationResponse :: Int -> DeleteNotificationResponse

-- | Response of DeleteNotification
--   
--   <i>See:</i> <a>deleteNotificationResponse</a> smart constructor.
data DeleteNotificationResponse

-- | <ul>
--   <li>- | The response status code.</li>
--   </ul>
dnrsResponseStatus :: Lens' DeleteNotificationResponse Int
instance GHC.Generics.Generic Network.AWS.Budgets.DeleteNotification.DeleteNotificationResponse
instance Data.Data.Data Network.AWS.Budgets.DeleteNotification.DeleteNotificationResponse
instance GHC.Show.Show Network.AWS.Budgets.DeleteNotification.DeleteNotificationResponse
instance GHC.Read.Read Network.AWS.Budgets.DeleteNotification.DeleteNotificationResponse
instance GHC.Classes.Eq Network.AWS.Budgets.DeleteNotification.DeleteNotificationResponse
instance GHC.Generics.Generic Network.AWS.Budgets.DeleteNotification.DeleteNotification
instance Data.Data.Data Network.AWS.Budgets.DeleteNotification.DeleteNotification
instance GHC.Show.Show Network.AWS.Budgets.DeleteNotification.DeleteNotification
instance GHC.Read.Read Network.AWS.Budgets.DeleteNotification.DeleteNotification
instance GHC.Classes.Eq Network.AWS.Budgets.DeleteNotification.DeleteNotification
instance Network.AWS.Types.AWSRequest Network.AWS.Budgets.DeleteNotification.DeleteNotification
instance Control.DeepSeq.NFData Network.AWS.Budgets.DeleteNotification.DeleteNotificationResponse
instance Data.Hashable.Class.Hashable Network.AWS.Budgets.DeleteNotification.DeleteNotification
instance Control.DeepSeq.NFData Network.AWS.Budgets.DeleteNotification.DeleteNotification
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.Budgets.DeleteNotification.DeleteNotification
instance Data.Aeson.Types.ToJSON.ToJSON Network.AWS.Budgets.DeleteNotification.DeleteNotification
instance Network.AWS.Data.Path.ToPath Network.AWS.Budgets.DeleteNotification.DeleteNotification
instance Network.AWS.Data.Query.ToQuery Network.AWS.Budgets.DeleteNotification.DeleteNotification


-- | Deletes a budget. You can delete your budget at any time.
--   
--   <b>Deleting a budget also deletes the notifications and subscribers
--   associated with that budget.</b>
module Network.AWS.Budgets.DeleteBudget

-- | Creates a value of <a>DeleteBudget</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dAccountId</a> - The <tt>accountId</tt> that is associated with
--   the budget that you want to delete.</li>
--   <li><a>dBudgetName</a> - The name of the budget that you want to
--   delete.</li>
--   </ul>
deleteBudget :: Text -> Text -> DeleteBudget

-- | Request of DeleteBudget
--   
--   <i>See:</i> <a>deleteBudget</a> smart constructor.
data DeleteBudget

-- | The <tt>accountId</tt> that is associated with the budget that you
--   want to delete.
dAccountId :: Lens' DeleteBudget Text

-- | The name of the budget that you want to delete.
dBudgetName :: Lens' DeleteBudget Text

-- | Creates a value of <a>DeleteBudgetResponse</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>drsResponseStatus</a> - -- | The response status code.</li>
--   </ul>
deleteBudgetResponse :: Int -> DeleteBudgetResponse

-- | Response of DeleteBudget
--   
--   <i>See:</i> <a>deleteBudgetResponse</a> smart constructor.
data DeleteBudgetResponse

-- | <ul>
--   <li>- | The response status code.</li>
--   </ul>
drsResponseStatus :: Lens' DeleteBudgetResponse Int
instance GHC.Generics.Generic Network.AWS.Budgets.DeleteBudget.DeleteBudgetResponse
instance Data.Data.Data Network.AWS.Budgets.DeleteBudget.DeleteBudgetResponse
instance GHC.Show.Show Network.AWS.Budgets.DeleteBudget.DeleteBudgetResponse
instance GHC.Read.Read Network.AWS.Budgets.DeleteBudget.DeleteBudgetResponse
instance GHC.Classes.Eq Network.AWS.Budgets.DeleteBudget.DeleteBudgetResponse
instance GHC.Generics.Generic Network.AWS.Budgets.DeleteBudget.DeleteBudget
instance Data.Data.Data Network.AWS.Budgets.DeleteBudget.DeleteBudget
instance GHC.Show.Show Network.AWS.Budgets.DeleteBudget.DeleteBudget
instance GHC.Read.Read Network.AWS.Budgets.DeleteBudget.DeleteBudget
instance GHC.Classes.Eq Network.AWS.Budgets.DeleteBudget.DeleteBudget
instance Network.AWS.Types.AWSRequest Network.AWS.Budgets.DeleteBudget.DeleteBudget
instance Control.DeepSeq.NFData Network.AWS.Budgets.DeleteBudget.DeleteBudgetResponse
instance Data.Hashable.Class.Hashable Network.AWS.Budgets.DeleteBudget.DeleteBudget
instance Control.DeepSeq.NFData Network.AWS.Budgets.DeleteBudget.DeleteBudget
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.Budgets.DeleteBudget.DeleteBudget
instance Data.Aeson.Types.ToJSON.ToJSON Network.AWS.Budgets.DeleteBudget.DeleteBudget
instance Network.AWS.Data.Path.ToPath Network.AWS.Budgets.DeleteBudget.DeleteBudget
instance Network.AWS.Data.Query.ToQuery Network.AWS.Budgets.DeleteBudget.DeleteBudget


-- | Creates a subscriber. You must create the associated budget and
--   notification before you create the subscriber.
module Network.AWS.Budgets.CreateSubscriber

-- | Creates a value of <a>CreateSubscriber</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>csAccountId</a> - The <tt>accountId</tt> associated with the
--   budget that you want to create a subscriber for.</li>
--   <li><a>csBudgetName</a> - The name of the budget that you want to
--   subscribe to. Budget names must be unique within an account.</li>
--   <li><a>csNotification</a> - The notification that you want to create a
--   subscriber for.</li>
--   <li><a>csSubscriber</a> - The subscriber that you want to associate
--   with a budget notification.</li>
--   </ul>
createSubscriber :: Text -> Text -> Notification -> Subscriber -> CreateSubscriber

-- | Request of CreateSubscriber
--   
--   <i>See:</i> <a>createSubscriber</a> smart constructor.
data CreateSubscriber

-- | The <tt>accountId</tt> associated with the budget that you want to
--   create a subscriber for.
csAccountId :: Lens' CreateSubscriber Text

-- | The name of the budget that you want to subscribe to. Budget names
--   must be unique within an account.
csBudgetName :: Lens' CreateSubscriber Text

-- | The notification that you want to create a subscriber for.
csNotification :: Lens' CreateSubscriber Notification

-- | The subscriber that you want to associate with a budget notification.
csSubscriber :: Lens' CreateSubscriber Subscriber

-- | Creates a value of <a>CreateSubscriberResponse</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>csrsResponseStatus</a> - -- | The response status code.</li>
--   </ul>
createSubscriberResponse :: Int -> CreateSubscriberResponse

-- | Response of CreateSubscriber
--   
--   <i>See:</i> <a>createSubscriberResponse</a> smart constructor.
data CreateSubscriberResponse

-- | <ul>
--   <li>- | The response status code.</li>
--   </ul>
csrsResponseStatus :: Lens' CreateSubscriberResponse Int
instance GHC.Generics.Generic Network.AWS.Budgets.CreateSubscriber.CreateSubscriberResponse
instance Data.Data.Data Network.AWS.Budgets.CreateSubscriber.CreateSubscriberResponse
instance GHC.Show.Show Network.AWS.Budgets.CreateSubscriber.CreateSubscriberResponse
instance GHC.Read.Read Network.AWS.Budgets.CreateSubscriber.CreateSubscriberResponse
instance GHC.Classes.Eq Network.AWS.Budgets.CreateSubscriber.CreateSubscriberResponse
instance GHC.Generics.Generic Network.AWS.Budgets.CreateSubscriber.CreateSubscriber
instance Data.Data.Data Network.AWS.Budgets.CreateSubscriber.CreateSubscriber
instance GHC.Show.Show Network.AWS.Budgets.CreateSubscriber.CreateSubscriber
instance GHC.Read.Read Network.AWS.Budgets.CreateSubscriber.CreateSubscriber
instance GHC.Classes.Eq Network.AWS.Budgets.CreateSubscriber.CreateSubscriber
instance Network.AWS.Types.AWSRequest Network.AWS.Budgets.CreateSubscriber.CreateSubscriber
instance Control.DeepSeq.NFData Network.AWS.Budgets.CreateSubscriber.CreateSubscriberResponse
instance Data.Hashable.Class.Hashable Network.AWS.Budgets.CreateSubscriber.CreateSubscriber
instance Control.DeepSeq.NFData Network.AWS.Budgets.CreateSubscriber.CreateSubscriber
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.Budgets.CreateSubscriber.CreateSubscriber
instance Data.Aeson.Types.ToJSON.ToJSON Network.AWS.Budgets.CreateSubscriber.CreateSubscriber
instance Network.AWS.Data.Path.ToPath Network.AWS.Budgets.CreateSubscriber.CreateSubscriber
instance Network.AWS.Data.Query.ToQuery Network.AWS.Budgets.CreateSubscriber.CreateSubscriber


-- | Creates a notification. You must create the budget before you create
--   the associated notification.
module Network.AWS.Budgets.CreateNotification

-- | Creates a value of <a>CreateNotification</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cnAccountId</a> - The <tt>accountId</tt> that is associated
--   with the budget that you want to create a notification for.</li>
--   <li><a>cnBudgetName</a> - The name of the budget that you want AWS to
--   notified you about. Budget names must be unique within an
--   account.</li>
--   <li><a>cnNotification</a> - The notification that you want to
--   create.</li>
--   <li><a>cnSubscribers</a> - 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.</li>
--   </ul>
createNotification :: Text -> Text -> Notification -> NonEmpty Subscriber -> CreateNotification

-- | Request of CreateNotification
--   
--   <i>See:</i> <a>createNotification</a> smart constructor.
data CreateNotification

-- | The <tt>accountId</tt> that is associated with the budget that you
--   want to create a notification for.
cnAccountId :: Lens' CreateNotification Text

-- | 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

-- | The notification that you want to create.
cnNotification :: Lens' CreateNotification Notification

-- | 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)

-- | Creates a value of <a>CreateNotificationResponse</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cnrsResponseStatus</a> - -- | The response status code.</li>
--   </ul>
createNotificationResponse :: Int -> CreateNotificationResponse

-- | Response of CreateNotification
--   
--   <i>See:</i> <a>createNotificationResponse</a> smart constructor.
data CreateNotificationResponse

-- | <ul>
--   <li>- | The response status code.</li>
--   </ul>
cnrsResponseStatus :: Lens' CreateNotificationResponse Int
instance GHC.Generics.Generic Network.AWS.Budgets.CreateNotification.CreateNotificationResponse
instance Data.Data.Data Network.AWS.Budgets.CreateNotification.CreateNotificationResponse
instance GHC.Show.Show Network.AWS.Budgets.CreateNotification.CreateNotificationResponse
instance GHC.Read.Read Network.AWS.Budgets.CreateNotification.CreateNotificationResponse
instance GHC.Classes.Eq Network.AWS.Budgets.CreateNotification.CreateNotificationResponse
instance GHC.Generics.Generic Network.AWS.Budgets.CreateNotification.CreateNotification
instance Data.Data.Data Network.AWS.Budgets.CreateNotification.CreateNotification
instance GHC.Show.Show Network.AWS.Budgets.CreateNotification.CreateNotification
instance GHC.Read.Read Network.AWS.Budgets.CreateNotification.CreateNotification
instance GHC.Classes.Eq Network.AWS.Budgets.CreateNotification.CreateNotification
instance Network.AWS.Types.AWSRequest Network.AWS.Budgets.CreateNotification.CreateNotification
instance Control.DeepSeq.NFData Network.AWS.Budgets.CreateNotification.CreateNotificationResponse
instance Data.Hashable.Class.Hashable Network.AWS.Budgets.CreateNotification.CreateNotification
instance Control.DeepSeq.NFData Network.AWS.Budgets.CreateNotification.CreateNotification
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.Budgets.CreateNotification.CreateNotification
instance Data.Aeson.Types.ToJSON.ToJSON Network.AWS.Budgets.CreateNotification.CreateNotification
instance Network.AWS.Data.Path.ToPath Network.AWS.Budgets.CreateNotification.CreateNotification
instance Network.AWS.Data.Query.ToQuery Network.AWS.Budgets.CreateNotification.CreateNotification


-- | Creates a budget and, if included, notifications and subscribers.
module Network.AWS.Budgets.CreateBudget

-- | Creates a value of <a>CreateBudget</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cbNotificationsWithSubscribers</a> - 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 <tt>CreateBudget</tt> call, AWS creates the
--   notifications and subscribers for you.</li>
--   <li><a>cbAccountId</a> - The <tt>accountId</tt> that is associated
--   with the budget.</li>
--   <li><a>cbBudget</a> - The budget object that you want to create.</li>
--   </ul>
createBudget :: Text -> Budget -> CreateBudget

-- | Request of CreateBudget
--   
--   <i>See:</i> <a>createBudget</a> smart constructor.
data CreateBudget

-- | 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 <tt>CreateBudget</tt> call, AWS
--   creates the notifications and subscribers for you.
cbNotificationsWithSubscribers :: Lens' CreateBudget [NotificationWithSubscribers]

-- | The <tt>accountId</tt> that is associated with the budget.
cbAccountId :: Lens' CreateBudget Text

-- | The budget object that you want to create.
cbBudget :: Lens' CreateBudget Budget

-- | Creates a value of <a>CreateBudgetResponse</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cbrsResponseStatus</a> - -- | The response status code.</li>
--   </ul>
createBudgetResponse :: Int -> CreateBudgetResponse

-- | Response of CreateBudget
--   
--   <i>See:</i> <a>createBudgetResponse</a> smart constructor.
data CreateBudgetResponse

-- | <ul>
--   <li>- | The response status code.</li>
--   </ul>
cbrsResponseStatus :: Lens' CreateBudgetResponse Int
instance GHC.Generics.Generic Network.AWS.Budgets.CreateBudget.CreateBudgetResponse
instance Data.Data.Data Network.AWS.Budgets.CreateBudget.CreateBudgetResponse
instance GHC.Show.Show Network.AWS.Budgets.CreateBudget.CreateBudgetResponse
instance GHC.Read.Read Network.AWS.Budgets.CreateBudget.CreateBudgetResponse
instance GHC.Classes.Eq Network.AWS.Budgets.CreateBudget.CreateBudgetResponse
instance GHC.Generics.Generic Network.AWS.Budgets.CreateBudget.CreateBudget
instance Data.Data.Data Network.AWS.Budgets.CreateBudget.CreateBudget
instance GHC.Show.Show Network.AWS.Budgets.CreateBudget.CreateBudget
instance GHC.Read.Read Network.AWS.Budgets.CreateBudget.CreateBudget
instance GHC.Classes.Eq Network.AWS.Budgets.CreateBudget.CreateBudget
instance Network.AWS.Types.AWSRequest Network.AWS.Budgets.CreateBudget.CreateBudget
instance Control.DeepSeq.NFData Network.AWS.Budgets.CreateBudget.CreateBudgetResponse
instance Data.Hashable.Class.Hashable Network.AWS.Budgets.CreateBudget.CreateBudget
instance Control.DeepSeq.NFData Network.AWS.Budgets.CreateBudget.CreateBudget
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.Budgets.CreateBudget.CreateBudget
instance Data.Aeson.Types.ToJSON.ToJSON Network.AWS.Budgets.CreateBudget.CreateBudget
instance Network.AWS.Data.Path.ToPath Network.AWS.Budgets.CreateBudget.CreateBudget
instance Network.AWS.Data.Query.ToQuery Network.AWS.Budgets.CreateBudget.CreateBudget


-- | Updates a budget. You can change every part of a budget except for the
--   <tt>budgetName</tt> and the <tt>calculatedSpend</tt> . When a budget
--   is modified, the <tt>calculatedSpend</tt> drops to zero until AWS has
--   new usage data to use for forecasting.
module Network.AWS.Budgets.UpdateBudget

-- | Creates a value of <a>UpdateBudget</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ubAccountId</a> - The <tt>accountId</tt> that is associated
--   with the budget that you want to update.</li>
--   <li><a>ubNewBudget</a> - The budget that you want to update your
--   budget to.</li>
--   </ul>
updateBudget :: Text -> Budget -> UpdateBudget

-- | Request of UpdateBudget
--   
--   <i>See:</i> <a>updateBudget</a> smart constructor.
data UpdateBudget

-- | The <tt>accountId</tt> that is associated with the budget that you
--   want to update.
ubAccountId :: Lens' UpdateBudget Text

-- | The budget that you want to update your budget to.
ubNewBudget :: Lens' UpdateBudget Budget

-- | Creates a value of <a>UpdateBudgetResponse</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ubrsResponseStatus</a> - -- | The response status code.</li>
--   </ul>
updateBudgetResponse :: Int -> UpdateBudgetResponse

-- | Response of UpdateBudget
--   
--   <i>See:</i> <a>updateBudgetResponse</a> smart constructor.
data UpdateBudgetResponse

-- | <ul>
--   <li>- | The response status code.</li>
--   </ul>
ubrsResponseStatus :: Lens' UpdateBudgetResponse Int
instance GHC.Generics.Generic Network.AWS.Budgets.UpdateBudget.UpdateBudgetResponse
instance Data.Data.Data Network.AWS.Budgets.UpdateBudget.UpdateBudgetResponse
instance GHC.Show.Show Network.AWS.Budgets.UpdateBudget.UpdateBudgetResponse
instance GHC.Read.Read Network.AWS.Budgets.UpdateBudget.UpdateBudgetResponse
instance GHC.Classes.Eq Network.AWS.Budgets.UpdateBudget.UpdateBudgetResponse
instance GHC.Generics.Generic Network.AWS.Budgets.UpdateBudget.UpdateBudget
instance Data.Data.Data Network.AWS.Budgets.UpdateBudget.UpdateBudget
instance GHC.Show.Show Network.AWS.Budgets.UpdateBudget.UpdateBudget
instance GHC.Read.Read Network.AWS.Budgets.UpdateBudget.UpdateBudget
instance GHC.Classes.Eq Network.AWS.Budgets.UpdateBudget.UpdateBudget
instance Network.AWS.Types.AWSRequest Network.AWS.Budgets.UpdateBudget.UpdateBudget
instance Control.DeepSeq.NFData Network.AWS.Budgets.UpdateBudget.UpdateBudgetResponse
instance Data.Hashable.Class.Hashable Network.AWS.Budgets.UpdateBudget.UpdateBudget
instance Control.DeepSeq.NFData Network.AWS.Budgets.UpdateBudget.UpdateBudget
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.Budgets.UpdateBudget.UpdateBudget
instance Data.Aeson.Types.ToJSON.ToJSON Network.AWS.Budgets.UpdateBudget.UpdateBudget
instance Network.AWS.Data.Path.ToPath Network.AWS.Budgets.UpdateBudget.UpdateBudget
instance Network.AWS.Data.Query.ToQuery Network.AWS.Budgets.UpdateBudget.UpdateBudget


-- | Updates a notification.
module Network.AWS.Budgets.UpdateNotification

-- | Creates a value of <a>UpdateNotification</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>unAccountId</a> - The <tt>accountId</tt> that is associated
--   with the budget whose notification you want to update.</li>
--   <li><a>unBudgetName</a> - The name of the budget whose notification
--   you want to update.</li>
--   <li><a>unOldNotification</a> - The previous notification associated
--   with a budget.</li>
--   <li><a>unNewNotification</a> - The updated notification to be
--   associated with a budget.</li>
--   </ul>
updateNotification :: Text -> Text -> Notification -> Notification -> UpdateNotification

-- | Request of UpdateNotification
--   
--   <i>See:</i> <a>updateNotification</a> smart constructor.
data UpdateNotification

-- | The <tt>accountId</tt> that is associated with the budget whose
--   notification you want to update.
unAccountId :: Lens' UpdateNotification Text

-- | The name of the budget whose notification you want to update.
unBudgetName :: Lens' UpdateNotification Text

-- | The previous notification associated with a budget.
unOldNotification :: Lens' UpdateNotification Notification

-- | The updated notification to be associated with a budget.
unNewNotification :: Lens' UpdateNotification Notification

-- | Creates a value of <a>UpdateNotificationResponse</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>unrsResponseStatus</a> - -- | The response status code.</li>
--   </ul>
updateNotificationResponse :: Int -> UpdateNotificationResponse

-- | Response of UpdateNotification
--   
--   <i>See:</i> <a>updateNotificationResponse</a> smart constructor.
data UpdateNotificationResponse

-- | <ul>
--   <li>- | The response status code.</li>
--   </ul>
unrsResponseStatus :: Lens' UpdateNotificationResponse Int
instance GHC.Generics.Generic Network.AWS.Budgets.UpdateNotification.UpdateNotificationResponse
instance Data.Data.Data Network.AWS.Budgets.UpdateNotification.UpdateNotificationResponse
instance GHC.Show.Show Network.AWS.Budgets.UpdateNotification.UpdateNotificationResponse
instance GHC.Read.Read Network.AWS.Budgets.UpdateNotification.UpdateNotificationResponse
instance GHC.Classes.Eq Network.AWS.Budgets.UpdateNotification.UpdateNotificationResponse
instance GHC.Generics.Generic Network.AWS.Budgets.UpdateNotification.UpdateNotification
instance Data.Data.Data Network.AWS.Budgets.UpdateNotification.UpdateNotification
instance GHC.Show.Show Network.AWS.Budgets.UpdateNotification.UpdateNotification
instance GHC.Read.Read Network.AWS.Budgets.UpdateNotification.UpdateNotification
instance GHC.Classes.Eq Network.AWS.Budgets.UpdateNotification.UpdateNotification
instance Network.AWS.Types.AWSRequest Network.AWS.Budgets.UpdateNotification.UpdateNotification
instance Control.DeepSeq.NFData Network.AWS.Budgets.UpdateNotification.UpdateNotificationResponse
instance Data.Hashable.Class.Hashable Network.AWS.Budgets.UpdateNotification.UpdateNotification
instance Control.DeepSeq.NFData Network.AWS.Budgets.UpdateNotification.UpdateNotification
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.Budgets.UpdateNotification.UpdateNotification
instance Data.Aeson.Types.ToJSON.ToJSON Network.AWS.Budgets.UpdateNotification.UpdateNotification
instance Network.AWS.Data.Path.ToPath Network.AWS.Budgets.UpdateNotification.UpdateNotification
instance Network.AWS.Data.Query.ToQuery Network.AWS.Budgets.UpdateNotification.UpdateNotification


-- | Updates a subscriber.
module Network.AWS.Budgets.UpdateSubscriber

-- | Creates a value of <a>UpdateSubscriber</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>usAccountId</a> - The <tt>accountId</tt> that is associated
--   with the budget whose subscriber you want to update.</li>
--   <li><a>usBudgetName</a> - The name of the budget whose subscriber you
--   want to update.</li>
--   <li><a>usNotification</a> - The notification whose subscriber you want
--   to update.</li>
--   <li><a>usOldSubscriber</a> - The previous subscriber associated with a
--   budget notification.</li>
--   <li><a>usNewSubscriber</a> - The updated subscriber associated with a
--   budget notification.</li>
--   </ul>
updateSubscriber :: Text -> Text -> Notification -> Subscriber -> Subscriber -> UpdateSubscriber

-- | Request of UpdateSubscriber
--   
--   <i>See:</i> <a>updateSubscriber</a> smart constructor.
data UpdateSubscriber

-- | The <tt>accountId</tt> that is associated with the budget whose
--   subscriber you want to update.
usAccountId :: Lens' UpdateSubscriber Text

-- | The name of the budget whose subscriber you want to update.
usBudgetName :: Lens' UpdateSubscriber Text

-- | The notification whose subscriber you want to update.
usNotification :: Lens' UpdateSubscriber Notification

-- | The previous subscriber associated with a budget notification.
usOldSubscriber :: Lens' UpdateSubscriber Subscriber

-- | The updated subscriber associated with a budget notification.
usNewSubscriber :: Lens' UpdateSubscriber Subscriber

-- | Creates a value of <a>UpdateSubscriberResponse</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>usrsResponseStatus</a> - -- | The response status code.</li>
--   </ul>
updateSubscriberResponse :: Int -> UpdateSubscriberResponse

-- | Response of UpdateSubscriber
--   
--   <i>See:</i> <a>updateSubscriberResponse</a> smart constructor.
data UpdateSubscriberResponse

-- | <ul>
--   <li>- | The response status code.</li>
--   </ul>
usrsResponseStatus :: Lens' UpdateSubscriberResponse Int
instance GHC.Generics.Generic Network.AWS.Budgets.UpdateSubscriber.UpdateSubscriberResponse
instance Data.Data.Data Network.AWS.Budgets.UpdateSubscriber.UpdateSubscriberResponse
instance GHC.Show.Show Network.AWS.Budgets.UpdateSubscriber.UpdateSubscriberResponse
instance GHC.Read.Read Network.AWS.Budgets.UpdateSubscriber.UpdateSubscriberResponse
instance GHC.Classes.Eq Network.AWS.Budgets.UpdateSubscriber.UpdateSubscriberResponse
instance GHC.Generics.Generic Network.AWS.Budgets.UpdateSubscriber.UpdateSubscriber
instance Data.Data.Data Network.AWS.Budgets.UpdateSubscriber.UpdateSubscriber
instance GHC.Show.Show Network.AWS.Budgets.UpdateSubscriber.UpdateSubscriber
instance GHC.Read.Read Network.AWS.Budgets.UpdateSubscriber.UpdateSubscriber
instance GHC.Classes.Eq Network.AWS.Budgets.UpdateSubscriber.UpdateSubscriber
instance Network.AWS.Types.AWSRequest Network.AWS.Budgets.UpdateSubscriber.UpdateSubscriber
instance Control.DeepSeq.NFData Network.AWS.Budgets.UpdateSubscriber.UpdateSubscriberResponse
instance Data.Hashable.Class.Hashable Network.AWS.Budgets.UpdateSubscriber.UpdateSubscriber
instance Control.DeepSeq.NFData Network.AWS.Budgets.UpdateSubscriber.UpdateSubscriber
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.Budgets.UpdateSubscriber.UpdateSubscriber
instance Data.Aeson.Types.ToJSON.ToJSON Network.AWS.Budgets.UpdateSubscriber.UpdateSubscriber
instance Network.AWS.Data.Path.ToPath Network.AWS.Budgets.UpdateSubscriber.UpdateSubscriber
instance Network.AWS.Data.Query.ToQuery Network.AWS.Budgets.UpdateSubscriber.UpdateSubscriber


module Network.AWS.Budgets.Waiters


-- | 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:
--   
--   <ul>
--   <li>Cost budgets allow you to say how much you want to spend on a
--   service.</li>
--   <li>Usage budgets allow you to say how many hours you want to use for
--   one or more services.</li>
--   <li>RI utilization budgets allow you to define a utilization threshold
--   and receive alerts when RIs are tracking below that threshold.</li>
--   </ul>
--   
--   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 <a>Creating an Amazon SNS Topic
--   for Budget Notifications</a> . 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:
--   
--   <ul>
--   <li><a>https://budgets.amazonaws.com</a></li>
--   </ul>
--   
--   For information about costs associated with the AWS Budgets API, see
--   <a>AWS Cost Management Pricing</a> .
module Network.AWS.Budgets

-- | API version <tt>2016-10-20</tt> of the Amazon Budgets SDK
--   configuration.
budgets :: Service

-- | An error on the client occurred. Typically, the cause is an invalid
--   input value.
_InvalidParameterException :: AsError a => Getting (First ServiceError) a ServiceError

-- | An error on the server occurred during the processing of your request.
--   Try again later.
_InternalErrorException :: AsError a => Getting (First ServiceError) a ServiceError

-- | The pagination token expired.
_ExpiredNextTokenException :: AsError a => Getting (First ServiceError) a ServiceError

-- | We can’t locate the resource that you specified.
_NotFoundException :: AsError a => Getting (First ServiceError) a ServiceError

-- | The pagination token is invalid.
_InvalidNextTokenException :: AsError a => Getting (First ServiceError) a ServiceError

-- | The budget name already exists. Budget names must be unique within an
--   account.
_DuplicateRecordException :: AsError a => Getting (First ServiceError) a ServiceError

-- | You've exceeded the notification or subscriber limit.
_CreationLimitExceededException :: AsError a => Getting (First ServiceError) a ServiceError

-- | The type of a budget. It should be COST, USAGE, or RI_UTILIZATION.
data BudgetType
Cost :: BudgetType
RiCoverage :: BudgetType
RiUtilization :: BudgetType
Usage :: BudgetType

-- | The comparison operator of a notification. Currently we support less
--   than, equal to and greater than.
data ComparisonOperator
EqualTo :: ComparisonOperator
GreaterThan :: ComparisonOperator
LessThan :: ComparisonOperator

-- | The type of a notification. It should be ACTUAL or FORECASTED.
data NotificationType
Actual :: NotificationType
Forecasted :: NotificationType

-- | The subscription type of the subscriber. It can be SMS or EMAIL.
data SubscriptionType
Email :: SubscriptionType
SNS :: SubscriptionType

-- | The type of threshold for a notification. It can be PERCENTAGE or
--   ABSOLUTE_VALUE.
data ThresholdType
AbsoluteValue :: ThresholdType
Percentage :: ThresholdType

-- | The time unit of the budget. e.g. MONTHLY, QUARTERLY, etc.
data TimeUnit
Annually :: TimeUnit
Daily :: TimeUnit
Monthly :: TimeUnit
Quarterly :: TimeUnit

-- | Represents the output of the <tt>CreateBudget</tt> operation. The
--   content consists of the detailed metadata and data file information,
--   and the current status of the <tt>budget</tt> .
--   
--   The ARN pattern for a budget is:
--   <tt>arn:aws:budgetservice::AccountId:budget/budgetName</tt>
--   
--   <i>See:</i> <a>budget</a> smart constructor.
data Budget

-- | Creates a value of <a>Budget</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>bCalculatedSpend</a> - The actual and forecasted cost or usage
--   being tracked by a budget.</li>
--   <li><a>bBudgetLimit</a> - The total amount of cost, usage, or RI
--   utilization that you want to track with your budget.
--   <tt>BudgetLimit</tt> 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 <tt>100</tt>
--   .</li>
--   <li><a>bTimePeriod</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
--   <tt>DAILY</tt> , and didn't set a start date, AWS set your start date
--   to <tt>01<i>24</i>18 00:00 UTC</tt> . If you chose <tt>MONTHLY</tt> ,
--   AWS set your start date to <tt>01<i>01</i>18 00:00 UTC</tt> . If you
--   didn't specify an end date, AWS set your end date to <tt>06<i>15</i>87
--   00:00 UTC</tt> . The defaults are the same for the AWS Billing and
--   Cost Management console and the API. You can change either date with
--   the <tt>UpdateBudget</tt> operation. After the end date, AWS deletes
--   the budget and all associated notifications and subscribers.</li>
--   <li><a>bCostTypes</a> - The types of costs included in this
--   budget.</li>
--   <li><a>bCostFilters</a> - The cost filters applied to a budget, such
--   as service or region.</li>
--   <li><a>bBudgetName</a> - The name of a budget. Unique within accounts.
--   <tt>:</tt> and <tt>@ characters are not allowed in the
--   </tt>BudgetName@ .</li>
--   <li><a>bTimeUnit</a> - The length of time until a budget resets the
--   actual and forecasted spend.</li>
--   <li><a>bBudgetType</a> - Whether this budget tracks monetary costs,
--   usage, or RI utilization.</li>
--   </ul>
budget :: Text -> TimeUnit -> BudgetType -> Budget

-- | The actual and forecasted cost or usage being tracked by a budget.
bCalculatedSpend :: Lens' Budget (Maybe CalculatedSpend)

-- | The total amount of cost, usage, or RI utilization that you want to
--   track with your budget. <tt>BudgetLimit</tt> 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 <tt>100</tt> .
bBudgetLimit :: Lens' Budget (Maybe Spend)

-- | 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 <tt>DAILY</tt> , and
--   didn't set a start date, AWS set your start date to <tt>01<i>24</i>18
--   00:00 UTC</tt> . If you chose <tt>MONTHLY</tt> , AWS set your start
--   date to <tt>01<i>01</i>18 00:00 UTC</tt> . If you didn't specify an
--   end date, AWS set your end date to <tt>06<i>15</i>87 00:00 UTC</tt> .
--   The defaults are the same for the AWS Billing and Cost Management
--   console and the API. You can change either date with the
--   <tt>UpdateBudget</tt> operation. After the end date, AWS deletes the
--   budget and all associated notifications and subscribers.
bTimePeriod :: Lens' Budget (Maybe TimePeriod)

-- | The types of costs included in this budget.
bCostTypes :: Lens' Budget (Maybe CostTypes)

-- | The cost filters applied to a budget, such as service or region.
bCostFilters :: Lens' Budget (HashMap Text [Text])

-- | The name of a budget. Unique within accounts. <tt>:</tt> and <tt>@
--   characters are not allowed in the </tt>BudgetName@ .
bBudgetName :: Lens' Budget Text

-- | The length of time until a budget resets the actual and forecasted
--   spend.
bTimeUnit :: Lens' Budget TimeUnit

-- | Whether this budget tracks monetary costs, usage, or RI utilization.
bBudgetType :: Lens' Budget BudgetType

-- | The spend objects associated with this budget. The
--   <tt>actualSpend</tt> tracks how much you've used, cost, usage, or RI
--   units, and the <tt>forecastedSpend</tt> 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
--   <tt>50</tt> dollars on Amazon EC2, your <tt>actualSpend</tt> is <tt>50
--   USD</tt> , and your <tt>forecastedSpend</tt> is <tt>75 USD</tt> .
--   
--   <i>See:</i> <a>calculatedSpend</a> smart constructor.
data CalculatedSpend

-- | Creates a value of <a>CalculatedSpend</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>csForecastedSpend</a> - The amount of cost, usage, or RI units
--   that you are forecasted to use.</li>
--   <li><a>csActualSpend</a> - The amount of cost, usage, or RI units that
--   you have used.</li>
--   </ul>
calculatedSpend :: Spend -> CalculatedSpend

-- | The amount of cost, usage, or RI units that you are forecasted to use.
csForecastedSpend :: Lens' CalculatedSpend (Maybe Spend)

-- | The amount of cost, usage, or RI units that you have used.
csActualSpend :: Lens' CalculatedSpend Spend

-- | The types of cost included in a budget, such as tax and subscriptions.
--   
--   <i>See:</i> <a>costTypes</a> smart constructor.
data CostTypes

-- | Creates a value of <a>CostTypes</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ctUseAmortized</a> - Specifies whether a budget uses the
--   amortized rate. The default value is <tt>false</tt> .</li>
--   <li><a>ctIncludeRecurring</a> - Specifies whether a budget includes
--   recurring fees such as monthly RI fees. The default value is
--   <tt>true</tt> .</li>
--   <li><a>ctUseBlended</a> - Specifies whether a budget uses blended
--   rate. The default value is <tt>false</tt> .</li>
--   <li><a>ctIncludeSupport</a> - Specifies whether a budget includes
--   support subscription fees. The default value is <tt>true</tt> .</li>
--   <li><a>ctIncludeDiscount</a> - Specifies whether a budget includes
--   discounts. The default value is <tt>true</tt> .</li>
--   <li><a>ctIncludeSubscription</a> - Specifies whether a budget includes
--   subscriptions. The default value is <tt>true</tt> .</li>
--   <li><a>ctIncludeRefund</a> - Specifies whether a budget includes
--   refunds. The default value is <tt>true</tt> .</li>
--   <li><a>ctIncludeUpfront</a> - Specifies whether a budget includes
--   upfront RI costs. The default value is <tt>true</tt> .</li>
--   <li><a>ctIncludeOtherSubscription</a> - Specifies whether a budget
--   includes non-RI subscription costs. The default value is <tt>true</tt>
--   .</li>
--   <li><a>ctIncludeTax</a> - Specifies whether a budget includes taxes.
--   The default value is <tt>true</tt> .</li>
--   <li><a>ctIncludeCredit</a> - Specifies whether a budget includes
--   credits. The default value is <tt>true</tt> .</li>
--   </ul>
costTypes :: CostTypes

-- | Specifies whether a budget uses the amortized rate. The default value
--   is <tt>false</tt> .
ctUseAmortized :: Lens' CostTypes (Maybe Bool)

-- | Specifies whether a budget includes recurring fees such as monthly RI
--   fees. The default value is <tt>true</tt> .
ctIncludeRecurring :: Lens' CostTypes (Maybe Bool)

-- | Specifies whether a budget uses blended rate. The default value is
--   <tt>false</tt> .
ctUseBlended :: Lens' CostTypes (Maybe Bool)

-- | Specifies whether a budget includes support subscription fees. The
--   default value is <tt>true</tt> .
ctIncludeSupport :: Lens' CostTypes (Maybe Bool)

-- | Specifies whether a budget includes discounts. The default value is
--   <tt>true</tt> .
ctIncludeDiscount :: Lens' CostTypes (Maybe Bool)

-- | Specifies whether a budget includes subscriptions. The default value
--   is <tt>true</tt> .
ctIncludeSubscription :: Lens' CostTypes (Maybe Bool)

-- | Specifies whether a budget includes refunds. The default value is
--   <tt>true</tt> .
ctIncludeRefund :: Lens' CostTypes (Maybe Bool)

-- | Specifies whether a budget includes upfront RI costs. The default
--   value is <tt>true</tt> .
ctIncludeUpfront :: Lens' CostTypes (Maybe Bool)

-- | Specifies whether a budget includes non-RI subscription costs. The
--   default value is <tt>true</tt> .
ctIncludeOtherSubscription :: Lens' CostTypes (Maybe Bool)

-- | Specifies whether a budget includes taxes. The default value is
--   <tt>true</tt> .
ctIncludeTax :: Lens' CostTypes (Maybe Bool)

-- | Specifies whether a budget includes credits. The default value is
--   <tt>true</tt> .
ctIncludeCredit :: Lens' CostTypes (Maybe Bool)

-- | 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:
--   
--   <ul>
--   <li>A notificationType of <tt>ACTUAL</tt></li>
--   <li>A comparisonOperator of <tt>GREATER_THAN</tt></li>
--   <li>A notification threshold of <tt>80</tt></li>
--   </ul>
--   
--   <i>See:</i> <a>notification</a> smart constructor.
data Notification

-- | Creates a value of <a>Notification</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>nThresholdType</a> - The type of threshold for a notification.
--   For <tt>ACTUAL</tt> thresholds, AWS notifies you when you go over the
--   threshold, and for <tt>FORECASTED</tt> thresholds AWS notifies you
--   when you are forecasted to go over the threshold.</li>
--   <li><a>nNotificationType</a> - Whether the notification is for how
--   much you have spent (<tt>ACTUAL</tt> ) or for how much you are
--   forecasted to spend (<tt>FORECASTED</tt> ).</li>
--   <li><a>nComparisonOperator</a> - The comparison used for this
--   notification.</li>
--   <li><a>nThreshold</a> - The threshold associated with a notification.
--   Thresholds are always a percentage.</li>
--   </ul>
notification :: NotificationType -> ComparisonOperator -> Double -> Notification

-- | The type of threshold for a notification. For <tt>ACTUAL</tt>
--   thresholds, AWS notifies you when you go over the threshold, and for
--   <tt>FORECASTED</tt> thresholds AWS notifies you when you are
--   forecasted to go over the threshold.
nThresholdType :: Lens' Notification (Maybe ThresholdType)

-- | Whether the notification is for how much you have spent
--   (<tt>ACTUAL</tt> ) or for how much you are forecasted to spend
--   (<tt>FORECASTED</tt> ).
nNotificationType :: Lens' Notification NotificationType

-- | The comparison used for this notification.
nComparisonOperator :: Lens' Notification ComparisonOperator

-- | The threshold associated with a notification. Thresholds are always a
--   percentage.
nThreshold :: Lens' Notification Double

-- | A notification with subscribers. A notification can have one SNS
--   subscriber and up to ten email subscribers, for a total of 11
--   subscribers.
--   
--   <i>See:</i> <a>notificationWithSubscribers</a> smart constructor.
data NotificationWithSubscribers

-- | Creates a value of <a>NotificationWithSubscribers</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>nwsNotification</a> - The notification associated with a
--   budget.</li>
--   <li><a>nwsSubscribers</a> - A list of subscribers who are subscribed
--   to this notification.</li>
--   </ul>
notificationWithSubscribers :: Notification -> NonEmpty Subscriber -> NotificationWithSubscribers

-- | The notification associated with a budget.
nwsNotification :: Lens' NotificationWithSubscribers Notification

-- | A list of subscribers who are subscribed to this notification.
nwsSubscribers :: Lens' NotificationWithSubscribers (NonEmpty Subscriber)

-- | The amount of cost or usage being measured for a budget.
--   
--   For example, a <tt>Spend</tt> for <tt>3 GB</tt> of S3 usage would have
--   the following parameters:
--   
--   <ul>
--   <li>An <tt>Amount</tt> of <tt>3</tt></li>
--   <li>A <tt>unit</tt> of <tt>GB</tt></li>
--   </ul>
--   
--   <i>See:</i> <a>spend</a> smart constructor.
data Spend

-- | Creates a value of <a>Spend</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>sAmount</a> - The cost or usage amount associated with a budget
--   forecast, actual spend, or budget threshold.</li>
--   <li><a>sUnit</a> - The unit of measurement used for the budget
--   forecast, actual spend, or budget threshold, such as dollars or
--   GB.</li>
--   </ul>
spend :: Text -> Text -> Spend

-- | The cost or usage amount associated with a budget forecast, actual
--   spend, or budget threshold.
sAmount :: Lens' Spend Text

-- | The unit of measurement used for the budget forecast, actual spend, or
--   budget threshold, such as dollars or GB.
sUnit :: Lens' Spend Text

-- | 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:
--   
--   <ul>
--   <li>A <tt>subscriptionType</tt> of <tt>EMAIL</tt></li>
--   <li>An <tt>address</tt> of <tt>example</tt>example.com@</li>
--   </ul>
--   
--   <i>See:</i> <a>subscriber</a> smart constructor.
data Subscriber

-- | Creates a value of <a>Subscriber</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>sSubscriptionType</a> - The type of notification that AWS sends
--   to a subscriber.</li>
--   <li><a>sAddress</a> - The address that AWS sends budget notifications
--   to, either an SNS topic or an email.</li>
--   </ul>
subscriber :: SubscriptionType -> Text -> Subscriber

-- | The type of notification that AWS sends to a subscriber.
sSubscriptionType :: Lens' Subscriber SubscriptionType

-- | The address that AWS sends budget notifications to, either an SNS
--   topic or an email.
sAddress :: Lens' Subscriber Text

-- | 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.
--   
--   <i>See:</i> <a>timePeriod</a> smart constructor.
data TimePeriod

-- | Creates a value of <a>TimePeriod</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>tpStart</a> - 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
--   <tt>DAILY</tt> , and didn't set a start date, AWS set your start date
--   to <tt>01<i>24</i>18 00:00 UTC</tt> . If you chose <tt>MONTHLY</tt> ,
--   AWS set your start date to <tt>01<i>01</i>18 00:00 UTC</tt> . The
--   defaults are the same for the AWS Billing and Cost Management console
--   and the API. You can change your start date with the
--   <tt>UpdateBudget</tt> operation.</li>
--   <li><a>tpEnd</a> - The end date for a budget. If you didn't specify an
--   end date, AWS set your end date to <tt>06<i>15</i>87 00:00 UTC</tt> .
--   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 <tt>UpdateBudget</tt> operation.</li>
--   </ul>
timePeriod :: TimePeriod

-- | 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 <tt>DAILY</tt> , and
--   didn't set a start date, AWS set your start date to <tt>01<i>24</i>18
--   00:00 UTC</tt> . If you chose <tt>MONTHLY</tt> , AWS set your start
--   date to <tt>01<i>01</i>18 00:00 UTC</tt> . The defaults are the same
--   for the AWS Billing and Cost Management console and the API. You can
--   change your start date with the <tt>UpdateBudget</tt> operation.
tpStart :: Lens' TimePeriod (Maybe UTCTime)

-- | The end date for a budget. If you didn't specify an end date, AWS set
--   your end date to <tt>06<i>15</i>87 00:00 UTC</tt> . 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
--   <tt>UpdateBudget</tt> operation.
tpEnd :: Lens' TimePeriod (Maybe UTCTime)
