COMPUTE-OPTIMIZER

DeleteRecommendationPreferences

enum_RecommendationPreferenceName := [ "EnhancedInfrastructureMetrics", "InferredWorkloadTypes", "ExternalMetricsPreference", "LookBackPeriodPreference", "PreferredResources", "UtilizationPreferences" ]
enum_ResourceType := [ "Ec2Instance", "AutoScalingGroup", "EbsVolume", "LambdaFunction", "NotApplicable", "EcsService", "License" ]
enum_ScopeName := [ "Organization", "AccountId", "ResourceArn" ]

valid {
    input.Body.resourceType == enum_ResourceType[_]
    input.Body.scope.name == enum_ScopeName[_]
    input.Body.scope.value == STRING
    input.Body.recommendationPreferenceNames[_] == enum_RecommendationPreferenceName[_]
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DescribeRecommendationExportJobs

enum_JobFilterName := [ "ResourceType", "JobStatus" ]

valid {
    input.Body.jobIds[_] == STRING
    input.Body.filters[_].name == enum_JobFilterName[_]
    input.Body.filters[_].values[_] == STRING
    input.Body.nextToken == STRING
    input.Body.maxResults == INTEGER
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ExportAutoScalingGroupRecommendations

enum_CpuVendorArchitecture := [ "AWS_ARM64", "CURRENT" ]
enum_ExportableAutoScalingGroupField := [ "AccountId", "AutoScalingGroupArn", "AutoScalingGroupName", "Finding", "UtilizationMetricsCpuMaximum", "UtilizationMetricsMemoryMaximum", "UtilizationMetricsEbsReadOpsPerSecondMaximum", "UtilizationMetricsEbsWriteOpsPerSecondMaximum", "UtilizationMetricsEbsReadBytesPerSecondMaximum", "UtilizationMetricsEbsWriteBytesPerSecondMaximum", "UtilizationMetricsDiskReadOpsPerSecondMaximum", "UtilizationMetricsDiskWriteOpsPerSecondMaximum", "UtilizationMetricsDiskReadBytesPerSecondMaximum", "UtilizationMetricsDiskWriteBytesPerSecondMaximum", "UtilizationMetricsNetworkInBytesPerSecondMaximum", "UtilizationMetricsNetworkOutBytesPerSecondMaximum", "UtilizationMetricsNetworkPacketsInPerSecondMaximum", "UtilizationMetricsNetworkPacketsOutPerSecondMaximum", "LookbackPeriodInDays", "CurrentConfigurationInstanceType", "CurrentConfigurationDesiredCapacity", "CurrentConfigurationMinSize", "CurrentConfigurationMaxSize", "CurrentOnDemandPrice", "CurrentStandardOneYearNoUpfrontReservedPrice", "CurrentStandardThreeYearNoUpfrontReservedPrice", "CurrentVCpus", "CurrentMemory", "CurrentStorage", "CurrentNetwork", "RecommendationOptionsConfigurationInstanceType", "RecommendationOptionsConfigurationDesiredCapacity", "RecommendationOptionsConfigurationMinSize", "RecommendationOptionsConfigurationMaxSize", "RecommendationOptionsProjectedUtilizationMetricsCpuMaximum", "RecommendationOptionsProjectedUtilizationMetricsMemoryMaximum", "RecommendationOptionsPerformanceRisk", "RecommendationOptionsOnDemandPrice", "RecommendationOptionsStandardOneYearNoUpfrontReservedPrice", "RecommendationOptionsStandardThreeYearNoUpfrontReservedPrice", "RecommendationOptionsVcpus", "RecommendationOptionsMemory", "RecommendationOptionsStorage", "RecommendationOptionsNetwork", "LastRefreshTimestamp", "CurrentPerformanceRisk", "RecommendationOptionsSavingsOpportunityPercentage", "RecommendationOptionsEstimatedMonthlySavingsCurrency", "RecommendationOptionsEstimatedMonthlySavingsValue", "EffectiveRecommendationPreferencesCpuVendorArchitectures", "EffectiveRecommendationPreferencesEnhancedInfrastructureMetrics", "EffectiveRecommendationPreferencesInferredWorkloadTypes", "InferredWorkloadTypes", "RecommendationOptionsMigrationEffort", "CurrentInstanceGpuInfo", "RecommendationOptionsInstanceGpuInfo", "UtilizationMetricsGpuPercentageMaximum", "UtilizationMetricsGpuMemoryPercentageMaximum", "RecommendationOptionsProjectedUtilizationMetricsGpuPercentageMaximum", "RecommendationOptionsProjectedUtilizationMetricsGpuMemoryPercentageMaximum", "EffectiveRecommendationPreferencesSavingsEstimationMode", "RecommendationOptionsSavingsOpportunityAfterDiscountsPercentage", "RecommendationOptionsEstimatedMonthlySavingsCurrencyAfterDiscounts", "RecommendationOptionsEstimatedMonthlySavingsValueAfterDiscounts", "EffectiveRecommendationPreferencesPreferredResources", "EffectiveRecommendationPreferencesLookBackPeriod" ]
enum_FileFormat := [ "Csv" ]
enum_FilterName := [ "Finding", "FindingReasonCodes", "RecommendationSourceType", "InferredWorkloadTypes" ]

valid {
    input.Body.accountIds[_] == STRING
    input.Body.filters[_].name == enum_FilterName[_]
    input.Body.filters[_].values[_] == STRING
    input.Body.fieldsToExport[_] == enum_ExportableAutoScalingGroupField[_]
    input.Body.s3DestinationConfig.bucket == STRING
    input.Body.s3DestinationConfig.keyPrefix == STRING
    input.Body.fileFormat == enum_FileFormat[_]
    input.Body.includeMemberAccounts == BOOLEAN
    input.Body.recommendationPreferences.cpuVendorArchitectures[_] == enum_CpuVendorArchitecture[_]
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ExportEBSVolumeRecommendations

enum_EBSFilterName := [ "Finding" ]
enum_ExportableVolumeField := [ "AccountId", "VolumeArn", "Finding", "UtilizationMetricsVolumeReadOpsPerSecondMaximum", "UtilizationMetricsVolumeWriteOpsPerSecondMaximum", "UtilizationMetricsVolumeReadBytesPerSecondMaximum", "UtilizationMetricsVolumeWriteBytesPerSecondMaximum", "LookbackPeriodInDays", "CurrentConfigurationVolumeType", "CurrentConfigurationVolumeBaselineIOPS", "CurrentConfigurationVolumeBaselineThroughput", "CurrentConfigurationVolumeBurstIOPS", "CurrentConfigurationVolumeBurstThroughput", "CurrentConfigurationVolumeSize", "CurrentMonthlyPrice", "RecommendationOptionsConfigurationVolumeType", "RecommendationOptionsConfigurationVolumeBaselineIOPS", "RecommendationOptionsConfigurationVolumeBaselineThroughput", "RecommendationOptionsConfigurationVolumeBurstIOPS", "RecommendationOptionsConfigurationVolumeBurstThroughput", "RecommendationOptionsConfigurationVolumeSize", "RecommendationOptionsMonthlyPrice", "RecommendationOptionsPerformanceRisk", "LastRefreshTimestamp", "CurrentPerformanceRisk", "RecommendationOptionsSavingsOpportunityPercentage", "RecommendationOptionsEstimatedMonthlySavingsCurrency", "RecommendationOptionsEstimatedMonthlySavingsValue", "RootVolume", "Tags", "CurrentConfigurationRootVolume", "EffectiveRecommendationPreferencesSavingsEstimationMode", "RecommendationOptionsSavingsOpportunityAfterDiscountsPercentage", "RecommendationOptionsEstimatedMonthlySavingsCurrencyAfterDiscounts", "RecommendationOptionsEstimatedMonthlySavingsValueAfterDiscounts" ]
enum_FileFormat := [ "Csv" ]

valid {
    input.Body.accountIds[_] == STRING
    input.Body.filters[_].name == enum_EBSFilterName[_]
    input.Body.filters[_].values[_] == STRING
    input.Body.fieldsToExport[_] == enum_ExportableVolumeField[_]
    input.Body.s3DestinationConfig.bucket == STRING
    input.Body.s3DestinationConfig.keyPrefix == STRING
    input.Body.fileFormat == enum_FileFormat[_]
    input.Body.includeMemberAccounts == BOOLEAN
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ExportEC2InstanceRecommendations

enum_CpuVendorArchitecture := [ "AWS_ARM64", "CURRENT" ]
enum_ExportableInstanceField := [ "AccountId", "InstanceArn", "InstanceName", "Finding", "FindingReasonCodes", "LookbackPeriodInDays", "CurrentInstanceType", "UtilizationMetricsCpuMaximum", "UtilizationMetricsMemoryMaximum", "UtilizationMetricsEbsReadOpsPerSecondMaximum", "UtilizationMetricsEbsWriteOpsPerSecondMaximum", "UtilizationMetricsEbsReadBytesPerSecondMaximum", "UtilizationMetricsEbsWriteBytesPerSecondMaximum", "UtilizationMetricsDiskReadOpsPerSecondMaximum", "UtilizationMetricsDiskWriteOpsPerSecondMaximum", "UtilizationMetricsDiskReadBytesPerSecondMaximum", "UtilizationMetricsDiskWriteBytesPerSecondMaximum", "UtilizationMetricsNetworkInBytesPerSecondMaximum", "UtilizationMetricsNetworkOutBytesPerSecondMaximum", "UtilizationMetricsNetworkPacketsInPerSecondMaximum", "UtilizationMetricsNetworkPacketsOutPerSecondMaximum", "CurrentOnDemandPrice", "CurrentStandardOneYearNoUpfrontReservedPrice", "CurrentStandardThreeYearNoUpfrontReservedPrice", "CurrentVCpus", "CurrentMemory", "CurrentStorage", "CurrentNetwork", "RecommendationOptionsInstanceType", "RecommendationOptionsProjectedUtilizationMetricsCpuMaximum", "RecommendationOptionsProjectedUtilizationMetricsMemoryMaximum", "RecommendationOptionsPlatformDifferences", "RecommendationOptionsPerformanceRisk", "RecommendationOptionsVcpus", "RecommendationOptionsMemory", "RecommendationOptionsStorage", "RecommendationOptionsNetwork", "RecommendationOptionsOnDemandPrice", "RecommendationOptionsStandardOneYearNoUpfrontReservedPrice", "RecommendationOptionsStandardThreeYearNoUpfrontReservedPrice", "RecommendationsSourcesRecommendationSourceArn", "RecommendationsSourcesRecommendationSourceType", "LastRefreshTimestamp", "CurrentPerformanceRisk", "RecommendationOptionsSavingsOpportunityPercentage", "RecommendationOptionsEstimatedMonthlySavingsCurrency", "RecommendationOptionsEstimatedMonthlySavingsValue", "EffectiveRecommendationPreferencesCpuVendorArchitectures", "EffectiveRecommendationPreferencesEnhancedInfrastructureMetrics", "EffectiveRecommendationPreferencesInferredWorkloadTypes", "InferredWorkloadTypes", "RecommendationOptionsMigrationEffort", "EffectiveRecommendationPreferencesExternalMetricsSource", "InstanceState", "Tags", "ExternalMetricStatusCode", "ExternalMetricStatusReason", "CurrentInstanceGpuInfo", "RecommendationOptionsInstanceGpuInfo", "UtilizationMetricsGpuPercentageMaximum", "UtilizationMetricsGpuMemoryPercentageMaximum", "RecommendationOptionsProjectedUtilizationMetricsGpuPercentageMaximum", "RecommendationOptionsProjectedUtilizationMetricsGpuMemoryPercentageMaximum", "Idle", "EffectiveRecommendationPreferencesPreferredResources", "EffectiveRecommendationPreferencesLookBackPeriod", "EffectiveRecommendationPreferencesUtilizationPreferences", "EffectiveRecommendationPreferencesSavingsEstimationMode", "RecommendationOptionsSavingsOpportunityAfterDiscountsPercentage", "RecommendationOptionsEstimatedMonthlySavingsCurrencyAfterDiscounts", "RecommendationOptionsEstimatedMonthlySavingsValueAfterDiscounts" ]
enum_FileFormat := [ "Csv" ]
enum_FilterName := [ "Finding", "FindingReasonCodes", "RecommendationSourceType", "InferredWorkloadTypes" ]

valid {
    input.Body.accountIds[_] == STRING
    input.Body.filters[_].name == enum_FilterName[_]
    input.Body.filters[_].values[_] == STRING
    input.Body.fieldsToExport[_] == enum_ExportableInstanceField[_]
    input.Body.s3DestinationConfig.bucket == STRING
    input.Body.s3DestinationConfig.keyPrefix == STRING
    input.Body.fileFormat == enum_FileFormat[_]
    input.Body.includeMemberAccounts == BOOLEAN
    input.Body.recommendationPreferences.cpuVendorArchitectures[_] == enum_CpuVendorArchitecture[_]
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ExportECSServiceRecommendations

enum_ECSServiceRecommendationFilterName := [ "Finding", "FindingReasonCode" ]
enum_ExportableECSServiceField := [ "AccountId", "ServiceArn", "LookbackPeriodInDays", "LastRefreshTimestamp", "LaunchType", "CurrentPerformanceRisk", "CurrentServiceConfigurationMemory", "CurrentServiceConfigurationCpu", "CurrentServiceConfigurationTaskDefinitionArn", "CurrentServiceConfigurationAutoScalingConfiguration", "CurrentServiceContainerConfigurations", "UtilizationMetricsCpuMaximum", "UtilizationMetricsMemoryMaximum", "Finding", "FindingReasonCodes", "RecommendationOptionsMemory", "RecommendationOptionsCpu", "RecommendationOptionsSavingsOpportunityPercentage", "RecommendationOptionsEstimatedMonthlySavingsCurrency", "RecommendationOptionsEstimatedMonthlySavingsValue", "RecommendationOptionsContainerRecommendations", "RecommendationOptionsProjectedUtilizationMetricsCpuMaximum", "RecommendationOptionsProjectedUtilizationMetricsMemoryMaximum", "Tags", "EffectiveRecommendationPreferencesSavingsEstimationMode", "RecommendationOptionsSavingsOpportunityAfterDiscountsPercentage", "RecommendationOptionsEstimatedMonthlySavingsCurrencyAfterDiscounts", "RecommendationOptionsEstimatedMonthlySavingsValueAfterDiscounts" ]
enum_FileFormat := [ "Csv" ]

valid {
    input.Body.accountIds[_] == STRING
    input.Body.filters[_].name == enum_ECSServiceRecommendationFilterName[_]
    input.Body.filters[_].values[_] == STRING
    input.Body.fieldsToExport[_] == enum_ExportableECSServiceField[_]
    input.Body.s3DestinationConfig.bucket == STRING
    input.Body.s3DestinationConfig.keyPrefix == STRING
    input.Body.fileFormat == enum_FileFormat[_]
    input.Body.includeMemberAccounts == BOOLEAN
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ExportLambdaFunctionRecommendations

enum_ExportableLambdaFunctionField := [ "AccountId", "FunctionArn", "FunctionVersion", "Finding", "FindingReasonCodes", "NumberOfInvocations", "UtilizationMetricsDurationMaximum", "UtilizationMetricsDurationAverage", "UtilizationMetricsMemoryMaximum", "UtilizationMetricsMemoryAverage", "LookbackPeriodInDays", "CurrentConfigurationMemorySize", "CurrentConfigurationTimeout", "CurrentCostTotal", "CurrentCostAverage", "RecommendationOptionsConfigurationMemorySize", "RecommendationOptionsCostLow", "RecommendationOptionsCostHigh", "RecommendationOptionsProjectedUtilizationMetricsDurationLowerBound", "RecommendationOptionsProjectedUtilizationMetricsDurationUpperBound", "RecommendationOptionsProjectedUtilizationMetricsDurationExpected", "LastRefreshTimestamp", "CurrentPerformanceRisk", "RecommendationOptionsSavingsOpportunityPercentage", "RecommendationOptionsEstimatedMonthlySavingsCurrency", "RecommendationOptionsEstimatedMonthlySavingsValue", "Tags", "EffectiveRecommendationPreferencesSavingsEstimationMode", "RecommendationOptionsSavingsOpportunityAfterDiscountsPercentage", "RecommendationOptionsEstimatedMonthlySavingsCurrencyAfterDiscounts", "RecommendationOptionsEstimatedMonthlySavingsValueAfterDiscounts" ]
enum_FileFormat := [ "Csv" ]
enum_LambdaFunctionRecommendationFilterName := [ "Finding", "FindingReasonCode" ]

valid {
    input.Body.accountIds[_] == STRING
    input.Body.filters[_].name == enum_LambdaFunctionRecommendationFilterName[_]
    input.Body.filters[_].values[_] == STRING
    input.Body.fieldsToExport[_] == enum_ExportableLambdaFunctionField[_]
    input.Body.s3DestinationConfig.bucket == STRING
    input.Body.s3DestinationConfig.keyPrefix == STRING
    input.Body.fileFormat == enum_FileFormat[_]
    input.Body.includeMemberAccounts == BOOLEAN
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ExportLicenseRecommendations

enum_ExportableLicenseField := [ "AccountId", "ResourceArn", "LookbackPeriodInDays", "LastRefreshTimestamp", "Finding", "FindingReasonCodes", "CurrentLicenseConfigurationNumberOfCores", "CurrentLicenseConfigurationInstanceType", "CurrentLicenseConfigurationOperatingSystem", "CurrentLicenseConfigurationLicenseName", "CurrentLicenseConfigurationLicenseEdition", "CurrentLicenseConfigurationLicenseModel", "CurrentLicenseConfigurationLicenseVersion", "CurrentLicenseConfigurationMetricsSource", "RecommendationOptionsOperatingSystem", "RecommendationOptionsLicenseEdition", "RecommendationOptionsLicenseModel", "RecommendationOptionsSavingsOpportunityPercentage", "RecommendationOptionsEstimatedMonthlySavingsCurrency", "RecommendationOptionsEstimatedMonthlySavingsValue", "Tags" ]
enum_FileFormat := [ "Csv" ]
enum_LicenseRecommendationFilterName := [ "Finding", "FindingReasonCode", "LicenseName" ]

valid {
    input.Body.accountIds[_] == STRING
    input.Body.filters[_].name == enum_LicenseRecommendationFilterName[_]
    input.Body.filters[_].values[_] == STRING
    input.Body.fieldsToExport[_] == enum_ExportableLicenseField[_]
    input.Body.s3DestinationConfig.bucket == STRING
    input.Body.s3DestinationConfig.keyPrefix == STRING
    input.Body.fileFormat == enum_FileFormat[_]
    input.Body.includeMemberAccounts == BOOLEAN
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

GetAutoScalingGroupRecommendations

enum_CpuVendorArchitecture := [ "AWS_ARM64", "CURRENT" ]
enum_FilterName := [ "Finding", "FindingReasonCodes", "RecommendationSourceType", "InferredWorkloadTypes" ]

valid {
    input.Body.accountIds[_] == STRING
    input.Body.autoScalingGroupArns[_] == STRING
    input.Body.nextToken == STRING
    input.Body.maxResults == INTEGER
    input.Body.filters[_].name == enum_FilterName[_]
    input.Body.filters[_].values[_] == STRING
    input.Body.recommendationPreferences.cpuVendorArchitectures[_] == enum_CpuVendorArchitecture[_]
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

GetEBSVolumeRecommendations

enum_EBSFilterName := [ "Finding" ]

valid {
    input.Body.volumeArns[_] == STRING
    input.Body.nextToken == STRING
    input.Body.maxResults == INTEGER
    input.Body.filters[_].name == enum_EBSFilterName[_]
    input.Body.filters[_].values[_] == STRING
    input.Body.accountIds[_] == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

GetEC2InstanceRecommendations

enum_CpuVendorArchitecture := [ "AWS_ARM64", "CURRENT" ]
enum_FilterName := [ "Finding", "FindingReasonCodes", "RecommendationSourceType", "InferredWorkloadTypes" ]

valid {
    input.Body.instanceArns[_] == STRING
    input.Body.nextToken == STRING
    input.Body.maxResults == INTEGER
    input.Body.filters[_].name == enum_FilterName[_]
    input.Body.filters[_].values[_] == STRING
    input.Body.accountIds[_] == STRING
    input.Body.recommendationPreferences.cpuVendorArchitectures[_] == enum_CpuVendorArchitecture[_]
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

GetEC2RecommendationProjectedMetrics

enum_CpuVendorArchitecture := [ "AWS_ARM64", "CURRENT" ]
enum_MetricStatistic := [ "Maximum", "Average" ]

valid {
    input.Body.instanceArn == STRING
    input.Body.stat == enum_MetricStatistic[_]
    input.Body.period == INTEGER
    input.Body.startTime == TIMESTAMP
    input.Body.endTime == TIMESTAMP
    input.Body.recommendationPreferences.cpuVendorArchitectures[_] == enum_CpuVendorArchitecture[_]
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

GetECSServiceRecommendationProjectedMetrics

enum_MetricStatistic := [ "Maximum", "Average" ]

valid {
    input.Body.serviceArn == STRING
    input.Body.stat == enum_MetricStatistic[_]
    input.Body.period == INTEGER
    input.Body.startTime == TIMESTAMP
    input.Body.endTime == TIMESTAMP
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

GetECSServiceRecommendations

enum_ECSServiceRecommendationFilterName := [ "Finding", "FindingReasonCode" ]

valid {
    input.Body.serviceArns[_] == STRING
    input.Body.nextToken == STRING
    input.Body.maxResults == INTEGER
    input.Body.filters[_].name == enum_ECSServiceRecommendationFilterName[_]
    input.Body.filters[_].values[_] == STRING
    input.Body.accountIds[_] == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

GetEffectiveRecommendationPreferences

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

GetEnrollmentStatus

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

GetEnrollmentStatusesForOrganization

enum_EnrollmentFilterName := [ "Status" ]

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

GetLambdaFunctionRecommendations

enum_LambdaFunctionRecommendationFilterName := [ "Finding", "FindingReasonCode" ]

valid {
    input.Body.functionArns[_] == STRING
    input.Body.accountIds[_] == STRING
    input.Body.filters[_].name == enum_LambdaFunctionRecommendationFilterName[_]
    input.Body.filters[_].values[_] == STRING
    input.Body.nextToken == STRING
    input.Body.maxResults == INTEGER
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

GetLicenseRecommendations

enum_LicenseRecommendationFilterName := [ "Finding", "FindingReasonCode", "LicenseName" ]

valid {
    input.Body.resourceArns[_] == STRING
    input.Body.nextToken == STRING
    input.Body.maxResults == INTEGER
    input.Body.filters[_].name == enum_LicenseRecommendationFilterName[_]
    input.Body.filters[_].values[_] == STRING
    input.Body.accountIds[_] == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

GetRecommendationPreferences

enum_ResourceType := [ "Ec2Instance", "AutoScalingGroup", "EbsVolume", "LambdaFunction", "NotApplicable", "EcsService", "License" ]
enum_ScopeName := [ "Organization", "AccountId", "ResourceArn" ]

valid {
    input.Body.resourceType == enum_ResourceType[_]
    input.Body.scope.name == enum_ScopeName[_]
    input.Body.scope.value == STRING
    input.Body.nextToken == STRING
    input.Body.maxResults == INTEGER
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

GetRecommendationSummaries

valid {
    input.Body.accountIds[_] == STRING
    input.Body.nextToken == STRING
    input.Body.maxResults == INTEGER
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

PutRecommendationPreferences

enum_CustomizableMetricHeadroom := [ "PERCENT_30", "PERCENT_20", "PERCENT_0" ]
enum_CustomizableMetricName := [ "CpuUtilization" ]
enum_CustomizableMetricThreshold := [ "P90", "P95", "P99_5" ]
enum_EnhancedInfrastructureMetrics := [ "Active", "Inactive" ]
enum_ExternalMetricsSource := [ "Datadog", "Dynatrace", "NewRelic", "Instana" ]
enum_InferredWorkloadTypesPreference := [ "Active", "Inactive" ]
enum_LookBackPeriodPreference := [ "DAYS_14", "DAYS_32", "DAYS_93" ]
enum_PreferredResourceName := [ "Ec2InstanceTypes" ]
enum_ResourceType := [ "Ec2Instance", "AutoScalingGroup", "EbsVolume", "LambdaFunction", "NotApplicable", "EcsService", "License" ]
enum_SavingsEstimationMode := [ "AfterDiscounts", "BeforeDiscounts" ]
enum_ScopeName := [ "Organization", "AccountId", "ResourceArn" ]

valid {
    input.Body.resourceType == enum_ResourceType[_]
    input.Body.scope.name == enum_ScopeName[_]
    input.Body.scope.value == STRING
    input.Body.enhancedInfrastructureMetrics == enum_EnhancedInfrastructureMetrics[_]
    input.Body.inferredWorkloadTypes == enum_InferredWorkloadTypesPreference[_]
    input.Body.externalMetricsPreference.source == enum_ExternalMetricsSource[_]
    input.Body.lookBackPeriod == enum_LookBackPeriodPreference[_]
    input.Body.utilizationPreferences[_].metricName == enum_CustomizableMetricName[_]
    input.Body.utilizationPreferences[_].metricParameters.threshold == enum_CustomizableMetricThreshold[_]
    input.Body.utilizationPreferences[_].metricParameters.headroom == enum_CustomizableMetricHeadroom[_]
    input.Body.preferredResources[_].name == enum_PreferredResourceName[_]
    input.Body.preferredResources[_].includeList[_] == STRING
    input.Body.preferredResources[_].excludeList[_] == STRING
    input.Body.savingsEstimationMode == enum_SavingsEstimationMode[_]
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

UpdateEnrollmentStatus

enum_Status := [ "Active", "Inactive", "Pending", "Failed" ]

valid {
    input.Body.status == enum_Status[_]
    input.Body.includeMemberAccounts == BOOLEAN
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}