ArchiveApplication

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

ArchiveWave

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

AssociateApplications

valid {
    input.Body.accountID == STRING
    input.Body.applicationIDs[_] == STRING
    input.Body.waveID == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

AssociateSourceServers

valid {
    input.Body.accountID == STRING
    input.Body.applicationID == STRING
    input.Body.sourceServerIDs[_] == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ChangeServerLifeCycleState

enum_ChangeServerLifeCycleStateSourceServerLifecycleState := [ "READY_FOR_TEST", "READY_FOR_CUTOVER", "CUTOVER" ]

valid {
    input.Body.accountID == STRING
    input.Body.lifeCycle.state == enum_ChangeServerLifeCycleStateSourceServerLifecycleState[_]
    input.Body.sourceServerID == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

CreateApplication

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

CreateConnector

valid {
    input.Body.name == STRING
    input.Body.ssmCommandConfig.cloudWatchLogGroupName == STRING
    input.Body.ssmCommandConfig.cloudWatchOutputEnabled == BOOLEAN
    input.Body.ssmCommandConfig.outputS3BucketName == STRING
    input.Body.ssmCommandConfig.s3OutputEnabled == BOOLEAN
    input.Body.ssmInstanceID == STRING
    input.Body.tags.STRING == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

CreateLaunchConfigurationTemplate

enum_BootMode := [ "LEGACY_BIOS", "UEFI", "USE_SOURCE" ]
enum_LaunchDisposition := [ "STOPPED", "STARTED" ]
enum_PostLaunchActionsDeploymentType := [ "TEST_AND_CUTOVER", "CUTOVER_ONLY", "TEST_ONLY" ]
enum_SsmParameterStoreParameterType := [ "STRING" ]
enum_TargetInstanceTypeRightSizingMethod := [ "NONE", "BASIC" ]
enum_VolumeType := [ "io1", "io2", "gp3", "gp2", "st1", "sc1", "standard" ]

valid {
    input.Body.associatePublicIpAddress == BOOLEAN
    input.Body.bootMode == enum_BootMode[_]
    input.Body.copyPrivateIp == BOOLEAN
    input.Body.copyTags == BOOLEAN
    input.Body.enableMapAutoTagging == BOOLEAN
    input.Body.largeVolumeConf.iops == LONG
    input.Body.largeVolumeConf.throughput == LONG
    input.Body.largeVolumeConf.volumeType == enum_VolumeType[_]
    input.Body.launchDisposition == enum_LaunchDisposition[_]
    input.Body.licensing.osByol == BOOLEAN
    input.Body.mapAutoTaggingMpeID == STRING
    input.Body.postLaunchActions.cloudWatchLogGroupName == STRING
    input.Body.postLaunchActions.deployment == enum_PostLaunchActionsDeploymentType[_]
    input.Body.postLaunchActions.s3LogBucket == STRING
    input.Body.postLaunchActions.s3OutputKeyPrefix == STRING
    input.Body.postLaunchActions.ssmDocuments[_].actionName == STRING
    input.Body.postLaunchActions.ssmDocuments[_].externalParameters.STRING.dynamicPath == STRING
    input.Body.postLaunchActions.ssmDocuments[_].mustSucceedForCutover == BOOLEAN
    input.Body.postLaunchActions.ssmDocuments[_].parameters.STRING[_].parameterName == STRING
    input.Body.postLaunchActions.ssmDocuments[_].parameters.STRING[_].parameterType == enum_SsmParameterStoreParameterType[_]
    input.Body.postLaunchActions.ssmDocuments[_].ssmDocumentName == STRING
    input.Body.postLaunchActions.ssmDocuments[_].timeoutSeconds == INTEGER
    input.Body.smallVolumeConf.iops == LONG
    input.Body.smallVolumeConf.throughput == LONG
    input.Body.smallVolumeConf.volumeType == enum_VolumeType[_]
    input.Body.smallVolumeMaxSize == LONG
    input.Body.tags.STRING == STRING
    input.Body.targetInstanceTypeRightSizingMethod == enum_TargetInstanceTypeRightSizingMethod[_]
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

CreateReplicationConfigurationTemplate

enum_ReplicationConfigurationDataPlaneRouting := [ "PRIVATE_IP", "PUBLIC_IP" ]
enum_ReplicationConfigurationDefaultLargeStagingDiskType := [ "GP2", "ST1", "GP3" ]
enum_ReplicationConfigurationEbsEncryption := [ "DEFAULT", "CUSTOM" ]

valid {
    input.Body.associateDefaultSecurityGroup == BOOLEAN
    input.Body.bandwidthThrottling == LONG
    input.Body.createPublicIP == BOOLEAN
    input.Body.dataPlaneRouting == enum_ReplicationConfigurationDataPlaneRouting[_]
    input.Body.defaultLargeStagingDiskType == enum_ReplicationConfigurationDefaultLargeStagingDiskType[_]
    input.Body.ebsEncryption == enum_ReplicationConfigurationEbsEncryption[_]
    input.Body.ebsEncryptionKeyArn == STRING
    input.Body.replicationServerInstanceType == STRING
    input.Body.replicationServersSecurityGroupsIDs[_] == STRING
    input.Body.stagingAreaSubnetId == STRING
    input.Body.stagingAreaTags.STRING == STRING
    input.Body.tags.STRING == STRING
    input.Body.useDedicatedReplicationServer == BOOLEAN
    input.Body.useFipsEndpoint == BOOLEAN
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

CreateWave

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

DeleteApplication

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

DeleteConnector

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

DeleteJob

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

DeleteLaunchConfigurationTemplate

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

DeleteReplicationConfigurationTemplate

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

DeleteSourceServer

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

DeleteVcenterClient

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

DeleteWave

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

DescribeJobLogItems

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

DescribeJobs

valid {
    input.Body.accountID == STRING
    input.Body.filters.fromDate == STRING
    input.Body.filters.jobIDs[_] == STRING
    input.Body.filters.toDate == STRING
    input.Body.maxResults == INTEGER
    input.Body.nextToken == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DescribeLaunchConfigurationTemplates

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

DescribeReplicationConfigurationTemplates

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

DescribeSourceServers

enum_LifeCycleState := [ "STOPPED", "NOT_READY", "READY_FOR_TEST", "TESTING", "READY_FOR_CUTOVER", "CUTTING_OVER", "CUTOVER", "DISCONNECTED", "DISCOVERED", "PENDING_INSTALLATION" ]
enum_ReplicationType := [ "AGENT_BASED", "SNAPSHOT_SHIPPING" ]

valid {
    input.Body.accountID == STRING
    input.Body.filters.applicationIDs[_] == STRING
    input.Body.filters.isArchived == BOOLEAN
    input.Body.filters.lifeCycleStates[_] == enum_LifeCycleState[_]
    input.Body.filters.replicationTypes[_] == enum_ReplicationType[_]
    input.Body.filters.sourceServerIDs[_] == STRING
    input.Body.maxResults == INTEGER
    input.Body.nextToken == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DescribeVcenterClients

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

DisassociateApplications

valid {
    input.Body.accountID == STRING
    input.Body.applicationIDs[_] == STRING
    input.Body.waveID == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DisassociateSourceServers

valid {
    input.Body.accountID == STRING
    input.Body.applicationID == STRING
    input.Body.sourceServerIDs[_] == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DisconnectFromService

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

FinalizeCutover

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

GetLaunchConfiguration

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

GetReplicationConfiguration

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

InitializeService

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

ListApplications

valid {
    input.Body.accountID == STRING
    input.Body.filters.applicationIDs[_] == STRING
    input.Body.filters.isArchived == BOOLEAN
    input.Body.filters.waveIDs[_] == STRING
    input.Body.maxResults == INTEGER
    input.Body.nextToken == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ListConnectors

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

ListExportErrors

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

ListExports

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

ListImportErrors

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

ListImports

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

ListManagedAccounts

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

ListSourceServerActions

valid {
    input.Body.accountID == STRING
    input.Body.filters.actionIDs[_] == STRING
    input.Body.maxResults == INTEGER
    input.Body.nextToken == STRING
    input.Body.sourceServerID == 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
}

ListTemplateActions

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

ListWaves

valid {
    input.Body.accountID == STRING
    input.Body.filters.isArchived == BOOLEAN
    input.Body.filters.waveIDs[_] == STRING
    input.Body.maxResults == INTEGER
    input.Body.nextToken == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

MarkAsArchived

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

PauseReplication

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

PutSourceServerAction

enum_ActionCategory := [ "DISASTER_RECOVERY", "OPERATING_SYSTEM", "LICENSE_AND_SUBSCRIPTION", "VALIDATION", "OBSERVABILITY", "REFACTORING", "SECURITY", "NETWORKING", "CONFIGURATION", "BACKUP", "OTHER" ]
enum_SsmParameterStoreParameterType := [ "STRING" ]

valid {
    input.Body.accountID == STRING
    input.Body.actionID == STRING
    input.Body.actionName == STRING
    input.Body.active == BOOLEAN
    input.Body.category == enum_ActionCategory[_]
    input.Body.description == STRING
    input.Body.documentIdentifier == STRING
    input.Body.documentVersion == STRING
    input.Body.externalParameters.STRING.dynamicPath == STRING
    input.Body.mustSucceedForCutover == BOOLEAN
    input.Body.order == INTEGER
    input.Body.parameters.STRING[_].parameterName == STRING
    input.Body.parameters.STRING[_].parameterType == enum_SsmParameterStoreParameterType[_]
    input.Body.sourceServerID == STRING
    input.Body.timeoutSeconds == INTEGER
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

PutTemplateAction

enum_ActionCategory := [ "DISASTER_RECOVERY", "OPERATING_SYSTEM", "LICENSE_AND_SUBSCRIPTION", "VALIDATION", "OBSERVABILITY", "REFACTORING", "SECURITY", "NETWORKING", "CONFIGURATION", "BACKUP", "OTHER" ]
enum_SsmParameterStoreParameterType := [ "STRING" ]

valid {
    input.Body.actionID == STRING
    input.Body.actionName == STRING
    input.Body.active == BOOLEAN
    input.Body.category == enum_ActionCategory[_]
    input.Body.description == STRING
    input.Body.documentIdentifier == STRING
    input.Body.documentVersion == STRING
    input.Body.externalParameters.STRING.dynamicPath == STRING
    input.Body.launchConfigurationTemplateID == STRING
    input.Body.mustSucceedForCutover == BOOLEAN
    input.Body.operatingSystem == STRING
    input.Body.order == INTEGER
    input.Body.parameters.STRING[_].parameterName == STRING
    input.Body.parameters.STRING[_].parameterType == enum_SsmParameterStoreParameterType[_]
    input.Body.timeoutSeconds == INTEGER
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

RemoveSourceServerAction

valid {
    input.Body.accountID == STRING
    input.Body.actionID == STRING
    input.Body.sourceServerID == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

RemoveTemplateAction

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

ResumeReplication

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

RetryDataReplication

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

StartCutover

valid {
    input.Body.accountID == STRING
    input.Body.sourceServerIDs[_] == STRING
    input.Body.tags.STRING == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

StartExport

valid {
    input.Body.s3Bucket == STRING
    input.Body.s3BucketOwner == STRING
    input.Body.s3Key == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

StartImport

valid {
    input.Body.clientToken == STRING
    input.Body.s3BucketSource.s3Bucket == STRING
    input.Body.s3BucketSource.s3BucketOwner == STRING
    input.Body.s3BucketSource.s3Key == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

StartReplication

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

StartTest

valid {
    input.Body.accountID == STRING
    input.Body.sourceServerIDs[_] == STRING
    input.Body.tags.STRING == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

StopReplication

valid {
    input.Body.accountID == STRING
    input.Body.sourceServerID == 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
}

TerminateTargetInstances

valid {
    input.Body.accountID == STRING
    input.Body.sourceServerIDs[_] == STRING
    input.Body.tags.STRING == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

UnarchiveApplication

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

UnarchiveWave

valid {
    input.Body.accountID == STRING
    input.Body.waveID == 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
}

UpdateApplication

valid {
    input.Body.accountID == STRING
    input.Body.applicationID == STRING
    input.Body.description == STRING
    input.Body.name == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

UpdateConnector

valid {
    input.Body.connectorID == STRING
    input.Body.name == STRING
    input.Body.ssmCommandConfig.cloudWatchLogGroupName == STRING
    input.Body.ssmCommandConfig.cloudWatchOutputEnabled == BOOLEAN
    input.Body.ssmCommandConfig.outputS3BucketName == STRING
    input.Body.ssmCommandConfig.s3OutputEnabled == BOOLEAN
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

UpdateLaunchConfiguration

enum_BootMode := [ "LEGACY_BIOS", "UEFI", "USE_SOURCE" ]
enum_LaunchDisposition := [ "STOPPED", "STARTED" ]
enum_PostLaunchActionsDeploymentType := [ "TEST_AND_CUTOVER", "CUTOVER_ONLY", "TEST_ONLY" ]
enum_SsmParameterStoreParameterType := [ "STRING" ]
enum_TargetInstanceTypeRightSizingMethod := [ "NONE", "BASIC" ]

valid {
    input.Body.accountID == STRING
    input.Body.bootMode == enum_BootMode[_]
    input.Body.copyPrivateIp == BOOLEAN
    input.Body.copyTags == BOOLEAN
    input.Body.enableMapAutoTagging == BOOLEAN
    input.Body.launchDisposition == enum_LaunchDisposition[_]
    input.Body.licensing.osByol == BOOLEAN
    input.Body.mapAutoTaggingMpeID == STRING
    input.Body.name == STRING
    input.Body.postLaunchActions.cloudWatchLogGroupName == STRING
    input.Body.postLaunchActions.deployment == enum_PostLaunchActionsDeploymentType[_]
    input.Body.postLaunchActions.s3LogBucket == STRING
    input.Body.postLaunchActions.s3OutputKeyPrefix == STRING
    input.Body.postLaunchActions.ssmDocuments[_].actionName == STRING
    input.Body.postLaunchActions.ssmDocuments[_].externalParameters.STRING.dynamicPath == STRING
    input.Body.postLaunchActions.ssmDocuments[_].mustSucceedForCutover == BOOLEAN
    input.Body.postLaunchActions.ssmDocuments[_].parameters.STRING[_].parameterName == STRING
    input.Body.postLaunchActions.ssmDocuments[_].parameters.STRING[_].parameterType == enum_SsmParameterStoreParameterType[_]
    input.Body.postLaunchActions.ssmDocuments[_].ssmDocumentName == STRING
    input.Body.postLaunchActions.ssmDocuments[_].timeoutSeconds == INTEGER
    input.Body.sourceServerID == STRING
    input.Body.targetInstanceTypeRightSizingMethod == enum_TargetInstanceTypeRightSizingMethod[_]
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

UpdateLaunchConfigurationTemplate

enum_BootMode := [ "LEGACY_BIOS", "UEFI", "USE_SOURCE" ]
enum_LaunchDisposition := [ "STOPPED", "STARTED" ]
enum_PostLaunchActionsDeploymentType := [ "TEST_AND_CUTOVER", "CUTOVER_ONLY", "TEST_ONLY" ]
enum_SsmParameterStoreParameterType := [ "STRING" ]
enum_TargetInstanceTypeRightSizingMethod := [ "NONE", "BASIC" ]
enum_VolumeType := [ "io1", "io2", "gp3", "gp2", "st1", "sc1", "standard" ]

valid {
    input.Body.associatePublicIpAddress == BOOLEAN
    input.Body.bootMode == enum_BootMode[_]
    input.Body.copyPrivateIp == BOOLEAN
    input.Body.copyTags == BOOLEAN
    input.Body.enableMapAutoTagging == BOOLEAN
    input.Body.largeVolumeConf.iops == LONG
    input.Body.largeVolumeConf.throughput == LONG
    input.Body.largeVolumeConf.volumeType == enum_VolumeType[_]
    input.Body.launchConfigurationTemplateID == STRING
    input.Body.launchDisposition == enum_LaunchDisposition[_]
    input.Body.licensing.osByol == BOOLEAN
    input.Body.mapAutoTaggingMpeID == STRING
    input.Body.postLaunchActions.cloudWatchLogGroupName == STRING
    input.Body.postLaunchActions.deployment == enum_PostLaunchActionsDeploymentType[_]
    input.Body.postLaunchActions.s3LogBucket == STRING
    input.Body.postLaunchActions.s3OutputKeyPrefix == STRING
    input.Body.postLaunchActions.ssmDocuments[_].actionName == STRING
    input.Body.postLaunchActions.ssmDocuments[_].externalParameters.STRING.dynamicPath == STRING
    input.Body.postLaunchActions.ssmDocuments[_].mustSucceedForCutover == BOOLEAN
    input.Body.postLaunchActions.ssmDocuments[_].parameters.STRING[_].parameterName == STRING
    input.Body.postLaunchActions.ssmDocuments[_].parameters.STRING[_].parameterType == enum_SsmParameterStoreParameterType[_]
    input.Body.postLaunchActions.ssmDocuments[_].ssmDocumentName == STRING
    input.Body.postLaunchActions.ssmDocuments[_].timeoutSeconds == INTEGER
    input.Body.smallVolumeConf.iops == LONG
    input.Body.smallVolumeConf.throughput == LONG
    input.Body.smallVolumeConf.volumeType == enum_VolumeType[_]
    input.Body.smallVolumeMaxSize == LONG
    input.Body.targetInstanceTypeRightSizingMethod == enum_TargetInstanceTypeRightSizingMethod[_]
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

UpdateReplicationConfiguration

enum_ReplicationConfigurationDataPlaneRouting := [ "PRIVATE_IP", "PUBLIC_IP" ]
enum_ReplicationConfigurationDefaultLargeStagingDiskType := [ "GP2", "ST1", "GP3" ]
enum_ReplicationConfigurationEbsEncryption := [ "DEFAULT", "CUSTOM" ]
enum_ReplicationConfigurationReplicatedDiskStagingDiskType := [ "AUTO", "GP2", "IO1", "SC1", "ST1", "STANDARD", "GP3", "IO2" ]

valid {
    input.Body.accountID == STRING
    input.Body.associateDefaultSecurityGroup == BOOLEAN
    input.Body.bandwidthThrottling == LONG
    input.Body.createPublicIP == BOOLEAN
    input.Body.dataPlaneRouting == enum_ReplicationConfigurationDataPlaneRouting[_]
    input.Body.defaultLargeStagingDiskType == enum_ReplicationConfigurationDefaultLargeStagingDiskType[_]
    input.Body.ebsEncryption == enum_ReplicationConfigurationEbsEncryption[_]
    input.Body.ebsEncryptionKeyArn == STRING
    input.Body.name == STRING
    input.Body.replicatedDisks[_].deviceName == STRING
    input.Body.replicatedDisks[_].iops == LONG
    input.Body.replicatedDisks[_].isBootDisk == BOOLEAN
    input.Body.replicatedDisks[_].stagingDiskType == enum_ReplicationConfigurationReplicatedDiskStagingDiskType[_]
    input.Body.replicatedDisks[_].throughput == LONG
    input.Body.replicationServerInstanceType == STRING
    input.Body.replicationServersSecurityGroupsIDs[_] == STRING
    input.Body.sourceServerID == STRING
    input.Body.stagingAreaSubnetId == STRING
    input.Body.stagingAreaTags.STRING == STRING
    input.Body.useDedicatedReplicationServer == BOOLEAN
    input.Body.useFipsEndpoint == BOOLEAN
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

UpdateReplicationConfigurationTemplate

enum_ReplicationConfigurationDataPlaneRouting := [ "PRIVATE_IP", "PUBLIC_IP" ]
enum_ReplicationConfigurationDefaultLargeStagingDiskType := [ "GP2", "ST1", "GP3" ]
enum_ReplicationConfigurationEbsEncryption := [ "DEFAULT", "CUSTOM" ]

valid {
    input.Body.arn == STRING
    input.Body.associateDefaultSecurityGroup == BOOLEAN
    input.Body.bandwidthThrottling == LONG
    input.Body.createPublicIP == BOOLEAN
    input.Body.dataPlaneRouting == enum_ReplicationConfigurationDataPlaneRouting[_]
    input.Body.defaultLargeStagingDiskType == enum_ReplicationConfigurationDefaultLargeStagingDiskType[_]
    input.Body.ebsEncryption == enum_ReplicationConfigurationEbsEncryption[_]
    input.Body.ebsEncryptionKeyArn == STRING
    input.Body.replicationConfigurationTemplateID == STRING
    input.Body.replicationServerInstanceType == STRING
    input.Body.replicationServersSecurityGroupsIDs[_] == STRING
    input.Body.stagingAreaSubnetId == STRING
    input.Body.stagingAreaTags.STRING == STRING
    input.Body.useDedicatedReplicationServer == BOOLEAN
    input.Body.useFipsEndpoint == BOOLEAN
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

UpdateSourceServer

valid {
    input.Body.accountID == STRING
    input.Body.connectorAction.connectorArn == STRING
    input.Body.connectorAction.credentialsSecretArn == STRING
    input.Body.sourceServerID == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

UpdateSourceServerReplicationType

enum_ReplicationType := [ "AGENT_BASED", "SNAPSHOT_SHIPPING" ]

valid {
    input.Body.accountID == STRING
    input.Body.replicationType == enum_ReplicationType[_]
    input.Body.sourceServerID == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

UpdateWave

valid {
    input.Body.accountID == STRING
    input.Body.description == STRING
    input.Body.name == STRING
    input.Body.waveID == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}