RESILIENCEHUB

AcceptResourceGroupingRecommendations

valid {
    input.Body.appArn == STRING
    input.Body.entries[_].groupingRecommendationId == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

AddDraftAppVersionResourceMappings

enum_PhysicalIdentifierType := [ "Arn", "Native" ]
enum_ResourceMappingType := [ "CfnStack", "Resource", "AppRegistryApp", "ResourceGroup", "Terraform", "EKS" ]

valid {
    input.Body.appArn == STRING
    input.Body.resourceMappings[_].appRegistryAppName == STRING
    input.Body.resourceMappings[_].eksSourceName == STRING
    input.Body.resourceMappings[_].logicalStackName == STRING
    input.Body.resourceMappings[_].mappingType == enum_ResourceMappingType[_]
    input.Body.resourceMappings[_].physicalResourceId.awsAccountId == STRING
    input.Body.resourceMappings[_].physicalResourceId.awsRegion == STRING
    input.Body.resourceMappings[_].physicalResourceId.identifier == STRING
    input.Body.resourceMappings[_].physicalResourceId.type == enum_PhysicalIdentifierType[_]
    input.Body.resourceMappings[_].resourceGroupName == STRING
    input.Body.resourceMappings[_].resourceName == STRING
    input.Body.resourceMappings[_].terraformSourceName == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

BatchUpdateRecommendationStatus

enum_ExcludeRecommendationReason := [ "AlreadyImplemented", "NotRelevant", "ComplexityOfImplementation" ]

valid {
    input.Body.appArn == STRING
    input.Body.requestEntries[_].appComponentId == STRING
    input.Body.requestEntries[_].entryId == STRING
    input.Body.requestEntries[_].excludeReason == enum_ExcludeRecommendationReason[_]
    input.Body.requestEntries[_].excluded == BOOLEAN
    input.Body.requestEntries[_].item.resourceId == STRING
    input.Body.requestEntries[_].item.targetAccountId == STRING
    input.Body.requestEntries[_].item.targetRegion == STRING
    input.Body.requestEntries[_].referenceId == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

CreateApp

enum_AppAssessmentScheduleType := [ "Disabled", "Daily" ]
enum_EventType := [ "ScheduledAssessmentFailure", "DriftDetected" ]
enum_PermissionModelType := [ "LegacyIAMUser", "RoleBased" ]

valid {
    input.Body.assessmentSchedule == enum_AppAssessmentScheduleType[_]
    input.Body.awsApplicationArn == STRING
    input.Body.clientToken == STRING
    input.Body.description == STRING
    input.Body.eventSubscriptions[_].eventType == enum_EventType[_]
    input.Body.eventSubscriptions[_].name == STRING
    input.Body.eventSubscriptions[_].snsTopicArn == STRING
    input.Body.name == STRING
    input.Body.permissionModel.crossAccountRoleArns[_] == STRING
    input.Body.permissionModel.invokerRoleName == STRING
    input.Body.permissionModel.type == enum_PermissionModelType[_]
    input.Body.policyArn == STRING
    input.Body.tags.STRING == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

CreateAppVersionAppComponent

valid {
    input.Body.additionalInfo.STRING[_] == STRING
    input.Body.appArn == STRING
    input.Body.clientToken == STRING
    input.Body.id == STRING
    input.Body.name == STRING
    input.Body.type == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

CreateAppVersionResource

valid {
    input.Body.additionalInfo.STRING[_] == STRING
    input.Body.appArn == STRING
    input.Body.appComponents[_] == STRING
    input.Body.awsAccountId == STRING
    input.Body.awsRegion == STRING
    input.Body.clientToken == STRING
    input.Body.logicalResourceId.eksSourceName == STRING
    input.Body.logicalResourceId.identifier == STRING
    input.Body.logicalResourceId.logicalStackName == STRING
    input.Body.logicalResourceId.resourceGroupName == STRING
    input.Body.logicalResourceId.terraformSourceName == STRING
    input.Body.physicalResourceId == STRING
    input.Body.resourceName == STRING
    input.Body.resourceType == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

CreateRecommendationTemplate

enum_RenderRecommendationType := [ "Alarm", "Sop", "Test" ]
enum_TemplateFormat := [ "CfnYaml", "CfnJson" ]

valid {
    input.Body.assessmentArn == STRING
    input.Body.bucketName == STRING
    input.Body.clientToken == STRING
    input.Body.format == enum_TemplateFormat[_]
    input.Body.name == STRING
    input.Body.recommendationIds[_] == STRING
    input.Body.recommendationTypes[_] == enum_RenderRecommendationType[_]
    input.Body.tags.STRING == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

CreateResiliencyPolicy

enum_DataLocationConstraint := [ "AnyLocation", "SameContinent", "SameCountry" ]
enum_ResiliencyPolicyTier := [ "MissionCritical", "Critical", "Important", "CoreServices", "NonCritical", "NotApplicable" ]

valid {
    input.Body.clientToken == STRING
    input.Body.dataLocationConstraint == enum_DataLocationConstraint[_]
    input.Body.policy.Software.rpoInSecs == INTEGER
    input.Body.policy.Software.rtoInSecs == INTEGER
    input.Body.policy.Hardware.rpoInSecs == INTEGER
    input.Body.policy.Hardware.rtoInSecs == INTEGER
    input.Body.policy.AZ.rpoInSecs == INTEGER
    input.Body.policy.AZ.rtoInSecs == INTEGER
    input.Body.policy.Region.rpoInSecs == INTEGER
    input.Body.policy.Region.rtoInSecs == INTEGER
    input.Body.policyDescription == STRING
    input.Body.policyName == STRING
    input.Body.tags.STRING == STRING
    input.Body.tier == enum_ResiliencyPolicyTier[_]
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DeleteApp

valid {
    input.Body.appArn == STRING
    input.Body.clientToken == STRING
    input.Body.forceDelete == BOOLEAN
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DeleteAppAssessment

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

DeleteAppInputSource

valid {
    input.Body.appArn == STRING
    input.Body.clientToken == STRING
    input.Body.eksSourceClusterNamespace.eksClusterArn == STRING
    input.Body.eksSourceClusterNamespace.namespace == STRING
    input.Body.sourceArn == STRING
    input.Body.terraformSource.s3StateFileUrl == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DeleteAppVersionAppComponent

valid {
    input.Body.appArn == STRING
    input.Body.clientToken == STRING
    input.Body.id == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DeleteAppVersionResource

valid {
    input.Body.appArn == STRING
    input.Body.awsAccountId == STRING
    input.Body.awsRegion == STRING
    input.Body.clientToken == STRING
    input.Body.logicalResourceId.eksSourceName == STRING
    input.Body.logicalResourceId.identifier == STRING
    input.Body.logicalResourceId.logicalStackName == STRING
    input.Body.logicalResourceId.resourceGroupName == STRING
    input.Body.logicalResourceId.terraformSourceName == STRING
    input.Body.physicalResourceId == STRING
    input.Body.resourceName == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DeleteRecommendationTemplate

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

DeleteResiliencyPolicy

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

DescribeApp

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

DescribeAppAssessment

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

DescribeAppVersion

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

DescribeAppVersionAppComponent

valid {
    input.Body.appArn == STRING
    input.Body.appVersion == STRING
    input.Body.id == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DescribeAppVersionResource

valid {
    input.Body.appArn == STRING
    input.Body.appVersion == STRING
    input.Body.awsAccountId == STRING
    input.Body.awsRegion == STRING
    input.Body.logicalResourceId.eksSourceName == STRING
    input.Body.logicalResourceId.identifier == STRING
    input.Body.logicalResourceId.logicalStackName == STRING
    input.Body.logicalResourceId.resourceGroupName == STRING
    input.Body.logicalResourceId.terraformSourceName == STRING
    input.Body.physicalResourceId == STRING
    input.Body.resourceName == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DescribeAppVersionResourcesResolutionStatus

valid {
    input.Body.appArn == STRING
    input.Body.appVersion == STRING
    input.Body.resolutionId == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DescribeAppVersionTemplate

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

DescribeDraftAppVersionResourcesImportStatus

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

DescribeMetricsExport

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

DescribeResiliencyPolicy

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

DescribeResourceGroupingRecommendationTask

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

ImportResourcesToDraftAppVersion

enum_ResourceImportStrategyType := [ "AddOnly", "ReplaceAll" ]

valid {
    input.Body.appArn == STRING
    input.Body.eksSources[_].eksClusterArn == STRING
    input.Body.eksSources[_].namespaces[_] == STRING
    input.Body.importStrategy == enum_ResourceImportStrategyType[_]
    input.Body.sourceArns[_] == STRING
    input.Body.terraformSources[_].s3StateFileUrl == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ListAlarmRecommendations

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

ListAppAssessmentComplianceDrifts

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

ListAppAssessmentResourceDrifts

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

ListAppAssessments

enum_AssessmentInvoker := [ "User", "System" ]
enum_AssessmentStatus := [ "Pending", "InProgress", "Failed", "Success" ]
enum_ComplianceStatus := [ "PolicyBreached", "PolicyMet", "NotApplicable", "MissingPolicy" ]

valid {
    input.Qs.appArn == STRING
    input.Qs.assessmentName == STRING
    input.Qs.assessmentStatus[_] == enum_AssessmentStatus[_]
    input.Qs.complianceStatus == enum_ComplianceStatus[_]
    input.Qs.invoker == enum_AssessmentInvoker[_]
    input.Qs.maxResults == INTEGER
    input.Qs.nextToken == STRING
    input.Qs.reverseOrder == BOOLEAN
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ListAppComponentCompliances

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

ListAppComponentRecommendations

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

ListAppInputSources

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

ListAppVersionAppComponents

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

ListAppVersionResourceMappings

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

ListAppVersionResources

valid {
    input.Body.appArn == STRING
    input.Body.appVersion == STRING
    input.Body.maxResults == INTEGER
    input.Body.nextToken == STRING
    input.Body.resolutionId == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ListAppVersions

valid {
    input.Body.appArn == STRING
    input.Body.endTime == TIMESTAMP
    input.Body.maxResults == INTEGER
    input.Body.nextToken == STRING
    input.Body.startTime == TIMESTAMP
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ListApps

valid {
    input.Qs.appArn == STRING
    input.Qs.awsApplicationArn == STRING
    input.Qs.fromLastAssessmentTime == TIMESTAMP
    input.Qs.maxResults == INTEGER
    input.Qs.name == STRING
    input.Qs.nextToken == STRING
    input.Qs.reverseOrder == BOOLEAN
    input.Qs.toLastAssessmentTime == TIMESTAMP
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ListMetrics

enum_ConditionOperatorType := [ "Equals", "NotEquals", "GreaterThen", "GreaterOrEquals", "LessThen", "LessOrEquals" ]
enum_FieldAggregationType := [ "Min", "Max", "Sum", "Avg", "Count" ]

valid {
    input.Body.conditions[_].field == STRING
    input.Body.conditions[_].operator == enum_ConditionOperatorType[_]
    input.Body.conditions[_].value == STRING
    input.Body.dataSource == STRING
    input.Body.fields[_].aggregation == enum_FieldAggregationType[_]
    input.Body.fields[_].name == STRING
    input.Body.maxResults == INTEGER
    input.Body.nextToken == STRING
    input.Body.sorts[_].ascending == BOOLEAN
    input.Body.sorts[_].field == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ListRecommendationTemplates

enum_RecommendationTemplateStatus := [ "Pending", "InProgress", "Failed", "Success" ]

valid {
    input.Qs.assessmentArn == STRING
    input.Qs.maxResults == INTEGER
    input.Qs.name == STRING
    input.Qs.nextToken == STRING
    input.Qs.recommendationTemplateArn == STRING
    input.Qs.reverseOrder == BOOLEAN
    input.Qs.status[_] == enum_RecommendationTemplateStatus[_]
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ListResiliencyPolicies

valid {
    input.Qs.maxResults == INTEGER
    input.Qs.nextToken == STRING
    input.Qs.policyName == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ListResourceGroupingRecommendations

valid {
    input.Qs.appArn == STRING
    input.Qs.maxResults == INTEGER
    input.Qs.nextToken == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ListSopRecommendations

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

ListSuggestedResiliencyPolicies

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

ListTagsForResource

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

ListTestRecommendations

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

ListUnsupportedAppVersionResources

valid {
    input.Body.appArn == STRING
    input.Body.appVersion == STRING
    input.Body.maxResults == INTEGER
    input.Body.nextToken == STRING
    input.Body.resolutionId == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

PublishAppVersion

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

PutDraftAppVersionTemplate

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

RejectResourceGroupingRecommendations

enum_GroupingRecommendationRejectionReason := [ "DistinctBusinessPurpose", "SeparateDataConcern", "DistinctUserGroupHandling", "Other" ]

valid {
    input.Body.appArn == STRING
    input.Body.entries[_].groupingRecommendationId == STRING
    input.Body.entries[_].rejectionReason == enum_GroupingRecommendationRejectionReason[_]
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

RemoveDraftAppVersionResourceMappings

valid {
    input.Body.appArn == STRING
    input.Body.appRegistryAppNames[_] == STRING
    input.Body.eksSourceNames[_] == STRING
    input.Body.logicalStackNames[_] == STRING
    input.Body.resourceGroupNames[_] == STRING
    input.Body.resourceNames[_] == STRING
    input.Body.terraformSourceNames[_] == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ResolveAppVersionResources

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

StartAppAssessment

valid {
    input.Body.appArn == STRING
    input.Body.appVersion == STRING
    input.Body.assessmentName == STRING
    input.Body.clientToken == STRING
    input.Body.tags.STRING == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

StartMetricsExport

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

StartResourceGroupingRecommendationTask

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

TagResource

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

UntagResource

valid {
    input.ReqMap.resourceArn == STRING
    input.Qs.tagKeys[_] == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

UpdateApp

enum_AppAssessmentScheduleType := [ "Disabled", "Daily" ]
enum_EventType := [ "ScheduledAssessmentFailure", "DriftDetected" ]
enum_PermissionModelType := [ "LegacyIAMUser", "RoleBased" ]

valid {
    input.Body.appArn == STRING
    input.Body.assessmentSchedule == enum_AppAssessmentScheduleType[_]
    input.Body.clearResiliencyPolicyArn == BOOLEAN
    input.Body.description == STRING
    input.Body.eventSubscriptions[_].eventType == enum_EventType[_]
    input.Body.eventSubscriptions[_].name == STRING
    input.Body.eventSubscriptions[_].snsTopicArn == STRING
    input.Body.permissionModel.crossAccountRoleArns[_] == STRING
    input.Body.permissionModel.invokerRoleName == STRING
    input.Body.permissionModel.type == enum_PermissionModelType[_]
    input.Body.policyArn == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

UpdateAppVersion

valid {
    input.Body.additionalInfo.STRING[_] == STRING
    input.Body.appArn == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

UpdateAppVersionAppComponent

valid {
    input.Body.additionalInfo.STRING[_] == STRING
    input.Body.appArn == STRING
    input.Body.id == STRING
    input.Body.name == STRING
    input.Body.type == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

UpdateAppVersionResource

valid {
    input.Body.additionalInfo.STRING[_] == STRING
    input.Body.appArn == STRING
    input.Body.appComponents[_] == STRING
    input.Body.awsAccountId == STRING
    input.Body.awsRegion == STRING
    input.Body.excluded == BOOLEAN
    input.Body.logicalResourceId.eksSourceName == STRING
    input.Body.logicalResourceId.identifier == STRING
    input.Body.logicalResourceId.logicalStackName == STRING
    input.Body.logicalResourceId.resourceGroupName == STRING
    input.Body.logicalResourceId.terraformSourceName == STRING
    input.Body.physicalResourceId == STRING
    input.Body.resourceName == STRING
    input.Body.resourceType == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

UpdateResiliencyPolicy

enum_DataLocationConstraint := [ "AnyLocation", "SameContinent", "SameCountry" ]
enum_ResiliencyPolicyTier := [ "MissionCritical", "Critical", "Important", "CoreServices", "NonCritical", "NotApplicable" ]

valid {
    input.Body.dataLocationConstraint == enum_DataLocationConstraint[_]
    input.Body.policy.Software.rpoInSecs == INTEGER
    input.Body.policy.Software.rtoInSecs == INTEGER
    input.Body.policy.Hardware.rpoInSecs == INTEGER
    input.Body.policy.Hardware.rtoInSecs == INTEGER
    input.Body.policy.AZ.rpoInSecs == INTEGER
    input.Body.policy.AZ.rtoInSecs == INTEGER
    input.Body.policy.Region.rpoInSecs == INTEGER
    input.Body.policy.Region.rtoInSecs == INTEGER
    input.Body.policyArn == STRING
    input.Body.policyDescription == STRING
    input.Body.policyName == STRING
    input.Body.tier == enum_ResiliencyPolicyTier[_]
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}