CreateAnomalyMonitor

enum_Dimension := [ "AZ", "INSTANCE_TYPE", "LINKED_ACCOUNT", "LINKED_ACCOUNT_NAME", "OPERATION", "PURCHASE_TYPE", "REGION", "SERVICE", "SERVICE_CODE", "USAGE_TYPE", "USAGE_TYPE_GROUP", "RECORD_TYPE", "OPERATING_SYSTEM", "TENANCY", "SCOPE", "PLATFORM", "SUBSCRIPTION_ID", "LEGAL_ENTITY_NAME", "DEPLOYMENT_OPTION", "DATABASE_ENGINE", "CACHE_ENGINE", "INSTANCE_TYPE_FAMILY", "BILLING_ENTITY", "RESERVATION_ID", "RESOURCE_ID", "RIGHTSIZING_TYPE", "SAVINGS_PLANS_TYPE", "SAVINGS_PLAN_ARN", "PAYMENT_OPTION", "AGREEMENT_END_DATE_TIME_AFTER", "AGREEMENT_END_DATE_TIME_BEFORE", "INVOICING_ENTITY", "ANOMALY_TOTAL_IMPACT_ABSOLUTE", "ANOMALY_TOTAL_IMPACT_PERCENTAGE" ]
enum_MatchOption := [ "EQUALS", "ABSENT", "STARTS_WITH", "ENDS_WITH", "CONTAINS", "CASE_SENSITIVE", "CASE_INSENSITIVE", "GREATER_THAN_OR_EQUAL" ]
enum_MonitorDimension := [ "SERVICE" ]
enum_MonitorType := [ "DIMENSIONAL", "CUSTOM" ]

valid {
    input.Body.AnomalyMonitor.MonitorArn == STRING
    input.Body.AnomalyMonitor.MonitorName == STRING
    input.Body.AnomalyMonitor.CreationDate == STRING
    input.Body.AnomalyMonitor.LastUpdatedDate == STRING
    input.Body.AnomalyMonitor.LastEvaluatedDate == STRING
    input.Body.AnomalyMonitor.MonitorType == enum_MonitorType[_]
    input.Body.AnomalyMonitor.MonitorDimension == enum_MonitorDimension[_]
    input.Body.AnomalyMonitor.MonitorSpecification.Or[_] == NESTED
    input.Body.AnomalyMonitor.MonitorSpecification.And[_] == NESTED
    input.Body.AnomalyMonitor.MonitorSpecification.Not == NESTED
    input.Body.AnomalyMonitor.MonitorSpecification.Dimensions.Key == enum_Dimension[_]
    input.Body.AnomalyMonitor.MonitorSpecification.Dimensions.Values[_] == STRING
    input.Body.AnomalyMonitor.MonitorSpecification.Dimensions.MatchOptions[_] == enum_MatchOption[_]
    input.Body.AnomalyMonitor.MonitorSpecification.Tags.Key == STRING
    input.Body.AnomalyMonitor.MonitorSpecification.Tags.Values[_] == STRING
    input.Body.AnomalyMonitor.MonitorSpecification.Tags.MatchOptions[_] == enum_MatchOption[_]
    input.Body.AnomalyMonitor.MonitorSpecification.CostCategories.Key == STRING
    input.Body.AnomalyMonitor.MonitorSpecification.CostCategories.Values[_] == STRING
    input.Body.AnomalyMonitor.MonitorSpecification.CostCategories.MatchOptions[_] == enum_MatchOption[_]
    input.Body.AnomalyMonitor.DimensionalValueCount == INTEGER
    input.Body.ResourceTags[_].Key == STRING
    input.Body.ResourceTags[_].Value == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

CreateAnomalySubscription

enum_AnomalySubscriptionFrequency := [ "DAILY", "IMMEDIATE", "WEEKLY" ]
enum_Dimension := [ "AZ", "INSTANCE_TYPE", "LINKED_ACCOUNT", "LINKED_ACCOUNT_NAME", "OPERATION", "PURCHASE_TYPE", "REGION", "SERVICE", "SERVICE_CODE", "USAGE_TYPE", "USAGE_TYPE_GROUP", "RECORD_TYPE", "OPERATING_SYSTEM", "TENANCY", "SCOPE", "PLATFORM", "SUBSCRIPTION_ID", "LEGAL_ENTITY_NAME", "DEPLOYMENT_OPTION", "DATABASE_ENGINE", "CACHE_ENGINE", "INSTANCE_TYPE_FAMILY", "BILLING_ENTITY", "RESERVATION_ID", "RESOURCE_ID", "RIGHTSIZING_TYPE", "SAVINGS_PLANS_TYPE", "SAVINGS_PLAN_ARN", "PAYMENT_OPTION", "AGREEMENT_END_DATE_TIME_AFTER", "AGREEMENT_END_DATE_TIME_BEFORE", "INVOICING_ENTITY", "ANOMALY_TOTAL_IMPACT_ABSOLUTE", "ANOMALY_TOTAL_IMPACT_PERCENTAGE" ]
enum_MatchOption := [ "EQUALS", "ABSENT", "STARTS_WITH", "ENDS_WITH", "CONTAINS", "CASE_SENSITIVE", "CASE_INSENSITIVE", "GREATER_THAN_OR_EQUAL" ]
enum_SubscriberStatus := [ "CONFIRMED", "DECLINED" ]
enum_SubscriberType := [ "EMAIL", "SNS" ]

valid {
    input.Body.AnomalySubscription.SubscriptionArn == STRING
    input.Body.AnomalySubscription.AccountId == STRING
    input.Body.AnomalySubscription.MonitorArnList[_] == STRING
    input.Body.AnomalySubscription.Subscribers[_].Address == STRING
    input.Body.AnomalySubscription.Subscribers[_].Type == enum_SubscriberType[_]
    input.Body.AnomalySubscription.Subscribers[_].Status == enum_SubscriberStatus[_]
    input.Body.AnomalySubscription.Threshold == DOUBLE
    input.Body.AnomalySubscription.Frequency == enum_AnomalySubscriptionFrequency[_]
    input.Body.AnomalySubscription.SubscriptionName == STRING
    input.Body.AnomalySubscription.ThresholdExpression.Or[_] == NESTED
    input.Body.AnomalySubscription.ThresholdExpression.And[_] == NESTED
    input.Body.AnomalySubscription.ThresholdExpression.Not == NESTED
    input.Body.AnomalySubscription.ThresholdExpression.Dimensions.Key == enum_Dimension[_]
    input.Body.AnomalySubscription.ThresholdExpression.Dimensions.Values[_] == STRING
    input.Body.AnomalySubscription.ThresholdExpression.Dimensions.MatchOptions[_] == enum_MatchOption[_]
    input.Body.AnomalySubscription.ThresholdExpression.Tags.Key == STRING
    input.Body.AnomalySubscription.ThresholdExpression.Tags.Values[_] == STRING
    input.Body.AnomalySubscription.ThresholdExpression.Tags.MatchOptions[_] == enum_MatchOption[_]
    input.Body.AnomalySubscription.ThresholdExpression.CostCategories.Key == STRING
    input.Body.AnomalySubscription.ThresholdExpression.CostCategories.Values[_] == STRING
    input.Body.AnomalySubscription.ThresholdExpression.CostCategories.MatchOptions[_] == enum_MatchOption[_]
    input.Body.ResourceTags[_].Key == STRING
    input.Body.ResourceTags[_].Value == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

CreateCostCategoryDefinition

enum_CostCategoryInheritedValueDimensionName := [ "LINKED_ACCOUNT_NAME", "TAG" ]
enum_CostCategoryRuleType := [ "REGULAR", "INHERITED_VALUE" ]
enum_CostCategoryRuleVersion := [ "CostCategoryExpression.v1" ]
enum_CostCategorySplitChargeMethod := [ "FIXED", "PROPORTIONAL", "EVEN" ]
enum_CostCategorySplitChargeRuleParameterType := [ "ALLOCATION_PERCENTAGES" ]
enum_Dimension := [ "AZ", "INSTANCE_TYPE", "LINKED_ACCOUNT", "LINKED_ACCOUNT_NAME", "OPERATION", "PURCHASE_TYPE", "REGION", "SERVICE", "SERVICE_CODE", "USAGE_TYPE", "USAGE_TYPE_GROUP", "RECORD_TYPE", "OPERATING_SYSTEM", "TENANCY", "SCOPE", "PLATFORM", "SUBSCRIPTION_ID", "LEGAL_ENTITY_NAME", "DEPLOYMENT_OPTION", "DATABASE_ENGINE", "CACHE_ENGINE", "INSTANCE_TYPE_FAMILY", "BILLING_ENTITY", "RESERVATION_ID", "RESOURCE_ID", "RIGHTSIZING_TYPE", "SAVINGS_PLANS_TYPE", "SAVINGS_PLAN_ARN", "PAYMENT_OPTION", "AGREEMENT_END_DATE_TIME_AFTER", "AGREEMENT_END_DATE_TIME_BEFORE", "INVOICING_ENTITY", "ANOMALY_TOTAL_IMPACT_ABSOLUTE", "ANOMALY_TOTAL_IMPACT_PERCENTAGE" ]
enum_MatchOption := [ "EQUALS", "ABSENT", "STARTS_WITH", "ENDS_WITH", "CONTAINS", "CASE_SENSITIVE", "CASE_INSENSITIVE", "GREATER_THAN_OR_EQUAL" ]

valid {
    input.Body.Name == STRING
    input.Body.EffectiveStart == STRING
    input.Body.RuleVersion == enum_CostCategoryRuleVersion[_]
    input.Body.Rules[_].Value == STRING
    input.Body.Rules[_].Rule.Or[_] == NESTED
    input.Body.Rules[_].Rule.And[_] == NESTED
    input.Body.Rules[_].Rule.Not == NESTED
    input.Body.Rules[_].Rule.Dimensions.Key == enum_Dimension[_]
    input.Body.Rules[_].Rule.Dimensions.Values[_] == STRING
    input.Body.Rules[_].Rule.Dimensions.MatchOptions[_] == enum_MatchOption[_]
    input.Body.Rules[_].Rule.Tags.Key == STRING
    input.Body.Rules[_].Rule.Tags.Values[_] == STRING
    input.Body.Rules[_].Rule.Tags.MatchOptions[_] == enum_MatchOption[_]
    input.Body.Rules[_].Rule.CostCategories.Key == STRING
    input.Body.Rules[_].Rule.CostCategories.Values[_] == STRING
    input.Body.Rules[_].Rule.CostCategories.MatchOptions[_] == enum_MatchOption[_]
    input.Body.Rules[_].InheritedValue.DimensionName == enum_CostCategoryInheritedValueDimensionName[_]
    input.Body.Rules[_].InheritedValue.DimensionKey == STRING
    input.Body.Rules[_].Type == enum_CostCategoryRuleType[_]
    input.Body.DefaultValue == STRING
    input.Body.SplitChargeRules[_].Source == STRING
    input.Body.SplitChargeRules[_].Targets[_] == STRING
    input.Body.SplitChargeRules[_].Method == enum_CostCategorySplitChargeMethod[_]
    input.Body.SplitChargeRules[_].Parameters[_].Type == enum_CostCategorySplitChargeRuleParameterType[_]
    input.Body.SplitChargeRules[_].Parameters[_].Values[_] == STRING
    input.Body.ResourceTags[_].Key == STRING
    input.Body.ResourceTags[_].Value == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DeleteAnomalyMonitor

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

DeleteAnomalySubscription

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

DeleteCostCategoryDefinition

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

DescribeCostCategoryDefinition

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

GetAnomalies

enum_AnomalyFeedbackType := [ "YES", "NO", "PLANNED_ACTIVITY" ]
enum_NumericOperator := [ "EQUAL", "GREATER_THAN_OR_EQUAL", "LESS_THAN_OR_EQUAL", "GREATER_THAN", "LESS_THAN", "BETWEEN" ]

valid {
    input.Body.MonitorArn == STRING
    input.Body.DateInterval.StartDate == STRING
    input.Body.DateInterval.EndDate == STRING
    input.Body.Feedback == enum_AnomalyFeedbackType[_]
    input.Body.TotalImpact.NumericOperator == enum_NumericOperator[_]
    input.Body.TotalImpact.StartValue == DOUBLE
    input.Body.TotalImpact.EndValue == DOUBLE
    input.Body.NextPageToken == STRING
    input.Body.MaxResults == INTEGER
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

GetAnomalyMonitors

valid {
    input.Body.MonitorArnList[_] == STRING
    input.Body.NextPageToken == STRING
    input.Body.MaxResults == INTEGER
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

GetAnomalySubscriptions

valid {
    input.Body.SubscriptionArnList[_] == STRING
    input.Body.MonitorArn == STRING
    input.Body.NextPageToken == STRING
    input.Body.MaxResults == INTEGER
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

GetApproximateUsageRecords

enum_ApproximationDimension := [ "SERVICE", "RESOURCE" ]
enum_Granularity := [ "DAILY", "MONTHLY", "HOURLY" ]

valid {
    input.Body.Granularity == enum_Granularity[_]
    input.Body.Services[_] == STRING
    input.Body.ApproximationDimension == enum_ApproximationDimension[_]
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

GetCostAndUsage

enum_Dimension := [ "AZ", "INSTANCE_TYPE", "LINKED_ACCOUNT", "LINKED_ACCOUNT_NAME", "OPERATION", "PURCHASE_TYPE", "REGION", "SERVICE", "SERVICE_CODE", "USAGE_TYPE", "USAGE_TYPE_GROUP", "RECORD_TYPE", "OPERATING_SYSTEM", "TENANCY", "SCOPE", "PLATFORM", "SUBSCRIPTION_ID", "LEGAL_ENTITY_NAME", "DEPLOYMENT_OPTION", "DATABASE_ENGINE", "CACHE_ENGINE", "INSTANCE_TYPE_FAMILY", "BILLING_ENTITY", "RESERVATION_ID", "RESOURCE_ID", "RIGHTSIZING_TYPE", "SAVINGS_PLANS_TYPE", "SAVINGS_PLAN_ARN", "PAYMENT_OPTION", "AGREEMENT_END_DATE_TIME_AFTER", "AGREEMENT_END_DATE_TIME_BEFORE", "INVOICING_ENTITY", "ANOMALY_TOTAL_IMPACT_ABSOLUTE", "ANOMALY_TOTAL_IMPACT_PERCENTAGE" ]
enum_Granularity := [ "DAILY", "MONTHLY", "HOURLY" ]
enum_GroupDefinitionType := [ "DIMENSION", "TAG", "COST_CATEGORY" ]
enum_MatchOption := [ "EQUALS", "ABSENT", "STARTS_WITH", "ENDS_WITH", "CONTAINS", "CASE_SENSITIVE", "CASE_INSENSITIVE", "GREATER_THAN_OR_EQUAL" ]

valid {
    input.Body.TimePeriod.Start == STRING
    input.Body.TimePeriod.End == STRING
    input.Body.Granularity == enum_Granularity[_]
    input.Body.Filter.Or[_] == NESTED
    input.Body.Filter.And[_] == NESTED
    input.Body.Filter.Not == NESTED
    input.Body.Filter.Dimensions.Key == enum_Dimension[_]
    input.Body.Filter.Dimensions.Values[_] == STRING
    input.Body.Filter.Dimensions.MatchOptions[_] == enum_MatchOption[_]
    input.Body.Filter.Tags.Key == STRING
    input.Body.Filter.Tags.Values[_] == STRING
    input.Body.Filter.Tags.MatchOptions[_] == enum_MatchOption[_]
    input.Body.Filter.CostCategories.Key == STRING
    input.Body.Filter.CostCategories.Values[_] == STRING
    input.Body.Filter.CostCategories.MatchOptions[_] == enum_MatchOption[_]
    input.Body.Metrics[_] == STRING
    input.Body.GroupBy[_].Type == enum_GroupDefinitionType[_]
    input.Body.GroupBy[_].Key == STRING
    input.Body.NextPageToken == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

GetCostAndUsageWithResources

enum_Dimension := [ "AZ", "INSTANCE_TYPE", "LINKED_ACCOUNT", "LINKED_ACCOUNT_NAME", "OPERATION", "PURCHASE_TYPE", "REGION", "SERVICE", "SERVICE_CODE", "USAGE_TYPE", "USAGE_TYPE_GROUP", "RECORD_TYPE", "OPERATING_SYSTEM", "TENANCY", "SCOPE", "PLATFORM", "SUBSCRIPTION_ID", "LEGAL_ENTITY_NAME", "DEPLOYMENT_OPTION", "DATABASE_ENGINE", "CACHE_ENGINE", "INSTANCE_TYPE_FAMILY", "BILLING_ENTITY", "RESERVATION_ID", "RESOURCE_ID", "RIGHTSIZING_TYPE", "SAVINGS_PLANS_TYPE", "SAVINGS_PLAN_ARN", "PAYMENT_OPTION", "AGREEMENT_END_DATE_TIME_AFTER", "AGREEMENT_END_DATE_TIME_BEFORE", "INVOICING_ENTITY", "ANOMALY_TOTAL_IMPACT_ABSOLUTE", "ANOMALY_TOTAL_IMPACT_PERCENTAGE" ]
enum_Granularity := [ "DAILY", "MONTHLY", "HOURLY" ]
enum_GroupDefinitionType := [ "DIMENSION", "TAG", "COST_CATEGORY" ]
enum_MatchOption := [ "EQUALS", "ABSENT", "STARTS_WITH", "ENDS_WITH", "CONTAINS", "CASE_SENSITIVE", "CASE_INSENSITIVE", "GREATER_THAN_OR_EQUAL" ]

valid {
    input.Body.TimePeriod.Start == STRING
    input.Body.TimePeriod.End == STRING
    input.Body.Granularity == enum_Granularity[_]
    input.Body.Filter.Or[_] == NESTED
    input.Body.Filter.And[_] == NESTED
    input.Body.Filter.Not == NESTED
    input.Body.Filter.Dimensions.Key == enum_Dimension[_]
    input.Body.Filter.Dimensions.Values[_] == STRING
    input.Body.Filter.Dimensions.MatchOptions[_] == enum_MatchOption[_]
    input.Body.Filter.Tags.Key == STRING
    input.Body.Filter.Tags.Values[_] == STRING
    input.Body.Filter.Tags.MatchOptions[_] == enum_MatchOption[_]
    input.Body.Filter.CostCategories.Key == STRING
    input.Body.Filter.CostCategories.Values[_] == STRING
    input.Body.Filter.CostCategories.MatchOptions[_] == enum_MatchOption[_]
    input.Body.Metrics[_] == STRING
    input.Body.GroupBy[_].Type == enum_GroupDefinitionType[_]
    input.Body.GroupBy[_].Key == STRING
    input.Body.NextPageToken == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

GetCostCategories

enum_Dimension := [ "AZ", "INSTANCE_TYPE", "LINKED_ACCOUNT", "LINKED_ACCOUNT_NAME", "OPERATION", "PURCHASE_TYPE", "REGION", "SERVICE", "SERVICE_CODE", "USAGE_TYPE", "USAGE_TYPE_GROUP", "RECORD_TYPE", "OPERATING_SYSTEM", "TENANCY", "SCOPE", "PLATFORM", "SUBSCRIPTION_ID", "LEGAL_ENTITY_NAME", "DEPLOYMENT_OPTION", "DATABASE_ENGINE", "CACHE_ENGINE", "INSTANCE_TYPE_FAMILY", "BILLING_ENTITY", "RESERVATION_ID", "RESOURCE_ID", "RIGHTSIZING_TYPE", "SAVINGS_PLANS_TYPE", "SAVINGS_PLAN_ARN", "PAYMENT_OPTION", "AGREEMENT_END_DATE_TIME_AFTER", "AGREEMENT_END_DATE_TIME_BEFORE", "INVOICING_ENTITY", "ANOMALY_TOTAL_IMPACT_ABSOLUTE", "ANOMALY_TOTAL_IMPACT_PERCENTAGE" ]
enum_MatchOption := [ "EQUALS", "ABSENT", "STARTS_WITH", "ENDS_WITH", "CONTAINS", "CASE_SENSITIVE", "CASE_INSENSITIVE", "GREATER_THAN_OR_EQUAL" ]
enum_SortOrder := [ "ASCENDING", "DESCENDING" ]

valid {
    input.Body.SearchString == STRING
    input.Body.TimePeriod.Start == STRING
    input.Body.TimePeriod.End == STRING
    input.Body.CostCategoryName == STRING
    input.Body.Filter.Or[_] == NESTED
    input.Body.Filter.And[_] == NESTED
    input.Body.Filter.Not == NESTED
    input.Body.Filter.Dimensions.Key == enum_Dimension[_]
    input.Body.Filter.Dimensions.Values[_] == STRING
    input.Body.Filter.Dimensions.MatchOptions[_] == enum_MatchOption[_]
    input.Body.Filter.Tags.Key == STRING
    input.Body.Filter.Tags.Values[_] == STRING
    input.Body.Filter.Tags.MatchOptions[_] == enum_MatchOption[_]
    input.Body.Filter.CostCategories.Key == STRING
    input.Body.Filter.CostCategories.Values[_] == STRING
    input.Body.Filter.CostCategories.MatchOptions[_] == enum_MatchOption[_]
    input.Body.SortBy[_].Key == STRING
    input.Body.SortBy[_].SortOrder == enum_SortOrder[_]
    input.Body.MaxResults == INTEGER
    input.Body.NextPageToken == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

GetCostForecast

enum_Dimension := [ "AZ", "INSTANCE_TYPE", "LINKED_ACCOUNT", "LINKED_ACCOUNT_NAME", "OPERATION", "PURCHASE_TYPE", "REGION", "SERVICE", "SERVICE_CODE", "USAGE_TYPE", "USAGE_TYPE_GROUP", "RECORD_TYPE", "OPERATING_SYSTEM", "TENANCY", "SCOPE", "PLATFORM", "SUBSCRIPTION_ID", "LEGAL_ENTITY_NAME", "DEPLOYMENT_OPTION", "DATABASE_ENGINE", "CACHE_ENGINE", "INSTANCE_TYPE_FAMILY", "BILLING_ENTITY", "RESERVATION_ID", "RESOURCE_ID", "RIGHTSIZING_TYPE", "SAVINGS_PLANS_TYPE", "SAVINGS_PLAN_ARN", "PAYMENT_OPTION", "AGREEMENT_END_DATE_TIME_AFTER", "AGREEMENT_END_DATE_TIME_BEFORE", "INVOICING_ENTITY", "ANOMALY_TOTAL_IMPACT_ABSOLUTE", "ANOMALY_TOTAL_IMPACT_PERCENTAGE" ]
enum_Granularity := [ "DAILY", "MONTHLY", "HOURLY" ]
enum_MatchOption := [ "EQUALS", "ABSENT", "STARTS_WITH", "ENDS_WITH", "CONTAINS", "CASE_SENSITIVE", "CASE_INSENSITIVE", "GREATER_THAN_OR_EQUAL" ]
enum_Metric := [ "BLENDED_COST", "UNBLENDED_COST", "AMORTIZED_COST", "NET_UNBLENDED_COST", "NET_AMORTIZED_COST", "USAGE_QUANTITY", "NORMALIZED_USAGE_AMOUNT" ]

valid {
    input.Body.TimePeriod.Start == STRING
    input.Body.TimePeriod.End == STRING
    input.Body.Metric == enum_Metric[_]
    input.Body.Granularity == enum_Granularity[_]
    input.Body.Filter.Or[_] == NESTED
    input.Body.Filter.And[_] == NESTED
    input.Body.Filter.Not == NESTED
    input.Body.Filter.Dimensions.Key == enum_Dimension[_]
    input.Body.Filter.Dimensions.Values[_] == STRING
    input.Body.Filter.Dimensions.MatchOptions[_] == enum_MatchOption[_]
    input.Body.Filter.Tags.Key == STRING
    input.Body.Filter.Tags.Values[_] == STRING
    input.Body.Filter.Tags.MatchOptions[_] == enum_MatchOption[_]
    input.Body.Filter.CostCategories.Key == STRING
    input.Body.Filter.CostCategories.Values[_] == STRING
    input.Body.Filter.CostCategories.MatchOptions[_] == enum_MatchOption[_]
    input.Body.PredictionIntervalLevel == INTEGER
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

GetDimensionValues

enum_Context := [ "COST_AND_USAGE", "RESERVATIONS", "SAVINGS_PLANS" ]
enum_Dimension := [ "AZ", "INSTANCE_TYPE", "LINKED_ACCOUNT", "LINKED_ACCOUNT_NAME", "OPERATION", "PURCHASE_TYPE", "REGION", "SERVICE", "SERVICE_CODE", "USAGE_TYPE", "USAGE_TYPE_GROUP", "RECORD_TYPE", "OPERATING_SYSTEM", "TENANCY", "SCOPE", "PLATFORM", "SUBSCRIPTION_ID", "LEGAL_ENTITY_NAME", "DEPLOYMENT_OPTION", "DATABASE_ENGINE", "CACHE_ENGINE", "INSTANCE_TYPE_FAMILY", "BILLING_ENTITY", "RESERVATION_ID", "RESOURCE_ID", "RIGHTSIZING_TYPE", "SAVINGS_PLANS_TYPE", "SAVINGS_PLAN_ARN", "PAYMENT_OPTION", "AGREEMENT_END_DATE_TIME_AFTER", "AGREEMENT_END_DATE_TIME_BEFORE", "INVOICING_ENTITY", "ANOMALY_TOTAL_IMPACT_ABSOLUTE", "ANOMALY_TOTAL_IMPACT_PERCENTAGE" ]
enum_MatchOption := [ "EQUALS", "ABSENT", "STARTS_WITH", "ENDS_WITH", "CONTAINS", "CASE_SENSITIVE", "CASE_INSENSITIVE", "GREATER_THAN_OR_EQUAL" ]
enum_SortOrder := [ "ASCENDING", "DESCENDING" ]

valid {
    input.Body.SearchString == STRING
    input.Body.TimePeriod.Start == STRING
    input.Body.TimePeriod.End == STRING
    input.Body.Dimension == enum_Dimension[_]
    input.Body.Context == enum_Context[_]
    input.Body.Filter.Or[_] == NESTED
    input.Body.Filter.And[_] == NESTED
    input.Body.Filter.Not == NESTED
    input.Body.Filter.Dimensions.Key == enum_Dimension[_]
    input.Body.Filter.Dimensions.Values[_] == STRING
    input.Body.Filter.Dimensions.MatchOptions[_] == enum_MatchOption[_]
    input.Body.Filter.Tags.Key == STRING
    input.Body.Filter.Tags.Values[_] == STRING
    input.Body.Filter.Tags.MatchOptions[_] == enum_MatchOption[_]
    input.Body.Filter.CostCategories.Key == STRING
    input.Body.Filter.CostCategories.Values[_] == STRING
    input.Body.Filter.CostCategories.MatchOptions[_] == enum_MatchOption[_]
    input.Body.SortBy[_].Key == STRING
    input.Body.SortBy[_].SortOrder == enum_SortOrder[_]
    input.Body.MaxResults == INTEGER
    input.Body.NextPageToken == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

GetReservationCoverage

enum_Dimension := [ "AZ", "INSTANCE_TYPE", "LINKED_ACCOUNT", "LINKED_ACCOUNT_NAME", "OPERATION", "PURCHASE_TYPE", "REGION", "SERVICE", "SERVICE_CODE", "USAGE_TYPE", "USAGE_TYPE_GROUP", "RECORD_TYPE", "OPERATING_SYSTEM", "TENANCY", "SCOPE", "PLATFORM", "SUBSCRIPTION_ID", "LEGAL_ENTITY_NAME", "DEPLOYMENT_OPTION", "DATABASE_ENGINE", "CACHE_ENGINE", "INSTANCE_TYPE_FAMILY", "BILLING_ENTITY", "RESERVATION_ID", "RESOURCE_ID", "RIGHTSIZING_TYPE", "SAVINGS_PLANS_TYPE", "SAVINGS_PLAN_ARN", "PAYMENT_OPTION", "AGREEMENT_END_DATE_TIME_AFTER", "AGREEMENT_END_DATE_TIME_BEFORE", "INVOICING_ENTITY", "ANOMALY_TOTAL_IMPACT_ABSOLUTE", "ANOMALY_TOTAL_IMPACT_PERCENTAGE" ]
enum_Granularity := [ "DAILY", "MONTHLY", "HOURLY" ]
enum_GroupDefinitionType := [ "DIMENSION", "TAG", "COST_CATEGORY" ]
enum_MatchOption := [ "EQUALS", "ABSENT", "STARTS_WITH", "ENDS_WITH", "CONTAINS", "CASE_SENSITIVE", "CASE_INSENSITIVE", "GREATER_THAN_OR_EQUAL" ]
enum_SortOrder := [ "ASCENDING", "DESCENDING" ]

valid {
    input.Body.TimePeriod.Start == STRING
    input.Body.TimePeriod.End == STRING
    input.Body.GroupBy[_].Type == enum_GroupDefinitionType[_]
    input.Body.GroupBy[_].Key == STRING
    input.Body.Granularity == enum_Granularity[_]
    input.Body.Filter.Or[_] == NESTED
    input.Body.Filter.And[_] == NESTED
    input.Body.Filter.Not == NESTED
    input.Body.Filter.Dimensions.Key == enum_Dimension[_]
    input.Body.Filter.Dimensions.Values[_] == STRING
    input.Body.Filter.Dimensions.MatchOptions[_] == enum_MatchOption[_]
    input.Body.Filter.Tags.Key == STRING
    input.Body.Filter.Tags.Values[_] == STRING
    input.Body.Filter.Tags.MatchOptions[_] == enum_MatchOption[_]
    input.Body.Filter.CostCategories.Key == STRING
    input.Body.Filter.CostCategories.Values[_] == STRING
    input.Body.Filter.CostCategories.MatchOptions[_] == enum_MatchOption[_]
    input.Body.Metrics[_] == STRING
    input.Body.NextPageToken == STRING
    input.Body.SortBy.Key == STRING
    input.Body.SortBy.SortOrder == enum_SortOrder[_]
    input.Body.MaxResults == INTEGER
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

GetReservationPurchaseRecommendation

enum_AccountScope := [ "PAYER", "LINKED" ]
enum_Dimension := [ "AZ", "INSTANCE_TYPE", "LINKED_ACCOUNT", "LINKED_ACCOUNT_NAME", "OPERATION", "PURCHASE_TYPE", "REGION", "SERVICE", "SERVICE_CODE", "USAGE_TYPE", "USAGE_TYPE_GROUP", "RECORD_TYPE", "OPERATING_SYSTEM", "TENANCY", "SCOPE", "PLATFORM", "SUBSCRIPTION_ID", "LEGAL_ENTITY_NAME", "DEPLOYMENT_OPTION", "DATABASE_ENGINE", "CACHE_ENGINE", "INSTANCE_TYPE_FAMILY", "BILLING_ENTITY", "RESERVATION_ID", "RESOURCE_ID", "RIGHTSIZING_TYPE", "SAVINGS_PLANS_TYPE", "SAVINGS_PLAN_ARN", "PAYMENT_OPTION", "AGREEMENT_END_DATE_TIME_AFTER", "AGREEMENT_END_DATE_TIME_BEFORE", "INVOICING_ENTITY", "ANOMALY_TOTAL_IMPACT_ABSOLUTE", "ANOMALY_TOTAL_IMPACT_PERCENTAGE" ]
enum_LookbackPeriodInDays := [ "SEVEN_DAYS", "THIRTY_DAYS", "SIXTY_DAYS" ]
enum_MatchOption := [ "EQUALS", "ABSENT", "STARTS_WITH", "ENDS_WITH", "CONTAINS", "CASE_SENSITIVE", "CASE_INSENSITIVE", "GREATER_THAN_OR_EQUAL" ]
enum_OfferingClass := [ "STANDARD", "CONVERTIBLE" ]
enum_PaymentOption := [ "NO_UPFRONT", "PARTIAL_UPFRONT", "ALL_UPFRONT", "LIGHT_UTILIZATION", "MEDIUM_UTILIZATION", "HEAVY_UTILIZATION" ]
enum_TermInYears := [ "ONE_YEAR", "THREE_YEARS" ]

valid {
    input.Body.AccountId == STRING
    input.Body.Service == STRING
    input.Body.Filter.Or[_] == NESTED
    input.Body.Filter.And[_] == NESTED
    input.Body.Filter.Not == NESTED
    input.Body.Filter.Dimensions.Key == enum_Dimension[_]
    input.Body.Filter.Dimensions.Values[_] == STRING
    input.Body.Filter.Dimensions.MatchOptions[_] == enum_MatchOption[_]
    input.Body.Filter.Tags.Key == STRING
    input.Body.Filter.Tags.Values[_] == STRING
    input.Body.Filter.Tags.MatchOptions[_] == enum_MatchOption[_]
    input.Body.Filter.CostCategories.Key == STRING
    input.Body.Filter.CostCategories.Values[_] == STRING
    input.Body.Filter.CostCategories.MatchOptions[_] == enum_MatchOption[_]
    input.Body.AccountScope == enum_AccountScope[_]
    input.Body.LookbackPeriodInDays == enum_LookbackPeriodInDays[_]
    input.Body.TermInYears == enum_TermInYears[_]
    input.Body.PaymentOption == enum_PaymentOption[_]
    input.Body.ServiceSpecification.EC2Specification.OfferingClass == enum_OfferingClass[_]
    input.Body.PageSize == INTEGER
    input.Body.NextPageToken == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

GetReservationUtilization

enum_Dimension := [ "AZ", "INSTANCE_TYPE", "LINKED_ACCOUNT", "LINKED_ACCOUNT_NAME", "OPERATION", "PURCHASE_TYPE", "REGION", "SERVICE", "SERVICE_CODE", "USAGE_TYPE", "USAGE_TYPE_GROUP", "RECORD_TYPE", "OPERATING_SYSTEM", "TENANCY", "SCOPE", "PLATFORM", "SUBSCRIPTION_ID", "LEGAL_ENTITY_NAME", "DEPLOYMENT_OPTION", "DATABASE_ENGINE", "CACHE_ENGINE", "INSTANCE_TYPE_FAMILY", "BILLING_ENTITY", "RESERVATION_ID", "RESOURCE_ID", "RIGHTSIZING_TYPE", "SAVINGS_PLANS_TYPE", "SAVINGS_PLAN_ARN", "PAYMENT_OPTION", "AGREEMENT_END_DATE_TIME_AFTER", "AGREEMENT_END_DATE_TIME_BEFORE", "INVOICING_ENTITY", "ANOMALY_TOTAL_IMPACT_ABSOLUTE", "ANOMALY_TOTAL_IMPACT_PERCENTAGE" ]
enum_Granularity := [ "DAILY", "MONTHLY", "HOURLY" ]
enum_GroupDefinitionType := [ "DIMENSION", "TAG", "COST_CATEGORY" ]
enum_MatchOption := [ "EQUALS", "ABSENT", "STARTS_WITH", "ENDS_WITH", "CONTAINS", "CASE_SENSITIVE", "CASE_INSENSITIVE", "GREATER_THAN_OR_EQUAL" ]
enum_SortOrder := [ "ASCENDING", "DESCENDING" ]

valid {
    input.Body.TimePeriod.Start == STRING
    input.Body.TimePeriod.End == STRING
    input.Body.GroupBy[_].Type == enum_GroupDefinitionType[_]
    input.Body.GroupBy[_].Key == STRING
    input.Body.Granularity == enum_Granularity[_]
    input.Body.Filter.Or[_] == NESTED
    input.Body.Filter.And[_] == NESTED
    input.Body.Filter.Not == NESTED
    input.Body.Filter.Dimensions.Key == enum_Dimension[_]
    input.Body.Filter.Dimensions.Values[_] == STRING
    input.Body.Filter.Dimensions.MatchOptions[_] == enum_MatchOption[_]
    input.Body.Filter.Tags.Key == STRING
    input.Body.Filter.Tags.Values[_] == STRING
    input.Body.Filter.Tags.MatchOptions[_] == enum_MatchOption[_]
    input.Body.Filter.CostCategories.Key == STRING
    input.Body.Filter.CostCategories.Values[_] == STRING
    input.Body.Filter.CostCategories.MatchOptions[_] == enum_MatchOption[_]
    input.Body.SortBy.Key == STRING
    input.Body.SortBy.SortOrder == enum_SortOrder[_]
    input.Body.NextPageToken == STRING
    input.Body.MaxResults == INTEGER
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

GetRightsizingRecommendation

enum_Dimension := [ "AZ", "INSTANCE_TYPE", "LINKED_ACCOUNT", "LINKED_ACCOUNT_NAME", "OPERATION", "PURCHASE_TYPE", "REGION", "SERVICE", "SERVICE_CODE", "USAGE_TYPE", "USAGE_TYPE_GROUP", "RECORD_TYPE", "OPERATING_SYSTEM", "TENANCY", "SCOPE", "PLATFORM", "SUBSCRIPTION_ID", "LEGAL_ENTITY_NAME", "DEPLOYMENT_OPTION", "DATABASE_ENGINE", "CACHE_ENGINE", "INSTANCE_TYPE_FAMILY", "BILLING_ENTITY", "RESERVATION_ID", "RESOURCE_ID", "RIGHTSIZING_TYPE", "SAVINGS_PLANS_TYPE", "SAVINGS_PLAN_ARN", "PAYMENT_OPTION", "AGREEMENT_END_DATE_TIME_AFTER", "AGREEMENT_END_DATE_TIME_BEFORE", "INVOICING_ENTITY", "ANOMALY_TOTAL_IMPACT_ABSOLUTE", "ANOMALY_TOTAL_IMPACT_PERCENTAGE" ]
enum_MatchOption := [ "EQUALS", "ABSENT", "STARTS_WITH", "ENDS_WITH", "CONTAINS", "CASE_SENSITIVE", "CASE_INSENSITIVE", "GREATER_THAN_OR_EQUAL" ]
enum_RecommendationTarget := [ "SAME_INSTANCE_FAMILY", "CROSS_INSTANCE_FAMILY" ]

valid {
    input.Body.Filter.Or[_] == NESTED
    input.Body.Filter.And[_] == NESTED
    input.Body.Filter.Not == NESTED
    input.Body.Filter.Dimensions.Key == enum_Dimension[_]
    input.Body.Filter.Dimensions.Values[_] == STRING
    input.Body.Filter.Dimensions.MatchOptions[_] == enum_MatchOption[_]
    input.Body.Filter.Tags.Key == STRING
    input.Body.Filter.Tags.Values[_] == STRING
    input.Body.Filter.Tags.MatchOptions[_] == enum_MatchOption[_]
    input.Body.Filter.CostCategories.Key == STRING
    input.Body.Filter.CostCategories.Values[_] == STRING
    input.Body.Filter.CostCategories.MatchOptions[_] == enum_MatchOption[_]
    input.Body.Configuration.RecommendationTarget == enum_RecommendationTarget[_]
    input.Body.Configuration.BenefitsConsidered == BOOLEAN
    input.Body.Service == STRING
    input.Body.PageSize == INTEGER
    input.Body.NextPageToken == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

GetSavingsPlanPurchaseRecommendationDetails

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

GetSavingsPlansCoverage

enum_Dimension := [ "AZ", "INSTANCE_TYPE", "LINKED_ACCOUNT", "LINKED_ACCOUNT_NAME", "OPERATION", "PURCHASE_TYPE", "REGION", "SERVICE", "SERVICE_CODE", "USAGE_TYPE", "USAGE_TYPE_GROUP", "RECORD_TYPE", "OPERATING_SYSTEM", "TENANCY", "SCOPE", "PLATFORM", "SUBSCRIPTION_ID", "LEGAL_ENTITY_NAME", "DEPLOYMENT_OPTION", "DATABASE_ENGINE", "CACHE_ENGINE", "INSTANCE_TYPE_FAMILY", "BILLING_ENTITY", "RESERVATION_ID", "RESOURCE_ID", "RIGHTSIZING_TYPE", "SAVINGS_PLANS_TYPE", "SAVINGS_PLAN_ARN", "PAYMENT_OPTION", "AGREEMENT_END_DATE_TIME_AFTER", "AGREEMENT_END_DATE_TIME_BEFORE", "INVOICING_ENTITY", "ANOMALY_TOTAL_IMPACT_ABSOLUTE", "ANOMALY_TOTAL_IMPACT_PERCENTAGE" ]
enum_Granularity := [ "DAILY", "MONTHLY", "HOURLY" ]
enum_GroupDefinitionType := [ "DIMENSION", "TAG", "COST_CATEGORY" ]
enum_MatchOption := [ "EQUALS", "ABSENT", "STARTS_WITH", "ENDS_WITH", "CONTAINS", "CASE_SENSITIVE", "CASE_INSENSITIVE", "GREATER_THAN_OR_EQUAL" ]
enum_SortOrder := [ "ASCENDING", "DESCENDING" ]

valid {
    input.Body.TimePeriod.Start == STRING
    input.Body.TimePeriod.End == STRING
    input.Body.GroupBy[_].Type == enum_GroupDefinitionType[_]
    input.Body.GroupBy[_].Key == STRING
    input.Body.Granularity == enum_Granularity[_]
    input.Body.Filter.Or[_] == NESTED
    input.Body.Filter.And[_] == NESTED
    input.Body.Filter.Not == NESTED
    input.Body.Filter.Dimensions.Key == enum_Dimension[_]
    input.Body.Filter.Dimensions.Values[_] == STRING
    input.Body.Filter.Dimensions.MatchOptions[_] == enum_MatchOption[_]
    input.Body.Filter.Tags.Key == STRING
    input.Body.Filter.Tags.Values[_] == STRING
    input.Body.Filter.Tags.MatchOptions[_] == enum_MatchOption[_]
    input.Body.Filter.CostCategories.Key == STRING
    input.Body.Filter.CostCategories.Values[_] == STRING
    input.Body.Filter.CostCategories.MatchOptions[_] == enum_MatchOption[_]
    input.Body.Metrics[_] == STRING
    input.Body.NextToken == STRING
    input.Body.MaxResults == INTEGER
    input.Body.SortBy.Key == STRING
    input.Body.SortBy.SortOrder == enum_SortOrder[_]
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

GetSavingsPlansPurchaseRecommendation

enum_AccountScope := [ "PAYER", "LINKED" ]
enum_Dimension := [ "AZ", "INSTANCE_TYPE", "LINKED_ACCOUNT", "LINKED_ACCOUNT_NAME", "OPERATION", "PURCHASE_TYPE", "REGION", "SERVICE", "SERVICE_CODE", "USAGE_TYPE", "USAGE_TYPE_GROUP", "RECORD_TYPE", "OPERATING_SYSTEM", "TENANCY", "SCOPE", "PLATFORM", "SUBSCRIPTION_ID", "LEGAL_ENTITY_NAME", "DEPLOYMENT_OPTION", "DATABASE_ENGINE", "CACHE_ENGINE", "INSTANCE_TYPE_FAMILY", "BILLING_ENTITY", "RESERVATION_ID", "RESOURCE_ID", "RIGHTSIZING_TYPE", "SAVINGS_PLANS_TYPE", "SAVINGS_PLAN_ARN", "PAYMENT_OPTION", "AGREEMENT_END_DATE_TIME_AFTER", "AGREEMENT_END_DATE_TIME_BEFORE", "INVOICING_ENTITY", "ANOMALY_TOTAL_IMPACT_ABSOLUTE", "ANOMALY_TOTAL_IMPACT_PERCENTAGE" ]
enum_LookbackPeriodInDays := [ "SEVEN_DAYS", "THIRTY_DAYS", "SIXTY_DAYS" ]
enum_MatchOption := [ "EQUALS", "ABSENT", "STARTS_WITH", "ENDS_WITH", "CONTAINS", "CASE_SENSITIVE", "CASE_INSENSITIVE", "GREATER_THAN_OR_EQUAL" ]
enum_PaymentOption := [ "NO_UPFRONT", "PARTIAL_UPFRONT", "ALL_UPFRONT", "LIGHT_UTILIZATION", "MEDIUM_UTILIZATION", "HEAVY_UTILIZATION" ]
enum_SupportedSavingsPlansType := [ "COMPUTE_SP", "EC2_INSTANCE_SP", "SAGEMAKER_SP" ]
enum_TermInYears := [ "ONE_YEAR", "THREE_YEARS" ]

valid {
    input.Body.SavingsPlansType == enum_SupportedSavingsPlansType[_]
    input.Body.TermInYears == enum_TermInYears[_]
    input.Body.PaymentOption == enum_PaymentOption[_]
    input.Body.AccountScope == enum_AccountScope[_]
    input.Body.NextPageToken == STRING
    input.Body.PageSize == INTEGER
    input.Body.LookbackPeriodInDays == enum_LookbackPeriodInDays[_]
    input.Body.Filter.Or[_] == NESTED
    input.Body.Filter.And[_] == NESTED
    input.Body.Filter.Not == NESTED
    input.Body.Filter.Dimensions.Key == enum_Dimension[_]
    input.Body.Filter.Dimensions.Values[_] == STRING
    input.Body.Filter.Dimensions.MatchOptions[_] == enum_MatchOption[_]
    input.Body.Filter.Tags.Key == STRING
    input.Body.Filter.Tags.Values[_] == STRING
    input.Body.Filter.Tags.MatchOptions[_] == enum_MatchOption[_]
    input.Body.Filter.CostCategories.Key == STRING
    input.Body.Filter.CostCategories.Values[_] == STRING
    input.Body.Filter.CostCategories.MatchOptions[_] == enum_MatchOption[_]
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

GetSavingsPlansUtilization

enum_Dimension := [ "AZ", "INSTANCE_TYPE", "LINKED_ACCOUNT", "LINKED_ACCOUNT_NAME", "OPERATION", "PURCHASE_TYPE", "REGION", "SERVICE", "SERVICE_CODE", "USAGE_TYPE", "USAGE_TYPE_GROUP", "RECORD_TYPE", "OPERATING_SYSTEM", "TENANCY", "SCOPE", "PLATFORM", "SUBSCRIPTION_ID", "LEGAL_ENTITY_NAME", "DEPLOYMENT_OPTION", "DATABASE_ENGINE", "CACHE_ENGINE", "INSTANCE_TYPE_FAMILY", "BILLING_ENTITY", "RESERVATION_ID", "RESOURCE_ID", "RIGHTSIZING_TYPE", "SAVINGS_PLANS_TYPE", "SAVINGS_PLAN_ARN", "PAYMENT_OPTION", "AGREEMENT_END_DATE_TIME_AFTER", "AGREEMENT_END_DATE_TIME_BEFORE", "INVOICING_ENTITY", "ANOMALY_TOTAL_IMPACT_ABSOLUTE", "ANOMALY_TOTAL_IMPACT_PERCENTAGE" ]
enum_Granularity := [ "DAILY", "MONTHLY", "HOURLY" ]
enum_MatchOption := [ "EQUALS", "ABSENT", "STARTS_WITH", "ENDS_WITH", "CONTAINS", "CASE_SENSITIVE", "CASE_INSENSITIVE", "GREATER_THAN_OR_EQUAL" ]
enum_SortOrder := [ "ASCENDING", "DESCENDING" ]

valid {
    input.Body.TimePeriod.Start == STRING
    input.Body.TimePeriod.End == STRING
    input.Body.Granularity == enum_Granularity[_]
    input.Body.Filter.Or[_] == NESTED
    input.Body.Filter.And[_] == NESTED
    input.Body.Filter.Not == NESTED
    input.Body.Filter.Dimensions.Key == enum_Dimension[_]
    input.Body.Filter.Dimensions.Values[_] == STRING
    input.Body.Filter.Dimensions.MatchOptions[_] == enum_MatchOption[_]
    input.Body.Filter.Tags.Key == STRING
    input.Body.Filter.Tags.Values[_] == STRING
    input.Body.Filter.Tags.MatchOptions[_] == enum_MatchOption[_]
    input.Body.Filter.CostCategories.Key == STRING
    input.Body.Filter.CostCategories.Values[_] == STRING
    input.Body.Filter.CostCategories.MatchOptions[_] == enum_MatchOption[_]
    input.Body.SortBy.Key == STRING
    input.Body.SortBy.SortOrder == enum_SortOrder[_]
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

GetSavingsPlansUtilizationDetails

enum_Dimension := [ "AZ", "INSTANCE_TYPE", "LINKED_ACCOUNT", "LINKED_ACCOUNT_NAME", "OPERATION", "PURCHASE_TYPE", "REGION", "SERVICE", "SERVICE_CODE", "USAGE_TYPE", "USAGE_TYPE_GROUP", "RECORD_TYPE", "OPERATING_SYSTEM", "TENANCY", "SCOPE", "PLATFORM", "SUBSCRIPTION_ID", "LEGAL_ENTITY_NAME", "DEPLOYMENT_OPTION", "DATABASE_ENGINE", "CACHE_ENGINE", "INSTANCE_TYPE_FAMILY", "BILLING_ENTITY", "RESERVATION_ID", "RESOURCE_ID", "RIGHTSIZING_TYPE", "SAVINGS_PLANS_TYPE", "SAVINGS_PLAN_ARN", "PAYMENT_OPTION", "AGREEMENT_END_DATE_TIME_AFTER", "AGREEMENT_END_DATE_TIME_BEFORE", "INVOICING_ENTITY", "ANOMALY_TOTAL_IMPACT_ABSOLUTE", "ANOMALY_TOTAL_IMPACT_PERCENTAGE" ]
enum_MatchOption := [ "EQUALS", "ABSENT", "STARTS_WITH", "ENDS_WITH", "CONTAINS", "CASE_SENSITIVE", "CASE_INSENSITIVE", "GREATER_THAN_OR_EQUAL" ]
enum_SavingsPlansDataType := [ "ATTRIBUTES", "UTILIZATION", "AMORTIZED_COMMITMENT", "SAVINGS" ]
enum_SortOrder := [ "ASCENDING", "DESCENDING" ]

valid {
    input.Body.TimePeriod.Start == STRING
    input.Body.TimePeriod.End == STRING
    input.Body.Filter.Or[_] == NESTED
    input.Body.Filter.And[_] == NESTED
    input.Body.Filter.Not == NESTED
    input.Body.Filter.Dimensions.Key == enum_Dimension[_]
    input.Body.Filter.Dimensions.Values[_] == STRING
    input.Body.Filter.Dimensions.MatchOptions[_] == enum_MatchOption[_]
    input.Body.Filter.Tags.Key == STRING
    input.Body.Filter.Tags.Values[_] == STRING
    input.Body.Filter.Tags.MatchOptions[_] == enum_MatchOption[_]
    input.Body.Filter.CostCategories.Key == STRING
    input.Body.Filter.CostCategories.Values[_] == STRING
    input.Body.Filter.CostCategories.MatchOptions[_] == enum_MatchOption[_]
    input.Body.DataType[_] == enum_SavingsPlansDataType[_]
    input.Body.NextToken == STRING
    input.Body.MaxResults == INTEGER
    input.Body.SortBy.Key == STRING
    input.Body.SortBy.SortOrder == enum_SortOrder[_]
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

GetTags

enum_Dimension := [ "AZ", "INSTANCE_TYPE", "LINKED_ACCOUNT", "LINKED_ACCOUNT_NAME", "OPERATION", "PURCHASE_TYPE", "REGION", "SERVICE", "SERVICE_CODE", "USAGE_TYPE", "USAGE_TYPE_GROUP", "RECORD_TYPE", "OPERATING_SYSTEM", "TENANCY", "SCOPE", "PLATFORM", "SUBSCRIPTION_ID", "LEGAL_ENTITY_NAME", "DEPLOYMENT_OPTION", "DATABASE_ENGINE", "CACHE_ENGINE", "INSTANCE_TYPE_FAMILY", "BILLING_ENTITY", "RESERVATION_ID", "RESOURCE_ID", "RIGHTSIZING_TYPE", "SAVINGS_PLANS_TYPE", "SAVINGS_PLAN_ARN", "PAYMENT_OPTION", "AGREEMENT_END_DATE_TIME_AFTER", "AGREEMENT_END_DATE_TIME_BEFORE", "INVOICING_ENTITY", "ANOMALY_TOTAL_IMPACT_ABSOLUTE", "ANOMALY_TOTAL_IMPACT_PERCENTAGE" ]
enum_MatchOption := [ "EQUALS", "ABSENT", "STARTS_WITH", "ENDS_WITH", "CONTAINS", "CASE_SENSITIVE", "CASE_INSENSITIVE", "GREATER_THAN_OR_EQUAL" ]
enum_SortOrder := [ "ASCENDING", "DESCENDING" ]

valid {
    input.Body.SearchString == STRING
    input.Body.TimePeriod.Start == STRING
    input.Body.TimePeriod.End == STRING
    input.Body.TagKey == STRING
    input.Body.Filter.Or[_] == NESTED
    input.Body.Filter.And[_] == NESTED
    input.Body.Filter.Not == NESTED
    input.Body.Filter.Dimensions.Key == enum_Dimension[_]
    input.Body.Filter.Dimensions.Values[_] == STRING
    input.Body.Filter.Dimensions.MatchOptions[_] == enum_MatchOption[_]
    input.Body.Filter.Tags.Key == STRING
    input.Body.Filter.Tags.Values[_] == STRING
    input.Body.Filter.Tags.MatchOptions[_] == enum_MatchOption[_]
    input.Body.Filter.CostCategories.Key == STRING
    input.Body.Filter.CostCategories.Values[_] == STRING
    input.Body.Filter.CostCategories.MatchOptions[_] == enum_MatchOption[_]
    input.Body.SortBy[_].Key == STRING
    input.Body.SortBy[_].SortOrder == enum_SortOrder[_]
    input.Body.MaxResults == INTEGER
    input.Body.NextPageToken == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

GetUsageForecast

enum_Dimension := [ "AZ", "INSTANCE_TYPE", "LINKED_ACCOUNT", "LINKED_ACCOUNT_NAME", "OPERATION", "PURCHASE_TYPE", "REGION", "SERVICE", "SERVICE_CODE", "USAGE_TYPE", "USAGE_TYPE_GROUP", "RECORD_TYPE", "OPERATING_SYSTEM", "TENANCY", "SCOPE", "PLATFORM", "SUBSCRIPTION_ID", "LEGAL_ENTITY_NAME", "DEPLOYMENT_OPTION", "DATABASE_ENGINE", "CACHE_ENGINE", "INSTANCE_TYPE_FAMILY", "BILLING_ENTITY", "RESERVATION_ID", "RESOURCE_ID", "RIGHTSIZING_TYPE", "SAVINGS_PLANS_TYPE", "SAVINGS_PLAN_ARN", "PAYMENT_OPTION", "AGREEMENT_END_DATE_TIME_AFTER", "AGREEMENT_END_DATE_TIME_BEFORE", "INVOICING_ENTITY", "ANOMALY_TOTAL_IMPACT_ABSOLUTE", "ANOMALY_TOTAL_IMPACT_PERCENTAGE" ]
enum_Granularity := [ "DAILY", "MONTHLY", "HOURLY" ]
enum_MatchOption := [ "EQUALS", "ABSENT", "STARTS_WITH", "ENDS_WITH", "CONTAINS", "CASE_SENSITIVE", "CASE_INSENSITIVE", "GREATER_THAN_OR_EQUAL" ]
enum_Metric := [ "BLENDED_COST", "UNBLENDED_COST", "AMORTIZED_COST", "NET_UNBLENDED_COST", "NET_AMORTIZED_COST", "USAGE_QUANTITY", "NORMALIZED_USAGE_AMOUNT" ]

valid {
    input.Body.TimePeriod.Start == STRING
    input.Body.TimePeriod.End == STRING
    input.Body.Metric == enum_Metric[_]
    input.Body.Granularity == enum_Granularity[_]
    input.Body.Filter.Or[_] == NESTED
    input.Body.Filter.And[_] == NESTED
    input.Body.Filter.Not == NESTED
    input.Body.Filter.Dimensions.Key == enum_Dimension[_]
    input.Body.Filter.Dimensions.Values[_] == STRING
    input.Body.Filter.Dimensions.MatchOptions[_] == enum_MatchOption[_]
    input.Body.Filter.Tags.Key == STRING
    input.Body.Filter.Tags.Values[_] == STRING
    input.Body.Filter.Tags.MatchOptions[_] == enum_MatchOption[_]
    input.Body.Filter.CostCategories.Key == STRING
    input.Body.Filter.CostCategories.Values[_] == STRING
    input.Body.Filter.CostCategories.MatchOptions[_] == enum_MatchOption[_]
    input.Body.PredictionIntervalLevel == INTEGER
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ListCostAllocationTagBackfillHistory

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

ListCostAllocationTags

enum_CostAllocationTagStatus := [ "Active", "Inactive" ]
enum_CostAllocationTagType := [ "AWSGenerated", "UserDefined" ]

valid {
    input.Body.Status == enum_CostAllocationTagStatus[_]
    input.Body.TagKeys[_] == STRING
    input.Body.Type == enum_CostAllocationTagType[_]
    input.Body.NextToken == STRING
    input.Body.MaxResults == INTEGER
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ListCostCategoryDefinitions

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

ListSavingsPlansPurchaseRecommendationGeneration

enum_GenerationStatus := [ "SUCCEEDED", "PROCESSING", "FAILED" ]

valid {
    input.Body.GenerationStatus == enum_GenerationStatus[_]
    input.Body.RecommendationIds[_] == STRING
    input.Body.PageSize == INTEGER
    input.Body.NextPageToken == STRING
    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
}

ProvideAnomalyFeedback

enum_AnomalyFeedbackType := [ "YES", "NO", "PLANNED_ACTIVITY" ]

valid {
    input.Body.AnomalyId == STRING
    input.Body.Feedback == enum_AnomalyFeedbackType[_]
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

StartCostAllocationTagBackfill

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

StartSavingsPlansPurchaseRecommendationGeneration

valid {
    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
}

UpdateAnomalyMonitor

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

UpdateAnomalySubscription

enum_AnomalySubscriptionFrequency := [ "DAILY", "IMMEDIATE", "WEEKLY" ]
enum_Dimension := [ "AZ", "INSTANCE_TYPE", "LINKED_ACCOUNT", "LINKED_ACCOUNT_NAME", "OPERATION", "PURCHASE_TYPE", "REGION", "SERVICE", "SERVICE_CODE", "USAGE_TYPE", "USAGE_TYPE_GROUP", "RECORD_TYPE", "OPERATING_SYSTEM", "TENANCY", "SCOPE", "PLATFORM", "SUBSCRIPTION_ID", "LEGAL_ENTITY_NAME", "DEPLOYMENT_OPTION", "DATABASE_ENGINE", "CACHE_ENGINE", "INSTANCE_TYPE_FAMILY", "BILLING_ENTITY", "RESERVATION_ID", "RESOURCE_ID", "RIGHTSIZING_TYPE", "SAVINGS_PLANS_TYPE", "SAVINGS_PLAN_ARN", "PAYMENT_OPTION", "AGREEMENT_END_DATE_TIME_AFTER", "AGREEMENT_END_DATE_TIME_BEFORE", "INVOICING_ENTITY", "ANOMALY_TOTAL_IMPACT_ABSOLUTE", "ANOMALY_TOTAL_IMPACT_PERCENTAGE" ]
enum_MatchOption := [ "EQUALS", "ABSENT", "STARTS_WITH", "ENDS_WITH", "CONTAINS", "CASE_SENSITIVE", "CASE_INSENSITIVE", "GREATER_THAN_OR_EQUAL" ]
enum_SubscriberStatus := [ "CONFIRMED", "DECLINED" ]
enum_SubscriberType := [ "EMAIL", "SNS" ]

valid {
    input.Body.SubscriptionArn == STRING
    input.Body.Threshold == DOUBLE
    input.Body.Frequency == enum_AnomalySubscriptionFrequency[_]
    input.Body.MonitorArnList[_] == STRING
    input.Body.Subscribers[_].Address == STRING
    input.Body.Subscribers[_].Type == enum_SubscriberType[_]
    input.Body.Subscribers[_].Status == enum_SubscriberStatus[_]
    input.Body.SubscriptionName == STRING
    input.Body.ThresholdExpression.Or[_] == NESTED
    input.Body.ThresholdExpression.And[_] == NESTED
    input.Body.ThresholdExpression.Not == NESTED
    input.Body.ThresholdExpression.Dimensions.Key == enum_Dimension[_]
    input.Body.ThresholdExpression.Dimensions.Values[_] == STRING
    input.Body.ThresholdExpression.Dimensions.MatchOptions[_] == enum_MatchOption[_]
    input.Body.ThresholdExpression.Tags.Key == STRING
    input.Body.ThresholdExpression.Tags.Values[_] == STRING
    input.Body.ThresholdExpression.Tags.MatchOptions[_] == enum_MatchOption[_]
    input.Body.ThresholdExpression.CostCategories.Key == STRING
    input.Body.ThresholdExpression.CostCategories.Values[_] == STRING
    input.Body.ThresholdExpression.CostCategories.MatchOptions[_] == enum_MatchOption[_]
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

UpdateCostAllocationTagsStatus

enum_CostAllocationTagStatus := [ "Active", "Inactive" ]

valid {
    input.Body.CostAllocationTagsStatus[_].TagKey == STRING
    input.Body.CostAllocationTagsStatus[_].Status == enum_CostAllocationTagStatus[_]
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

UpdateCostCategoryDefinition

enum_CostCategoryInheritedValueDimensionName := [ "LINKED_ACCOUNT_NAME", "TAG" ]
enum_CostCategoryRuleType := [ "REGULAR", "INHERITED_VALUE" ]
enum_CostCategoryRuleVersion := [ "CostCategoryExpression.v1" ]
enum_CostCategorySplitChargeMethod := [ "FIXED", "PROPORTIONAL", "EVEN" ]
enum_CostCategorySplitChargeRuleParameterType := [ "ALLOCATION_PERCENTAGES" ]
enum_Dimension := [ "AZ", "INSTANCE_TYPE", "LINKED_ACCOUNT", "LINKED_ACCOUNT_NAME", "OPERATION", "PURCHASE_TYPE", "REGION", "SERVICE", "SERVICE_CODE", "USAGE_TYPE", "USAGE_TYPE_GROUP", "RECORD_TYPE", "OPERATING_SYSTEM", "TENANCY", "SCOPE", "PLATFORM", "SUBSCRIPTION_ID", "LEGAL_ENTITY_NAME", "DEPLOYMENT_OPTION", "DATABASE_ENGINE", "CACHE_ENGINE", "INSTANCE_TYPE_FAMILY", "BILLING_ENTITY", "RESERVATION_ID", "RESOURCE_ID", "RIGHTSIZING_TYPE", "SAVINGS_PLANS_TYPE", "SAVINGS_PLAN_ARN", "PAYMENT_OPTION", "AGREEMENT_END_DATE_TIME_AFTER", "AGREEMENT_END_DATE_TIME_BEFORE", "INVOICING_ENTITY", "ANOMALY_TOTAL_IMPACT_ABSOLUTE", "ANOMALY_TOTAL_IMPACT_PERCENTAGE" ]
enum_MatchOption := [ "EQUALS", "ABSENT", "STARTS_WITH", "ENDS_WITH", "CONTAINS", "CASE_SENSITIVE", "CASE_INSENSITIVE", "GREATER_THAN_OR_EQUAL" ]

valid {
    input.Body.CostCategoryArn == STRING
    input.Body.EffectiveStart == STRING
    input.Body.RuleVersion == enum_CostCategoryRuleVersion[_]
    input.Body.Rules[_].Value == STRING
    input.Body.Rules[_].Rule.Or[_] == NESTED
    input.Body.Rules[_].Rule.And[_] == NESTED
    input.Body.Rules[_].Rule.Not == NESTED
    input.Body.Rules[_].Rule.Dimensions.Key == enum_Dimension[_]
    input.Body.Rules[_].Rule.Dimensions.Values[_] == STRING
    input.Body.Rules[_].Rule.Dimensions.MatchOptions[_] == enum_MatchOption[_]
    input.Body.Rules[_].Rule.Tags.Key == STRING
    input.Body.Rules[_].Rule.Tags.Values[_] == STRING
    input.Body.Rules[_].Rule.Tags.MatchOptions[_] == enum_MatchOption[_]
    input.Body.Rules[_].Rule.CostCategories.Key == STRING
    input.Body.Rules[_].Rule.CostCategories.Values[_] == STRING
    input.Body.Rules[_].Rule.CostCategories.MatchOptions[_] == enum_MatchOption[_]
    input.Body.Rules[_].InheritedValue.DimensionName == enum_CostCategoryInheritedValueDimensionName[_]
    input.Body.Rules[_].InheritedValue.DimensionKey == STRING
    input.Body.Rules[_].Type == enum_CostCategoryRuleType[_]
    input.Body.DefaultValue == STRING
    input.Body.SplitChargeRules[_].Source == STRING
    input.Body.SplitChargeRules[_].Targets[_] == STRING
    input.Body.SplitChargeRules[_].Method == enum_CostCategorySplitChargeMethod[_]
    input.Body.SplitChargeRules[_].Parameters[_].Type == enum_CostCategorySplitChargeRuleParameterType[_]
    input.Body.SplitChargeRules[_].Parameters[_].Values[_] == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}