CreateBudget

enum_AutoAdjustType := [ "HISTORICAL", "FORECAST" ]
enum_BudgetType := [ "USAGE", "COST", "RI_UTILIZATION", "RI_COVERAGE", "SAVINGS_PLANS_UTILIZATION", "SAVINGS_PLANS_COVERAGE" ]
enum_ComparisonOperator := [ "GREATER_THAN", "LESS_THAN", "EQUAL_TO" ]
enum_NotificationState := [ "OK", "ALARM" ]
enum_NotificationType := [ "ACTUAL", "FORECASTED" ]
enum_SubscriptionType := [ "SNS", "EMAIL" ]
enum_ThresholdType := [ "PERCENTAGE", "ABSOLUTE_VALUE" ]
enum_TimeUnit := [ "DAILY", "MONTHLY", "QUARTERLY", "ANNUALLY" ]

valid {
    input.Body.AccountId == STRING
    input.Body.Budget.BudgetName == STRING
    input.Body.Budget.BudgetLimit.Amount == STRING
    input.Body.Budget.BudgetLimit.Unit == STRING
    input.Body.Budget.PlannedBudgetLimits.STRING.Amount == STRING
    input.Body.Budget.PlannedBudgetLimits.STRING.Unit == STRING
    input.Body.Budget.CostFilters.STRING[_] == STRING
    input.Body.Budget.CostTypes.IncludeTax == BOOLEAN
    input.Body.Budget.CostTypes.IncludeSubscription == BOOLEAN
    input.Body.Budget.CostTypes.UseBlended == BOOLEAN
    input.Body.Budget.CostTypes.IncludeRefund == BOOLEAN
    input.Body.Budget.CostTypes.IncludeCredit == BOOLEAN
    input.Body.Budget.CostTypes.IncludeUpfront == BOOLEAN
    input.Body.Budget.CostTypes.IncludeRecurring == BOOLEAN
    input.Body.Budget.CostTypes.IncludeOtherSubscription == BOOLEAN
    input.Body.Budget.CostTypes.IncludeSupport == BOOLEAN
    input.Body.Budget.CostTypes.IncludeDiscount == BOOLEAN
    input.Body.Budget.CostTypes.UseAmortized == BOOLEAN
    input.Body.Budget.TimeUnit == enum_TimeUnit[_]
    input.Body.Budget.TimePeriod.Start == TIMESTAMP
    input.Body.Budget.TimePeriod.End == TIMESTAMP
    input.Body.Budget.CalculatedSpend.ActualSpend.Amount == STRING
    input.Body.Budget.CalculatedSpend.ActualSpend.Unit == STRING
    input.Body.Budget.CalculatedSpend.ForecastedSpend.Amount == STRING
    input.Body.Budget.CalculatedSpend.ForecastedSpend.Unit == STRING
    input.Body.Budget.BudgetType == enum_BudgetType[_]
    input.Body.Budget.LastUpdatedTime == TIMESTAMP
    input.Body.Budget.AutoAdjustData.AutoAdjustType == enum_AutoAdjustType[_]
    input.Body.Budget.AutoAdjustData.HistoricalOptions.BudgetAdjustmentPeriod == INTEGER
    input.Body.Budget.AutoAdjustData.HistoricalOptions.LookBackAvailablePeriods == INTEGER
    input.Body.Budget.AutoAdjustData.LastAutoAdjustTime == TIMESTAMP
    input.Body.NotificationsWithSubscribers[_].Notification.NotificationType == enum_NotificationType[_]
    input.Body.NotificationsWithSubscribers[_].Notification.ComparisonOperator == enum_ComparisonOperator[_]
    input.Body.NotificationsWithSubscribers[_].Notification.Threshold == DOUBLE
    input.Body.NotificationsWithSubscribers[_].Notification.ThresholdType == enum_ThresholdType[_]
    input.Body.NotificationsWithSubscribers[_].Notification.NotificationState == enum_NotificationState[_]
    input.Body.NotificationsWithSubscribers[_].Subscribers[_].SubscriptionType == enum_SubscriptionType[_]
    input.Body.NotificationsWithSubscribers[_].Subscribers[_].Address == STRING
    input.Body.ResourceTags[_].Key == STRING
    input.Body.ResourceTags[_].Value == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

CreateBudgetAction

enum_ActionSubType := [ "STOP_EC2_INSTANCES", "STOP_RDS_INSTANCES" ]
enum_ActionType := [ "APPLY_IAM_POLICY", "APPLY_SCP_POLICY", "RUN_SSM_DOCUMENTS" ]
enum_ApprovalModel := [ "AUTOMATIC", "MANUAL" ]
enum_NotificationType := [ "ACTUAL", "FORECASTED" ]
enum_SubscriptionType := [ "SNS", "EMAIL" ]
enum_ThresholdType := [ "PERCENTAGE", "ABSOLUTE_VALUE" ]

valid {
    input.Body.AccountId == STRING
    input.Body.BudgetName == STRING
    input.Body.NotificationType == enum_NotificationType[_]
    input.Body.ActionType == enum_ActionType[_]
    input.Body.ActionThreshold.ActionThresholdValue == DOUBLE
    input.Body.ActionThreshold.ActionThresholdType == enum_ThresholdType[_]
    input.Body.Definition.IamActionDefinition.PolicyArn == STRING
    input.Body.Definition.IamActionDefinition.Roles[_] == STRING
    input.Body.Definition.IamActionDefinition.Groups[_] == STRING
    input.Body.Definition.IamActionDefinition.Users[_] == STRING
    input.Body.Definition.ScpActionDefinition.PolicyId == STRING
    input.Body.Definition.ScpActionDefinition.TargetIds[_] == STRING
    input.Body.Definition.SsmActionDefinition.ActionSubType == enum_ActionSubType[_]
    input.Body.Definition.SsmActionDefinition.Region == STRING
    input.Body.Definition.SsmActionDefinition.InstanceIds[_] == STRING
    input.Body.ExecutionRoleArn == STRING
    input.Body.ApprovalModel == enum_ApprovalModel[_]
    input.Body.Subscribers[_].SubscriptionType == enum_SubscriptionType[_]
    input.Body.Subscribers[_].Address == STRING
    input.Body.ResourceTags[_].Key == STRING
    input.Body.ResourceTags[_].Value == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

CreateNotification

enum_ComparisonOperator := [ "GREATER_THAN", "LESS_THAN", "EQUAL_TO" ]
enum_NotificationState := [ "OK", "ALARM" ]
enum_NotificationType := [ "ACTUAL", "FORECASTED" ]
enum_SubscriptionType := [ "SNS", "EMAIL" ]
enum_ThresholdType := [ "PERCENTAGE", "ABSOLUTE_VALUE" ]

valid {
    input.Body.AccountId == STRING
    input.Body.BudgetName == STRING
    input.Body.Notification.NotificationType == enum_NotificationType[_]
    input.Body.Notification.ComparisonOperator == enum_ComparisonOperator[_]
    input.Body.Notification.Threshold == DOUBLE
    input.Body.Notification.ThresholdType == enum_ThresholdType[_]
    input.Body.Notification.NotificationState == enum_NotificationState[_]
    input.Body.Subscribers[_].SubscriptionType == enum_SubscriptionType[_]
    input.Body.Subscribers[_].Address == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

CreateSubscriber

enum_ComparisonOperator := [ "GREATER_THAN", "LESS_THAN", "EQUAL_TO" ]
enum_NotificationState := [ "OK", "ALARM" ]
enum_NotificationType := [ "ACTUAL", "FORECASTED" ]
enum_SubscriptionType := [ "SNS", "EMAIL" ]
enum_ThresholdType := [ "PERCENTAGE", "ABSOLUTE_VALUE" ]

valid {
    input.Body.AccountId == STRING
    input.Body.BudgetName == STRING
    input.Body.Notification.NotificationType == enum_NotificationType[_]
    input.Body.Notification.ComparisonOperator == enum_ComparisonOperator[_]
    input.Body.Notification.Threshold == DOUBLE
    input.Body.Notification.ThresholdType == enum_ThresholdType[_]
    input.Body.Notification.NotificationState == enum_NotificationState[_]
    input.Body.Subscriber.SubscriptionType == enum_SubscriptionType[_]
    input.Body.Subscriber.Address == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DeleteBudget

valid {
    input.Body.AccountId == STRING
    input.Body.BudgetName == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DeleteBudgetAction

valid {
    input.Body.AccountId == STRING
    input.Body.BudgetName == STRING
    input.Body.ActionId == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DeleteNotification

enum_ComparisonOperator := [ "GREATER_THAN", "LESS_THAN", "EQUAL_TO" ]
enum_NotificationState := [ "OK", "ALARM" ]
enum_NotificationType := [ "ACTUAL", "FORECASTED" ]
enum_ThresholdType := [ "PERCENTAGE", "ABSOLUTE_VALUE" ]

valid {
    input.Body.AccountId == STRING
    input.Body.BudgetName == STRING
    input.Body.Notification.NotificationType == enum_NotificationType[_]
    input.Body.Notification.ComparisonOperator == enum_ComparisonOperator[_]
    input.Body.Notification.Threshold == DOUBLE
    input.Body.Notification.ThresholdType == enum_ThresholdType[_]
    input.Body.Notification.NotificationState == enum_NotificationState[_]
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DeleteSubscriber

enum_ComparisonOperator := [ "GREATER_THAN", "LESS_THAN", "EQUAL_TO" ]
enum_NotificationState := [ "OK", "ALARM" ]
enum_NotificationType := [ "ACTUAL", "FORECASTED" ]
enum_SubscriptionType := [ "SNS", "EMAIL" ]
enum_ThresholdType := [ "PERCENTAGE", "ABSOLUTE_VALUE" ]

valid {
    input.Body.AccountId == STRING
    input.Body.BudgetName == STRING
    input.Body.Notification.NotificationType == enum_NotificationType[_]
    input.Body.Notification.ComparisonOperator == enum_ComparisonOperator[_]
    input.Body.Notification.Threshold == DOUBLE
    input.Body.Notification.ThresholdType == enum_ThresholdType[_]
    input.Body.Notification.NotificationState == enum_NotificationState[_]
    input.Body.Subscriber.SubscriptionType == enum_SubscriptionType[_]
    input.Body.Subscriber.Address == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DescribeBudget

valid {
    input.Body.AccountId == STRING
    input.Body.BudgetName == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DescribeBudgetAction

valid {
    input.Body.AccountId == STRING
    input.Body.BudgetName == STRING
    input.Body.ActionId == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DescribeBudgetActionHistories

valid {
    input.Body.AccountId == STRING
    input.Body.BudgetName == STRING
    input.Body.ActionId == STRING
    input.Body.TimePeriod.Start == TIMESTAMP
    input.Body.TimePeriod.End == TIMESTAMP
    input.Body.MaxResults == INTEGER
    input.Body.NextToken == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DescribeBudgetActionsForAccount

valid {
    input.Body.AccountId == STRING
    input.Body.MaxResults == INTEGER
    input.Body.NextToken == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DescribeBudgetActionsForBudget

valid {
    input.Body.AccountId == STRING
    input.Body.BudgetName == STRING
    input.Body.MaxResults == INTEGER
    input.Body.NextToken == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DescribeBudgetNotificationsForAccount

valid {
    input.Body.AccountId == STRING
    input.Body.MaxResults == INTEGER
    input.Body.NextToken == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DescribeBudgetPerformanceHistory

valid {
    input.Body.AccountId == STRING
    input.Body.BudgetName == STRING
    input.Body.TimePeriod.Start == TIMESTAMP
    input.Body.TimePeriod.End == TIMESTAMP
    input.Body.MaxResults == INTEGER
    input.Body.NextToken == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DescribeBudgets

valid {
    input.Body.AccountId == STRING
    input.Body.MaxResults == INTEGER
    input.Body.NextToken == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DescribeNotificationsForBudget

valid {
    input.Body.AccountId == STRING
    input.Body.BudgetName == STRING
    input.Body.MaxResults == INTEGER
    input.Body.NextToken == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DescribeSubscribersForNotification

enum_ComparisonOperator := [ "GREATER_THAN", "LESS_THAN", "EQUAL_TO" ]
enum_NotificationState := [ "OK", "ALARM" ]
enum_NotificationType := [ "ACTUAL", "FORECASTED" ]
enum_ThresholdType := [ "PERCENTAGE", "ABSOLUTE_VALUE" ]

valid {
    input.Body.AccountId == STRING
    input.Body.BudgetName == STRING
    input.Body.Notification.NotificationType == enum_NotificationType[_]
    input.Body.Notification.ComparisonOperator == enum_ComparisonOperator[_]
    input.Body.Notification.Threshold == DOUBLE
    input.Body.Notification.ThresholdType == enum_ThresholdType[_]
    input.Body.Notification.NotificationState == enum_NotificationState[_]
    input.Body.MaxResults == INTEGER
    input.Body.NextToken == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ExecuteBudgetAction

enum_ExecutionType := [ "APPROVE_BUDGET_ACTION", "RETRY_BUDGET_ACTION", "REVERSE_BUDGET_ACTION", "RESET_BUDGET_ACTION" ]

valid {
    input.Body.AccountId == STRING
    input.Body.BudgetName == STRING
    input.Body.ActionId == STRING
    input.Body.ExecutionType == enum_ExecutionType[_]
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ListTagsForResource

valid {
    input.Body.ResourceARN == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

TagResource

valid {
    input.Body.ResourceARN == STRING
    input.Body.ResourceTags[_].Key == STRING
    input.Body.ResourceTags[_].Value == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

UntagResource

valid {
    input.Body.ResourceARN == STRING
    input.Body.ResourceTagKeys[_] == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

UpdateBudget

enum_AutoAdjustType := [ "HISTORICAL", "FORECAST" ]
enum_BudgetType := [ "USAGE", "COST", "RI_UTILIZATION", "RI_COVERAGE", "SAVINGS_PLANS_UTILIZATION", "SAVINGS_PLANS_COVERAGE" ]
enum_TimeUnit := [ "DAILY", "MONTHLY", "QUARTERLY", "ANNUALLY" ]

valid {
    input.Body.AccountId == STRING
    input.Body.NewBudget.BudgetName == STRING
    input.Body.NewBudget.BudgetLimit.Amount == STRING
    input.Body.NewBudget.BudgetLimit.Unit == STRING
    input.Body.NewBudget.PlannedBudgetLimits.STRING.Amount == STRING
    input.Body.NewBudget.PlannedBudgetLimits.STRING.Unit == STRING
    input.Body.NewBudget.CostFilters.STRING[_] == STRING
    input.Body.NewBudget.CostTypes.IncludeTax == BOOLEAN
    input.Body.NewBudget.CostTypes.IncludeSubscription == BOOLEAN
    input.Body.NewBudget.CostTypes.UseBlended == BOOLEAN
    input.Body.NewBudget.CostTypes.IncludeRefund == BOOLEAN
    input.Body.NewBudget.CostTypes.IncludeCredit == BOOLEAN
    input.Body.NewBudget.CostTypes.IncludeUpfront == BOOLEAN
    input.Body.NewBudget.CostTypes.IncludeRecurring == BOOLEAN
    input.Body.NewBudget.CostTypes.IncludeOtherSubscription == BOOLEAN
    input.Body.NewBudget.CostTypes.IncludeSupport == BOOLEAN
    input.Body.NewBudget.CostTypes.IncludeDiscount == BOOLEAN
    input.Body.NewBudget.CostTypes.UseAmortized == BOOLEAN
    input.Body.NewBudget.TimeUnit == enum_TimeUnit[_]
    input.Body.NewBudget.TimePeriod.Start == TIMESTAMP
    input.Body.NewBudget.TimePeriod.End == TIMESTAMP
    input.Body.NewBudget.CalculatedSpend.ActualSpend.Amount == STRING
    input.Body.NewBudget.CalculatedSpend.ActualSpend.Unit == STRING
    input.Body.NewBudget.CalculatedSpend.ForecastedSpend.Amount == STRING
    input.Body.NewBudget.CalculatedSpend.ForecastedSpend.Unit == STRING
    input.Body.NewBudget.BudgetType == enum_BudgetType[_]
    input.Body.NewBudget.LastUpdatedTime == TIMESTAMP
    input.Body.NewBudget.AutoAdjustData.AutoAdjustType == enum_AutoAdjustType[_]
    input.Body.NewBudget.AutoAdjustData.HistoricalOptions.BudgetAdjustmentPeriod == INTEGER
    input.Body.NewBudget.AutoAdjustData.HistoricalOptions.LookBackAvailablePeriods == INTEGER
    input.Body.NewBudget.AutoAdjustData.LastAutoAdjustTime == TIMESTAMP
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

UpdateBudgetAction

enum_ActionSubType := [ "STOP_EC2_INSTANCES", "STOP_RDS_INSTANCES" ]
enum_ApprovalModel := [ "AUTOMATIC", "MANUAL" ]
enum_NotificationType := [ "ACTUAL", "FORECASTED" ]
enum_SubscriptionType := [ "SNS", "EMAIL" ]
enum_ThresholdType := [ "PERCENTAGE", "ABSOLUTE_VALUE" ]

valid {
    input.Body.AccountId == STRING
    input.Body.BudgetName == STRING
    input.Body.ActionId == STRING
    input.Body.NotificationType == enum_NotificationType[_]
    input.Body.ActionThreshold.ActionThresholdValue == DOUBLE
    input.Body.ActionThreshold.ActionThresholdType == enum_ThresholdType[_]
    input.Body.Definition.IamActionDefinition.PolicyArn == STRING
    input.Body.Definition.IamActionDefinition.Roles[_] == STRING
    input.Body.Definition.IamActionDefinition.Groups[_] == STRING
    input.Body.Definition.IamActionDefinition.Users[_] == STRING
    input.Body.Definition.ScpActionDefinition.PolicyId == STRING
    input.Body.Definition.ScpActionDefinition.TargetIds[_] == STRING
    input.Body.Definition.SsmActionDefinition.ActionSubType == enum_ActionSubType[_]
    input.Body.Definition.SsmActionDefinition.Region == STRING
    input.Body.Definition.SsmActionDefinition.InstanceIds[_] == STRING
    input.Body.ExecutionRoleArn == STRING
    input.Body.ApprovalModel == enum_ApprovalModel[_]
    input.Body.Subscribers[_].SubscriptionType == enum_SubscriptionType[_]
    input.Body.Subscribers[_].Address == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

UpdateNotification

enum_ComparisonOperator := [ "GREATER_THAN", "LESS_THAN", "EQUAL_TO" ]
enum_NotificationState := [ "OK", "ALARM" ]
enum_NotificationType := [ "ACTUAL", "FORECASTED" ]
enum_ThresholdType := [ "PERCENTAGE", "ABSOLUTE_VALUE" ]

valid {
    input.Body.AccountId == STRING
    input.Body.BudgetName == STRING
    input.Body.OldNotification.NotificationType == enum_NotificationType[_]
    input.Body.OldNotification.ComparisonOperator == enum_ComparisonOperator[_]
    input.Body.OldNotification.Threshold == DOUBLE
    input.Body.OldNotification.ThresholdType == enum_ThresholdType[_]
    input.Body.OldNotification.NotificationState == enum_NotificationState[_]
    input.Body.NewNotification.NotificationType == enum_NotificationType[_]
    input.Body.NewNotification.ComparisonOperator == enum_ComparisonOperator[_]
    input.Body.NewNotification.Threshold == DOUBLE
    input.Body.NewNotification.ThresholdType == enum_ThresholdType[_]
    input.Body.NewNotification.NotificationState == enum_NotificationState[_]
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

UpdateSubscriber

enum_ComparisonOperator := [ "GREATER_THAN", "LESS_THAN", "EQUAL_TO" ]
enum_NotificationState := [ "OK", "ALARM" ]
enum_NotificationType := [ "ACTUAL", "FORECASTED" ]
enum_SubscriptionType := [ "SNS", "EMAIL" ]
enum_ThresholdType := [ "PERCENTAGE", "ABSOLUTE_VALUE" ]

valid {
    input.Body.AccountId == STRING
    input.Body.BudgetName == STRING
    input.Body.Notification.NotificationType == enum_NotificationType[_]
    input.Body.Notification.ComparisonOperator == enum_ComparisonOperator[_]
    input.Body.Notification.Threshold == DOUBLE
    input.Body.Notification.ThresholdType == enum_ThresholdType[_]
    input.Body.Notification.NotificationState == enum_NotificationState[_]
    input.Body.OldSubscriber.SubscriptionType == enum_SubscriptionType[_]
    input.Body.OldSubscriber.Address == STRING
    input.Body.NewSubscriber.SubscriptionType == enum_SubscriptionType[_]
    input.Body.NewSubscriber.Address == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}