STORAGEGATEWAY

ActivateGateway

valid {
    input.Body.ActivationKey == STRING
    input.Body.GatewayName == STRING
    input.Body.GatewayTimezone == STRING
    input.Body.GatewayRegion == STRING
    input.Body.GatewayType == STRING
    input.Body.TapeDriveType == STRING
    input.Body.MediumChangerType == STRING
    input.Body.Tags[_].Key == STRING
    input.Body.Tags[_].Value == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

AddCache

valid {
    input.Body.GatewayARN == STRING
    input.Body.DiskIds[_] == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

AddTagsToResource

valid {
    input.Body.ResourceARN == STRING
    input.Body.Tags[_].Key == STRING
    input.Body.Tags[_].Value == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

AddUploadBuffer

valid {
    input.Body.GatewayARN == STRING
    input.Body.DiskIds[_] == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

AddWorkingStorage

valid {
    input.Body.GatewayARN == STRING
    input.Body.DiskIds[_] == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

AssignTapePool

valid {
    input.Body.TapeARN == STRING
    input.Body.PoolId == STRING
    input.Body.BypassGovernanceRetention == BOOLEAN
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

AssociateFileSystem

valid {
    input.Body.UserName == STRING
    input.Body.Password == STRING
    input.Body.ClientToken == STRING
    input.Body.GatewayARN == STRING
    input.Body.LocationARN == STRING
    input.Body.Tags[_].Key == STRING
    input.Body.Tags[_].Value == STRING
    input.Body.AuditDestinationARN == STRING
    input.Body.CacheAttributes.CacheStaleTimeoutInSeconds == INTEGER
    input.Body.EndpointNetworkConfiguration.IpAddresses[_] == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

AttachVolume

valid {
    input.Body.GatewayARN == STRING
    input.Body.TargetName == STRING
    input.Body.VolumeARN == STRING
    input.Body.NetworkInterfaceId == STRING
    input.Body.DiskId == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

CancelArchival

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

CancelRetrieval

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

CreateCachediSCSIVolume

valid {
    input.Body.GatewayARN == STRING
    input.Body.VolumeSizeInBytes == LONG
    input.Body.SnapshotId == STRING
    input.Body.TargetName == STRING
    input.Body.SourceVolumeARN == STRING
    input.Body.NetworkInterfaceId == STRING
    input.Body.ClientToken == STRING
    input.Body.KMSEncrypted == BOOLEAN
    input.Body.KMSKey == STRING
    input.Body.Tags[_].Key == STRING
    input.Body.Tags[_].Value == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

CreateNFSFileShare

enum_ObjectACL := [ "private", "public-read", "public-read-write", "authenticated-read", "bucket-owner-read", "bucket-owner-full-control", "aws-exec-read" ]

valid {
    input.Body.ClientToken == STRING
    input.Body.NFSFileShareDefaults.FileMode == STRING
    input.Body.NFSFileShareDefaults.DirectoryMode == STRING
    input.Body.NFSFileShareDefaults.GroupId == LONG
    input.Body.NFSFileShareDefaults.OwnerId == LONG
    input.Body.GatewayARN == STRING
    input.Body.KMSEncrypted == BOOLEAN
    input.Body.KMSKey == STRING
    input.Body.Role == STRING
    input.Body.LocationARN == STRING
    input.Body.DefaultStorageClass == STRING
    input.Body.ObjectACL == enum_ObjectACL[_]
    input.Body.ClientList[_] == STRING
    input.Body.Squash == STRING
    input.Body.ReadOnly == BOOLEAN
    input.Body.GuessMIMETypeEnabled == BOOLEAN
    input.Body.RequesterPays == BOOLEAN
    input.Body.Tags[_].Key == STRING
    input.Body.Tags[_].Value == STRING
    input.Body.FileShareName == STRING
    input.Body.CacheAttributes.CacheStaleTimeoutInSeconds == INTEGER
    input.Body.NotificationPolicy == STRING
    input.Body.VPCEndpointDNSName == STRING
    input.Body.BucketRegion == STRING
    input.Body.AuditDestinationARN == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

CreateSMBFileShare

enum_CaseSensitivity := [ "ClientSpecified", "CaseSensitive" ]
enum_ObjectACL := [ "private", "public-read", "public-read-write", "authenticated-read", "bucket-owner-read", "bucket-owner-full-control", "aws-exec-read" ]

valid {
    input.Body.ClientToken == STRING
    input.Body.GatewayARN == STRING
    input.Body.KMSEncrypted == BOOLEAN
    input.Body.KMSKey == STRING
    input.Body.Role == STRING
    input.Body.LocationARN == STRING
    input.Body.DefaultStorageClass == STRING
    input.Body.ObjectACL == enum_ObjectACL[_]
    input.Body.ReadOnly == BOOLEAN
    input.Body.GuessMIMETypeEnabled == BOOLEAN
    input.Body.RequesterPays == BOOLEAN
    input.Body.SMBACLEnabled == BOOLEAN
    input.Body.AccessBasedEnumeration == BOOLEAN
    input.Body.AdminUserList[_] == STRING
    input.Body.ValidUserList[_] == STRING
    input.Body.InvalidUserList[_] == STRING
    input.Body.AuditDestinationARN == STRING
    input.Body.Authentication == STRING
    input.Body.CaseSensitivity == enum_CaseSensitivity[_]
    input.Body.Tags[_].Key == STRING
    input.Body.Tags[_].Value == STRING
    input.Body.FileShareName == STRING
    input.Body.CacheAttributes.CacheStaleTimeoutInSeconds == INTEGER
    input.Body.NotificationPolicy == STRING
    input.Body.VPCEndpointDNSName == STRING
    input.Body.BucketRegion == STRING
    input.Body.OplocksEnabled == BOOLEAN
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

CreateSnapshot

valid {
    input.Body.VolumeARN == STRING
    input.Body.SnapshotDescription == STRING
    input.Body.Tags[_].Key == STRING
    input.Body.Tags[_].Value == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

CreateSnapshotFromVolumeRecoveryPoint

valid {
    input.Body.VolumeARN == STRING
    input.Body.SnapshotDescription == STRING
    input.Body.Tags[_].Key == STRING
    input.Body.Tags[_].Value == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

CreateStorediSCSIVolume

valid {
    input.Body.GatewayARN == STRING
    input.Body.DiskId == STRING
    input.Body.SnapshotId == STRING
    input.Body.PreserveExistingData == BOOLEAN
    input.Body.TargetName == STRING
    input.Body.NetworkInterfaceId == STRING
    input.Body.KMSEncrypted == BOOLEAN
    input.Body.KMSKey == STRING
    input.Body.Tags[_].Key == STRING
    input.Body.Tags[_].Value == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

CreateTapePool

enum_RetentionLockType := [ "COMPLIANCE", "GOVERNANCE", "NONE" ]
enum_TapeStorageClass := [ "DEEP_ARCHIVE", "GLACIER" ]

valid {
    input.Body.PoolName == STRING
    input.Body.StorageClass == enum_TapeStorageClass[_]
    input.Body.RetentionLockType == enum_RetentionLockType[_]
    input.Body.RetentionLockTimeInDays == INTEGER
    input.Body.Tags[_].Key == STRING
    input.Body.Tags[_].Value == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

CreateTapeWithBarcode

valid {
    input.Body.GatewayARN == STRING
    input.Body.TapeSizeInBytes == LONG
    input.Body.TapeBarcode == STRING
    input.Body.KMSEncrypted == BOOLEAN
    input.Body.KMSKey == STRING
    input.Body.PoolId == STRING
    input.Body.Worm == BOOLEAN
    input.Body.Tags[_].Key == STRING
    input.Body.Tags[_].Value == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

CreateTapes

valid {
    input.Body.GatewayARN == STRING
    input.Body.TapeSizeInBytes == LONG
    input.Body.ClientToken == STRING
    input.Body.NumTapesToCreate == INTEGER
    input.Body.TapeBarcodePrefix == STRING
    input.Body.KMSEncrypted == BOOLEAN
    input.Body.KMSKey == STRING
    input.Body.PoolId == STRING
    input.Body.Worm == BOOLEAN
    input.Body.Tags[_].Key == STRING
    input.Body.Tags[_].Value == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DeleteAutomaticTapeCreationPolicy

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

DeleteBandwidthRateLimit

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

DeleteChapCredentials

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

DeleteFileShare

valid {
    input.Body.FileShareARN == STRING
    input.Body.ForceDelete == BOOLEAN
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DeleteGateway

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

DeleteSnapshotSchedule

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

DeleteTape

valid {
    input.Body.GatewayARN == STRING
    input.Body.TapeARN == STRING
    input.Body.BypassGovernanceRetention == BOOLEAN
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DeleteTapeArchive

valid {
    input.Body.TapeARN == STRING
    input.Body.BypassGovernanceRetention == BOOLEAN
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DeleteTapePool

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

DeleteVolume

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

DescribeAvailabilityMonitorTest

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

DescribeBandwidthRateLimit

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

DescribeBandwidthRateLimitSchedule

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

DescribeCache

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

DescribeCachediSCSIVolumes

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

DescribeChapCredentials

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

DescribeFileSystemAssociations

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

DescribeGatewayInformation

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

DescribeMaintenanceStartTime

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

DescribeNFSFileShares

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

DescribeSMBFileShares

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

DescribeSMBSettings

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

DescribeSnapshotSchedule

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

DescribeStorediSCSIVolumes

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

DescribeTapeArchives

valid {
    input.Body.TapeARNs[_] == STRING
    input.Body.Marker == STRING
    input.Body.Limit == INTEGER
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DescribeTapeRecoveryPoints

valid {
    input.Body.GatewayARN == STRING
    input.Body.Marker == STRING
    input.Body.Limit == INTEGER
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DescribeTapes

valid {
    input.Body.GatewayARN == STRING
    input.Body.TapeARNs[_] == STRING
    input.Body.Marker == STRING
    input.Body.Limit == INTEGER
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DescribeUploadBuffer

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

DescribeVTLDevices

valid {
    input.Body.GatewayARN == STRING
    input.Body.VTLDeviceARNs[_] == STRING
    input.Body.Marker == STRING
    input.Body.Limit == INTEGER
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DescribeWorkingStorage

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

DetachVolume

valid {
    input.Body.VolumeARN == STRING
    input.Body.ForceDetach == BOOLEAN
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DisableGateway

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

DisassociateFileSystem

valid {
    input.Body.FileSystemAssociationARN == STRING
    input.Body.ForceDelete == BOOLEAN
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

JoinDomain

valid {
    input.Body.GatewayARN == STRING
    input.Body.DomainName == STRING
    input.Body.OrganizationalUnit == STRING
    input.Body.DomainControllers[_] == STRING
    input.Body.TimeoutInSeconds == INTEGER
    input.Body.UserName == STRING
    input.Body.Password == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ListAutomaticTapeCreationPolicies

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

ListFileShares

valid {
    input.Body.GatewayARN == STRING
    input.Body.Limit == INTEGER
    input.Body.Marker == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ListFileSystemAssociations

valid {
    input.Body.GatewayARN == STRING
    input.Body.Limit == INTEGER
    input.Body.Marker == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ListGateways

valid {
    input.Body.Marker == STRING
    input.Body.Limit == INTEGER
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ListLocalDisks

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

ListTagsForResource

valid {
    input.Body.ResourceARN == STRING
    input.Body.Marker == STRING
    input.Body.Limit == INTEGER
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ListTapePools

valid {
    input.Body.PoolARNs[_] == STRING
    input.Body.Marker == STRING
    input.Body.Limit == INTEGER
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ListTapes

valid {
    input.Body.TapeARNs[_] == STRING
    input.Body.Marker == STRING
    input.Body.Limit == INTEGER
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ListVolumeInitiators

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

ListVolumeRecoveryPoints

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

ListVolumes

valid {
    input.Body.GatewayARN == STRING
    input.Body.Marker == STRING
    input.Body.Limit == INTEGER
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

NotifyWhenUploaded

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

RefreshCache

valid {
    input.Body.FileShareARN == STRING
    input.Body.FolderList[_] == STRING
    input.Body.Recursive == BOOLEAN
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

RemoveTagsFromResource

valid {
    input.Body.ResourceARN == STRING
    input.Body.TagKeys[_] == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ResetCache

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

RetrieveTapeArchive

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

RetrieveTapeRecoveryPoint

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

SetLocalConsolePassword

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

SetSMBGuestPassword

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

ShutdownGateway

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

StartAvailabilityMonitorTest

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

StartGateway

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

UpdateAutomaticTapeCreationPolicy

valid {
    input.Body.AutomaticTapeCreationRules[_].TapeBarcodePrefix == STRING
    input.Body.AutomaticTapeCreationRules[_].PoolId == STRING
    input.Body.AutomaticTapeCreationRules[_].TapeSizeInBytes == LONG
    input.Body.AutomaticTapeCreationRules[_].MinimumNumTapes == INTEGER
    input.Body.AutomaticTapeCreationRules[_].Worm == BOOLEAN
    input.Body.GatewayARN == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

UpdateBandwidthRateLimit

valid {
    input.Body.GatewayARN == STRING
    input.Body.AverageUploadRateLimitInBitsPerSec == LONG
    input.Body.AverageDownloadRateLimitInBitsPerSec == LONG
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

UpdateBandwidthRateLimitSchedule

valid {
    input.Body.GatewayARN == STRING
    input.Body.BandwidthRateLimitIntervals[_].StartHourOfDay == INTEGER
    input.Body.BandwidthRateLimitIntervals[_].StartMinuteOfHour == INTEGER
    input.Body.BandwidthRateLimitIntervals[_].EndHourOfDay == INTEGER
    input.Body.BandwidthRateLimitIntervals[_].EndMinuteOfHour == INTEGER
    input.Body.BandwidthRateLimitIntervals[_].DaysOfWeek[_] == INTEGER
    input.Body.BandwidthRateLimitIntervals[_].AverageUploadRateLimitInBitsPerSec == LONG
    input.Body.BandwidthRateLimitIntervals[_].AverageDownloadRateLimitInBitsPerSec == LONG
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

UpdateChapCredentials

valid {
    input.Body.TargetARN == STRING
    input.Body.SecretToAuthenticateInitiator == STRING
    input.Body.InitiatorName == STRING
    input.Body.SecretToAuthenticateTarget == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

UpdateFileSystemAssociation

valid {
    input.Body.FileSystemAssociationARN == STRING
    input.Body.UserName == STRING
    input.Body.Password == STRING
    input.Body.AuditDestinationARN == STRING
    input.Body.CacheAttributes.CacheStaleTimeoutInSeconds == INTEGER
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

UpdateGatewayInformation

enum_GatewayCapacity := [ "Small", "Medium", "Large" ]

valid {
    input.Body.GatewayARN == STRING
    input.Body.GatewayName == STRING
    input.Body.GatewayTimezone == STRING
    input.Body.CloudWatchLogGroupARN == STRING
    input.Body.GatewayCapacity == enum_GatewayCapacity[_]
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

UpdateGatewaySoftwareNow

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

UpdateMaintenanceStartTime

enum_AutomaticUpdatePolicy := [ "ALL_VERSIONS", "EMERGENCY_VERSIONS_ONLY" ]

valid {
    input.Body.GatewayARN == STRING
    input.Body.HourOfDay == INTEGER
    input.Body.MinuteOfHour == INTEGER
    input.Body.DayOfWeek == INTEGER
    input.Body.DayOfMonth == INTEGER
    input.Body.SoftwareUpdatePreferences.AutomaticUpdatePolicy == enum_AutomaticUpdatePolicy[_]
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

UpdateNFSFileShare

enum_ObjectACL := [ "private", "public-read", "public-read-write", "authenticated-read", "bucket-owner-read", "bucket-owner-full-control", "aws-exec-read" ]

valid {
    input.Body.FileShareARN == STRING
    input.Body.KMSEncrypted == BOOLEAN
    input.Body.KMSKey == STRING
    input.Body.NFSFileShareDefaults.FileMode == STRING
    input.Body.NFSFileShareDefaults.DirectoryMode == STRING
    input.Body.NFSFileShareDefaults.GroupId == LONG
    input.Body.NFSFileShareDefaults.OwnerId == LONG
    input.Body.DefaultStorageClass == STRING
    input.Body.ObjectACL == enum_ObjectACL[_]
    input.Body.ClientList[_] == STRING
    input.Body.Squash == STRING
    input.Body.ReadOnly == BOOLEAN
    input.Body.GuessMIMETypeEnabled == BOOLEAN
    input.Body.RequesterPays == BOOLEAN
    input.Body.FileShareName == STRING
    input.Body.CacheAttributes.CacheStaleTimeoutInSeconds == INTEGER
    input.Body.NotificationPolicy == STRING
    input.Body.AuditDestinationARN == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

UpdateSMBFileShare

enum_CaseSensitivity := [ "ClientSpecified", "CaseSensitive" ]
enum_ObjectACL := [ "private", "public-read", "public-read-write", "authenticated-read", "bucket-owner-read", "bucket-owner-full-control", "aws-exec-read" ]

valid {
    input.Body.FileShareARN == STRING
    input.Body.KMSEncrypted == BOOLEAN
    input.Body.KMSKey == STRING
    input.Body.DefaultStorageClass == STRING
    input.Body.ObjectACL == enum_ObjectACL[_]
    input.Body.ReadOnly == BOOLEAN
    input.Body.GuessMIMETypeEnabled == BOOLEAN
    input.Body.RequesterPays == BOOLEAN
    input.Body.SMBACLEnabled == BOOLEAN
    input.Body.AccessBasedEnumeration == BOOLEAN
    input.Body.AdminUserList[_] == STRING
    input.Body.ValidUserList[_] == STRING
    input.Body.InvalidUserList[_] == STRING
    input.Body.AuditDestinationARN == STRING
    input.Body.CaseSensitivity == enum_CaseSensitivity[_]
    input.Body.FileShareName == STRING
    input.Body.CacheAttributes.CacheStaleTimeoutInSeconds == INTEGER
    input.Body.NotificationPolicy == STRING
    input.Body.OplocksEnabled == BOOLEAN
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

UpdateSMBFileShareVisibility

valid {
    input.Body.GatewayARN == STRING
    input.Body.FileSharesVisible == BOOLEAN
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

UpdateSMBLocalGroups

valid {
    input.Body.GatewayARN == STRING
    input.Body.SMBLocalGroups.GatewayAdmins[_] == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

UpdateSMBSecurityStrategy

enum_SMBSecurityStrategy := [ "ClientSpecified", "MandatorySigning", "MandatoryEncryption", "MandatoryEncryptionNoAes128" ]

valid {
    input.Body.GatewayARN == STRING
    input.Body.SMBSecurityStrategy == enum_SMBSecurityStrategy[_]
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

UpdateSnapshotSchedule

valid {
    input.Body.VolumeARN == STRING
    input.Body.StartAt == INTEGER
    input.Body.RecurrenceInHours == INTEGER
    input.Body.Description == STRING
    input.Body.Tags[_].Key == STRING
    input.Body.Tags[_].Value == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

UpdateVTLDeviceType

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