BCM-PRICING-CALCULATOR

BatchCreateBillScenarioCommitmentModification

valid {
    input.Body.billScenarioId == STRING
    input.Body.commitmentModifications[_].key == STRING
    input.Body.commitmentModifications[_].group == STRING
    input.Body.commitmentModifications[_].usageAccountId == STRING
    input.Body.commitmentModifications[_].commitmentAction.addReservedInstanceAction.reservedInstancesOfferingId == STRING
    input.Body.commitmentModifications[_].commitmentAction.addReservedInstanceAction.instanceCount == INTEGER
    input.Body.commitmentModifications[_].commitmentAction.addSavingsPlanAction.savingsPlanOfferingId == STRING
    input.Body.commitmentModifications[_].commitmentAction.addSavingsPlanAction.commitment == DOUBLE
    input.Body.commitmentModifications[_].commitmentAction.negateReservedInstanceAction.reservedInstancesId == STRING
    input.Body.commitmentModifications[_].commitmentAction.negateSavingsPlanAction.savingsPlanId == STRING
    input.Body.clientToken == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

BatchCreateBillScenarioUsageModification

valid {
    input.Body.billScenarioId == STRING
    input.Body.usageModifications[_].serviceCode == STRING
    input.Body.usageModifications[_].usageType == STRING
    input.Body.usageModifications[_].operation == STRING
    input.Body.usageModifications[_].availabilityZone == STRING
    input.Body.usageModifications[_].key == STRING
    input.Body.usageModifications[_].group == STRING
    input.Body.usageModifications[_].usageAccountId == STRING
    input.Body.usageModifications[_].amounts[_].startHour == TIMESTAMP
    input.Body.usageModifications[_].amounts[_].amount == DOUBLE
    input.Body.usageModifications[_].historicalUsage.serviceCode == STRING
    input.Body.usageModifications[_].historicalUsage.usageType == STRING
    input.Body.usageModifications[_].historicalUsage.operation == STRING
    input.Body.usageModifications[_].historicalUsage.location == STRING
    input.Body.usageModifications[_].historicalUsage.usageAccountId == STRING
    input.Body.usageModifications[_].historicalUsage.billInterval.start == TIMESTAMP
    input.Body.usageModifications[_].historicalUsage.billInterval.end == TIMESTAMP
    input.Body.usageModifications[_].historicalUsage.filterExpression.and[_] == NESTED
    input.Body.usageModifications[_].historicalUsage.filterExpression.or[_] == NESTED
    input.Body.usageModifications[_].historicalUsage.filterExpression.not == NESTED
    input.Body.usageModifications[_].historicalUsage.filterExpression.costCategories.key == STRING
    input.Body.usageModifications[_].historicalUsage.filterExpression.costCategories.matchOptions[_] == STRING
    input.Body.usageModifications[_].historicalUsage.filterExpression.costCategories.values[_] == STRING
    input.Body.usageModifications[_].historicalUsage.filterExpression.dimensions.key == STRING
    input.Body.usageModifications[_].historicalUsage.filterExpression.dimensions.matchOptions[_] == STRING
    input.Body.usageModifications[_].historicalUsage.filterExpression.dimensions.values[_] == STRING
    input.Body.usageModifications[_].historicalUsage.filterExpression.tags.key == STRING
    input.Body.usageModifications[_].historicalUsage.filterExpression.tags.matchOptions[_] == STRING
    input.Body.usageModifications[_].historicalUsage.filterExpression.tags.values[_] == STRING
    input.Body.clientToken == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

BatchCreateWorkloadEstimateUsage

valid {
    input.Body.workloadEstimateId == STRING
    input.Body.usage[_].serviceCode == STRING
    input.Body.usage[_].usageType == STRING
    input.Body.usage[_].operation == STRING
    input.Body.usage[_].key == STRING
    input.Body.usage[_].group == STRING
    input.Body.usage[_].usageAccountId == STRING
    input.Body.usage[_].amount == DOUBLE
    input.Body.usage[_].historicalUsage.serviceCode == STRING
    input.Body.usage[_].historicalUsage.usageType == STRING
    input.Body.usage[_].historicalUsage.operation == STRING
    input.Body.usage[_].historicalUsage.location == STRING
    input.Body.usage[_].historicalUsage.usageAccountId == STRING
    input.Body.usage[_].historicalUsage.billInterval.start == TIMESTAMP
    input.Body.usage[_].historicalUsage.billInterval.end == TIMESTAMP
    input.Body.usage[_].historicalUsage.filterExpression.and[_] == NESTED
    input.Body.usage[_].historicalUsage.filterExpression.or[_] == NESTED
    input.Body.usage[_].historicalUsage.filterExpression.not == NESTED
    input.Body.usage[_].historicalUsage.filterExpression.costCategories.key == STRING
    input.Body.usage[_].historicalUsage.filterExpression.costCategories.matchOptions[_] == STRING
    input.Body.usage[_].historicalUsage.filterExpression.costCategories.values[_] == STRING
    input.Body.usage[_].historicalUsage.filterExpression.dimensions.key == STRING
    input.Body.usage[_].historicalUsage.filterExpression.dimensions.matchOptions[_] == STRING
    input.Body.usage[_].historicalUsage.filterExpression.dimensions.values[_] == STRING
    input.Body.usage[_].historicalUsage.filterExpression.tags.key == STRING
    input.Body.usage[_].historicalUsage.filterExpression.tags.matchOptions[_] == STRING
    input.Body.usage[_].historicalUsage.filterExpression.tags.values[_] == STRING
    input.Body.clientToken == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

BatchDeleteBillScenarioCommitmentModification

valid {
    input.Body.billScenarioId == STRING
    input.Body.ids[_] == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

BatchDeleteBillScenarioUsageModification

valid {
    input.Body.billScenarioId == STRING
    input.Body.ids[_] == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

BatchDeleteWorkloadEstimateUsage

valid {
    input.Body.workloadEstimateId == STRING
    input.Body.ids[_] == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

BatchUpdateBillScenarioCommitmentModification

valid {
    input.Body.billScenarioId == STRING
    input.Body.commitmentModifications[_].id == STRING
    input.Body.commitmentModifications[_].group == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

BatchUpdateBillScenarioUsageModification

valid {
    input.Body.billScenarioId == STRING
    input.Body.usageModifications[_].id == STRING
    input.Body.usageModifications[_].group == STRING
    input.Body.usageModifications[_].amounts[_].startHour == TIMESTAMP
    input.Body.usageModifications[_].amounts[_].amount == DOUBLE
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

BatchUpdateWorkloadEstimateUsage

valid {
    input.Body.workloadEstimateId == STRING
    input.Body.usage[_].id == STRING
    input.Body.usage[_].group == STRING
    input.Body.usage[_].amount == DOUBLE
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

CreateBillEstimate

valid {
    input.Body.billScenarioId == STRING
    input.Body.name == STRING
    input.Body.clientToken == STRING
    input.Body.tags.STRING == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

CreateBillScenario

valid {
    input.Body.name == STRING
    input.Body.clientToken == STRING
    input.Body.tags.STRING == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

CreateWorkloadEstimate

enum_WorkloadEstimateRateType := [ "BEFORE_DISCOUNTS", "AFTER_DISCOUNTS" ]

valid {
    input.Body.name == STRING
    input.Body.clientToken == STRING
    input.Body.rateType == enum_WorkloadEstimateRateType[_]
    input.Body.tags.STRING == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DeleteBillEstimate

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

DeleteBillScenario

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

DeleteWorkloadEstimate

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

GetBillEstimate

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

GetBillScenario

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

GetPreferences

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

GetWorkloadEstimate

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

ListBillEstimateCommitments

valid {
    input.Body.billEstimateId == STRING
    input.Body.nextToken == STRING
    input.Body.maxResults == INTEGER
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ListBillEstimateInputCommitmentModifications

valid {
    input.Body.billEstimateId == STRING
    input.Body.nextToken == STRING
    input.Body.maxResults == INTEGER
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ListBillEstimateInputUsageModifications

enum_ListUsageFilterName := [ "USAGE_ACCOUNT_ID", "SERVICE_CODE", "USAGE_TYPE", "OPERATION", "LOCATION", "USAGE_GROUP", "HISTORICAL_USAGE_ACCOUNT_ID", "HISTORICAL_SERVICE_CODE", "HISTORICAL_USAGE_TYPE", "HISTORICAL_OPERATION", "HISTORICAL_LOCATION" ]
enum_MatchOption := [ "EQUALS", "STARTS_WITH", "CONTAINS" ]

valid {
    input.Body.billEstimateId == STRING
    input.Body.filters[_].name == enum_ListUsageFilterName[_]
    input.Body.filters[_].values[_] == STRING
    input.Body.filters[_].matchOption == enum_MatchOption[_]
    input.Body.nextToken == STRING
    input.Body.maxResults == INTEGER
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ListBillEstimateLineItems

enum_ListBillEstimateLineItemsFilterName := [ "USAGE_ACCOUNT_ID", "SERVICE_CODE", "USAGE_TYPE", "OPERATION", "LOCATION", "LINE_ITEM_TYPE" ]
enum_MatchOption := [ "EQUALS", "STARTS_WITH", "CONTAINS" ]

valid {
    input.Body.billEstimateId == STRING
    input.Body.filters[_].name == enum_ListBillEstimateLineItemsFilterName[_]
    input.Body.filters[_].values[_] == STRING
    input.Body.filters[_].matchOption == enum_MatchOption[_]
    input.Body.nextToken == STRING
    input.Body.maxResults == INTEGER
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ListBillEstimates

enum_ListBillEstimatesFilterName := [ "STATUS", "NAME" ]
enum_MatchOption := [ "EQUALS", "STARTS_WITH", "CONTAINS" ]

valid {
    input.Body.filters[_].name == enum_ListBillEstimatesFilterName[_]
    input.Body.filters[_].values[_] == STRING
    input.Body.filters[_].matchOption == enum_MatchOption[_]
    input.Body.createdAtFilter.afterTimestamp == TIMESTAMP
    input.Body.createdAtFilter.beforeTimestamp == TIMESTAMP
    input.Body.expiresAtFilter.afterTimestamp == TIMESTAMP
    input.Body.expiresAtFilter.beforeTimestamp == TIMESTAMP
    input.Body.nextToken == STRING
    input.Body.maxResults == INTEGER
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ListBillScenarioCommitmentModifications

valid {
    input.Body.billScenarioId == STRING
    input.Body.nextToken == STRING
    input.Body.maxResults == INTEGER
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ListBillScenarioUsageModifications

enum_ListUsageFilterName := [ "USAGE_ACCOUNT_ID", "SERVICE_CODE", "USAGE_TYPE", "OPERATION", "LOCATION", "USAGE_GROUP", "HISTORICAL_USAGE_ACCOUNT_ID", "HISTORICAL_SERVICE_CODE", "HISTORICAL_USAGE_TYPE", "HISTORICAL_OPERATION", "HISTORICAL_LOCATION" ]
enum_MatchOption := [ "EQUALS", "STARTS_WITH", "CONTAINS" ]

valid {
    input.Body.billScenarioId == STRING
    input.Body.filters[_].name == enum_ListUsageFilterName[_]
    input.Body.filters[_].values[_] == STRING
    input.Body.filters[_].matchOption == enum_MatchOption[_]
    input.Body.nextToken == STRING
    input.Body.maxResults == INTEGER
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ListBillScenarios

enum_ListBillScenariosFilterName := [ "STATUS", "NAME" ]
enum_MatchOption := [ "EQUALS", "STARTS_WITH", "CONTAINS" ]

valid {
    input.Body.filters[_].name == enum_ListBillScenariosFilterName[_]
    input.Body.filters[_].values[_] == STRING
    input.Body.filters[_].matchOption == enum_MatchOption[_]
    input.Body.createdAtFilter.afterTimestamp == TIMESTAMP
    input.Body.createdAtFilter.beforeTimestamp == TIMESTAMP
    input.Body.expiresAtFilter.afterTimestamp == TIMESTAMP
    input.Body.expiresAtFilter.beforeTimestamp == TIMESTAMP
    input.Body.nextToken == STRING
    input.Body.maxResults == INTEGER
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ListTagsForResource

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

ListWorkloadEstimateUsage

enum_ListUsageFilterName := [ "USAGE_ACCOUNT_ID", "SERVICE_CODE", "USAGE_TYPE", "OPERATION", "LOCATION", "USAGE_GROUP", "HISTORICAL_USAGE_ACCOUNT_ID", "HISTORICAL_SERVICE_CODE", "HISTORICAL_USAGE_TYPE", "HISTORICAL_OPERATION", "HISTORICAL_LOCATION" ]
enum_MatchOption := [ "EQUALS", "STARTS_WITH", "CONTAINS" ]

valid {
    input.Body.workloadEstimateId == STRING
    input.Body.filters[_].name == enum_ListUsageFilterName[_]
    input.Body.filters[_].values[_] == STRING
    input.Body.filters[_].matchOption == enum_MatchOption[_]
    input.Body.nextToken == STRING
    input.Body.maxResults == INTEGER
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ListWorkloadEstimates

enum_ListWorkloadEstimatesFilterName := [ "STATUS", "NAME" ]
enum_MatchOption := [ "EQUALS", "STARTS_WITH", "CONTAINS" ]

valid {
    input.Body.createdAtFilter.afterTimestamp == TIMESTAMP
    input.Body.createdAtFilter.beforeTimestamp == TIMESTAMP
    input.Body.expiresAtFilter.afterTimestamp == TIMESTAMP
    input.Body.expiresAtFilter.beforeTimestamp == TIMESTAMP
    input.Body.filters[_].name == enum_ListWorkloadEstimatesFilterName[_]
    input.Body.filters[_].values[_] == STRING
    input.Body.filters[_].matchOption == enum_MatchOption[_]
    input.Body.nextToken == STRING
    input.Body.maxResults == INTEGER
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

TagResource

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

UntagResource

valid {
    input.Body.arn == STRING
    input.Body.tagKeys[_] == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

UpdateBillEstimate

valid {
    input.Body.identifier == STRING
    input.Body.name == STRING
    input.Body.expiresAt == TIMESTAMP
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

UpdateBillScenario

valid {
    input.Body.identifier == STRING
    input.Body.name == STRING
    input.Body.expiresAt == TIMESTAMP
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

UpdatePreferences

enum_RateType := [ "BEFORE_DISCOUNTS", "AFTER_DISCOUNTS" ]

valid {
    input.Body.managementAccountRateTypeSelections[_] == enum_RateType[_]
    input.Body.memberAccountRateTypeSelections[_] == enum_RateType[_]
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

UpdateWorkloadEstimate

valid {
    input.Body.identifier == STRING
    input.Body.name == STRING
    input.Body.expiresAt == TIMESTAMP
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}