CreateLifecyclePolicy

enum_DefaultPolicyTypeValues := [ "VOLUME", "INSTANCE" ]
enum_EventSourceValues := [ "MANAGED_CWE" ]
enum_EventTypeValues := [ "shareSnapshot" ]
enum_ExecutionHandlerServiceValues := [ "AWS_SYSTEMS_MANAGER" ]
enum_IntervalUnitValues := [ "HOURS" ]
enum_LocationValues := [ "CLOUD", "OUTPOST_LOCAL" ]
enum_PolicyLanguageValues := [ "SIMPLIFIED", "STANDARD" ]
enum_PolicyTypeValues := [ "EBS_SNAPSHOT_MANAGEMENT", "IMAGE_MANAGEMENT", "EVENT_BASED_POLICY" ]
enum_ResourceLocationValues := [ "CLOUD", "OUTPOST" ]
enum_ResourceTypeValues := [ "VOLUME", "INSTANCE" ]
enum_RetentionIntervalUnitValues := [ "DAYS", "WEEKS", "MONTHS", "YEARS" ]
enum_SettablePolicyStateValues := [ "ENABLED", "DISABLED" ]
enum_StageValues := [ "PRE", "POST" ]

valid {
    input.Body.ExecutionRoleArn == STRING
    input.Body.Description == STRING
    input.Body.State == enum_SettablePolicyStateValues[_]
    input.Body.PolicyDetails.PolicyType == enum_PolicyTypeValues[_]
    input.Body.PolicyDetails.ResourceTypes[_] == enum_ResourceTypeValues[_]
    input.Body.PolicyDetails.ResourceLocations[_] == enum_ResourceLocationValues[_]
    input.Body.PolicyDetails.TargetTags[_].Key == STRING
    input.Body.PolicyDetails.TargetTags[_].Value == STRING
    input.Body.PolicyDetails.Schedules[_].Name == STRING
    input.Body.PolicyDetails.Schedules[_].CopyTags == BOOLEAN
    input.Body.PolicyDetails.Schedules[_].TagsToAdd[_].Key == STRING
    input.Body.PolicyDetails.Schedules[_].TagsToAdd[_].Value == STRING
    input.Body.PolicyDetails.Schedules[_].VariableTags[_].Key == STRING
    input.Body.PolicyDetails.Schedules[_].VariableTags[_].Value == STRING
    input.Body.PolicyDetails.Schedules[_].CreateRule.Location == enum_LocationValues[_]
    input.Body.PolicyDetails.Schedules[_].CreateRule.Interval == INTEGER
    input.Body.PolicyDetails.Schedules[_].CreateRule.IntervalUnit == enum_IntervalUnitValues[_]
    input.Body.PolicyDetails.Schedules[_].CreateRule.Times[_] == STRING
    input.Body.PolicyDetails.Schedules[_].CreateRule.CronExpression == STRING
    input.Body.PolicyDetails.Schedules[_].CreateRule.Scripts[_].Stages[_] == enum_StageValues[_]
    input.Body.PolicyDetails.Schedules[_].CreateRule.Scripts[_].ExecutionHandlerService == enum_ExecutionHandlerServiceValues[_]
    input.Body.PolicyDetails.Schedules[_].CreateRule.Scripts[_].ExecutionHandler == STRING
    input.Body.PolicyDetails.Schedules[_].CreateRule.Scripts[_].ExecuteOperationOnScriptFailure == BOOLEAN
    input.Body.PolicyDetails.Schedules[_].CreateRule.Scripts[_].ExecutionTimeout == INTEGER
    input.Body.PolicyDetails.Schedules[_].CreateRule.Scripts[_].MaximumRetryCount == INTEGER
    input.Body.PolicyDetails.Schedules[_].RetainRule.Count == INTEGER
    input.Body.PolicyDetails.Schedules[_].RetainRule.Interval == INTEGER
    input.Body.PolicyDetails.Schedules[_].RetainRule.IntervalUnit == enum_RetentionIntervalUnitValues[_]
    input.Body.PolicyDetails.Schedules[_].FastRestoreRule.Count == INTEGER
    input.Body.PolicyDetails.Schedules[_].FastRestoreRule.Interval == INTEGER
    input.Body.PolicyDetails.Schedules[_].FastRestoreRule.IntervalUnit == enum_RetentionIntervalUnitValues[_]
    input.Body.PolicyDetails.Schedules[_].FastRestoreRule.AvailabilityZones[_] == STRING
    input.Body.PolicyDetails.Schedules[_].CrossRegionCopyRules[_].TargetRegion == STRING
    input.Body.PolicyDetails.Schedules[_].CrossRegionCopyRules[_].Target == STRING
    input.Body.PolicyDetails.Schedules[_].CrossRegionCopyRules[_].Encrypted == BOOLEAN
    input.Body.PolicyDetails.Schedules[_].CrossRegionCopyRules[_].CmkArn == STRING
    input.Body.PolicyDetails.Schedules[_].CrossRegionCopyRules[_].CopyTags == BOOLEAN
    input.Body.PolicyDetails.Schedules[_].CrossRegionCopyRules[_].RetainRule.Interval == INTEGER
    input.Body.PolicyDetails.Schedules[_].CrossRegionCopyRules[_].RetainRule.IntervalUnit == enum_RetentionIntervalUnitValues[_]
    input.Body.PolicyDetails.Schedules[_].CrossRegionCopyRules[_].DeprecateRule.Interval == INTEGER
    input.Body.PolicyDetails.Schedules[_].CrossRegionCopyRules[_].DeprecateRule.IntervalUnit == enum_RetentionIntervalUnitValues[_]
    input.Body.PolicyDetails.Schedules[_].ShareRules[_].TargetAccounts[_] == STRING
    input.Body.PolicyDetails.Schedules[_].ShareRules[_].UnshareInterval == INTEGER
    input.Body.PolicyDetails.Schedules[_].ShareRules[_].UnshareIntervalUnit == enum_RetentionIntervalUnitValues[_]
    input.Body.PolicyDetails.Schedules[_].DeprecateRule.Count == INTEGER
    input.Body.PolicyDetails.Schedules[_].DeprecateRule.Interval == INTEGER
    input.Body.PolicyDetails.Schedules[_].DeprecateRule.IntervalUnit == enum_RetentionIntervalUnitValues[_]
    input.Body.PolicyDetails.Schedules[_].ArchiveRule.RetainRule.RetentionArchiveTier.Count == INTEGER
    input.Body.PolicyDetails.Schedules[_].ArchiveRule.RetainRule.RetentionArchiveTier.Interval == INTEGER
    input.Body.PolicyDetails.Schedules[_].ArchiveRule.RetainRule.RetentionArchiveTier.IntervalUnit == enum_RetentionIntervalUnitValues[_]
    input.Body.PolicyDetails.Parameters.ExcludeBootVolume == BOOLEAN
    input.Body.PolicyDetails.Parameters.NoReboot == BOOLEAN
    input.Body.PolicyDetails.Parameters.ExcludeDataVolumeTags[_].Key == STRING
    input.Body.PolicyDetails.Parameters.ExcludeDataVolumeTags[_].Value == STRING
    input.Body.PolicyDetails.EventSource.Type == enum_EventSourceValues[_]
    input.Body.PolicyDetails.EventSource.Parameters.EventType == enum_EventTypeValues[_]
    input.Body.PolicyDetails.EventSource.Parameters.SnapshotOwner[_] == STRING
    input.Body.PolicyDetails.EventSource.Parameters.DescriptionRegex == STRING
    input.Body.PolicyDetails.Actions[_].Name == STRING
    input.Body.PolicyDetails.Actions[_].CrossRegionCopy[_].Target == STRING
    input.Body.PolicyDetails.Actions[_].CrossRegionCopy[_].EncryptionConfiguration.Encrypted == BOOLEAN
    input.Body.PolicyDetails.Actions[_].CrossRegionCopy[_].EncryptionConfiguration.CmkArn == STRING
    input.Body.PolicyDetails.Actions[_].CrossRegionCopy[_].RetainRule.Interval == INTEGER
    input.Body.PolicyDetails.Actions[_].CrossRegionCopy[_].RetainRule.IntervalUnit == enum_RetentionIntervalUnitValues[_]
    input.Body.PolicyDetails.PolicyLanguage == enum_PolicyLanguageValues[_]
    input.Body.PolicyDetails.ResourceType == enum_ResourceTypeValues[_]
    input.Body.PolicyDetails.CreateInterval == INTEGER
    input.Body.PolicyDetails.RetainInterval == INTEGER
    input.Body.PolicyDetails.CopyTags == BOOLEAN
    input.Body.PolicyDetails.CrossRegionCopyTargets[_].TargetRegion == STRING
    input.Body.PolicyDetails.ExtendDeletion == BOOLEAN
    input.Body.PolicyDetails.Exclusions.ExcludeBootVolumes == BOOLEAN
    input.Body.PolicyDetails.Exclusions.ExcludeVolumeTypes[_] == STRING
    input.Body.PolicyDetails.Exclusions.ExcludeTags[_].Key == STRING
    input.Body.PolicyDetails.Exclusions.ExcludeTags[_].Value == STRING
    input.Body.Tags.STRING == STRING
    input.Body.DefaultPolicy == enum_DefaultPolicyTypeValues[_]
    input.Body.CreateInterval == INTEGER
    input.Body.RetainInterval == INTEGER
    input.Body.CopyTags == BOOLEAN
    input.Body.ExtendDeletion == BOOLEAN
    input.Body.CrossRegionCopyTargets[_].TargetRegion == STRING
    input.Body.Exclusions.ExcludeBootVolumes == BOOLEAN
    input.Body.Exclusions.ExcludeVolumeTypes[_] == STRING
    input.Body.Exclusions.ExcludeTags[_].Key == STRING
    input.Body.Exclusions.ExcludeTags[_].Value == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DeleteLifecyclePolicy

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

GetLifecyclePolicies

enum_DefaultPoliciesTypeValues := [ "VOLUME", "INSTANCE", "ALL" ]
enum_GettablePolicyStateValues := [ "ENABLED", "DISABLED", "ERROR" ]
enum_ResourceTypeValues := [ "VOLUME", "INSTANCE" ]

valid {
    input.Qs.policyIds[_] == STRING
    input.Qs.state == enum_GettablePolicyStateValues[_]
    input.Qs.resourceTypes[_] == enum_ResourceTypeValues[_]
    input.Qs.targetTags[_] == STRING
    input.Qs.tagsToAdd[_] == STRING
    input.Qs.defaultPolicyType == enum_DefaultPoliciesTypeValues[_]
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

GetLifecyclePolicy

valid {
    input.ReqMap.policyId == 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
}

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
}

UpdateLifecyclePolicy

enum_EventSourceValues := [ "MANAGED_CWE" ]
enum_EventTypeValues := [ "shareSnapshot" ]
enum_ExecutionHandlerServiceValues := [ "AWS_SYSTEMS_MANAGER" ]
enum_IntervalUnitValues := [ "HOURS" ]
enum_LocationValues := [ "CLOUD", "OUTPOST_LOCAL" ]
enum_PolicyLanguageValues := [ "SIMPLIFIED", "STANDARD" ]
enum_PolicyTypeValues := [ "EBS_SNAPSHOT_MANAGEMENT", "IMAGE_MANAGEMENT", "EVENT_BASED_POLICY" ]
enum_ResourceLocationValues := [ "CLOUD", "OUTPOST" ]
enum_ResourceTypeValues := [ "VOLUME", "INSTANCE" ]
enum_RetentionIntervalUnitValues := [ "DAYS", "WEEKS", "MONTHS", "YEARS" ]
enum_SettablePolicyStateValues := [ "ENABLED", "DISABLED" ]
enum_StageValues := [ "PRE", "POST" ]

valid {
    input.Body.ExecutionRoleArn == STRING
    input.Body.State == enum_SettablePolicyStateValues[_]
    input.Body.Description == STRING
    input.Body.PolicyDetails.PolicyType == enum_PolicyTypeValues[_]
    input.Body.PolicyDetails.ResourceTypes[_] == enum_ResourceTypeValues[_]
    input.Body.PolicyDetails.ResourceLocations[_] == enum_ResourceLocationValues[_]
    input.Body.PolicyDetails.TargetTags[_].Key == STRING
    input.Body.PolicyDetails.TargetTags[_].Value == STRING
    input.Body.PolicyDetails.Schedules[_].Name == STRING
    input.Body.PolicyDetails.Schedules[_].CopyTags == BOOLEAN
    input.Body.PolicyDetails.Schedules[_].TagsToAdd[_].Key == STRING
    input.Body.PolicyDetails.Schedules[_].TagsToAdd[_].Value == STRING
    input.Body.PolicyDetails.Schedules[_].VariableTags[_].Key == STRING
    input.Body.PolicyDetails.Schedules[_].VariableTags[_].Value == STRING
    input.Body.PolicyDetails.Schedules[_].CreateRule.Location == enum_LocationValues[_]
    input.Body.PolicyDetails.Schedules[_].CreateRule.Interval == INTEGER
    input.Body.PolicyDetails.Schedules[_].CreateRule.IntervalUnit == enum_IntervalUnitValues[_]
    input.Body.PolicyDetails.Schedules[_].CreateRule.Times[_] == STRING
    input.Body.PolicyDetails.Schedules[_].CreateRule.CronExpression == STRING
    input.Body.PolicyDetails.Schedules[_].CreateRule.Scripts[_].Stages[_] == enum_StageValues[_]
    input.Body.PolicyDetails.Schedules[_].CreateRule.Scripts[_].ExecutionHandlerService == enum_ExecutionHandlerServiceValues[_]
    input.Body.PolicyDetails.Schedules[_].CreateRule.Scripts[_].ExecutionHandler == STRING
    input.Body.PolicyDetails.Schedules[_].CreateRule.Scripts[_].ExecuteOperationOnScriptFailure == BOOLEAN
    input.Body.PolicyDetails.Schedules[_].CreateRule.Scripts[_].ExecutionTimeout == INTEGER
    input.Body.PolicyDetails.Schedules[_].CreateRule.Scripts[_].MaximumRetryCount == INTEGER
    input.Body.PolicyDetails.Schedules[_].RetainRule.Count == INTEGER
    input.Body.PolicyDetails.Schedules[_].RetainRule.Interval == INTEGER
    input.Body.PolicyDetails.Schedules[_].RetainRule.IntervalUnit == enum_RetentionIntervalUnitValues[_]
    input.Body.PolicyDetails.Schedules[_].FastRestoreRule.Count == INTEGER
    input.Body.PolicyDetails.Schedules[_].FastRestoreRule.Interval == INTEGER
    input.Body.PolicyDetails.Schedules[_].FastRestoreRule.IntervalUnit == enum_RetentionIntervalUnitValues[_]
    input.Body.PolicyDetails.Schedules[_].FastRestoreRule.AvailabilityZones[_] == STRING
    input.Body.PolicyDetails.Schedules[_].CrossRegionCopyRules[_].TargetRegion == STRING
    input.Body.PolicyDetails.Schedules[_].CrossRegionCopyRules[_].Target == STRING
    input.Body.PolicyDetails.Schedules[_].CrossRegionCopyRules[_].Encrypted == BOOLEAN
    input.Body.PolicyDetails.Schedules[_].CrossRegionCopyRules[_].CmkArn == STRING
    input.Body.PolicyDetails.Schedules[_].CrossRegionCopyRules[_].CopyTags == BOOLEAN
    input.Body.PolicyDetails.Schedules[_].CrossRegionCopyRules[_].RetainRule.Interval == INTEGER
    input.Body.PolicyDetails.Schedules[_].CrossRegionCopyRules[_].RetainRule.IntervalUnit == enum_RetentionIntervalUnitValues[_]
    input.Body.PolicyDetails.Schedules[_].CrossRegionCopyRules[_].DeprecateRule.Interval == INTEGER
    input.Body.PolicyDetails.Schedules[_].CrossRegionCopyRules[_].DeprecateRule.IntervalUnit == enum_RetentionIntervalUnitValues[_]
    input.Body.PolicyDetails.Schedules[_].ShareRules[_].TargetAccounts[_] == STRING
    input.Body.PolicyDetails.Schedules[_].ShareRules[_].UnshareInterval == INTEGER
    input.Body.PolicyDetails.Schedules[_].ShareRules[_].UnshareIntervalUnit == enum_RetentionIntervalUnitValues[_]
    input.Body.PolicyDetails.Schedules[_].DeprecateRule.Count == INTEGER
    input.Body.PolicyDetails.Schedules[_].DeprecateRule.Interval == INTEGER
    input.Body.PolicyDetails.Schedules[_].DeprecateRule.IntervalUnit == enum_RetentionIntervalUnitValues[_]
    input.Body.PolicyDetails.Schedules[_].ArchiveRule.RetainRule.RetentionArchiveTier.Count == INTEGER
    input.Body.PolicyDetails.Schedules[_].ArchiveRule.RetainRule.RetentionArchiveTier.Interval == INTEGER
    input.Body.PolicyDetails.Schedules[_].ArchiveRule.RetainRule.RetentionArchiveTier.IntervalUnit == enum_RetentionIntervalUnitValues[_]
    input.Body.PolicyDetails.Parameters.ExcludeBootVolume == BOOLEAN
    input.Body.PolicyDetails.Parameters.NoReboot == BOOLEAN
    input.Body.PolicyDetails.Parameters.ExcludeDataVolumeTags[_].Key == STRING
    input.Body.PolicyDetails.Parameters.ExcludeDataVolumeTags[_].Value == STRING
    input.Body.PolicyDetails.EventSource.Type == enum_EventSourceValues[_]
    input.Body.PolicyDetails.EventSource.Parameters.EventType == enum_EventTypeValues[_]
    input.Body.PolicyDetails.EventSource.Parameters.SnapshotOwner[_] == STRING
    input.Body.PolicyDetails.EventSource.Parameters.DescriptionRegex == STRING
    input.Body.PolicyDetails.Actions[_].Name == STRING
    input.Body.PolicyDetails.Actions[_].CrossRegionCopy[_].Target == STRING
    input.Body.PolicyDetails.Actions[_].CrossRegionCopy[_].EncryptionConfiguration.Encrypted == BOOLEAN
    input.Body.PolicyDetails.Actions[_].CrossRegionCopy[_].EncryptionConfiguration.CmkArn == STRING
    input.Body.PolicyDetails.Actions[_].CrossRegionCopy[_].RetainRule.Interval == INTEGER
    input.Body.PolicyDetails.Actions[_].CrossRegionCopy[_].RetainRule.IntervalUnit == enum_RetentionIntervalUnitValues[_]
    input.Body.PolicyDetails.PolicyLanguage == enum_PolicyLanguageValues[_]
    input.Body.PolicyDetails.ResourceType == enum_ResourceTypeValues[_]
    input.Body.PolicyDetails.CreateInterval == INTEGER
    input.Body.PolicyDetails.RetainInterval == INTEGER
    input.Body.PolicyDetails.CopyTags == BOOLEAN
    input.Body.PolicyDetails.CrossRegionCopyTargets[_].TargetRegion == STRING
    input.Body.PolicyDetails.ExtendDeletion == BOOLEAN
    input.Body.PolicyDetails.Exclusions.ExcludeBootVolumes == BOOLEAN
    input.Body.PolicyDetails.Exclusions.ExcludeVolumeTypes[_] == STRING
    input.Body.PolicyDetails.Exclusions.ExcludeTags[_].Key == STRING
    input.Body.PolicyDetails.Exclusions.ExcludeTags[_].Value == STRING
    input.Body.CreateInterval == INTEGER
    input.Body.RetainInterval == INTEGER
    input.Body.CopyTags == BOOLEAN
    input.Body.ExtendDeletion == BOOLEAN
    input.Body.CrossRegionCopyTargets[_].TargetRegion == STRING
    input.Body.Exclusions.ExcludeBootVolumes == BOOLEAN
    input.Body.Exclusions.ExcludeVolumeTypes[_] == STRING
    input.Body.Exclusions.ExcludeTags[_].Key == STRING
    input.Body.Exclusions.ExcludeTags[_].Value == STRING
    input.ReqMap.policyId == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}