DATAMIGRATION

datamigration.projects.locations.connectionProfiles.create

enum_AlloyDbSettingsDatabaseVersion := [ "DATABASE_VERSION_UNSPECIFIED", "POSTGRES_14", "POSTGRES_15", "POSTGRES_16" ]
enum_CloudSqlSettingsActivationPolicy := [ "SQL_ACTIVATION_POLICY_UNSPECIFIED", "ALWAYS", "NEVER" ]
enum_CloudSqlSettingsAvailabilityType := [ "SQL_AVAILABILITY_TYPE_UNSPECIFIED", "ZONAL", "REGIONAL" ]
enum_CloudSqlSettingsDataDiskType := [ "SQL_DATA_DISK_TYPE_UNSPECIFIED", "PD_SSD", "PD_HDD" ]
enum_CloudSqlSettingsDatabaseVersion := [ "SQL_DATABASE_VERSION_UNSPECIFIED", "MYSQL_5_6", "MYSQL_5_7", "MYSQL_8_0", "MYSQL_8_0_18", "MYSQL_8_0_26", "MYSQL_8_0_27", "MYSQL_8_0_28", "MYSQL_8_0_30", "MYSQL_8_0_31", "MYSQL_8_0_32", "MYSQL_8_0_33", "MYSQL_8_0_34", "MYSQL_8_0_35", "MYSQL_8_0_36", "MYSQL_8_0_37", "MYSQL_8_4", "POSTGRES_9_6", "POSTGRES_11", "POSTGRES_10", "POSTGRES_12", "POSTGRES_13", "POSTGRES_14", "POSTGRES_15", "POSTGRES_16" ]
enum_CloudSqlSettingsEdition := [ "EDITION_UNSPECIFIED", "ENTERPRISE", "ENTERPRISE_PLUS" ]
enum_ConnectionProfileProvider := [ "DATABASE_PROVIDER_UNSPECIFIED", "CLOUDSQL", "RDS", "AURORA", "ALLOYDB" ]
enum_ConnectionProfileRole := [ "ROLE_UNSPECIFIED", "SOURCE", "DESTINATION" ]
enum_ConnectionProfileState := [ "STATE_UNSPECIFIED", "DRAFT", "CREATING", "READY", "UPDATING", "DELETING", "DELETED", "FAILED" ]
enum_SslConfigType := [ "SSL_TYPE_UNSPECIFIED", "SERVER_ONLY", "SERVER_CLIENT", "REQUIRED", "NONE" ]

valid {
    input.Body.alloydb.clusterId == STRING
    input.Body.alloydb.settings.databaseVersion == enum_AlloyDbSettingsDatabaseVersion[_]
    input.Body.alloydb.settings.encryptionConfig.kmsKeyName == STRING
    input.Body.alloydb.settings.initialUser.password == STRING
    input.Body.alloydb.settings.initialUser.user == STRING
    input.Body.alloydb.settings.labels.STRING == STRING
    input.Body.alloydb.settings.primaryInstanceSettings.databaseFlags.STRING == STRING
    input.Body.alloydb.settings.primaryInstanceSettings.id == STRING
    input.Body.alloydb.settings.primaryInstanceSettings.instanceNetworkConfig.authorizedExternalNetworks[_].cidrRange == STRING
    input.Body.alloydb.settings.primaryInstanceSettings.instanceNetworkConfig.enableOutboundPublicIp == BOOLEAN
    input.Body.alloydb.settings.primaryInstanceSettings.instanceNetworkConfig.enablePublicIp == BOOLEAN
    input.Body.alloydb.settings.primaryInstanceSettings.labels.STRING == STRING
    input.Body.alloydb.settings.primaryInstanceSettings.machineConfig.cpuCount == INTEGER
    input.Body.alloydb.settings.vpcNetwork == STRING
    input.Body.cloudsql.settings.activationPolicy == enum_CloudSqlSettingsActivationPolicy[_]
    input.Body.cloudsql.settings.autoStorageIncrease == BOOLEAN
    input.Body.cloudsql.settings.availabilityType == enum_CloudSqlSettingsAvailabilityType[_]
    input.Body.cloudsql.settings.cmekKeyName == STRING
    input.Body.cloudsql.settings.collation == STRING
    input.Body.cloudsql.settings.dataCacheConfig.dataCacheEnabled == BOOLEAN
    input.Body.cloudsql.settings.dataDiskSizeGb == STRING
    input.Body.cloudsql.settings.dataDiskType == enum_CloudSqlSettingsDataDiskType[_]
    input.Body.cloudsql.settings.databaseFlags.STRING == STRING
    input.Body.cloudsql.settings.databaseVersion == enum_CloudSqlSettingsDatabaseVersion[_]
    input.Body.cloudsql.settings.databaseVersionName == STRING
    input.Body.cloudsql.settings.edition == enum_CloudSqlSettingsEdition[_]
    input.Body.cloudsql.settings.ipConfig.allocatedIpRange == STRING
    input.Body.cloudsql.settings.ipConfig.authorizedNetworks[_].expireTime == STRING
    input.Body.cloudsql.settings.ipConfig.authorizedNetworks[_].label == STRING
    input.Body.cloudsql.settings.ipConfig.authorizedNetworks[_].ttl == STRING
    input.Body.cloudsql.settings.ipConfig.authorizedNetworks[_].value == STRING
    input.Body.cloudsql.settings.ipConfig.enableIpv4 == BOOLEAN
    input.Body.cloudsql.settings.ipConfig.privateNetwork == STRING
    input.Body.cloudsql.settings.ipConfig.requireSsl == BOOLEAN
    input.Body.cloudsql.settings.rootPassword == STRING
    input.Body.cloudsql.settings.secondaryZone == STRING
    input.Body.cloudsql.settings.sourceId == STRING
    input.Body.cloudsql.settings.storageAutoResizeLimit == STRING
    input.Body.cloudsql.settings.tier == STRING
    input.Body.cloudsql.settings.userLabels.STRING == STRING
    input.Body.cloudsql.settings.zone == STRING
    input.Body.displayName == STRING
    input.Body.labels.STRING == STRING
    input.Body.mysql.cloudSqlId == STRING
    input.Body.mysql.host == STRING
    input.Body.mysql.password == STRING
    input.Body.mysql.port == INTEGER
    input.Body.mysql.ssl.caCertificate == STRING
    input.Body.mysql.ssl.clientCertificate == STRING
    input.Body.mysql.ssl.clientKey == STRING
    input.Body.mysql.ssl.type == enum_SslConfigType[_]
    input.Body.mysql.username == STRING
    input.Body.name == STRING
    input.Body.oracle.databaseService == STRING
    input.Body.oracle.forwardSshConnectivity.hostname == STRING
    input.Body.oracle.forwardSshConnectivity.password == STRING
    input.Body.oracle.forwardSshConnectivity.port == INTEGER
    input.Body.oracle.forwardSshConnectivity.privateKey == STRING
    input.Body.oracle.forwardSshConnectivity.username == STRING
    input.Body.oracle.host == STRING
    input.Body.oracle.oracleAsmConfig.asmService == STRING
    input.Body.oracle.oracleAsmConfig.hostname == STRING
    input.Body.oracle.oracleAsmConfig.password == STRING
    input.Body.oracle.oracleAsmConfig.port == INTEGER
    input.Body.oracle.oracleAsmConfig.ssl.caCertificate == STRING
    input.Body.oracle.oracleAsmConfig.ssl.clientCertificate == STRING
    input.Body.oracle.oracleAsmConfig.ssl.clientKey == STRING
    input.Body.oracle.oracleAsmConfig.ssl.type == enum_SslConfigType[_]
    input.Body.oracle.oracleAsmConfig.username == STRING
    input.Body.oracle.password == STRING
    input.Body.oracle.port == INTEGER
    input.Body.oracle.privateConnectivity.privateConnection == STRING
    input.Body.oracle.ssl.caCertificate == STRING
    input.Body.oracle.ssl.clientCertificate == STRING
    input.Body.oracle.ssl.clientKey == STRING
    input.Body.oracle.ssl.type == enum_SslConfigType[_]
    input.Body.oracle.staticServiceIpConnectivity.STRING == STRING
    input.Body.oracle.username == STRING
    input.Body.postgresql.alloydbClusterId == STRING
    input.Body.postgresql.cloudSqlId == STRING
    input.Body.postgresql.database == STRING
    input.Body.postgresql.host == STRING
    input.Body.postgresql.password == STRING
    input.Body.postgresql.port == INTEGER
    input.Body.postgresql.privateServiceConnectConnectivity.serviceAttachment == STRING
    input.Body.postgresql.ssl.caCertificate == STRING
    input.Body.postgresql.ssl.clientCertificate == STRING
    input.Body.postgresql.ssl.clientKey == STRING
    input.Body.postgresql.ssl.type == enum_SslConfigType[_]
    input.Body.postgresql.staticIpConnectivity.STRING == STRING
    input.Body.postgresql.username == STRING
    input.Body.provider == enum_ConnectionProfileProvider[_]
    input.Body.role == enum_ConnectionProfileRole[_]
    input.Body.sqlserver.backups.gcsBucket == STRING
    input.Body.sqlserver.backups.gcsPrefix == STRING
    input.Body.sqlserver.cloudSqlId == STRING
    input.Body.sqlserver.forwardSshConnectivity.hostname == STRING
    input.Body.sqlserver.forwardSshConnectivity.password == STRING
    input.Body.sqlserver.forwardSshConnectivity.port == INTEGER
    input.Body.sqlserver.forwardSshConnectivity.privateKey == STRING
    input.Body.sqlserver.forwardSshConnectivity.username == STRING
    input.Body.sqlserver.host == STRING
    input.Body.sqlserver.password == STRING
    input.Body.sqlserver.port == INTEGER
    input.Body.sqlserver.privateConnectivity.privateConnection == STRING
    input.Body.sqlserver.privateServiceConnectConnectivity.serviceAttachment == STRING
    input.Body.sqlserver.ssl.caCertificate == STRING
    input.Body.sqlserver.ssl.clientCertificate == STRING
    input.Body.sqlserver.ssl.clientKey == STRING
    input.Body.sqlserver.ssl.type == enum_SslConfigType[_]
    input.Body.sqlserver.staticIpConnectivity.STRING == STRING
    input.Body.sqlserver.username == STRING
    input.Body.state == enum_ConnectionProfileState[_]
    input.ReqMap.parent == STRING
    input.Qs.connectionProfileId == STRING
    input.Qs.requestId == STRING
    input.Qs.skipValidation == BOOLEAN
    input.Qs.validateOnly == BOOLEAN
    input.ProviderMetadata.Region == STRING
}

datamigration.projects.locations.connectionProfiles.delete

valid {
    input.ReqMap.name == STRING
    input.Qs.force == BOOLEAN
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
}

datamigration.projects.locations.connectionProfiles.get

valid {
    input.ReqMap.name == STRING
    input.ProviderMetadata.Region == STRING
}

datamigration.projects.locations.connectionProfiles.getIamPolicy

valid {
    input.ReqMap.resource == STRING
    input.Qs.options.requestedPolicyVersion == INTEGER
    input.ProviderMetadata.Region == STRING
}

datamigration.projects.locations.connectionProfiles.list

valid {
    input.ReqMap.parent == STRING
    input.Qs.filter == STRING
    input.Qs.orderBy == STRING
    input.Qs.pageSize == INTEGER
    input.Qs.pageToken == STRING
    input.ProviderMetadata.Region == STRING
}

datamigration.projects.locations.connectionProfiles.patch

enum_AlloyDbSettingsDatabaseVersion := [ "DATABASE_VERSION_UNSPECIFIED", "POSTGRES_14", "POSTGRES_15", "POSTGRES_16" ]
enum_CloudSqlSettingsActivationPolicy := [ "SQL_ACTIVATION_POLICY_UNSPECIFIED", "ALWAYS", "NEVER" ]
enum_CloudSqlSettingsAvailabilityType := [ "SQL_AVAILABILITY_TYPE_UNSPECIFIED", "ZONAL", "REGIONAL" ]
enum_CloudSqlSettingsDataDiskType := [ "SQL_DATA_DISK_TYPE_UNSPECIFIED", "PD_SSD", "PD_HDD" ]
enum_CloudSqlSettingsDatabaseVersion := [ "SQL_DATABASE_VERSION_UNSPECIFIED", "MYSQL_5_6", "MYSQL_5_7", "MYSQL_8_0", "MYSQL_8_0_18", "MYSQL_8_0_26", "MYSQL_8_0_27", "MYSQL_8_0_28", "MYSQL_8_0_30", "MYSQL_8_0_31", "MYSQL_8_0_32", "MYSQL_8_0_33", "MYSQL_8_0_34", "MYSQL_8_0_35", "MYSQL_8_0_36", "MYSQL_8_0_37", "MYSQL_8_4", "POSTGRES_9_6", "POSTGRES_11", "POSTGRES_10", "POSTGRES_12", "POSTGRES_13", "POSTGRES_14", "POSTGRES_15", "POSTGRES_16" ]
enum_CloudSqlSettingsEdition := [ "EDITION_UNSPECIFIED", "ENTERPRISE", "ENTERPRISE_PLUS" ]
enum_ConnectionProfileProvider := [ "DATABASE_PROVIDER_UNSPECIFIED", "CLOUDSQL", "RDS", "AURORA", "ALLOYDB" ]
enum_ConnectionProfileRole := [ "ROLE_UNSPECIFIED", "SOURCE", "DESTINATION" ]
enum_ConnectionProfileState := [ "STATE_UNSPECIFIED", "DRAFT", "CREATING", "READY", "UPDATING", "DELETING", "DELETED", "FAILED" ]
enum_SslConfigType := [ "SSL_TYPE_UNSPECIFIED", "SERVER_ONLY", "SERVER_CLIENT", "REQUIRED", "NONE" ]

valid {
    input.Body.alloydb.clusterId == STRING
    input.Body.alloydb.settings.databaseVersion == enum_AlloyDbSettingsDatabaseVersion[_]
    input.Body.alloydb.settings.encryptionConfig.kmsKeyName == STRING
    input.Body.alloydb.settings.initialUser.password == STRING
    input.Body.alloydb.settings.initialUser.user == STRING
    input.Body.alloydb.settings.labels.STRING == STRING
    input.Body.alloydb.settings.primaryInstanceSettings.databaseFlags.STRING == STRING
    input.Body.alloydb.settings.primaryInstanceSettings.id == STRING
    input.Body.alloydb.settings.primaryInstanceSettings.instanceNetworkConfig.authorizedExternalNetworks[_].cidrRange == STRING
    input.Body.alloydb.settings.primaryInstanceSettings.instanceNetworkConfig.enableOutboundPublicIp == BOOLEAN
    input.Body.alloydb.settings.primaryInstanceSettings.instanceNetworkConfig.enablePublicIp == BOOLEAN
    input.Body.alloydb.settings.primaryInstanceSettings.labels.STRING == STRING
    input.Body.alloydb.settings.primaryInstanceSettings.machineConfig.cpuCount == INTEGER
    input.Body.alloydb.settings.vpcNetwork == STRING
    input.Body.cloudsql.settings.activationPolicy == enum_CloudSqlSettingsActivationPolicy[_]
    input.Body.cloudsql.settings.autoStorageIncrease == BOOLEAN
    input.Body.cloudsql.settings.availabilityType == enum_CloudSqlSettingsAvailabilityType[_]
    input.Body.cloudsql.settings.cmekKeyName == STRING
    input.Body.cloudsql.settings.collation == STRING
    input.Body.cloudsql.settings.dataCacheConfig.dataCacheEnabled == BOOLEAN
    input.Body.cloudsql.settings.dataDiskSizeGb == STRING
    input.Body.cloudsql.settings.dataDiskType == enum_CloudSqlSettingsDataDiskType[_]
    input.Body.cloudsql.settings.databaseFlags.STRING == STRING
    input.Body.cloudsql.settings.databaseVersion == enum_CloudSqlSettingsDatabaseVersion[_]
    input.Body.cloudsql.settings.databaseVersionName == STRING
    input.Body.cloudsql.settings.edition == enum_CloudSqlSettingsEdition[_]
    input.Body.cloudsql.settings.ipConfig.allocatedIpRange == STRING
    input.Body.cloudsql.settings.ipConfig.authorizedNetworks[_].expireTime == STRING
    input.Body.cloudsql.settings.ipConfig.authorizedNetworks[_].label == STRING
    input.Body.cloudsql.settings.ipConfig.authorizedNetworks[_].ttl == STRING
    input.Body.cloudsql.settings.ipConfig.authorizedNetworks[_].value == STRING
    input.Body.cloudsql.settings.ipConfig.enableIpv4 == BOOLEAN
    input.Body.cloudsql.settings.ipConfig.privateNetwork == STRING
    input.Body.cloudsql.settings.ipConfig.requireSsl == BOOLEAN
    input.Body.cloudsql.settings.rootPassword == STRING
    input.Body.cloudsql.settings.secondaryZone == STRING
    input.Body.cloudsql.settings.sourceId == STRING
    input.Body.cloudsql.settings.storageAutoResizeLimit == STRING
    input.Body.cloudsql.settings.tier == STRING
    input.Body.cloudsql.settings.userLabels.STRING == STRING
    input.Body.cloudsql.settings.zone == STRING
    input.Body.displayName == STRING
    input.Body.labels.STRING == STRING
    input.Body.mysql.cloudSqlId == STRING
    input.Body.mysql.host == STRING
    input.Body.mysql.password == STRING
    input.Body.mysql.port == INTEGER
    input.Body.mysql.ssl.caCertificate == STRING
    input.Body.mysql.ssl.clientCertificate == STRING
    input.Body.mysql.ssl.clientKey == STRING
    input.Body.mysql.ssl.type == enum_SslConfigType[_]
    input.Body.mysql.username == STRING
    input.Body.name == STRING
    input.Body.oracle.databaseService == STRING
    input.Body.oracle.forwardSshConnectivity.hostname == STRING
    input.Body.oracle.forwardSshConnectivity.password == STRING
    input.Body.oracle.forwardSshConnectivity.port == INTEGER
    input.Body.oracle.forwardSshConnectivity.privateKey == STRING
    input.Body.oracle.forwardSshConnectivity.username == STRING
    input.Body.oracle.host == STRING
    input.Body.oracle.oracleAsmConfig.asmService == STRING
    input.Body.oracle.oracleAsmConfig.hostname == STRING
    input.Body.oracle.oracleAsmConfig.password == STRING
    input.Body.oracle.oracleAsmConfig.port == INTEGER
    input.Body.oracle.oracleAsmConfig.ssl.caCertificate == STRING
    input.Body.oracle.oracleAsmConfig.ssl.clientCertificate == STRING
    input.Body.oracle.oracleAsmConfig.ssl.clientKey == STRING
    input.Body.oracle.oracleAsmConfig.ssl.type == enum_SslConfigType[_]
    input.Body.oracle.oracleAsmConfig.username == STRING
    input.Body.oracle.password == STRING
    input.Body.oracle.port == INTEGER
    input.Body.oracle.privateConnectivity.privateConnection == STRING
    input.Body.oracle.ssl.caCertificate == STRING
    input.Body.oracle.ssl.clientCertificate == STRING
    input.Body.oracle.ssl.clientKey == STRING
    input.Body.oracle.ssl.type == enum_SslConfigType[_]
    input.Body.oracle.staticServiceIpConnectivity.STRING == STRING
    input.Body.oracle.username == STRING
    input.Body.postgresql.alloydbClusterId == STRING
    input.Body.postgresql.cloudSqlId == STRING
    input.Body.postgresql.database == STRING
    input.Body.postgresql.host == STRING
    input.Body.postgresql.password == STRING
    input.Body.postgresql.port == INTEGER
    input.Body.postgresql.privateServiceConnectConnectivity.serviceAttachment == STRING
    input.Body.postgresql.ssl.caCertificate == STRING
    input.Body.postgresql.ssl.clientCertificate == STRING
    input.Body.postgresql.ssl.clientKey == STRING
    input.Body.postgresql.ssl.type == enum_SslConfigType[_]
    input.Body.postgresql.staticIpConnectivity.STRING == STRING
    input.Body.postgresql.username == STRING
    input.Body.provider == enum_ConnectionProfileProvider[_]
    input.Body.role == enum_ConnectionProfileRole[_]
    input.Body.sqlserver.backups.gcsBucket == STRING
    input.Body.sqlserver.backups.gcsPrefix == STRING
    input.Body.sqlserver.cloudSqlId == STRING
    input.Body.sqlserver.forwardSshConnectivity.hostname == STRING
    input.Body.sqlserver.forwardSshConnectivity.password == STRING
    input.Body.sqlserver.forwardSshConnectivity.port == INTEGER
    input.Body.sqlserver.forwardSshConnectivity.privateKey == STRING
    input.Body.sqlserver.forwardSshConnectivity.username == STRING
    input.Body.sqlserver.host == STRING
    input.Body.sqlserver.password == STRING
    input.Body.sqlserver.port == INTEGER
    input.Body.sqlserver.privateConnectivity.privateConnection == STRING
    input.Body.sqlserver.privateServiceConnectConnectivity.serviceAttachment == STRING
    input.Body.sqlserver.ssl.caCertificate == STRING
    input.Body.sqlserver.ssl.clientCertificate == STRING
    input.Body.sqlserver.ssl.clientKey == STRING
    input.Body.sqlserver.ssl.type == enum_SslConfigType[_]
    input.Body.sqlserver.staticIpConnectivity.STRING == STRING
    input.Body.sqlserver.username == STRING
    input.Body.state == enum_ConnectionProfileState[_]
    input.ReqMap.name == STRING
    input.Qs.requestId == STRING
    input.Qs.skipValidation == BOOLEAN
    input.Qs.updateMask == STRING
    input.Qs.validateOnly == BOOLEAN
    input.ProviderMetadata.Region == STRING
}

datamigration.projects.locations.connectionProfiles.setIamPolicy

enum_AuditLogConfigLogType := [ "LOG_TYPE_UNSPECIFIED", "ADMIN_READ", "DATA_WRITE", "DATA_READ" ]

valid {
    input.Body.policy.auditConfigs[_].auditLogConfigs[_].exemptedMembers[_] == STRING
    input.Body.policy.auditConfigs[_].auditLogConfigs[_].logType == enum_AuditLogConfigLogType[_]
    input.Body.policy.auditConfigs[_].service == STRING
    input.Body.policy.bindings[_].condition.description == STRING
    input.Body.policy.bindings[_].condition.expression == STRING
    input.Body.policy.bindings[_].condition.location == STRING
    input.Body.policy.bindings[_].condition.title == STRING
    input.Body.policy.bindings[_].members[_] == STRING
    input.Body.policy.bindings[_].role == STRING
    input.Body.policy.etag == STRING
    input.Body.policy.version == INTEGER
    input.Body.updateMask == STRING
    input.ReqMap.resource == STRING
    input.ProviderMetadata.Region == STRING
}

datamigration.projects.locations.connectionProfiles.testIamPermissions

valid {
    input.Body.permissions[_] == STRING
    input.ReqMap.resource == STRING
    input.ProviderMetadata.Region == STRING
}

datamigration.projects.locations.conversionWorkspaces.apply

valid {
    input.Body.autoCommit == BOOLEAN
    input.Body.connectionProfile == STRING
    input.Body.dryRun == BOOLEAN
    input.Body.filter == STRING
    input.ReqMap.name == STRING
    input.ProviderMetadata.Region == STRING
}

datamigration.projects.locations.conversionWorkspaces.commit

valid {
    input.Body.commitName == STRING
    input.ReqMap.name == STRING
    input.ProviderMetadata.Region == STRING
}

datamigration.projects.locations.conversionWorkspaces.convert

valid {
    input.Body.autoCommit == BOOLEAN
    input.Body.convertFullPath == BOOLEAN
    input.Body.filter == STRING
    input.ReqMap.name == STRING
    input.ProviderMetadata.Region == STRING
}

datamigration.projects.locations.conversionWorkspaces.create

enum_DatabaseEngineInfoEngine := [ "DATABASE_ENGINE_UNSPECIFIED", "MYSQL", "POSTGRESQL", "SQLSERVER", "ORACLE" ]

valid {
    input.Body.destination.engine == enum_DatabaseEngineInfoEngine[_]
    input.Body.destination.version == STRING
    input.Body.displayName == STRING
    input.Body.globalSettings.STRING == STRING
    input.Body.name == STRING
    input.Body.source.engine == enum_DatabaseEngineInfoEngine[_]
    input.Body.source.version == STRING
    input.ReqMap.parent == STRING
    input.Qs.conversionWorkspaceId == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
}

datamigration.projects.locations.conversionWorkspaces.delete

valid {
    input.ReqMap.name == STRING
    input.Qs.force == BOOLEAN
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
}

datamigration.projects.locations.conversionWorkspaces.describeConversionWorkspaceRevisions

valid {
    input.ReqMap.conversionWorkspace == STRING
    input.Qs.commitId == STRING
    input.ProviderMetadata.Region == STRING
}

datamigration.projects.locations.conversionWorkspaces.describeDatabaseEntities

enum_TreeParameter := [ "DB_TREE_TYPE_UNSPECIFIED", "SOURCE_TREE", "DRAFT_TREE", "DESTINATION_TREE" ]
enum_ViewParameter := [ "DATABASE_ENTITY_VIEW_UNSPECIFIED", "DATABASE_ENTITY_VIEW_BASIC", "DATABASE_ENTITY_VIEW_FULL", "DATABASE_ENTITY_VIEW_ROOT_SUMMARY" ]

valid {
    input.ReqMap.conversionWorkspace == STRING
    input.Qs.commitId == STRING
    input.Qs.filter == STRING
    input.Qs.pageSize == INTEGER
    input.Qs.pageToken == STRING
    input.Qs.tree == enum_TreeParameter[_]
    input.Qs.uncommitted == BOOLEAN
    input.Qs.view == enum_ViewParameter[_]
    input.ProviderMetadata.Region == STRING
}

datamigration.projects.locations.conversionWorkspaces.get

valid {
    input.ReqMap.name == STRING
    input.ProviderMetadata.Region == STRING
}

datamigration.projects.locations.conversionWorkspaces.getIamPolicy

valid {
    input.ReqMap.resource == STRING
    input.Qs.options.requestedPolicyVersion == INTEGER
    input.ProviderMetadata.Region == STRING
}

datamigration.projects.locations.conversionWorkspaces.list

valid {
    input.ReqMap.parent == STRING
    input.Qs.filter == STRING
    input.Qs.pageSize == INTEGER
    input.Qs.pageToken == STRING
    input.ProviderMetadata.Region == STRING
}

datamigration.projects.locations.conversionWorkspaces.mappingRules.create

enum_DoubleComparisonFilterValueComparison := [ "VALUE_COMPARISON_UNSPECIFIED", "VALUE_COMPARISON_IF_VALUE_SMALLER_THAN", "VALUE_COMPARISON_IF_VALUE_SMALLER_EQUAL_THAN", "VALUE_COMPARISON_IF_VALUE_LARGER_THAN", "VALUE_COMPARISON_IF_VALUE_LARGER_EQUAL_THAN" ]
enum_IntComparisonFilterValueComparison := [ "VALUE_COMPARISON_UNSPECIFIED", "VALUE_COMPARISON_IF_VALUE_SMALLER_THAN", "VALUE_COMPARISON_IF_VALUE_SMALLER_EQUAL_THAN", "VALUE_COMPARISON_IF_VALUE_LARGER_THAN", "VALUE_COMPARISON_IF_VALUE_LARGER_EQUAL_THAN" ]
enum_MappingRuleRuleScope := [ "DATABASE_ENTITY_TYPE_UNSPECIFIED", "DATABASE_ENTITY_TYPE_SCHEMA", "DATABASE_ENTITY_TYPE_TABLE", "DATABASE_ENTITY_TYPE_COLUMN", "DATABASE_ENTITY_TYPE_CONSTRAINT", "DATABASE_ENTITY_TYPE_INDEX", "DATABASE_ENTITY_TYPE_TRIGGER", "DATABASE_ENTITY_TYPE_VIEW", "DATABASE_ENTITY_TYPE_SEQUENCE", "DATABASE_ENTITY_TYPE_STORED_PROCEDURE", "DATABASE_ENTITY_TYPE_FUNCTION", "DATABASE_ENTITY_TYPE_SYNONYM", "DATABASE_ENTITY_TYPE_DATABASE_PACKAGE", "DATABASE_ENTITY_TYPE_UDT", "DATABASE_ENTITY_TYPE_MATERIALIZED_VIEW", "DATABASE_ENTITY_TYPE_DATABASE" ]
enum_MappingRuleState := [ "STATE_UNSPECIFIED", "ENABLED", "DISABLED", "DELETED" ]
enum_MultiEntityRenameSourceNameTransformation := [ "ENTITY_NAME_TRANSFORMATION_UNSPECIFIED", "ENTITY_NAME_TRANSFORMATION_NO_TRANSFORMATION", "ENTITY_NAME_TRANSFORMATION_LOWER_CASE", "ENTITY_NAME_TRANSFORMATION_UPPER_CASE", "ENTITY_NAME_TRANSFORMATION_CAPITALIZED_CASE" ]
enum_SourceNumericFilterNumericFilterOption := [ "NUMERIC_FILTER_OPTION_UNSPECIFIED", "NUMERIC_FILTER_OPTION_ALL", "NUMERIC_FILTER_OPTION_LIMIT", "NUMERIC_FILTER_OPTION_LIMITLESS" ]
enum_ValueListFilterValuePresentList := [ "VALUE_PRESENT_IN_LIST_UNSPECIFIED", "VALUE_PRESENT_IN_LIST_IF_VALUE_LIST", "VALUE_PRESENT_IN_LIST_IF_VALUE_NOT_LIST" ]

valid {
    input.Body.conditionalColumnSetValue.customFeatures.STRING == ANY
    input.Body.conditionalColumnSetValue.sourceNumericFilter.numericFilterOption == enum_SourceNumericFilterNumericFilterOption[_]
    input.Body.conditionalColumnSetValue.sourceNumericFilter.sourceMaxPrecisionFilter == INTEGER
    input.Body.conditionalColumnSetValue.sourceNumericFilter.sourceMaxScaleFilter == INTEGER
    input.Body.conditionalColumnSetValue.sourceNumericFilter.sourceMinPrecisionFilter == INTEGER
    input.Body.conditionalColumnSetValue.sourceNumericFilter.sourceMinScaleFilter == INTEGER
    input.Body.conditionalColumnSetValue.sourceTextFilter.sourceMaxLengthFilter == STRING
    input.Body.conditionalColumnSetValue.sourceTextFilter.sourceMinLengthFilter == STRING
    input.Body.conditionalColumnSetValue.valueTransformation.applyHash.uuidFromBytes.STRING == STRING
    input.Body.conditionalColumnSetValue.valueTransformation.assignMaxValue.STRING == STRING
    input.Body.conditionalColumnSetValue.valueTransformation.assignMinValue.STRING == STRING
    input.Body.conditionalColumnSetValue.valueTransformation.assignNull.STRING == STRING
    input.Body.conditionalColumnSetValue.valueTransformation.assignSpecificValue.value == STRING
    input.Body.conditionalColumnSetValue.valueTransformation.doubleComparison.value == NUMBER
    input.Body.conditionalColumnSetValue.valueTransformation.doubleComparison.valueComparison == enum_DoubleComparisonFilterValueComparison[_]
    input.Body.conditionalColumnSetValue.valueTransformation.intComparison.value == STRING
    input.Body.conditionalColumnSetValue.valueTransformation.intComparison.valueComparison == enum_IntComparisonFilterValueComparison[_]
    input.Body.conditionalColumnSetValue.valueTransformation.isNull.STRING == STRING
    input.Body.conditionalColumnSetValue.valueTransformation.roundScale.scale == INTEGER
    input.Body.conditionalColumnSetValue.valueTransformation.valueList.ignoreCase == BOOLEAN
    input.Body.conditionalColumnSetValue.valueTransformation.valueList.valuePresentList == enum_ValueListFilterValuePresentList[_]
    input.Body.conditionalColumnSetValue.valueTransformation.valueList.values[_] == STRING
    input.Body.convertRowidColumn.onlyIfNoPrimaryKey == BOOLEAN
    input.Body.displayName == STRING
    input.Body.entityMove.newSchema == STRING
    input.Body.filter.entities[_] == STRING
    input.Body.filter.entityNameContains == STRING
    input.Body.filter.entityNamePrefix == STRING
    input.Body.filter.entityNameSuffix == STRING
    input.Body.filter.parentEntity == STRING
    input.Body.filterTableColumns.excludeColumns[_] == STRING
    input.Body.filterTableColumns.includeColumns[_] == STRING
    input.Body.multiColumnDataTypeChange.customFeatures.STRING == ANY
    input.Body.multiColumnDataTypeChange.newDataType == STRING
    input.Body.multiColumnDataTypeChange.overrideFractionalSecondsPrecision == INTEGER
    input.Body.multiColumnDataTypeChange.overrideLength == STRING
    input.Body.multiColumnDataTypeChange.overridePrecision == INTEGER
    input.Body.multiColumnDataTypeChange.overrideScale == INTEGER
    input.Body.multiColumnDataTypeChange.sourceDataTypeFilter == STRING
    input.Body.multiColumnDataTypeChange.sourceNumericFilter.numericFilterOption == enum_SourceNumericFilterNumericFilterOption[_]
    input.Body.multiColumnDataTypeChange.sourceNumericFilter.sourceMaxPrecisionFilter == INTEGER
    input.Body.multiColumnDataTypeChange.sourceNumericFilter.sourceMaxScaleFilter == INTEGER
    input.Body.multiColumnDataTypeChange.sourceNumericFilter.sourceMinPrecisionFilter == INTEGER
    input.Body.multiColumnDataTypeChange.sourceNumericFilter.sourceMinScaleFilter == INTEGER
    input.Body.multiColumnDataTypeChange.sourceTextFilter.sourceMaxLengthFilter == STRING
    input.Body.multiColumnDataTypeChange.sourceTextFilter.sourceMinLengthFilter == STRING
    input.Body.multiEntityRename.newNamePattern == STRING
    input.Body.multiEntityRename.sourceNameTransformation == enum_MultiEntityRenameSourceNameTransformation[_]
    input.Body.name == STRING
    input.Body.ruleOrder == STRING
    input.Body.ruleScope == enum_MappingRuleRuleScope[_]
    input.Body.setTablePrimaryKey.primaryKey == STRING
    input.Body.setTablePrimaryKey.primaryKeyColumns[_] == STRING
    input.Body.singleColumnChange.array == BOOLEAN
    input.Body.singleColumnChange.arrayLength == INTEGER
    input.Body.singleColumnChange.autoGenerated == BOOLEAN
    input.Body.singleColumnChange.charset == STRING
    input.Body.singleColumnChange.collation == STRING
    input.Body.singleColumnChange.comment == STRING
    input.Body.singleColumnChange.customFeatures.STRING == ANY
    input.Body.singleColumnChange.dataType == STRING
    input.Body.singleColumnChange.fractionalSecondsPrecision == INTEGER
    input.Body.singleColumnChange.length == STRING
    input.Body.singleColumnChange.nullable == BOOLEAN
    input.Body.singleColumnChange.precision == INTEGER
    input.Body.singleColumnChange.scale == INTEGER
    input.Body.singleColumnChange.setValues[_] == STRING
    input.Body.singleColumnChange.udt == BOOLEAN
    input.Body.singleEntityRename.newName == STRING
    input.Body.singlePackageChange.packageBody == STRING
    input.Body.singlePackageChange.packageDescription == STRING
    input.Body.sourceSqlChange.sqlCode == STRING
    input.Body.state == enum_MappingRuleState[_]
    input.ReqMap.parent == STRING
    input.Qs.mappingRuleId == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
}

datamigration.projects.locations.conversionWorkspaces.mappingRules.delete

valid {
    input.ReqMap.name == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
}

datamigration.projects.locations.conversionWorkspaces.mappingRules.get

valid {
    input.ReqMap.name == STRING
    input.ProviderMetadata.Region == STRING
}

datamigration.projects.locations.conversionWorkspaces.mappingRules.import

enum_ImportMappingRulesRequestRulesFormat := [ "IMPORT_RULES_FILE_FORMAT_UNSPECIFIED", "IMPORT_RULES_FILE_FORMAT_HARBOUR_BRIDGE_SESSION_FILE", "IMPORT_RULES_FILE_FORMAT_ORATOPG_CONFIG_FILE" ]

valid {
    input.Body.autoCommit == BOOLEAN
    input.Body.rulesFiles[_].rulesContent == STRING
    input.Body.rulesFiles[_].rulesSourceFilename == STRING
    input.Body.rulesFormat == enum_ImportMappingRulesRequestRulesFormat[_]
    input.ReqMap.parent == STRING
    input.ProviderMetadata.Region == STRING
}

datamigration.projects.locations.conversionWorkspaces.mappingRules.list

valid {
    input.ReqMap.parent == STRING
    input.Qs.pageSize == INTEGER
    input.Qs.pageToken == STRING
    input.ProviderMetadata.Region == STRING
}

datamigration.projects.locations.conversionWorkspaces.patch

enum_DatabaseEngineInfoEngine := [ "DATABASE_ENGINE_UNSPECIFIED", "MYSQL", "POSTGRESQL", "SQLSERVER", "ORACLE" ]

valid {
    input.Body.destination.engine == enum_DatabaseEngineInfoEngine[_]
    input.Body.destination.version == STRING
    input.Body.displayName == STRING
    input.Body.globalSettings.STRING == STRING
    input.Body.name == STRING
    input.Body.source.engine == enum_DatabaseEngineInfoEngine[_]
    input.Body.source.version == STRING
    input.ReqMap.name == STRING
    input.Qs.requestId == STRING
    input.Qs.updateMask == STRING
    input.ProviderMetadata.Region == STRING
}

datamigration.projects.locations.conversionWorkspaces.rollback

valid {
    input.Body.STRING == STRING
    input.ReqMap.name == STRING
    input.ProviderMetadata.Region == STRING
}

datamigration.projects.locations.conversionWorkspaces.searchBackgroundJobs

valid {
    input.ReqMap.conversionWorkspace == STRING
    input.Qs.completedUntilTime == STRING
    input.Qs.maxSize == INTEGER
    input.Qs.returnMostRecentPerJobType == BOOLEAN
    input.ProviderMetadata.Region == STRING
}

datamigration.projects.locations.conversionWorkspaces.seed

valid {
    input.Body.autoCommit == BOOLEAN
    input.Body.destinationConnectionProfile == STRING
    input.Body.sourceConnectionProfile == STRING
    input.ReqMap.name == STRING
    input.ProviderMetadata.Region == STRING
}

datamigration.projects.locations.conversionWorkspaces.setIamPolicy

enum_AuditLogConfigLogType := [ "LOG_TYPE_UNSPECIFIED", "ADMIN_READ", "DATA_WRITE", "DATA_READ" ]

valid {
    input.Body.policy.auditConfigs[_].auditLogConfigs[_].exemptedMembers[_] == STRING
    input.Body.policy.auditConfigs[_].auditLogConfigs[_].logType == enum_AuditLogConfigLogType[_]
    input.Body.policy.auditConfigs[_].service == STRING
    input.Body.policy.bindings[_].condition.description == STRING
    input.Body.policy.bindings[_].condition.expression == STRING
    input.Body.policy.bindings[_].condition.location == STRING
    input.Body.policy.bindings[_].condition.title == STRING
    input.Body.policy.bindings[_].members[_] == STRING
    input.Body.policy.bindings[_].role == STRING
    input.Body.policy.etag == STRING
    input.Body.policy.version == INTEGER
    input.Body.updateMask == STRING
    input.ReqMap.resource == STRING
    input.ProviderMetadata.Region == STRING
}

datamigration.projects.locations.conversionWorkspaces.testIamPermissions

valid {
    input.Body.permissions[_] == STRING
    input.ReqMap.resource == STRING
    input.ProviderMetadata.Region == STRING
}

datamigration.projects.locations.fetchStaticIps

valid {
    input.ReqMap.name == STRING
    input.Qs.pageSize == INTEGER
    input.Qs.pageToken == STRING
    input.ProviderMetadata.Region == STRING
}

datamigration.projects.locations.get

valid {
    input.ReqMap.name == STRING
    input.ProviderMetadata.Region == STRING
}

datamigration.projects.locations.list

valid {
    input.ReqMap.name == STRING
    input.Qs.filter == STRING
    input.Qs.pageSize == INTEGER
    input.Qs.pageToken == STRING
    input.ProviderMetadata.Region == STRING
}

datamigration.projects.locations.migrationJobs.create

enum_DatabaseTypeEngine := [ "DATABASE_ENGINE_UNSPECIFIED", "MYSQL", "POSTGRESQL", "SQLSERVER", "ORACLE" ]
enum_DatabaseTypeProvider := [ "DATABASE_PROVIDER_UNSPECIFIED", "CLOUDSQL", "RDS", "AURORA", "ALLOYDB" ]
enum_MigrationJobDumpType := [ "DUMP_TYPE_UNSPECIFIED", "LOGICAL", "PHYSICAL" ]
enum_MigrationJobState := [ "STATE_UNSPECIFIED", "MAINTENANCE", "DRAFT", "CREATING", "NOT_STARTED", "RUNNING", "FAILED", "COMPLETED", "DELETING", "STOPPING", "STOPPED", "DELETED", "UPDATING", "STARTING", "RESTARTING", "RESUMING" ]
enum_MigrationJobType := [ "TYPE_UNSPECIFIED", "ONE_TIME", "CONTINUOUS" ]
enum_PerformanceConfigDumpParallelLevel := [ "DUMP_PARALLEL_LEVEL_UNSPECIFIED", "MIN", "OPTIMAL", "MAX" ]

valid {
    input.Body.cmekKeyName == STRING
    input.Body.conversionWorkspace.commitId == STRING
    input.Body.conversionWorkspace.name == STRING
    input.Body.destination == STRING
    input.Body.destinationDatabase.engine == enum_DatabaseTypeEngine[_]
    input.Body.destinationDatabase.provider == enum_DatabaseTypeProvider[_]
    input.Body.displayName == STRING
    input.Body.dumpFlags.dumpFlags[_].name == STRING
    input.Body.dumpFlags.dumpFlags[_].value == STRING
    input.Body.dumpPath == STRING
    input.Body.dumpType == enum_MigrationJobDumpType[_]
    input.Body.filter == STRING
    input.Body.labels.STRING == STRING
    input.Body.name == STRING
    input.Body.oracleToPostgresConfig.oracleSourceConfig.binaryLogParser.logFileDirectories.archivedLogDirectory == STRING
    input.Body.oracleToPostgresConfig.oracleSourceConfig.binaryLogParser.logFileDirectories.onlineLogDirectory == STRING
    input.Body.oracleToPostgresConfig.oracleSourceConfig.binaryLogParser.oracleAsmLogFileAccess.STRING == STRING
    input.Body.oracleToPostgresConfig.oracleSourceConfig.cdcStartPosition == STRING
    input.Body.oracleToPostgresConfig.oracleSourceConfig.logMiner.STRING == STRING
    input.Body.oracleToPostgresConfig.oracleSourceConfig.maxConcurrentCdcConnections == INTEGER
    input.Body.oracleToPostgresConfig.oracleSourceConfig.maxConcurrentFullDumpConnections == INTEGER
    input.Body.oracleToPostgresConfig.oracleSourceConfig.skipFullDump == BOOLEAN
    input.Body.oracleToPostgresConfig.postgresDestinationConfig.maxConcurrentConnections == INTEGER
    input.Body.oracleToPostgresConfig.postgresDestinationConfig.transactionTimeout == STRING
    input.Body.performanceConfig.dumpParallelLevel == enum_PerformanceConfigDumpParallelLevel[_]
    input.Body.reverseSshConnectivity.vm == STRING
    input.Body.reverseSshConnectivity.vmIp == STRING
    input.Body.reverseSshConnectivity.vmPort == INTEGER
    input.Body.reverseSshConnectivity.vpc == STRING
    input.Body.source == STRING
    input.Body.sourceDatabase.engine == enum_DatabaseTypeEngine[_]
    input.Body.sourceDatabase.provider == enum_DatabaseTypeProvider[_]
    input.Body.sqlserverHomogeneousMigrationJobConfig.backupFilePattern == STRING
    input.Body.sqlserverHomogeneousMigrationJobConfig.databaseBackups[_].database == STRING
    input.Body.sqlserverHomogeneousMigrationJobConfig.databaseBackups[_].encryptionOptions.certPath == STRING
    input.Body.sqlserverHomogeneousMigrationJobConfig.databaseBackups[_].encryptionOptions.pvkPassword == STRING
    input.Body.sqlserverHomogeneousMigrationJobConfig.databaseBackups[_].encryptionOptions.pvkPath == STRING
    input.Body.sqlserverHomogeneousMigrationJobConfig.promoteWhenReady == BOOLEAN
    input.Body.sqlserverHomogeneousMigrationJobConfig.useDiffBackup == BOOLEAN
    input.Body.state == enum_MigrationJobState[_]
    input.Body.staticIpConnectivity.STRING == STRING
    input.Body.type == enum_MigrationJobType[_]
    input.Body.vpcPeeringConnectivity.vpc == STRING
    input.ReqMap.parent == STRING
    input.Qs.migrationJobId == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
}

datamigration.projects.locations.migrationJobs.delete

valid {
    input.ReqMap.name == STRING
    input.Qs.force == BOOLEAN
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
}

datamigration.projects.locations.migrationJobs.demoteDestination

valid {
    input.Body.STRING == STRING
    input.ReqMap.name == STRING
    input.ProviderMetadata.Region == STRING
}

datamigration.projects.locations.migrationJobs.generateSshScript

valid {
    input.Body.vm == STRING
    input.Body.vmCreationConfig.subnet == STRING
    input.Body.vmCreationConfig.vmMachineType == STRING
    input.Body.vmCreationConfig.vmZone == STRING
    input.Body.vmPort == INTEGER
    input.Body.vmSelectionConfig.vmZone == STRING
    input.ReqMap.migrationJob == STRING
    input.ProviderMetadata.Region == STRING
}

datamigration.projects.locations.migrationJobs.generateTcpProxyScript

valid {
    input.Body.vmMachineType == STRING
    input.Body.vmName == STRING
    input.Body.vmSubnet == STRING
    input.Body.vmZone == STRING
    input.ReqMap.migrationJob == STRING
    input.ProviderMetadata.Region == STRING
}

datamigration.projects.locations.migrationJobs.get

valid {
    input.ReqMap.name == STRING
    input.ProviderMetadata.Region == STRING
}

datamigration.projects.locations.migrationJobs.getIamPolicy

valid {
    input.ReqMap.resource == STRING
    input.Qs.options.requestedPolicyVersion == INTEGER
    input.ProviderMetadata.Region == STRING
}

datamigration.projects.locations.migrationJobs.list

valid {
    input.ReqMap.parent == STRING
    input.Qs.filter == STRING
    input.Qs.orderBy == STRING
    input.Qs.pageSize == INTEGER
    input.Qs.pageToken == STRING
    input.ProviderMetadata.Region == STRING
}

datamigration.projects.locations.migrationJobs.objects.getIamPolicy

valid {
    input.ReqMap.resource == STRING
    input.Qs.options.requestedPolicyVersion == INTEGER
    input.ProviderMetadata.Region == STRING
}

datamigration.projects.locations.migrationJobs.objects.setIamPolicy

enum_AuditLogConfigLogType := [ "LOG_TYPE_UNSPECIFIED", "ADMIN_READ", "DATA_WRITE", "DATA_READ" ]

valid {
    input.Body.policy.auditConfigs[_].auditLogConfigs[_].exemptedMembers[_] == STRING
    input.Body.policy.auditConfigs[_].auditLogConfigs[_].logType == enum_AuditLogConfigLogType[_]
    input.Body.policy.auditConfigs[_].service == STRING
    input.Body.policy.bindings[_].condition.description == STRING
    input.Body.policy.bindings[_].condition.expression == STRING
    input.Body.policy.bindings[_].condition.location == STRING
    input.Body.policy.bindings[_].condition.title == STRING
    input.Body.policy.bindings[_].members[_] == STRING
    input.Body.policy.bindings[_].role == STRING
    input.Body.policy.etag == STRING
    input.Body.policy.version == INTEGER
    input.Body.updateMask == STRING
    input.ReqMap.resource == STRING
    input.ProviderMetadata.Region == STRING
}

datamigration.projects.locations.migrationJobs.objects.testIamPermissions

valid {
    input.Body.permissions[_] == STRING
    input.ReqMap.resource == STRING
    input.ProviderMetadata.Region == STRING
}

datamigration.projects.locations.migrationJobs.patch

enum_DatabaseTypeEngine := [ "DATABASE_ENGINE_UNSPECIFIED", "MYSQL", "POSTGRESQL", "SQLSERVER", "ORACLE" ]
enum_DatabaseTypeProvider := [ "DATABASE_PROVIDER_UNSPECIFIED", "CLOUDSQL", "RDS", "AURORA", "ALLOYDB" ]
enum_MigrationJobDumpType := [ "DUMP_TYPE_UNSPECIFIED", "LOGICAL", "PHYSICAL" ]
enum_MigrationJobState := [ "STATE_UNSPECIFIED", "MAINTENANCE", "DRAFT", "CREATING", "NOT_STARTED", "RUNNING", "FAILED", "COMPLETED", "DELETING", "STOPPING", "STOPPED", "DELETED", "UPDATING", "STARTING", "RESTARTING", "RESUMING" ]
enum_MigrationJobType := [ "TYPE_UNSPECIFIED", "ONE_TIME", "CONTINUOUS" ]
enum_PerformanceConfigDumpParallelLevel := [ "DUMP_PARALLEL_LEVEL_UNSPECIFIED", "MIN", "OPTIMAL", "MAX" ]

valid {
    input.Body.cmekKeyName == STRING
    input.Body.conversionWorkspace.commitId == STRING
    input.Body.conversionWorkspace.name == STRING
    input.Body.destination == STRING
    input.Body.destinationDatabase.engine == enum_DatabaseTypeEngine[_]
    input.Body.destinationDatabase.provider == enum_DatabaseTypeProvider[_]
    input.Body.displayName == STRING
    input.Body.dumpFlags.dumpFlags[_].name == STRING
    input.Body.dumpFlags.dumpFlags[_].value == STRING
    input.Body.dumpPath == STRING
    input.Body.dumpType == enum_MigrationJobDumpType[_]
    input.Body.filter == STRING
    input.Body.labels.STRING == STRING
    input.Body.name == STRING
    input.Body.oracleToPostgresConfig.oracleSourceConfig.binaryLogParser.logFileDirectories.archivedLogDirectory == STRING
    input.Body.oracleToPostgresConfig.oracleSourceConfig.binaryLogParser.logFileDirectories.onlineLogDirectory == STRING
    input.Body.oracleToPostgresConfig.oracleSourceConfig.binaryLogParser.oracleAsmLogFileAccess.STRING == STRING
    input.Body.oracleToPostgresConfig.oracleSourceConfig.cdcStartPosition == STRING
    input.Body.oracleToPostgresConfig.oracleSourceConfig.logMiner.STRING == STRING
    input.Body.oracleToPostgresConfig.oracleSourceConfig.maxConcurrentCdcConnections == INTEGER
    input.Body.oracleToPostgresConfig.oracleSourceConfig.maxConcurrentFullDumpConnections == INTEGER
    input.Body.oracleToPostgresConfig.oracleSourceConfig.skipFullDump == BOOLEAN
    input.Body.oracleToPostgresConfig.postgresDestinationConfig.maxConcurrentConnections == INTEGER
    input.Body.oracleToPostgresConfig.postgresDestinationConfig.transactionTimeout == STRING
    input.Body.performanceConfig.dumpParallelLevel == enum_PerformanceConfigDumpParallelLevel[_]
    input.Body.reverseSshConnectivity.vm == STRING
    input.Body.reverseSshConnectivity.vmIp == STRING
    input.Body.reverseSshConnectivity.vmPort == INTEGER
    input.Body.reverseSshConnectivity.vpc == STRING
    input.Body.source == STRING
    input.Body.sourceDatabase.engine == enum_DatabaseTypeEngine[_]
    input.Body.sourceDatabase.provider == enum_DatabaseTypeProvider[_]
    input.Body.sqlserverHomogeneousMigrationJobConfig.backupFilePattern == STRING
    input.Body.sqlserverHomogeneousMigrationJobConfig.databaseBackups[_].database == STRING
    input.Body.sqlserverHomogeneousMigrationJobConfig.databaseBackups[_].encryptionOptions.certPath == STRING
    input.Body.sqlserverHomogeneousMigrationJobConfig.databaseBackups[_].encryptionOptions.pvkPassword == STRING
    input.Body.sqlserverHomogeneousMigrationJobConfig.databaseBackups[_].encryptionOptions.pvkPath == STRING
    input.Body.sqlserverHomogeneousMigrationJobConfig.promoteWhenReady == BOOLEAN
    input.Body.sqlserverHomogeneousMigrationJobConfig.useDiffBackup == BOOLEAN
    input.Body.state == enum_MigrationJobState[_]
    input.Body.staticIpConnectivity.STRING == STRING
    input.Body.type == enum_MigrationJobType[_]
    input.Body.vpcPeeringConnectivity.vpc == STRING
    input.ReqMap.name == STRING
    input.Qs.requestId == STRING
    input.Qs.updateMask == STRING
    input.ProviderMetadata.Region == STRING
}

datamigration.projects.locations.migrationJobs.promote

valid {
    input.Body.STRING == STRING
    input.ReqMap.name == STRING
    input.ProviderMetadata.Region == STRING
}

datamigration.projects.locations.migrationJobs.restart

valid {
    input.Body.skipValidation == BOOLEAN
    input.ReqMap.name == STRING
    input.ProviderMetadata.Region == STRING
}

datamigration.projects.locations.migrationJobs.resume

valid {
    input.Body.skipValidation == BOOLEAN
    input.ReqMap.name == STRING
    input.ProviderMetadata.Region == STRING
}

datamigration.projects.locations.migrationJobs.setIamPolicy

enum_AuditLogConfigLogType := [ "LOG_TYPE_UNSPECIFIED", "ADMIN_READ", "DATA_WRITE", "DATA_READ" ]

valid {
    input.Body.policy.auditConfigs[_].auditLogConfigs[_].exemptedMembers[_] == STRING
    input.Body.policy.auditConfigs[_].auditLogConfigs[_].logType == enum_AuditLogConfigLogType[_]
    input.Body.policy.auditConfigs[_].service == STRING
    input.Body.policy.bindings[_].condition.description == STRING
    input.Body.policy.bindings[_].condition.expression == STRING
    input.Body.policy.bindings[_].condition.location == STRING
    input.Body.policy.bindings[_].condition.title == STRING
    input.Body.policy.bindings[_].members[_] == STRING
    input.Body.policy.bindings[_].role == STRING
    input.Body.policy.etag == STRING
    input.Body.policy.version == INTEGER
    input.Body.updateMask == STRING
    input.ReqMap.resource == STRING
    input.ProviderMetadata.Region == STRING
}

datamigration.projects.locations.migrationJobs.start

valid {
    input.Body.skipValidation == BOOLEAN
    input.ReqMap.name == STRING
    input.ProviderMetadata.Region == STRING
}

datamigration.projects.locations.migrationJobs.stop

valid {
    input.Body.STRING == STRING
    input.ReqMap.name == STRING
    input.ProviderMetadata.Region == STRING
}

datamigration.projects.locations.migrationJobs.testIamPermissions

valid {
    input.Body.permissions[_] == STRING
    input.ReqMap.resource == STRING
    input.ProviderMetadata.Region == STRING
}

datamigration.projects.locations.migrationJobs.verify

enum_DatabaseTypeEngine := [ "DATABASE_ENGINE_UNSPECIFIED", "MYSQL", "POSTGRESQL", "SQLSERVER", "ORACLE" ]
enum_DatabaseTypeProvider := [ "DATABASE_PROVIDER_UNSPECIFIED", "CLOUDSQL", "RDS", "AURORA", "ALLOYDB" ]
enum_MigrationJobDumpType := [ "DUMP_TYPE_UNSPECIFIED", "LOGICAL", "PHYSICAL" ]
enum_MigrationJobState := [ "STATE_UNSPECIFIED", "MAINTENANCE", "DRAFT", "CREATING", "NOT_STARTED", "RUNNING", "FAILED", "COMPLETED", "DELETING", "STOPPING", "STOPPED", "DELETED", "UPDATING", "STARTING", "RESTARTING", "RESUMING" ]
enum_MigrationJobType := [ "TYPE_UNSPECIFIED", "ONE_TIME", "CONTINUOUS" ]
enum_PerformanceConfigDumpParallelLevel := [ "DUMP_PARALLEL_LEVEL_UNSPECIFIED", "MIN", "OPTIMAL", "MAX" ]

valid {
    input.Body.migrationJob.cmekKeyName == STRING
    input.Body.migrationJob.conversionWorkspace.commitId == STRING
    input.Body.migrationJob.conversionWorkspace.name == STRING
    input.Body.migrationJob.destination == STRING
    input.Body.migrationJob.destinationDatabase.engine == enum_DatabaseTypeEngine[_]
    input.Body.migrationJob.destinationDatabase.provider == enum_DatabaseTypeProvider[_]
    input.Body.migrationJob.displayName == STRING
    input.Body.migrationJob.dumpFlags.dumpFlags[_].name == STRING
    input.Body.migrationJob.dumpFlags.dumpFlags[_].value == STRING
    input.Body.migrationJob.dumpPath == STRING
    input.Body.migrationJob.dumpType == enum_MigrationJobDumpType[_]
    input.Body.migrationJob.filter == STRING
    input.Body.migrationJob.labels.STRING == STRING
    input.Body.migrationJob.name == STRING
    input.Body.migrationJob.oracleToPostgresConfig.oracleSourceConfig.binaryLogParser.logFileDirectories.archivedLogDirectory == STRING
    input.Body.migrationJob.oracleToPostgresConfig.oracleSourceConfig.binaryLogParser.logFileDirectories.onlineLogDirectory == STRING
    input.Body.migrationJob.oracleToPostgresConfig.oracleSourceConfig.binaryLogParser.oracleAsmLogFileAccess.STRING == STRING
    input.Body.migrationJob.oracleToPostgresConfig.oracleSourceConfig.cdcStartPosition == STRING
    input.Body.migrationJob.oracleToPostgresConfig.oracleSourceConfig.logMiner.STRING == STRING
    input.Body.migrationJob.oracleToPostgresConfig.oracleSourceConfig.maxConcurrentCdcConnections == INTEGER
    input.Body.migrationJob.oracleToPostgresConfig.oracleSourceConfig.maxConcurrentFullDumpConnections == INTEGER
    input.Body.migrationJob.oracleToPostgresConfig.oracleSourceConfig.skipFullDump == BOOLEAN
    input.Body.migrationJob.oracleToPostgresConfig.postgresDestinationConfig.maxConcurrentConnections == INTEGER
    input.Body.migrationJob.oracleToPostgresConfig.postgresDestinationConfig.transactionTimeout == STRING
    input.Body.migrationJob.performanceConfig.dumpParallelLevel == enum_PerformanceConfigDumpParallelLevel[_]
    input.Body.migrationJob.reverseSshConnectivity.vm == STRING
    input.Body.migrationJob.reverseSshConnectivity.vmIp == STRING
    input.Body.migrationJob.reverseSshConnectivity.vmPort == INTEGER
    input.Body.migrationJob.reverseSshConnectivity.vpc == STRING
    input.Body.migrationJob.source == STRING
    input.Body.migrationJob.sourceDatabase.engine == enum_DatabaseTypeEngine[_]
    input.Body.migrationJob.sourceDatabase.provider == enum_DatabaseTypeProvider[_]
    input.Body.migrationJob.sqlserverHomogeneousMigrationJobConfig.backupFilePattern == STRING
    input.Body.migrationJob.sqlserverHomogeneousMigrationJobConfig.databaseBackups[_].database == STRING
    input.Body.migrationJob.sqlserverHomogeneousMigrationJobConfig.databaseBackups[_].encryptionOptions.certPath == STRING
    input.Body.migrationJob.sqlserverHomogeneousMigrationJobConfig.databaseBackups[_].encryptionOptions.pvkPassword == STRING
    input.Body.migrationJob.sqlserverHomogeneousMigrationJobConfig.databaseBackups[_].encryptionOptions.pvkPath == STRING
    input.Body.migrationJob.sqlserverHomogeneousMigrationJobConfig.promoteWhenReady == BOOLEAN
    input.Body.migrationJob.sqlserverHomogeneousMigrationJobConfig.useDiffBackup == BOOLEAN
    input.Body.migrationJob.state == enum_MigrationJobState[_]
    input.Body.migrationJob.staticIpConnectivity.STRING == STRING
    input.Body.migrationJob.type == enum_MigrationJobType[_]
    input.Body.migrationJob.vpcPeeringConnectivity.vpc == STRING
    input.Body.updateMask == STRING
    input.ReqMap.name == STRING
    input.ProviderMetadata.Region == STRING
}

datamigration.projects.locations.operations.cancel

valid {
    input.Body.STRING == STRING
    input.ReqMap.name == STRING
    input.ProviderMetadata.Region == STRING
}

datamigration.projects.locations.operations.delete

valid {
    input.ReqMap.name == STRING
    input.ProviderMetadata.Region == STRING
}

datamigration.projects.locations.operations.get

valid {
    input.ReqMap.name == STRING
    input.ProviderMetadata.Region == STRING
}

datamigration.projects.locations.operations.list

valid {
    input.ReqMap.name == STRING
    input.Qs.filter == STRING
    input.Qs.pageSize == INTEGER
    input.Qs.pageToken == STRING
    input.ProviderMetadata.Region == STRING
}

datamigration.projects.locations.privateConnections.create

valid {
    input.Body.displayName == STRING
    input.Body.labels.STRING == STRING
    input.Body.name == STRING
    input.Body.vpcPeeringConfig.subnet == STRING
    input.Body.vpcPeeringConfig.vpcName == STRING
    input.ReqMap.parent == STRING
    input.Qs.privateConnectionId == STRING
    input.Qs.requestId == STRING
    input.Qs.skipValidation == BOOLEAN
    input.ProviderMetadata.Region == STRING
}

datamigration.projects.locations.privateConnections.delete

valid {
    input.ReqMap.name == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
}

datamigration.projects.locations.privateConnections.get

valid {
    input.ReqMap.name == STRING
    input.ProviderMetadata.Region == STRING
}

datamigration.projects.locations.privateConnections.getIamPolicy

valid {
    input.ReqMap.resource == STRING
    input.Qs.options.requestedPolicyVersion == INTEGER
    input.ProviderMetadata.Region == STRING
}

datamigration.projects.locations.privateConnections.list

valid {
    input.ReqMap.parent == STRING
    input.Qs.filter == STRING
    input.Qs.orderBy == STRING
    input.Qs.pageSize == INTEGER
    input.Qs.pageToken == STRING
    input.ProviderMetadata.Region == STRING
}

datamigration.projects.locations.privateConnections.setIamPolicy

enum_AuditLogConfigLogType := [ "LOG_TYPE_UNSPECIFIED", "ADMIN_READ", "DATA_WRITE", "DATA_READ" ]

valid {
    input.Body.policy.auditConfigs[_].auditLogConfigs[_].exemptedMembers[_] == STRING
    input.Body.policy.auditConfigs[_].auditLogConfigs[_].logType == enum_AuditLogConfigLogType[_]
    input.Body.policy.auditConfigs[_].service == STRING
    input.Body.policy.bindings[_].condition.description == STRING
    input.Body.policy.bindings[_].condition.expression == STRING
    input.Body.policy.bindings[_].condition.location == STRING
    input.Body.policy.bindings[_].condition.title == STRING
    input.Body.policy.bindings[_].members[_] == STRING
    input.Body.policy.bindings[_].role == STRING
    input.Body.policy.etag == STRING
    input.Body.policy.version == INTEGER
    input.Body.updateMask == STRING
    input.ReqMap.resource == STRING
    input.ProviderMetadata.Region == STRING
}

datamigration.projects.locations.privateConnections.testIamPermissions

valid {
    input.Body.permissions[_] == STRING
    input.ReqMap.resource == STRING
    input.ProviderMetadata.Region == STRING
}