spanner.projects.instanceConfigOperations.list

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

spanner.projects.instanceConfigs.create

enum_ReplicaInfoType := [ "TYPE_UNSPECIFIED", "READ_WRITE", "READ_ONLY", "WITNESS" ]

valid {
    input.Body.instanceConfig.baseConfig == STRING
    input.Body.instanceConfig.displayName == STRING
    input.Body.instanceConfig.etag == STRING
    input.Body.instanceConfig.labels.STRING == STRING
    input.Body.instanceConfig.leaderOptions[_] == STRING
    input.Body.instanceConfig.name == STRING
    input.Body.instanceConfig.replicas[_].defaultLeaderLocation == BOOLEAN
    input.Body.instanceConfig.replicas[_].location == STRING
    input.Body.instanceConfig.replicas[_].type == enum_ReplicaInfoType[_]
    input.Body.instanceConfigId == STRING
    input.Body.validateOnly == BOOLEAN
    input.ReqMap.parent == STRING
    input.ProviderMetadata.Region == STRING
}

spanner.projects.instanceConfigs.delete

valid {
    input.ReqMap.name == STRING
    input.Qs.etag == STRING
    input.Qs.validateOnly == BOOLEAN
    input.ProviderMetadata.Region == STRING
}

spanner.projects.instanceConfigs.get

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

spanner.projects.instanceConfigs.list

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

spanner.projects.instanceConfigs.operations.cancel

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

spanner.projects.instanceConfigs.operations.delete

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

spanner.projects.instanceConfigs.operations.get

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

spanner.projects.instanceConfigs.operations.list

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

spanner.projects.instanceConfigs.patch

enum_ReplicaInfoType := [ "TYPE_UNSPECIFIED", "READ_WRITE", "READ_ONLY", "WITNESS" ]

valid {
    input.Body.instanceConfig.baseConfig == STRING
    input.Body.instanceConfig.displayName == STRING
    input.Body.instanceConfig.etag == STRING
    input.Body.instanceConfig.labels.STRING == STRING
    input.Body.instanceConfig.leaderOptions[_] == STRING
    input.Body.instanceConfig.name == STRING
    input.Body.instanceConfig.replicas[_].defaultLeaderLocation == BOOLEAN
    input.Body.instanceConfig.replicas[_].location == STRING
    input.Body.instanceConfig.replicas[_].type == enum_ReplicaInfoType[_]
    input.Body.updateMask == STRING
    input.Body.validateOnly == BOOLEAN
    input.ReqMap.name == STRING
    input.ProviderMetadata.Region == STRING
}

spanner.projects.instanceConfigs.ssdCaches.operations.cancel

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

spanner.projects.instanceConfigs.ssdCaches.operations.delete

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

spanner.projects.instanceConfigs.ssdCaches.operations.get

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

spanner.projects.instanceConfigs.ssdCaches.operations.list

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

spanner.projects.instances.backupOperations.list

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

spanner.projects.instances.backups.copy

enum_CopyBackupEncryptionConfigEncryptionType := [ "ENCRYPTION_TYPE_UNSPECIFIED", "USE_CONFIG_DEFAULT_OR_BACKUP_ENCRYPTION", "GOOGLE_DEFAULT_ENCRYPTION", "CUSTOMER_MANAGED_ENCRYPTION" ]

valid {
    input.Body.backupId == STRING
    input.Body.encryptionConfig.encryptionType == enum_CopyBackupEncryptionConfigEncryptionType[_]
    input.Body.encryptionConfig.kmsKeyName == STRING
    input.Body.encryptionConfig.kmsKeyNames[_] == STRING
    input.Body.expireTime == STRING
    input.Body.sourceBackup == STRING
    input.ReqMap.parent == STRING
    input.ProviderMetadata.Region == STRING
}

spanner.projects.instances.backups.create

enum_EncryptionConfig.encryptionTypeParameter := [ "ENCRYPTION_TYPE_UNSPECIFIED", "USE_DATABASE_ENCRYPTION", "GOOGLE_DEFAULT_ENCRYPTION", "CUSTOMER_MANAGED_ENCRYPTION" ]

valid {
    input.Body.database == STRING
    input.Body.expireTime == STRING
    input.Body.name == STRING
    input.Body.versionTime == STRING
    input.ReqMap.parent == STRING
    input.Qs.backupId == STRING
    input.Qs.encryptionConfig.encryptionType == enum_EncryptionConfig.encryptionTypeParameter[_]
    input.Qs.encryptionConfig.kmsKeyName == STRING
    input.Qs.encryptionConfig.kmsKeyNames == STRING
    input.ProviderMetadata.Region == STRING
}

spanner.projects.instances.backups.delete

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

spanner.projects.instances.backups.get

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

spanner.projects.instances.backups.getIamPolicy

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

spanner.projects.instances.backups.list

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

spanner.projects.instances.backups.operations.cancel

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

spanner.projects.instances.backups.operations.delete

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

spanner.projects.instances.backups.operations.get

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

spanner.projects.instances.backups.operations.list

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

spanner.projects.instances.backups.patch

valid {
    input.Body.database == STRING
    input.Body.expireTime == STRING
    input.Body.name == STRING
    input.Body.versionTime == STRING
    input.ReqMap.name == STRING
    input.Qs.updateMask == STRING
    input.ProviderMetadata.Region == STRING
}

spanner.projects.instances.backups.setIamPolicy

valid {
    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.ReqMap.resource == STRING
    input.ProviderMetadata.Region == STRING
}

spanner.projects.instances.backups.testIamPermissions

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

spanner.projects.instances.create

enum_FreeInstanceMetadataExpireBehavior := [ "EXPIRE_BEHAVIOR_UNSPECIFIED", "FREE_TO_PROVISIONED", "REMOVE_AFTER_GRACE_PERIOD" ]
enum_InstanceDefaultBackupScheduleType := [ "DEFAULT_BACKUP_SCHEDULE_TYPE_UNSPECIFIED", "NONE", "AUTOMATIC" ]
enum_InstanceEdition := [ "EDITION_UNSPECIFIED", "STANDARD", "ENTERPRISE", "ENTERPRISE_PLUS" ]
enum_InstanceInstanceType := [ "INSTANCE_TYPE_UNSPECIFIED", "PROVISIONED", "FREE_INSTANCE" ]

valid {
    input.Body.instance.autoscalingConfig.asymmetricAutoscalingOptions[_].overrides.autoscalingLimits.maxNodes == INTEGER
    input.Body.instance.autoscalingConfig.asymmetricAutoscalingOptions[_].overrides.autoscalingLimits.maxProcessingUnits == INTEGER
    input.Body.instance.autoscalingConfig.asymmetricAutoscalingOptions[_].overrides.autoscalingLimits.minNodes == INTEGER
    input.Body.instance.autoscalingConfig.asymmetricAutoscalingOptions[_].overrides.autoscalingLimits.minProcessingUnits == INTEGER
    input.Body.instance.autoscalingConfig.asymmetricAutoscalingOptions[_].overrides.autoscalingTargetHighPriorityCpuUtilizationPercent == INTEGER
    input.Body.instance.autoscalingConfig.asymmetricAutoscalingOptions[_].replicaSelection.location == STRING
    input.Body.instance.autoscalingConfig.autoscalingLimits.maxNodes == INTEGER
    input.Body.instance.autoscalingConfig.autoscalingLimits.maxProcessingUnits == INTEGER
    input.Body.instance.autoscalingConfig.autoscalingLimits.minNodes == INTEGER
    input.Body.instance.autoscalingConfig.autoscalingLimits.minProcessingUnits == INTEGER
    input.Body.instance.autoscalingConfig.autoscalingTargets.highPriorityCpuUtilizationPercent == INTEGER
    input.Body.instance.autoscalingConfig.autoscalingTargets.storageUtilizationPercent == INTEGER
    input.Body.instance.config == STRING
    input.Body.instance.defaultBackupScheduleType == enum_InstanceDefaultBackupScheduleType[_]
    input.Body.instance.displayName == STRING
    input.Body.instance.edition == enum_InstanceEdition[_]
    input.Body.instance.endpointUris[_] == STRING
    input.Body.instance.freeInstanceMetadata.expireBehavior == enum_FreeInstanceMetadataExpireBehavior[_]
    input.Body.instance.instanceType == enum_InstanceInstanceType[_]
    input.Body.instance.labels.STRING == STRING
    input.Body.instance.name == STRING
    input.Body.instance.nodeCount == INTEGER
    input.Body.instance.processingUnits == INTEGER
    input.Body.instanceId == STRING
    input.ReqMap.parent == STRING
    input.ProviderMetadata.Region == STRING
}

spanner.projects.instances.databaseOperations.list

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

spanner.projects.instances.databases.backupSchedules.create

enum_CreateBackupEncryptionConfigEncryptionType := [ "ENCRYPTION_TYPE_UNSPECIFIED", "USE_DATABASE_ENCRYPTION", "GOOGLE_DEFAULT_ENCRYPTION", "CUSTOMER_MANAGED_ENCRYPTION" ]

valid {
    input.Body.encryptionConfig.encryptionType == enum_CreateBackupEncryptionConfigEncryptionType[_]
    input.Body.encryptionConfig.kmsKeyName == STRING
    input.Body.encryptionConfig.kmsKeyNames[_] == STRING
    input.Body.fullBackupSpec.STRING == STRING
    input.Body.incrementalBackupSpec.STRING == STRING
    input.Body.name == STRING
    input.Body.retentionDuration == STRING
    input.Body.spec.cronSpec.text == STRING
    input.ReqMap.parent == STRING
    input.Qs.backupScheduleId == STRING
    input.ProviderMetadata.Region == STRING
}

spanner.projects.instances.databases.backupSchedules.delete

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

spanner.projects.instances.databases.backupSchedules.get

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

spanner.projects.instances.databases.backupSchedules.getIamPolicy

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

spanner.projects.instances.databases.backupSchedules.list

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

spanner.projects.instances.databases.backupSchedules.patch

enum_CreateBackupEncryptionConfigEncryptionType := [ "ENCRYPTION_TYPE_UNSPECIFIED", "USE_DATABASE_ENCRYPTION", "GOOGLE_DEFAULT_ENCRYPTION", "CUSTOMER_MANAGED_ENCRYPTION" ]

valid {
    input.Body.encryptionConfig.encryptionType == enum_CreateBackupEncryptionConfigEncryptionType[_]
    input.Body.encryptionConfig.kmsKeyName == STRING
    input.Body.encryptionConfig.kmsKeyNames[_] == STRING
    input.Body.fullBackupSpec.STRING == STRING
    input.Body.incrementalBackupSpec.STRING == STRING
    input.Body.name == STRING
    input.Body.retentionDuration == STRING
    input.Body.spec.cronSpec.text == STRING
    input.ReqMap.name == STRING
    input.Qs.updateMask == STRING
    input.ProviderMetadata.Region == STRING
}

spanner.projects.instances.databases.backupSchedules.setIamPolicy

valid {
    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.ReqMap.resource == STRING
    input.ProviderMetadata.Region == STRING
}

spanner.projects.instances.databases.backupSchedules.testIamPermissions

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

spanner.projects.instances.databases.changequorum

valid {
    input.Body.etag == STRING
    input.Body.name == STRING
    input.Body.quorumType.dualRegion.STRING == STRING
    input.Body.quorumType.singleRegion.servingLocation == STRING
    input.ReqMap.name == STRING
    input.ProviderMetadata.Region == STRING
}

spanner.projects.instances.databases.create

enum_CreateDatabaseRequestDatabaseDialect := [ "DATABASE_DIALECT_UNSPECIFIED", "GOOGLE_STANDARD_SQL", "POSTGRESQL" ]

valid {
    input.Body.createStatement == STRING
    input.Body.databaseDialect == enum_CreateDatabaseRequestDatabaseDialect[_]
    input.Body.encryptionConfig.kmsKeyName == STRING
    input.Body.encryptionConfig.kmsKeyNames[_] == STRING
    input.Body.extraStatements[_] == STRING
    input.Body.protoDescriptors == STRING
    input.ReqMap.parent == STRING
    input.ProviderMetadata.Region == STRING
}

spanner.projects.instances.databases.databaseRoles.list

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

spanner.projects.instances.databases.databaseRoles.testIamPermissions

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

spanner.projects.instances.databases.dropDatabase

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

spanner.projects.instances.databases.get

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

spanner.projects.instances.databases.getDdl

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

spanner.projects.instances.databases.getIamPolicy

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

spanner.projects.instances.databases.getScans

enum_ViewParameter := [ "VIEW_UNSPECIFIED", "SUMMARY", "FULL" ]

valid {
    input.ReqMap.name == STRING
    input.Qs.endTime == STRING
    input.Qs.startTime == STRING
    input.Qs.view == enum_ViewParameter[_]
    input.ProviderMetadata.Region == STRING
}

spanner.projects.instances.databases.list

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

spanner.projects.instances.databases.operations.cancel

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

spanner.projects.instances.databases.operations.delete

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

spanner.projects.instances.databases.operations.get

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

spanner.projects.instances.databases.operations.list

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

spanner.projects.instances.databases.patch

valid {
    input.Body.enableDropProtection == BOOLEAN
    input.Body.name == STRING
    input.ReqMap.name == STRING
    input.Qs.updateMask == STRING
    input.ProviderMetadata.Region == STRING
}

spanner.projects.instances.databases.restore

enum_RestoreDatabaseEncryptionConfigEncryptionType := [ "ENCRYPTION_TYPE_UNSPECIFIED", "USE_CONFIG_DEFAULT_OR_BACKUP_ENCRYPTION", "GOOGLE_DEFAULT_ENCRYPTION", "CUSTOMER_MANAGED_ENCRYPTION" ]

valid {
    input.Body.backup == STRING
    input.Body.databaseId == STRING
    input.Body.encryptionConfig.encryptionType == enum_RestoreDatabaseEncryptionConfigEncryptionType[_]
    input.Body.encryptionConfig.kmsKeyName == STRING
    input.Body.encryptionConfig.kmsKeyNames[_] == STRING
    input.ReqMap.parent == STRING
    input.ProviderMetadata.Region == STRING
}

spanner.projects.instances.databases.sessions.batchCreate

valid {
    input.Body.sessionCount == INTEGER
    input.Body.sessionTemplate.creatorRole == STRING
    input.Body.sessionTemplate.labels.STRING == STRING
    input.Body.sessionTemplate.multiplexed == BOOLEAN
    input.ReqMap.database == STRING
    input.ProviderMetadata.Region == STRING
}

spanner.projects.instances.databases.sessions.batchWrite

enum_RequestOptionsPriority := [ "PRIORITY_UNSPECIFIED", "PRIORITY_LOW", "PRIORITY_MEDIUM", "PRIORITY_HIGH" ]

valid {
    input.Body.excludeTxnFromChangeStreams == BOOLEAN
    input.Body.mutationGroups[_].mutations[_].delete.keySet.all == BOOLEAN
    input.Body.mutationGroups[_].mutations[_].delete.keySet.keys[_][_] == ANY
    input.Body.mutationGroups[_].mutations[_].delete.keySet.ranges[_].endClosed[_] == ANY
    input.Body.mutationGroups[_].mutations[_].delete.keySet.ranges[_].endOpen[_] == ANY
    input.Body.mutationGroups[_].mutations[_].delete.keySet.ranges[_].startClosed[_] == ANY
    input.Body.mutationGroups[_].mutations[_].delete.keySet.ranges[_].startOpen[_] == ANY
    input.Body.mutationGroups[_].mutations[_].delete.table == STRING
    input.Body.mutationGroups[_].mutations[_].insert.columns[_] == STRING
    input.Body.mutationGroups[_].mutations[_].insert.table == STRING
    input.Body.mutationGroups[_].mutations[_].insert.values[_][_] == ANY
    input.Body.mutationGroups[_].mutations[_].insertOrUpdate.columns[_] == STRING
    input.Body.mutationGroups[_].mutations[_].insertOrUpdate.table == STRING
    input.Body.mutationGroups[_].mutations[_].insertOrUpdate.values[_][_] == ANY
    input.Body.mutationGroups[_].mutations[_].replace.columns[_] == STRING
    input.Body.mutationGroups[_].mutations[_].replace.table == STRING
    input.Body.mutationGroups[_].mutations[_].replace.values[_][_] == ANY
    input.Body.mutationGroups[_].mutations[_].update.columns[_] == STRING
    input.Body.mutationGroups[_].mutations[_].update.table == STRING
    input.Body.mutationGroups[_].mutations[_].update.values[_][_] == ANY
    input.Body.requestOptions.priority == enum_RequestOptionsPriority[_]
    input.Body.requestOptions.requestTag == STRING
    input.Body.requestOptions.transactionTag == STRING
    input.ReqMap.session == STRING
    input.ProviderMetadata.Region == STRING
}

spanner.projects.instances.databases.sessions.beginTransaction

enum_ReadWriteReadLockMode := [ "READ_LOCK_MODE_UNSPECIFIED", "PESSIMISTIC", "OPTIMISTIC" ]
enum_RequestOptionsPriority := [ "PRIORITY_UNSPECIFIED", "PRIORITY_LOW", "PRIORITY_MEDIUM", "PRIORITY_HIGH" ]

valid {
    input.Body.mutationKey.delete.keySet.all == BOOLEAN
    input.Body.mutationKey.delete.keySet.keys[_][_] == ANY
    input.Body.mutationKey.delete.keySet.ranges[_].endClosed[_] == ANY
    input.Body.mutationKey.delete.keySet.ranges[_].endOpen[_] == ANY
    input.Body.mutationKey.delete.keySet.ranges[_].startClosed[_] == ANY
    input.Body.mutationKey.delete.keySet.ranges[_].startOpen[_] == ANY
    input.Body.mutationKey.delete.table == STRING
    input.Body.mutationKey.insert.columns[_] == STRING
    input.Body.mutationKey.insert.table == STRING
    input.Body.mutationKey.insert.values[_][_] == ANY
    input.Body.mutationKey.insertOrUpdate.columns[_] == STRING
    input.Body.mutationKey.insertOrUpdate.table == STRING
    input.Body.mutationKey.insertOrUpdate.values[_][_] == ANY
    input.Body.mutationKey.replace.columns[_] == STRING
    input.Body.mutationKey.replace.table == STRING
    input.Body.mutationKey.replace.values[_][_] == ANY
    input.Body.mutationKey.update.columns[_] == STRING
    input.Body.mutationKey.update.table == STRING
    input.Body.mutationKey.update.values[_][_] == ANY
    input.Body.options.excludeTxnFromChangeStreams == BOOLEAN
    input.Body.options.partitionedDml.STRING == STRING
    input.Body.options.readOnly.exactStaleness == STRING
    input.Body.options.readOnly.maxStaleness == STRING
    input.Body.options.readOnly.minReadTimestamp == STRING
    input.Body.options.readOnly.readTimestamp == STRING
    input.Body.options.readOnly.returnReadTimestamp == BOOLEAN
    input.Body.options.readOnly.strong == BOOLEAN
    input.Body.options.readWrite.multiplexedSessionPreviousTransactionId == STRING
    input.Body.options.readWrite.readLockMode == enum_ReadWriteReadLockMode[_]
    input.Body.requestOptions.priority == enum_RequestOptionsPriority[_]
    input.Body.requestOptions.requestTag == STRING
    input.Body.requestOptions.transactionTag == STRING
    input.ReqMap.session == STRING
    input.ProviderMetadata.Region == STRING
}

spanner.projects.instances.databases.sessions.commit

enum_ReadWriteReadLockMode := [ "READ_LOCK_MODE_UNSPECIFIED", "PESSIMISTIC", "OPTIMISTIC" ]
enum_RequestOptionsPriority := [ "PRIORITY_UNSPECIFIED", "PRIORITY_LOW", "PRIORITY_MEDIUM", "PRIORITY_HIGH" ]

valid {
    input.Body.maxCommitDelay == STRING
    input.Body.mutations[_].delete.keySet.all == BOOLEAN
    input.Body.mutations[_].delete.keySet.keys[_][_] == ANY
    input.Body.mutations[_].delete.keySet.ranges[_].endClosed[_] == ANY
    input.Body.mutations[_].delete.keySet.ranges[_].endOpen[_] == ANY
    input.Body.mutations[_].delete.keySet.ranges[_].startClosed[_] == ANY
    input.Body.mutations[_].delete.keySet.ranges[_].startOpen[_] == ANY
    input.Body.mutations[_].delete.table == STRING
    input.Body.mutations[_].insert.columns[_] == STRING
    input.Body.mutations[_].insert.table == STRING
    input.Body.mutations[_].insert.values[_][_] == ANY
    input.Body.mutations[_].insertOrUpdate.columns[_] == STRING
    input.Body.mutations[_].insertOrUpdate.table == STRING
    input.Body.mutations[_].insertOrUpdate.values[_][_] == ANY
    input.Body.mutations[_].replace.columns[_] == STRING
    input.Body.mutations[_].replace.table == STRING
    input.Body.mutations[_].replace.values[_][_] == ANY
    input.Body.mutations[_].update.columns[_] == STRING
    input.Body.mutations[_].update.table == STRING
    input.Body.mutations[_].update.values[_][_] == ANY
    input.Body.precommitToken.precommitToken == STRING
    input.Body.precommitToken.seqNum == INTEGER
    input.Body.requestOptions.priority == enum_RequestOptionsPriority[_]
    input.Body.requestOptions.requestTag == STRING
    input.Body.requestOptions.transactionTag == STRING
    input.Body.returnCommitStats == BOOLEAN
    input.Body.singleUseTransaction.excludeTxnFromChangeStreams == BOOLEAN
    input.Body.singleUseTransaction.partitionedDml.STRING == STRING
    input.Body.singleUseTransaction.readOnly.exactStaleness == STRING
    input.Body.singleUseTransaction.readOnly.maxStaleness == STRING
    input.Body.singleUseTransaction.readOnly.minReadTimestamp == STRING
    input.Body.singleUseTransaction.readOnly.readTimestamp == STRING
    input.Body.singleUseTransaction.readOnly.returnReadTimestamp == BOOLEAN
    input.Body.singleUseTransaction.readOnly.strong == BOOLEAN
    input.Body.singleUseTransaction.readWrite.multiplexedSessionPreviousTransactionId == STRING
    input.Body.singleUseTransaction.readWrite.readLockMode == enum_ReadWriteReadLockMode[_]
    input.Body.transactionId == STRING
    input.ReqMap.session == STRING
    input.ProviderMetadata.Region == STRING
}

spanner.projects.instances.databases.sessions.create

valid {
    input.Body.session.creatorRole == STRING
    input.Body.session.labels.STRING == STRING
    input.Body.session.multiplexed == BOOLEAN
    input.ReqMap.database == STRING
    input.ProviderMetadata.Region == STRING
}

spanner.projects.instances.databases.sessions.delete

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

spanner.projects.instances.databases.sessions.executeBatchDml

enum_ReadWriteReadLockMode := [ "READ_LOCK_MODE_UNSPECIFIED", "PESSIMISTIC", "OPTIMISTIC" ]
enum_RequestOptionsPriority := [ "PRIORITY_UNSPECIFIED", "PRIORITY_LOW", "PRIORITY_MEDIUM", "PRIORITY_HIGH" ]
enum_TypeCode := [ "TYPE_CODE_UNSPECIFIED", "BOOL", "INT64", "FLOAT64", "FLOAT32", "TIMESTAMP", "DATE", "STRING", "BYTES", "ARRAY", "STRUCT", "NUMERIC", "JSON", "PROTO", "ENUM", "INTERVAL" ]
enum_TypeTypeAnnotation := [ "TYPE_ANNOTATION_CODE_UNSPECIFIED", "PG_NUMERIC", "PG_JSONB" ]

valid {
    input.Body.requestOptions.priority == enum_RequestOptionsPriority[_]
    input.Body.requestOptions.requestTag == STRING
    input.Body.requestOptions.transactionTag == STRING
    input.Body.seqno == STRING
    input.Body.statements[_].paramTypes.STRING.arrayElementType == NESTED
    input.Body.statements[_].paramTypes.STRING.code == enum_TypeCode[_]
    input.Body.statements[_].paramTypes.STRING.protoTypeFqn == STRING
    input.Body.statements[_].paramTypes.STRING.structType.fields[_].name == STRING
    input.Body.statements[_].paramTypes.STRING.structType.fields[_].type == NESTED
    input.Body.statements[_].paramTypes.STRING.typeAnnotation == enum_TypeTypeAnnotation[_]
    input.Body.statements[_].params.STRING == ANY
    input.Body.statements[_].sql == STRING
    input.Body.transaction.begin.excludeTxnFromChangeStreams == BOOLEAN
    input.Body.transaction.begin.partitionedDml.STRING == STRING
    input.Body.transaction.begin.readOnly.exactStaleness == STRING
    input.Body.transaction.begin.readOnly.maxStaleness == STRING
    input.Body.transaction.begin.readOnly.minReadTimestamp == STRING
    input.Body.transaction.begin.readOnly.readTimestamp == STRING
    input.Body.transaction.begin.readOnly.returnReadTimestamp == BOOLEAN
    input.Body.transaction.begin.readOnly.strong == BOOLEAN
    input.Body.transaction.begin.readWrite.multiplexedSessionPreviousTransactionId == STRING
    input.Body.transaction.begin.readWrite.readLockMode == enum_ReadWriteReadLockMode[_]
    input.Body.transaction.id == STRING
    input.Body.transaction.singleUse.excludeTxnFromChangeStreams == BOOLEAN
    input.Body.transaction.singleUse.partitionedDml.STRING == STRING
    input.Body.transaction.singleUse.readOnly.exactStaleness == STRING
    input.Body.transaction.singleUse.readOnly.maxStaleness == STRING
    input.Body.transaction.singleUse.readOnly.minReadTimestamp == STRING
    input.Body.transaction.singleUse.readOnly.readTimestamp == STRING
    input.Body.transaction.singleUse.readOnly.returnReadTimestamp == BOOLEAN
    input.Body.transaction.singleUse.readOnly.strong == BOOLEAN
    input.Body.transaction.singleUse.readWrite.multiplexedSessionPreviousTransactionId == STRING
    input.Body.transaction.singleUse.readWrite.readLockMode == enum_ReadWriteReadLockMode[_]
    input.ReqMap.session == STRING
    input.ProviderMetadata.Region == STRING
}

spanner.projects.instances.databases.sessions.executeSql

enum_ExecuteSqlRequestQueryMode := [ "NORMAL", "PLAN", "PROFILE", "WITH_STATS", "WITH_PLAN_AND_STATS" ]
enum_ReadWriteReadLockMode := [ "READ_LOCK_MODE_UNSPECIFIED", "PESSIMISTIC", "OPTIMISTIC" ]
enum_ReplicaSelectionType := [ "TYPE_UNSPECIFIED", "READ_WRITE", "READ_ONLY" ]
enum_RequestOptionsPriority := [ "PRIORITY_UNSPECIFIED", "PRIORITY_LOW", "PRIORITY_MEDIUM", "PRIORITY_HIGH" ]
enum_TypeCode := [ "TYPE_CODE_UNSPECIFIED", "BOOL", "INT64", "FLOAT64", "FLOAT32", "TIMESTAMP", "DATE", "STRING", "BYTES", "ARRAY", "STRUCT", "NUMERIC", "JSON", "PROTO", "ENUM", "INTERVAL" ]
enum_TypeTypeAnnotation := [ "TYPE_ANNOTATION_CODE_UNSPECIFIED", "PG_NUMERIC", "PG_JSONB" ]

valid {
    input.Body.dataBoostEnabled == BOOLEAN
    input.Body.directedReadOptions.excludeReplicas.replicaSelections[_].location == STRING
    input.Body.directedReadOptions.excludeReplicas.replicaSelections[_].type == enum_ReplicaSelectionType[_]
    input.Body.directedReadOptions.includeReplicas.autoFailoverDisabled == BOOLEAN
    input.Body.directedReadOptions.includeReplicas.replicaSelections[_].location == STRING
    input.Body.directedReadOptions.includeReplicas.replicaSelections[_].type == enum_ReplicaSelectionType[_]
    input.Body.paramTypes.STRING.arrayElementType == NESTED
    input.Body.paramTypes.STRING.code == enum_TypeCode[_]
    input.Body.paramTypes.STRING.protoTypeFqn == STRING
    input.Body.paramTypes.STRING.structType.fields[_].name == STRING
    input.Body.paramTypes.STRING.structType.fields[_].type == NESTED
    input.Body.paramTypes.STRING.typeAnnotation == enum_TypeTypeAnnotation[_]
    input.Body.params.STRING == ANY
    input.Body.partitionToken == STRING
    input.Body.queryMode == enum_ExecuteSqlRequestQueryMode[_]
    input.Body.queryOptions.optimizerStatisticsPackage == STRING
    input.Body.queryOptions.optimizerVersion == STRING
    input.Body.requestOptions.priority == enum_RequestOptionsPriority[_]
    input.Body.requestOptions.requestTag == STRING
    input.Body.requestOptions.transactionTag == STRING
    input.Body.resumeToken == STRING
    input.Body.seqno == STRING
    input.Body.sql == STRING
    input.Body.transaction.begin.excludeTxnFromChangeStreams == BOOLEAN
    input.Body.transaction.begin.partitionedDml.STRING == STRING
    input.Body.transaction.begin.readOnly.exactStaleness == STRING
    input.Body.transaction.begin.readOnly.maxStaleness == STRING
    input.Body.transaction.begin.readOnly.minReadTimestamp == STRING
    input.Body.transaction.begin.readOnly.readTimestamp == STRING
    input.Body.transaction.begin.readOnly.returnReadTimestamp == BOOLEAN
    input.Body.transaction.begin.readOnly.strong == BOOLEAN
    input.Body.transaction.begin.readWrite.multiplexedSessionPreviousTransactionId == STRING
    input.Body.transaction.begin.readWrite.readLockMode == enum_ReadWriteReadLockMode[_]
    input.Body.transaction.id == STRING
    input.Body.transaction.singleUse.excludeTxnFromChangeStreams == BOOLEAN
    input.Body.transaction.singleUse.partitionedDml.STRING == STRING
    input.Body.transaction.singleUse.readOnly.exactStaleness == STRING
    input.Body.transaction.singleUse.readOnly.maxStaleness == STRING
    input.Body.transaction.singleUse.readOnly.minReadTimestamp == STRING
    input.Body.transaction.singleUse.readOnly.readTimestamp == STRING
    input.Body.transaction.singleUse.readOnly.returnReadTimestamp == BOOLEAN
    input.Body.transaction.singleUse.readOnly.strong == BOOLEAN
    input.Body.transaction.singleUse.readWrite.multiplexedSessionPreviousTransactionId == STRING
    input.Body.transaction.singleUse.readWrite.readLockMode == enum_ReadWriteReadLockMode[_]
    input.ReqMap.session == STRING
    input.ProviderMetadata.Region == STRING
}

spanner.projects.instances.databases.sessions.executeStreamingSql

enum_ExecuteSqlRequestQueryMode := [ "NORMAL", "PLAN", "PROFILE", "WITH_STATS", "WITH_PLAN_AND_STATS" ]
enum_ReadWriteReadLockMode := [ "READ_LOCK_MODE_UNSPECIFIED", "PESSIMISTIC", "OPTIMISTIC" ]
enum_ReplicaSelectionType := [ "TYPE_UNSPECIFIED", "READ_WRITE", "READ_ONLY" ]
enum_RequestOptionsPriority := [ "PRIORITY_UNSPECIFIED", "PRIORITY_LOW", "PRIORITY_MEDIUM", "PRIORITY_HIGH" ]
enum_TypeCode := [ "TYPE_CODE_UNSPECIFIED", "BOOL", "INT64", "FLOAT64", "FLOAT32", "TIMESTAMP", "DATE", "STRING", "BYTES", "ARRAY", "STRUCT", "NUMERIC", "JSON", "PROTO", "ENUM", "INTERVAL" ]
enum_TypeTypeAnnotation := [ "TYPE_ANNOTATION_CODE_UNSPECIFIED", "PG_NUMERIC", "PG_JSONB" ]

valid {
    input.Body.dataBoostEnabled == BOOLEAN
    input.Body.directedReadOptions.excludeReplicas.replicaSelections[_].location == STRING
    input.Body.directedReadOptions.excludeReplicas.replicaSelections[_].type == enum_ReplicaSelectionType[_]
    input.Body.directedReadOptions.includeReplicas.autoFailoverDisabled == BOOLEAN
    input.Body.directedReadOptions.includeReplicas.replicaSelections[_].location == STRING
    input.Body.directedReadOptions.includeReplicas.replicaSelections[_].type == enum_ReplicaSelectionType[_]
    input.Body.paramTypes.STRING.arrayElementType == NESTED
    input.Body.paramTypes.STRING.code == enum_TypeCode[_]
    input.Body.paramTypes.STRING.protoTypeFqn == STRING
    input.Body.paramTypes.STRING.structType.fields[_].name == STRING
    input.Body.paramTypes.STRING.structType.fields[_].type == NESTED
    input.Body.paramTypes.STRING.typeAnnotation == enum_TypeTypeAnnotation[_]
    input.Body.params.STRING == ANY
    input.Body.partitionToken == STRING
    input.Body.queryMode == enum_ExecuteSqlRequestQueryMode[_]
    input.Body.queryOptions.optimizerStatisticsPackage == STRING
    input.Body.queryOptions.optimizerVersion == STRING
    input.Body.requestOptions.priority == enum_RequestOptionsPriority[_]
    input.Body.requestOptions.requestTag == STRING
    input.Body.requestOptions.transactionTag == STRING
    input.Body.resumeToken == STRING
    input.Body.seqno == STRING
    input.Body.sql == STRING
    input.Body.transaction.begin.excludeTxnFromChangeStreams == BOOLEAN
    input.Body.transaction.begin.partitionedDml.STRING == STRING
    input.Body.transaction.begin.readOnly.exactStaleness == STRING
    input.Body.transaction.begin.readOnly.maxStaleness == STRING
    input.Body.transaction.begin.readOnly.minReadTimestamp == STRING
    input.Body.transaction.begin.readOnly.readTimestamp == STRING
    input.Body.transaction.begin.readOnly.returnReadTimestamp == BOOLEAN
    input.Body.transaction.begin.readOnly.strong == BOOLEAN
    input.Body.transaction.begin.readWrite.multiplexedSessionPreviousTransactionId == STRING
    input.Body.transaction.begin.readWrite.readLockMode == enum_ReadWriteReadLockMode[_]
    input.Body.transaction.id == STRING
    input.Body.transaction.singleUse.excludeTxnFromChangeStreams == BOOLEAN
    input.Body.transaction.singleUse.partitionedDml.STRING == STRING
    input.Body.transaction.singleUse.readOnly.exactStaleness == STRING
    input.Body.transaction.singleUse.readOnly.maxStaleness == STRING
    input.Body.transaction.singleUse.readOnly.minReadTimestamp == STRING
    input.Body.transaction.singleUse.readOnly.readTimestamp == STRING
    input.Body.transaction.singleUse.readOnly.returnReadTimestamp == BOOLEAN
    input.Body.transaction.singleUse.readOnly.strong == BOOLEAN
    input.Body.transaction.singleUse.readWrite.multiplexedSessionPreviousTransactionId == STRING
    input.Body.transaction.singleUse.readWrite.readLockMode == enum_ReadWriteReadLockMode[_]
    input.ReqMap.session == STRING
    input.ProviderMetadata.Region == STRING
}

spanner.projects.instances.databases.sessions.get

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

spanner.projects.instances.databases.sessions.list

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

spanner.projects.instances.databases.sessions.partitionQuery

enum_ReadWriteReadLockMode := [ "READ_LOCK_MODE_UNSPECIFIED", "PESSIMISTIC", "OPTIMISTIC" ]
enum_TypeCode := [ "TYPE_CODE_UNSPECIFIED", "BOOL", "INT64", "FLOAT64", "FLOAT32", "TIMESTAMP", "DATE", "STRING", "BYTES", "ARRAY", "STRUCT", "NUMERIC", "JSON", "PROTO", "ENUM", "INTERVAL" ]
enum_TypeTypeAnnotation := [ "TYPE_ANNOTATION_CODE_UNSPECIFIED", "PG_NUMERIC", "PG_JSONB" ]

valid {
    input.Body.paramTypes.STRING.arrayElementType == NESTED
    input.Body.paramTypes.STRING.code == enum_TypeCode[_]
    input.Body.paramTypes.STRING.protoTypeFqn == STRING
    input.Body.paramTypes.STRING.structType.fields[_].name == STRING
    input.Body.paramTypes.STRING.structType.fields[_].type == NESTED
    input.Body.paramTypes.STRING.typeAnnotation == enum_TypeTypeAnnotation[_]
    input.Body.params.STRING == ANY
    input.Body.partitionOptions.maxPartitions == STRING
    input.Body.partitionOptions.partitionSizeBytes == STRING
    input.Body.sql == STRING
    input.Body.transaction.begin.excludeTxnFromChangeStreams == BOOLEAN
    input.Body.transaction.begin.partitionedDml.STRING == STRING
    input.Body.transaction.begin.readOnly.exactStaleness == STRING
    input.Body.transaction.begin.readOnly.maxStaleness == STRING
    input.Body.transaction.begin.readOnly.minReadTimestamp == STRING
    input.Body.transaction.begin.readOnly.readTimestamp == STRING
    input.Body.transaction.begin.readOnly.returnReadTimestamp == BOOLEAN
    input.Body.transaction.begin.readOnly.strong == BOOLEAN
    input.Body.transaction.begin.readWrite.multiplexedSessionPreviousTransactionId == STRING
    input.Body.transaction.begin.readWrite.readLockMode == enum_ReadWriteReadLockMode[_]
    input.Body.transaction.id == STRING
    input.Body.transaction.singleUse.excludeTxnFromChangeStreams == BOOLEAN
    input.Body.transaction.singleUse.partitionedDml.STRING == STRING
    input.Body.transaction.singleUse.readOnly.exactStaleness == STRING
    input.Body.transaction.singleUse.readOnly.maxStaleness == STRING
    input.Body.transaction.singleUse.readOnly.minReadTimestamp == STRING
    input.Body.transaction.singleUse.readOnly.readTimestamp == STRING
    input.Body.transaction.singleUse.readOnly.returnReadTimestamp == BOOLEAN
    input.Body.transaction.singleUse.readOnly.strong == BOOLEAN
    input.Body.transaction.singleUse.readWrite.multiplexedSessionPreviousTransactionId == STRING
    input.Body.transaction.singleUse.readWrite.readLockMode == enum_ReadWriteReadLockMode[_]
    input.ReqMap.session == STRING
    input.ProviderMetadata.Region == STRING
}

spanner.projects.instances.databases.sessions.partitionRead

enum_ReadWriteReadLockMode := [ "READ_LOCK_MODE_UNSPECIFIED", "PESSIMISTIC", "OPTIMISTIC" ]

valid {
    input.Body.columns[_] == STRING
    input.Body.index == STRING
    input.Body.keySet.all == BOOLEAN
    input.Body.keySet.keys[_][_] == ANY
    input.Body.keySet.ranges[_].endClosed[_] == ANY
    input.Body.keySet.ranges[_].endOpen[_] == ANY
    input.Body.keySet.ranges[_].startClosed[_] == ANY
    input.Body.keySet.ranges[_].startOpen[_] == ANY
    input.Body.partitionOptions.maxPartitions == STRING
    input.Body.partitionOptions.partitionSizeBytes == STRING
    input.Body.table == STRING
    input.Body.transaction.begin.excludeTxnFromChangeStreams == BOOLEAN
    input.Body.transaction.begin.partitionedDml.STRING == STRING
    input.Body.transaction.begin.readOnly.exactStaleness == STRING
    input.Body.transaction.begin.readOnly.maxStaleness == STRING
    input.Body.transaction.begin.readOnly.minReadTimestamp == STRING
    input.Body.transaction.begin.readOnly.readTimestamp == STRING
    input.Body.transaction.begin.readOnly.returnReadTimestamp == BOOLEAN
    input.Body.transaction.begin.readOnly.strong == BOOLEAN
    input.Body.transaction.begin.readWrite.multiplexedSessionPreviousTransactionId == STRING
    input.Body.transaction.begin.readWrite.readLockMode == enum_ReadWriteReadLockMode[_]
    input.Body.transaction.id == STRING
    input.Body.transaction.singleUse.excludeTxnFromChangeStreams == BOOLEAN
    input.Body.transaction.singleUse.partitionedDml.STRING == STRING
    input.Body.transaction.singleUse.readOnly.exactStaleness == STRING
    input.Body.transaction.singleUse.readOnly.maxStaleness == STRING
    input.Body.transaction.singleUse.readOnly.minReadTimestamp == STRING
    input.Body.transaction.singleUse.readOnly.readTimestamp == STRING
    input.Body.transaction.singleUse.readOnly.returnReadTimestamp == BOOLEAN
    input.Body.transaction.singleUse.readOnly.strong == BOOLEAN
    input.Body.transaction.singleUse.readWrite.multiplexedSessionPreviousTransactionId == STRING
    input.Body.transaction.singleUse.readWrite.readLockMode == enum_ReadWriteReadLockMode[_]
    input.ReqMap.session == STRING
    input.ProviderMetadata.Region == STRING
}

spanner.projects.instances.databases.sessions.read

enum_ReadRequestLockHint := [ "LOCK_HINT_UNSPECIFIED", "LOCK_HINT_SHARED", "LOCK_HINT_EXCLUSIVE" ]
enum_ReadRequestOrderBy := [ "ORDER_BY_UNSPECIFIED", "ORDER_BY_PRIMARY_KEY", "ORDER_BY_NO_ORDER" ]
enum_ReadWriteReadLockMode := [ "READ_LOCK_MODE_UNSPECIFIED", "PESSIMISTIC", "OPTIMISTIC" ]
enum_ReplicaSelectionType := [ "TYPE_UNSPECIFIED", "READ_WRITE", "READ_ONLY" ]
enum_RequestOptionsPriority := [ "PRIORITY_UNSPECIFIED", "PRIORITY_LOW", "PRIORITY_MEDIUM", "PRIORITY_HIGH" ]

valid {
    input.Body.columns[_] == STRING
    input.Body.dataBoostEnabled == BOOLEAN
    input.Body.directedReadOptions.excludeReplicas.replicaSelections[_].location == STRING
    input.Body.directedReadOptions.excludeReplicas.replicaSelections[_].type == enum_ReplicaSelectionType[_]
    input.Body.directedReadOptions.includeReplicas.autoFailoverDisabled == BOOLEAN
    input.Body.directedReadOptions.includeReplicas.replicaSelections[_].location == STRING
    input.Body.directedReadOptions.includeReplicas.replicaSelections[_].type == enum_ReplicaSelectionType[_]
    input.Body.index == STRING
    input.Body.keySet.all == BOOLEAN
    input.Body.keySet.keys[_][_] == ANY
    input.Body.keySet.ranges[_].endClosed[_] == ANY
    input.Body.keySet.ranges[_].endOpen[_] == ANY
    input.Body.keySet.ranges[_].startClosed[_] == ANY
    input.Body.keySet.ranges[_].startOpen[_] == ANY
    input.Body.limit == STRING
    input.Body.lockHint == enum_ReadRequestLockHint[_]
    input.Body.orderBy == enum_ReadRequestOrderBy[_]
    input.Body.partitionToken == STRING
    input.Body.requestOptions.priority == enum_RequestOptionsPriority[_]
    input.Body.requestOptions.requestTag == STRING
    input.Body.requestOptions.transactionTag == STRING
    input.Body.resumeToken == STRING
    input.Body.table == STRING
    input.Body.transaction.begin.excludeTxnFromChangeStreams == BOOLEAN
    input.Body.transaction.begin.partitionedDml.STRING == STRING
    input.Body.transaction.begin.readOnly.exactStaleness == STRING
    input.Body.transaction.begin.readOnly.maxStaleness == STRING
    input.Body.transaction.begin.readOnly.minReadTimestamp == STRING
    input.Body.transaction.begin.readOnly.readTimestamp == STRING
    input.Body.transaction.begin.readOnly.returnReadTimestamp == BOOLEAN
    input.Body.transaction.begin.readOnly.strong == BOOLEAN
    input.Body.transaction.begin.readWrite.multiplexedSessionPreviousTransactionId == STRING
    input.Body.transaction.begin.readWrite.readLockMode == enum_ReadWriteReadLockMode[_]
    input.Body.transaction.id == STRING
    input.Body.transaction.singleUse.excludeTxnFromChangeStreams == BOOLEAN
    input.Body.transaction.singleUse.partitionedDml.STRING == STRING
    input.Body.transaction.singleUse.readOnly.exactStaleness == STRING
    input.Body.transaction.singleUse.readOnly.maxStaleness == STRING
    input.Body.transaction.singleUse.readOnly.minReadTimestamp == STRING
    input.Body.transaction.singleUse.readOnly.readTimestamp == STRING
    input.Body.transaction.singleUse.readOnly.returnReadTimestamp == BOOLEAN
    input.Body.transaction.singleUse.readOnly.strong == BOOLEAN
    input.Body.transaction.singleUse.readWrite.multiplexedSessionPreviousTransactionId == STRING
    input.Body.transaction.singleUse.readWrite.readLockMode == enum_ReadWriteReadLockMode[_]
    input.ReqMap.session == STRING
    input.ProviderMetadata.Region == STRING
}

spanner.projects.instances.databases.sessions.rollback

valid {
    input.Body.transactionId == STRING
    input.ReqMap.session == STRING
    input.ProviderMetadata.Region == STRING
}

spanner.projects.instances.databases.sessions.streamingRead

enum_ReadRequestLockHint := [ "LOCK_HINT_UNSPECIFIED", "LOCK_HINT_SHARED", "LOCK_HINT_EXCLUSIVE" ]
enum_ReadRequestOrderBy := [ "ORDER_BY_UNSPECIFIED", "ORDER_BY_PRIMARY_KEY", "ORDER_BY_NO_ORDER" ]
enum_ReadWriteReadLockMode := [ "READ_LOCK_MODE_UNSPECIFIED", "PESSIMISTIC", "OPTIMISTIC" ]
enum_ReplicaSelectionType := [ "TYPE_UNSPECIFIED", "READ_WRITE", "READ_ONLY" ]
enum_RequestOptionsPriority := [ "PRIORITY_UNSPECIFIED", "PRIORITY_LOW", "PRIORITY_MEDIUM", "PRIORITY_HIGH" ]

valid {
    input.Body.columns[_] == STRING
    input.Body.dataBoostEnabled == BOOLEAN
    input.Body.directedReadOptions.excludeReplicas.replicaSelections[_].location == STRING
    input.Body.directedReadOptions.excludeReplicas.replicaSelections[_].type == enum_ReplicaSelectionType[_]
    input.Body.directedReadOptions.includeReplicas.autoFailoverDisabled == BOOLEAN
    input.Body.directedReadOptions.includeReplicas.replicaSelections[_].location == STRING
    input.Body.directedReadOptions.includeReplicas.replicaSelections[_].type == enum_ReplicaSelectionType[_]
    input.Body.index == STRING
    input.Body.keySet.all == BOOLEAN
    input.Body.keySet.keys[_][_] == ANY
    input.Body.keySet.ranges[_].endClosed[_] == ANY
    input.Body.keySet.ranges[_].endOpen[_] == ANY
    input.Body.keySet.ranges[_].startClosed[_] == ANY
    input.Body.keySet.ranges[_].startOpen[_] == ANY
    input.Body.limit == STRING
    input.Body.lockHint == enum_ReadRequestLockHint[_]
    input.Body.orderBy == enum_ReadRequestOrderBy[_]
    input.Body.partitionToken == STRING
    input.Body.requestOptions.priority == enum_RequestOptionsPriority[_]
    input.Body.requestOptions.requestTag == STRING
    input.Body.requestOptions.transactionTag == STRING
    input.Body.resumeToken == STRING
    input.Body.table == STRING
    input.Body.transaction.begin.excludeTxnFromChangeStreams == BOOLEAN
    input.Body.transaction.begin.partitionedDml.STRING == STRING
    input.Body.transaction.begin.readOnly.exactStaleness == STRING
    input.Body.transaction.begin.readOnly.maxStaleness == STRING
    input.Body.transaction.begin.readOnly.minReadTimestamp == STRING
    input.Body.transaction.begin.readOnly.readTimestamp == STRING
    input.Body.transaction.begin.readOnly.returnReadTimestamp == BOOLEAN
    input.Body.transaction.begin.readOnly.strong == BOOLEAN
    input.Body.transaction.begin.readWrite.multiplexedSessionPreviousTransactionId == STRING
    input.Body.transaction.begin.readWrite.readLockMode == enum_ReadWriteReadLockMode[_]
    input.Body.transaction.id == STRING
    input.Body.transaction.singleUse.excludeTxnFromChangeStreams == BOOLEAN
    input.Body.transaction.singleUse.partitionedDml.STRING == STRING
    input.Body.transaction.singleUse.readOnly.exactStaleness == STRING
    input.Body.transaction.singleUse.readOnly.maxStaleness == STRING
    input.Body.transaction.singleUse.readOnly.minReadTimestamp == STRING
    input.Body.transaction.singleUse.readOnly.readTimestamp == STRING
    input.Body.transaction.singleUse.readOnly.returnReadTimestamp == BOOLEAN
    input.Body.transaction.singleUse.readOnly.strong == BOOLEAN
    input.Body.transaction.singleUse.readWrite.multiplexedSessionPreviousTransactionId == STRING
    input.Body.transaction.singleUse.readWrite.readLockMode == enum_ReadWriteReadLockMode[_]
    input.ReqMap.session == STRING
    input.ProviderMetadata.Region == STRING
}

spanner.projects.instances.databases.setIamPolicy

valid {
    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.ReqMap.resource == STRING
    input.ProviderMetadata.Region == STRING
}

spanner.projects.instances.databases.testIamPermissions

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

spanner.projects.instances.databases.updateDdl

valid {
    input.Body.operationId == STRING
    input.Body.protoDescriptors == STRING
    input.Body.statements[_] == STRING
    input.ReqMap.database == STRING
    input.ProviderMetadata.Region == STRING
}

spanner.projects.instances.delete

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

spanner.projects.instances.get

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

spanner.projects.instances.getIamPolicy

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

spanner.projects.instances.instancePartitionOperations.list

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

spanner.projects.instances.instancePartitions.create

valid {
    input.Body.instancePartition.config == STRING
    input.Body.instancePartition.displayName == STRING
    input.Body.instancePartition.etag == STRING
    input.Body.instancePartition.name == STRING
    input.Body.instancePartition.nodeCount == INTEGER
    input.Body.instancePartition.processingUnits == INTEGER
    input.Body.instancePartitionId == STRING
    input.ReqMap.parent == STRING
    input.ProviderMetadata.Region == STRING
}

spanner.projects.instances.instancePartitions.delete

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

spanner.projects.instances.instancePartitions.get

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

spanner.projects.instances.instancePartitions.list

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

spanner.projects.instances.instancePartitions.operations.cancel

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

spanner.projects.instances.instancePartitions.operations.delete

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

spanner.projects.instances.instancePartitions.operations.get

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

spanner.projects.instances.instancePartitions.operations.list

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

spanner.projects.instances.instancePartitions.patch

valid {
    input.Body.fieldMask == STRING
    input.Body.instancePartition.config == STRING
    input.Body.instancePartition.displayName == STRING
    input.Body.instancePartition.etag == STRING
    input.Body.instancePartition.name == STRING
    input.Body.instancePartition.nodeCount == INTEGER
    input.Body.instancePartition.processingUnits == INTEGER
    input.ReqMap.name == STRING
    input.ProviderMetadata.Region == STRING
}

spanner.projects.instances.list

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

spanner.projects.instances.move

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

spanner.projects.instances.operations.cancel

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

spanner.projects.instances.operations.delete

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

spanner.projects.instances.operations.get

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

spanner.projects.instances.operations.list

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

spanner.projects.instances.patch

enum_FreeInstanceMetadataExpireBehavior := [ "EXPIRE_BEHAVIOR_UNSPECIFIED", "FREE_TO_PROVISIONED", "REMOVE_AFTER_GRACE_PERIOD" ]
enum_InstanceDefaultBackupScheduleType := [ "DEFAULT_BACKUP_SCHEDULE_TYPE_UNSPECIFIED", "NONE", "AUTOMATIC" ]
enum_InstanceEdition := [ "EDITION_UNSPECIFIED", "STANDARD", "ENTERPRISE", "ENTERPRISE_PLUS" ]
enum_InstanceInstanceType := [ "INSTANCE_TYPE_UNSPECIFIED", "PROVISIONED", "FREE_INSTANCE" ]

valid {
    input.Body.fieldMask == STRING
    input.Body.instance.autoscalingConfig.asymmetricAutoscalingOptions[_].overrides.autoscalingLimits.maxNodes == INTEGER
    input.Body.instance.autoscalingConfig.asymmetricAutoscalingOptions[_].overrides.autoscalingLimits.maxProcessingUnits == INTEGER
    input.Body.instance.autoscalingConfig.asymmetricAutoscalingOptions[_].overrides.autoscalingLimits.minNodes == INTEGER
    input.Body.instance.autoscalingConfig.asymmetricAutoscalingOptions[_].overrides.autoscalingLimits.minProcessingUnits == INTEGER
    input.Body.instance.autoscalingConfig.asymmetricAutoscalingOptions[_].overrides.autoscalingTargetHighPriorityCpuUtilizationPercent == INTEGER
    input.Body.instance.autoscalingConfig.asymmetricAutoscalingOptions[_].replicaSelection.location == STRING
    input.Body.instance.autoscalingConfig.autoscalingLimits.maxNodes == INTEGER
    input.Body.instance.autoscalingConfig.autoscalingLimits.maxProcessingUnits == INTEGER
    input.Body.instance.autoscalingConfig.autoscalingLimits.minNodes == INTEGER
    input.Body.instance.autoscalingConfig.autoscalingLimits.minProcessingUnits == INTEGER
    input.Body.instance.autoscalingConfig.autoscalingTargets.highPriorityCpuUtilizationPercent == INTEGER
    input.Body.instance.autoscalingConfig.autoscalingTargets.storageUtilizationPercent == INTEGER
    input.Body.instance.config == STRING
    input.Body.instance.defaultBackupScheduleType == enum_InstanceDefaultBackupScheduleType[_]
    input.Body.instance.displayName == STRING
    input.Body.instance.edition == enum_InstanceEdition[_]
    input.Body.instance.endpointUris[_] == STRING
    input.Body.instance.freeInstanceMetadata.expireBehavior == enum_FreeInstanceMetadataExpireBehavior[_]
    input.Body.instance.instanceType == enum_InstanceInstanceType[_]
    input.Body.instance.labels.STRING == STRING
    input.Body.instance.name == STRING
    input.Body.instance.nodeCount == INTEGER
    input.Body.instance.processingUnits == INTEGER
    input.ReqMap.name == STRING
    input.ProviderMetadata.Region == STRING
}

spanner.projects.instances.setIamPolicy

valid {
    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.ReqMap.resource == STRING
    input.ProviderMetadata.Region == STRING
}

spanner.projects.instances.testIamPermissions

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

spanner.scans.list

enum_ViewParameter := [ "VIEW_UNSPECIFIED", "SUMMARY", "FULL" ]

valid {
    input.ReqMap.parent == STRING
    input.Qs.filter == STRING
    input.Qs.pageSize == INTEGER
    input.Qs.pageToken == STRING
    input.Qs.view == enum_ViewParameter[_]
    input.ProviderMetadata.Region == STRING
}