compute.acceleratorTypes.aggregatedList

valid {
    input.ReqMap.ProjectID == STRING
    input.Qs.filter == STRING
    input.Qs.includeAllScopes == BOOLEAN
    input.Qs.maxResults == INTEGER
    input.Qs.orderBy == STRING
    input.Qs.pageToken == STRING
    input.Qs.returnPartialSuccess == BOOLEAN
    input.Qs.serviceProjectNumber == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.acceleratorTypes.get

valid {
    input.ReqMap.acceleratorType == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.zone == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.acceleratorTypes.list

valid {
    input.ReqMap.ProjectID == STRING
    input.ReqMap.zone == STRING
    input.Qs.filter == STRING
    input.Qs.maxResults == INTEGER
    input.Qs.orderBy == STRING
    input.Qs.pageToken == STRING
    input.Qs.returnPartialSuccess == BOOLEAN
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.addresses.aggregatedList

valid {
    input.ReqMap.ProjectID == STRING
    input.Qs.filter == STRING
    input.Qs.includeAllScopes == BOOLEAN
    input.Qs.maxResults == INTEGER
    input.Qs.orderBy == STRING
    input.Qs.pageToken == STRING
    input.Qs.returnPartialSuccess == BOOLEAN
    input.Qs.serviceProjectNumber == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.addresses.delete

valid {
    input.ReqMap.address == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.addresses.get

valid {
    input.ReqMap.address == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.addresses.insert

enum_AddressAddressType := [ "EXTERNAL", "INTERNAL", "UNSPECIFIED_TYPE" ]
enum_AddressIpVersion := [ "IPV4", "IPV6", "UNSPECIFIED_VERSION" ]
enum_AddressIpv6EndpointType := [ "NETLB", "VM" ]
enum_AddressNetworkTier := [ "FIXED_STANDARD", "PREMIUM", "STANDARD", "STANDARD_OVERRIDES_FIXED_STANDARD" ]
enum_AddressPurpose := [ "DNS_RESOLVER", "GCE_ENDPOINT", "IPSEC_INTERCONNECT", "NAT_AUTO", "PRIVATE_SERVICE_CONNECT", "SERVERLESS", "SHARED_LOADBALANCER_VIP", "VPC_PEERING" ]
enum_AddressStatus := [ "IN_USE", "RESERVED", "RESERVING" ]

valid {
    input.Body.address == STRING
    input.Body.addressType == enum_AddressAddressType[_]
    input.Body.creationTimestamp == STRING
    input.Body.description == STRING
    input.Body.id == STRING
    input.Body.ipVersion == enum_AddressIpVersion[_]
    input.Body.ipv6EndpointType == enum_AddressIpv6EndpointType[_]
    input.Body.kind == STRING
    input.Body.labelFingerprint == STRING
    input.Body.labels.STRING == STRING
    input.Body.name == STRING
    input.Body.network == STRING
    input.Body.networkTier == enum_AddressNetworkTier[_]
    input.Body.prefixLength == INTEGER
    input.Body.purpose == enum_AddressPurpose[_]
    input.Body.region == STRING
    input.Body.selfLink == STRING
    input.Body.status == enum_AddressStatus[_]
    input.Body.subnetwork == STRING
    input.Body.users[_] == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.addresses.list

valid {
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.Qs.filter == STRING
    input.Qs.maxResults == INTEGER
    input.Qs.orderBy == STRING
    input.Qs.pageToken == STRING
    input.Qs.returnPartialSuccess == BOOLEAN
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.addresses.move

valid {
    input.Body.description == STRING
    input.Body.destinationAddress == STRING
    input.ReqMap.address == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.addresses.setLabels

valid {
    input.Body.labelFingerprint == STRING
    input.Body.labels.STRING == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.ReqMap.resource == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.addresses.testIamPermissions

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

compute.autoscalers.aggregatedList

valid {
    input.ReqMap.ProjectID == STRING
    input.Qs.filter == STRING
    input.Qs.includeAllScopes == BOOLEAN
    input.Qs.maxResults == INTEGER
    input.Qs.orderBy == STRING
    input.Qs.pageToken == STRING
    input.Qs.returnPartialSuccess == BOOLEAN
    input.Qs.serviceProjectNumber == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.autoscalers.delete

valid {
    input.ReqMap.autoscaler == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.zone == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.autoscalers.get

valid {
    input.ReqMap.autoscaler == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.zone == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.autoscalers.insert

enum_AutoscalerStatus := [ "ACTIVE", "DELETING", "ERROR", "PENDING" ]
enum_AutoscalerStatusDetailsType := [ "ALL_INSTANCES_UNHEALTHY", "BACKEND_SERVICE_DOES_NOT_EXIST", "CAPPED_AT_MAX_NUM_REPLICAS", "CUSTOM_METRIC_DATA_POINTS_TOO_SPARSE", "CUSTOM_METRIC_INVALID", "MIN_EQUALS_MAX", "MISSING_CUSTOM_METRIC_DATA_POINTS", "MISSING_LOAD_BALANCING_DATA_POINTS", "MODE_OFF", "MODE_ONLY_SCALE_OUT", "MODE_ONLY_UP", "MORE_THAN_ONE_BACKEND_SERVICE", "NOT_ENOUGH_QUOTA_AVAILABLE", "REGION_RESOURCE_STOCKOUT", "SCALING_TARGET_DOES_NOT_EXIST", "SCHEDULED_INSTANCES_GREATER_THAN_AUTOSCALER_MAX", "SCHEDULED_INSTANCES_LESS_THAN_AUTOSCALER_MIN", "UNKNOWN", "UNSUPPORTED_MAX_RATE_LOAD_BALANCING_CONFIGURATION", "ZONE_RESOURCE_STOCKOUT" ]
enum_AutoscalingPolicyCpuUtilizationPredictiveMethod := [ "NONE", "OPTIMIZE_AVAILABILITY" ]
enum_AutoscalingPolicyCustomMetricUtilizationUtilizationTargetType := [ "DELTA_PER_MINUTE", "DELTA_PER_SECOND", "GAUGE" ]
enum_AutoscalingPolicyMode := [ "OFF", "ON", "ONLY_SCALE_OUT", "ONLY_UP" ]
enum_ScalingScheduleStatusState := [ "ACTIVE", "DISABLED", "OBSOLETE", "READY" ]

valid {
    input.Body.autoscalingPolicy.coolDownPeriodSec == INTEGER
    input.Body.autoscalingPolicy.cpuUtilization.predictiveMethod == enum_AutoscalingPolicyCpuUtilizationPredictiveMethod[_]
    input.Body.autoscalingPolicy.cpuUtilization.utilizationTarget == NUMBER
    input.Body.autoscalingPolicy.customMetricUtilizations[_].filter == STRING
    input.Body.autoscalingPolicy.customMetricUtilizations[_].metric == STRING
    input.Body.autoscalingPolicy.customMetricUtilizations[_].singleInstanceAssignment == NUMBER
    input.Body.autoscalingPolicy.customMetricUtilizations[_].utilizationTarget == NUMBER
    input.Body.autoscalingPolicy.customMetricUtilizations[_].utilizationTargetType == enum_AutoscalingPolicyCustomMetricUtilizationUtilizationTargetType[_]
    input.Body.autoscalingPolicy.loadBalancingUtilization.utilizationTarget == NUMBER
    input.Body.autoscalingPolicy.maxNumReplicas == INTEGER
    input.Body.autoscalingPolicy.minNumReplicas == INTEGER
    input.Body.autoscalingPolicy.mode == enum_AutoscalingPolicyMode[_]
    input.Body.autoscalingPolicy.scaleInControl.maxScaledInReplicas.calculated == INTEGER
    input.Body.autoscalingPolicy.scaleInControl.maxScaledInReplicas.fixed == INTEGER
    input.Body.autoscalingPolicy.scaleInControl.maxScaledInReplicas.percent == INTEGER
    input.Body.autoscalingPolicy.scaleInControl.timeWindowSec == INTEGER
    input.Body.autoscalingPolicy.scalingSchedules.STRING.description == STRING
    input.Body.autoscalingPolicy.scalingSchedules.STRING.disabled == BOOLEAN
    input.Body.autoscalingPolicy.scalingSchedules.STRING.durationSec == INTEGER
    input.Body.autoscalingPolicy.scalingSchedules.STRING.minRequiredReplicas == INTEGER
    input.Body.autoscalingPolicy.scalingSchedules.STRING.schedule == STRING
    input.Body.autoscalingPolicy.scalingSchedules.STRING.timeZone == STRING
    input.Body.creationTimestamp == STRING
    input.Body.description == STRING
    input.Body.id == STRING
    input.Body.kind == STRING
    input.Body.name == STRING
    input.Body.recommendedSize == INTEGER
    input.Body.region == STRING
    input.Body.scalingScheduleStatus.STRING.lastStartTime == STRING
    input.Body.scalingScheduleStatus.STRING.nextStartTime == STRING
    input.Body.scalingScheduleStatus.STRING.state == enum_ScalingScheduleStatusState[_]
    input.Body.selfLink == STRING
    input.Body.status == enum_AutoscalerStatus[_]
    input.Body.statusDetails[_].message == STRING
    input.Body.statusDetails[_].type == enum_AutoscalerStatusDetailsType[_]
    input.Body.target == STRING
    input.Body.zone == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.zone == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.autoscalers.list

valid {
    input.ReqMap.ProjectID == STRING
    input.ReqMap.zone == STRING
    input.Qs.filter == STRING
    input.Qs.maxResults == INTEGER
    input.Qs.orderBy == STRING
    input.Qs.pageToken == STRING
    input.Qs.returnPartialSuccess == BOOLEAN
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.autoscalers.patch

enum_AutoscalerStatus := [ "ACTIVE", "DELETING", "ERROR", "PENDING" ]
enum_AutoscalerStatusDetailsType := [ "ALL_INSTANCES_UNHEALTHY", "BACKEND_SERVICE_DOES_NOT_EXIST", "CAPPED_AT_MAX_NUM_REPLICAS", "CUSTOM_METRIC_DATA_POINTS_TOO_SPARSE", "CUSTOM_METRIC_INVALID", "MIN_EQUALS_MAX", "MISSING_CUSTOM_METRIC_DATA_POINTS", "MISSING_LOAD_BALANCING_DATA_POINTS", "MODE_OFF", "MODE_ONLY_SCALE_OUT", "MODE_ONLY_UP", "MORE_THAN_ONE_BACKEND_SERVICE", "NOT_ENOUGH_QUOTA_AVAILABLE", "REGION_RESOURCE_STOCKOUT", "SCALING_TARGET_DOES_NOT_EXIST", "SCHEDULED_INSTANCES_GREATER_THAN_AUTOSCALER_MAX", "SCHEDULED_INSTANCES_LESS_THAN_AUTOSCALER_MIN", "UNKNOWN", "UNSUPPORTED_MAX_RATE_LOAD_BALANCING_CONFIGURATION", "ZONE_RESOURCE_STOCKOUT" ]
enum_AutoscalingPolicyCpuUtilizationPredictiveMethod := [ "NONE", "OPTIMIZE_AVAILABILITY" ]
enum_AutoscalingPolicyCustomMetricUtilizationUtilizationTargetType := [ "DELTA_PER_MINUTE", "DELTA_PER_SECOND", "GAUGE" ]
enum_AutoscalingPolicyMode := [ "OFF", "ON", "ONLY_SCALE_OUT", "ONLY_UP" ]
enum_ScalingScheduleStatusState := [ "ACTIVE", "DISABLED", "OBSOLETE", "READY" ]

valid {
    input.Body.autoscalingPolicy.coolDownPeriodSec == INTEGER
    input.Body.autoscalingPolicy.cpuUtilization.predictiveMethod == enum_AutoscalingPolicyCpuUtilizationPredictiveMethod[_]
    input.Body.autoscalingPolicy.cpuUtilization.utilizationTarget == NUMBER
    input.Body.autoscalingPolicy.customMetricUtilizations[_].filter == STRING
    input.Body.autoscalingPolicy.customMetricUtilizations[_].metric == STRING
    input.Body.autoscalingPolicy.customMetricUtilizations[_].singleInstanceAssignment == NUMBER
    input.Body.autoscalingPolicy.customMetricUtilizations[_].utilizationTarget == NUMBER
    input.Body.autoscalingPolicy.customMetricUtilizations[_].utilizationTargetType == enum_AutoscalingPolicyCustomMetricUtilizationUtilizationTargetType[_]
    input.Body.autoscalingPolicy.loadBalancingUtilization.utilizationTarget == NUMBER
    input.Body.autoscalingPolicy.maxNumReplicas == INTEGER
    input.Body.autoscalingPolicy.minNumReplicas == INTEGER
    input.Body.autoscalingPolicy.mode == enum_AutoscalingPolicyMode[_]
    input.Body.autoscalingPolicy.scaleInControl.maxScaledInReplicas.calculated == INTEGER
    input.Body.autoscalingPolicy.scaleInControl.maxScaledInReplicas.fixed == INTEGER
    input.Body.autoscalingPolicy.scaleInControl.maxScaledInReplicas.percent == INTEGER
    input.Body.autoscalingPolicy.scaleInControl.timeWindowSec == INTEGER
    input.Body.autoscalingPolicy.scalingSchedules.STRING.description == STRING
    input.Body.autoscalingPolicy.scalingSchedules.STRING.disabled == BOOLEAN
    input.Body.autoscalingPolicy.scalingSchedules.STRING.durationSec == INTEGER
    input.Body.autoscalingPolicy.scalingSchedules.STRING.minRequiredReplicas == INTEGER
    input.Body.autoscalingPolicy.scalingSchedules.STRING.schedule == STRING
    input.Body.autoscalingPolicy.scalingSchedules.STRING.timeZone == STRING
    input.Body.creationTimestamp == STRING
    input.Body.description == STRING
    input.Body.id == STRING
    input.Body.kind == STRING
    input.Body.name == STRING
    input.Body.recommendedSize == INTEGER
    input.Body.region == STRING
    input.Body.scalingScheduleStatus.STRING.lastStartTime == STRING
    input.Body.scalingScheduleStatus.STRING.nextStartTime == STRING
    input.Body.scalingScheduleStatus.STRING.state == enum_ScalingScheduleStatusState[_]
    input.Body.selfLink == STRING
    input.Body.status == enum_AutoscalerStatus[_]
    input.Body.statusDetails[_].message == STRING
    input.Body.statusDetails[_].type == enum_AutoscalerStatusDetailsType[_]
    input.Body.target == STRING
    input.Body.zone == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.zone == STRING
    input.Qs.autoscaler == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.autoscalers.testIamPermissions

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

compute.autoscalers.update

enum_AutoscalerStatus := [ "ACTIVE", "DELETING", "ERROR", "PENDING" ]
enum_AutoscalerStatusDetailsType := [ "ALL_INSTANCES_UNHEALTHY", "BACKEND_SERVICE_DOES_NOT_EXIST", "CAPPED_AT_MAX_NUM_REPLICAS", "CUSTOM_METRIC_DATA_POINTS_TOO_SPARSE", "CUSTOM_METRIC_INVALID", "MIN_EQUALS_MAX", "MISSING_CUSTOM_METRIC_DATA_POINTS", "MISSING_LOAD_BALANCING_DATA_POINTS", "MODE_OFF", "MODE_ONLY_SCALE_OUT", "MODE_ONLY_UP", "MORE_THAN_ONE_BACKEND_SERVICE", "NOT_ENOUGH_QUOTA_AVAILABLE", "REGION_RESOURCE_STOCKOUT", "SCALING_TARGET_DOES_NOT_EXIST", "SCHEDULED_INSTANCES_GREATER_THAN_AUTOSCALER_MAX", "SCHEDULED_INSTANCES_LESS_THAN_AUTOSCALER_MIN", "UNKNOWN", "UNSUPPORTED_MAX_RATE_LOAD_BALANCING_CONFIGURATION", "ZONE_RESOURCE_STOCKOUT" ]
enum_AutoscalingPolicyCpuUtilizationPredictiveMethod := [ "NONE", "OPTIMIZE_AVAILABILITY" ]
enum_AutoscalingPolicyCustomMetricUtilizationUtilizationTargetType := [ "DELTA_PER_MINUTE", "DELTA_PER_SECOND", "GAUGE" ]
enum_AutoscalingPolicyMode := [ "OFF", "ON", "ONLY_SCALE_OUT", "ONLY_UP" ]
enum_ScalingScheduleStatusState := [ "ACTIVE", "DISABLED", "OBSOLETE", "READY" ]

valid {
    input.Body.autoscalingPolicy.coolDownPeriodSec == INTEGER
    input.Body.autoscalingPolicy.cpuUtilization.predictiveMethod == enum_AutoscalingPolicyCpuUtilizationPredictiveMethod[_]
    input.Body.autoscalingPolicy.cpuUtilization.utilizationTarget == NUMBER
    input.Body.autoscalingPolicy.customMetricUtilizations[_].filter == STRING
    input.Body.autoscalingPolicy.customMetricUtilizations[_].metric == STRING
    input.Body.autoscalingPolicy.customMetricUtilizations[_].singleInstanceAssignment == NUMBER
    input.Body.autoscalingPolicy.customMetricUtilizations[_].utilizationTarget == NUMBER
    input.Body.autoscalingPolicy.customMetricUtilizations[_].utilizationTargetType == enum_AutoscalingPolicyCustomMetricUtilizationUtilizationTargetType[_]
    input.Body.autoscalingPolicy.loadBalancingUtilization.utilizationTarget == NUMBER
    input.Body.autoscalingPolicy.maxNumReplicas == INTEGER
    input.Body.autoscalingPolicy.minNumReplicas == INTEGER
    input.Body.autoscalingPolicy.mode == enum_AutoscalingPolicyMode[_]
    input.Body.autoscalingPolicy.scaleInControl.maxScaledInReplicas.calculated == INTEGER
    input.Body.autoscalingPolicy.scaleInControl.maxScaledInReplicas.fixed == INTEGER
    input.Body.autoscalingPolicy.scaleInControl.maxScaledInReplicas.percent == INTEGER
    input.Body.autoscalingPolicy.scaleInControl.timeWindowSec == INTEGER
    input.Body.autoscalingPolicy.scalingSchedules.STRING.description == STRING
    input.Body.autoscalingPolicy.scalingSchedules.STRING.disabled == BOOLEAN
    input.Body.autoscalingPolicy.scalingSchedules.STRING.durationSec == INTEGER
    input.Body.autoscalingPolicy.scalingSchedules.STRING.minRequiredReplicas == INTEGER
    input.Body.autoscalingPolicy.scalingSchedules.STRING.schedule == STRING
    input.Body.autoscalingPolicy.scalingSchedules.STRING.timeZone == STRING
    input.Body.creationTimestamp == STRING
    input.Body.description == STRING
    input.Body.id == STRING
    input.Body.kind == STRING
    input.Body.name == STRING
    input.Body.recommendedSize == INTEGER
    input.Body.region == STRING
    input.Body.scalingScheduleStatus.STRING.lastStartTime == STRING
    input.Body.scalingScheduleStatus.STRING.nextStartTime == STRING
    input.Body.scalingScheduleStatus.STRING.state == enum_ScalingScheduleStatusState[_]
    input.Body.selfLink == STRING
    input.Body.status == enum_AutoscalerStatus[_]
    input.Body.statusDetails[_].message == STRING
    input.Body.statusDetails[_].type == enum_AutoscalerStatusDetailsType[_]
    input.Body.target == STRING
    input.Body.zone == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.zone == STRING
    input.Qs.autoscaler == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.backendBuckets.addSignedUrlKey

valid {
    input.Body.keyName == STRING
    input.Body.keyValue == STRING
    input.ReqMap.backendBucket == STRING
    input.ReqMap.ProjectID == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.backendBuckets.delete

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

compute.backendBuckets.deleteSignedUrlKey

valid {
    input.ReqMap.backendBucket == STRING
    input.ReqMap.ProjectID == STRING
    input.Qs.keyName == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.backendBuckets.get

valid {
    input.ReqMap.backendBucket == STRING
    input.ReqMap.ProjectID == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.backendBuckets.getIamPolicy

valid {
    input.ReqMap.ProjectID == STRING
    input.ReqMap.resource == STRING
    input.Qs.optionsRequestedPolicyVersion == INTEGER
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.backendBuckets.insert

enum_BackendBucketCdnPolicyCacheMode := [ "CACHE_ALL_STATIC", "FORCE_CACHE_ALL", "INVALID_CACHE_MODE", "USE_ORIGIN_HEADERS" ]
enum_BackendBucketCompressionMode := [ "AUTOMATIC", "DISABLED" ]

valid {
    input.Body.bucketName == STRING
    input.Body.cdnPolicy.bypassCacheOnRequestHeaders[_].headerName == STRING
    input.Body.cdnPolicy.cacheKeyPolicy.includeHttpHeaders[_] == STRING
    input.Body.cdnPolicy.cacheKeyPolicy.queryStringWhitelist[_] == STRING
    input.Body.cdnPolicy.cacheMode == enum_BackendBucketCdnPolicyCacheMode[_]
    input.Body.cdnPolicy.clientTtl == INTEGER
    input.Body.cdnPolicy.defaultTtl == INTEGER
    input.Body.cdnPolicy.maxTtl == INTEGER
    input.Body.cdnPolicy.negativeCaching == BOOLEAN
    input.Body.cdnPolicy.negativeCachingPolicy[_].code == INTEGER
    input.Body.cdnPolicy.negativeCachingPolicy[_].ttl == INTEGER
    input.Body.cdnPolicy.requestCoalescing == BOOLEAN
    input.Body.cdnPolicy.serveWhileStale == INTEGER
    input.Body.cdnPolicy.signedUrlCacheMaxAgeSec == STRING
    input.Body.cdnPolicy.signedUrlKeyNames[_] == STRING
    input.Body.compressionMode == enum_BackendBucketCompressionMode[_]
    input.Body.creationTimestamp == STRING
    input.Body.customResponseHeaders[_] == STRING
    input.Body.description == STRING
    input.Body.edgeSecurityPolicy == STRING
    input.Body.enableCdn == BOOLEAN
    input.Body.id == STRING
    input.Body.kind == STRING
    input.Body.name == STRING
    input.Body.selfLink == STRING
    input.ReqMap.ProjectID == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.backendBuckets.list

valid {
    input.ReqMap.ProjectID == STRING
    input.Qs.filter == STRING
    input.Qs.maxResults == INTEGER
    input.Qs.orderBy == STRING
    input.Qs.pageToken == STRING
    input.Qs.returnPartialSuccess == BOOLEAN
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.backendBuckets.patch

enum_BackendBucketCdnPolicyCacheMode := [ "CACHE_ALL_STATIC", "FORCE_CACHE_ALL", "INVALID_CACHE_MODE", "USE_ORIGIN_HEADERS" ]
enum_BackendBucketCompressionMode := [ "AUTOMATIC", "DISABLED" ]

valid {
    input.Body.bucketName == STRING
    input.Body.cdnPolicy.bypassCacheOnRequestHeaders[_].headerName == STRING
    input.Body.cdnPolicy.cacheKeyPolicy.includeHttpHeaders[_] == STRING
    input.Body.cdnPolicy.cacheKeyPolicy.queryStringWhitelist[_] == STRING
    input.Body.cdnPolicy.cacheMode == enum_BackendBucketCdnPolicyCacheMode[_]
    input.Body.cdnPolicy.clientTtl == INTEGER
    input.Body.cdnPolicy.defaultTtl == INTEGER
    input.Body.cdnPolicy.maxTtl == INTEGER
    input.Body.cdnPolicy.negativeCaching == BOOLEAN
    input.Body.cdnPolicy.negativeCachingPolicy[_].code == INTEGER
    input.Body.cdnPolicy.negativeCachingPolicy[_].ttl == INTEGER
    input.Body.cdnPolicy.requestCoalescing == BOOLEAN
    input.Body.cdnPolicy.serveWhileStale == INTEGER
    input.Body.cdnPolicy.signedUrlCacheMaxAgeSec == STRING
    input.Body.cdnPolicy.signedUrlKeyNames[_] == STRING
    input.Body.compressionMode == enum_BackendBucketCompressionMode[_]
    input.Body.creationTimestamp == STRING
    input.Body.customResponseHeaders[_] == STRING
    input.Body.description == STRING
    input.Body.edgeSecurityPolicy == STRING
    input.Body.enableCdn == BOOLEAN
    input.Body.id == STRING
    input.Body.kind == STRING
    input.Body.name == STRING
    input.Body.selfLink == STRING
    input.ReqMap.backendBucket == STRING
    input.ReqMap.ProjectID == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.backendBuckets.setEdgeSecurityPolicy

valid {
    input.Body.securityPolicy == STRING
    input.ReqMap.backendBucket == STRING
    input.ReqMap.ProjectID == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.backendBuckets.setIamPolicy

enum_AuditLogConfigLogType := [ "ADMIN_READ", "DATA_READ", "DATA_WRITE", "LOG_TYPE_UNSPECIFIED" ]
enum_AuthorizationLoggingOptionsPermissionType := [ "ADMIN_READ", "ADMIN_WRITE", "DATA_READ", "DATA_WRITE", "PERMISSION_TYPE_UNSPECIFIED" ]
enum_ConditionIam := [ "APPROVER", "ATTRIBUTION", "AUTHORITY", "CREDENTIALS_TYPE", "CREDS_ASSERTION", "JUSTIFICATION_TYPE", "NO_ATTR", "SECURITY_REALM" ]
enum_ConditionOp := [ "DISCHARGED", "EQUALS", "IN", "NOT_EQUALS", "NOT_IN", "NO_OP" ]
enum_ConditionSys := [ "IP", "NAME", "NO_ATTR", "REGION", "SERVICE" ]
enum_LogConfigCloudAuditOptionsLogName := [ "ADMIN_ACTIVITY", "DATA_ACCESS", "UNSPECIFIED_LOG_NAME" ]
enum_LogConfigDataAccessOptionsLogMode := [ "LOG_FAIL_CLOSED", "LOG_MODE_UNSPECIFIED" ]
enum_RuleAction := [ "ALLOW", "ALLOW_WITH_LOG", "DENY", "DENY_WITH_LOG", "LOG", "NO_ACTION" ]

valid {
    input.Body.bindings[_].bindingId == STRING
    input.Body.bindings[_].condition.description == STRING
    input.Body.bindings[_].condition.expression == STRING
    input.Body.bindings[_].condition.location == STRING
    input.Body.bindings[_].condition.title == STRING
    input.Body.bindings[_].members[_] == STRING
    input.Body.bindings[_].role == STRING
    input.Body.etag == STRING
    input.Body.policy.auditConfigs[_].auditLogConfigs[_].exemptedMembers[_] == STRING
    input.Body.policy.auditConfigs[_].auditLogConfigs[_].ignoreChildExemptions == BOOLEAN
    input.Body.policy.auditConfigs[_].auditLogConfigs[_].logType == enum_AuditLogConfigLogType[_]
    input.Body.policy.auditConfigs[_].exemptedMembers[_] == STRING
    input.Body.policy.auditConfigs[_].service == STRING
    input.Body.policy.bindings[_].bindingId == 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.rules[_].action == enum_RuleAction[_]
    input.Body.policy.rules[_].conditions[_].iam == enum_ConditionIam[_]
    input.Body.policy.rules[_].conditions[_].op == enum_ConditionOp[_]
    input.Body.policy.rules[_].conditions[_].svc == STRING
    input.Body.policy.rules[_].conditions[_].sys == enum_ConditionSys[_]
    input.Body.policy.rules[_].conditions[_].values[_] == STRING
    input.Body.policy.rules[_].description == STRING
    input.Body.policy.rules[_].ins[_] == STRING
    input.Body.policy.rules[_].logConfigs[_].cloudAudit.authorizationLoggingOptions.permissionType == enum_AuthorizationLoggingOptionsPermissionType[_]
    input.Body.policy.rules[_].logConfigs[_].cloudAudit.logName == enum_LogConfigCloudAuditOptionsLogName[_]
    input.Body.policy.rules[_].logConfigs[_].counter.customFields[_].name == STRING
    input.Body.policy.rules[_].logConfigs[_].counter.customFields[_].value == STRING
    input.Body.policy.rules[_].logConfigs[_].counter.field == STRING
    input.Body.policy.rules[_].logConfigs[_].counter.metric == STRING
    input.Body.policy.rules[_].logConfigs[_].dataAccess.logMode == enum_LogConfigDataAccessOptionsLogMode[_]
    input.Body.policy.rules[_].notIns[_] == STRING
    input.Body.policy.rules[_].permissions[_] == STRING
    input.Body.policy.version == INTEGER
    input.ReqMap.ProjectID == STRING
    input.ReqMap.resource == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.backendBuckets.testIamPermissions

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

compute.backendBuckets.update

enum_BackendBucketCdnPolicyCacheMode := [ "CACHE_ALL_STATIC", "FORCE_CACHE_ALL", "INVALID_CACHE_MODE", "USE_ORIGIN_HEADERS" ]
enum_BackendBucketCompressionMode := [ "AUTOMATIC", "DISABLED" ]

valid {
    input.Body.bucketName == STRING
    input.Body.cdnPolicy.bypassCacheOnRequestHeaders[_].headerName == STRING
    input.Body.cdnPolicy.cacheKeyPolicy.includeHttpHeaders[_] == STRING
    input.Body.cdnPolicy.cacheKeyPolicy.queryStringWhitelist[_] == STRING
    input.Body.cdnPolicy.cacheMode == enum_BackendBucketCdnPolicyCacheMode[_]
    input.Body.cdnPolicy.clientTtl == INTEGER
    input.Body.cdnPolicy.defaultTtl == INTEGER
    input.Body.cdnPolicy.maxTtl == INTEGER
    input.Body.cdnPolicy.negativeCaching == BOOLEAN
    input.Body.cdnPolicy.negativeCachingPolicy[_].code == INTEGER
    input.Body.cdnPolicy.negativeCachingPolicy[_].ttl == INTEGER
    input.Body.cdnPolicy.requestCoalescing == BOOLEAN
    input.Body.cdnPolicy.serveWhileStale == INTEGER
    input.Body.cdnPolicy.signedUrlCacheMaxAgeSec == STRING
    input.Body.cdnPolicy.signedUrlKeyNames[_] == STRING
    input.Body.compressionMode == enum_BackendBucketCompressionMode[_]
    input.Body.creationTimestamp == STRING
    input.Body.customResponseHeaders[_] == STRING
    input.Body.description == STRING
    input.Body.edgeSecurityPolicy == STRING
    input.Body.enableCdn == BOOLEAN
    input.Body.id == STRING
    input.Body.kind == STRING
    input.Body.name == STRING
    input.Body.selfLink == STRING
    input.ReqMap.backendBucket == STRING
    input.ReqMap.ProjectID == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.backendServices.addSignedUrlKey

valid {
    input.Body.keyName == STRING
    input.Body.keyValue == STRING
    input.ReqMap.backendService == STRING
    input.ReqMap.ProjectID == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.backendServices.aggregatedList

valid {
    input.ReqMap.ProjectID == STRING
    input.Qs.filter == STRING
    input.Qs.includeAllScopes == BOOLEAN
    input.Qs.maxResults == INTEGER
    input.Qs.orderBy == STRING
    input.Qs.pageToken == STRING
    input.Qs.returnPartialSuccess == BOOLEAN
    input.Qs.serviceProjectNumber == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.backendServices.delete

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

compute.backendServices.deleteSignedUrlKey

valid {
    input.ReqMap.backendService == STRING
    input.ReqMap.ProjectID == STRING
    input.Qs.keyName == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.backendServices.get

valid {
    input.ReqMap.backendService == STRING
    input.ReqMap.ProjectID == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.backendServices.getHealth

valid {
    input.Body.group == STRING
    input.ReqMap.backendService == STRING
    input.ReqMap.ProjectID == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.backendServices.getIamPolicy

valid {
    input.ReqMap.ProjectID == STRING
    input.ReqMap.resource == STRING
    input.Qs.optionsRequestedPolicyVersion == INTEGER
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.backendServices.insert

enum_BackendBalancingMode := [ "CONNECTION", "RATE", "UTILIZATION" ]
enum_BackendPreference := [ "DEFAULT", "PREFERENCE_UNSPECIFIED", "PREFERRED" ]
enum_BackendServiceCdnPolicyCacheMode := [ "CACHE_ALL_STATIC", "FORCE_CACHE_ALL", "INVALID_CACHE_MODE", "USE_ORIGIN_HEADERS" ]
enum_BackendServiceCompressionMode := [ "AUTOMATIC", "DISABLED" ]
enum_BackendServiceConnectionTrackingPolicyConnectionPersistenceOnUnhealthyBackends := [ "ALWAYS_PERSIST", "DEFAULT_FOR_PROTOCOL", "NEVER_PERSIST" ]
enum_BackendServiceConnectionTrackingPolicyTrackingMode := [ "INVALID_TRACKING_MODE", "PER_CONNECTION", "PER_SESSION" ]
enum_BackendServiceLoadBalancingScheme := [ "EXTERNAL", "EXTERNAL_MANAGED", "INTERNAL", "INTERNAL_MANAGED", "INTERNAL_SELF_MANAGED", "INVALID_LOAD_BALANCING_SCHEME" ]
enum_BackendServiceLocalityLbPolicy := [ "INVALID_LB_POLICY", "LEAST_REQUEST", "MAGLEV", "ORIGINAL_DESTINATION", "RANDOM", "RING_HASH", "ROUND_ROBIN", "WEIGHTED_MAGLEV" ]
enum_BackendServiceLocalityLoadBalancingPolicyConfigPolicyName := [ "INVALID_LB_POLICY", "LEAST_REQUEST", "MAGLEV", "ORIGINAL_DESTINATION", "RANDOM", "RING_HASH", "ROUND_ROBIN", "WEIGHTED_MAGLEV" ]
enum_BackendServiceLogConfigOptionalMode := [ "CUSTOM", "EXCLUDE_ALL_OPTIONAL", "INCLUDE_ALL_OPTIONAL" ]
enum_BackendServiceProtocol := [ "GRPC", "HTTP", "HTTP2", "HTTPS", "SSL", "TCP", "UDP", "UNSPECIFIED" ]
enum_BackendServiceSessionAffinity := [ "CLIENT_IP", "CLIENT_IP_NO_DESTINATION", "CLIENT_IP_PORT_PROTO", "CLIENT_IP_PROTO", "GENERATED_COOKIE", "HEADER_FIELD", "HTTP_COOKIE", "NONE" ]
enum_SubsettingPolicy := [ "CONSISTENT_HASH_SUBSETTING", "NONE" ]

valid {
    input.Body.affinityCookieTtlSec == INTEGER
    input.Body.backends[_].balancingMode == enum_BackendBalancingMode[_]
    input.Body.backends[_].capacityScaler == NUMBER
    input.Body.backends[_].description == STRING
    input.Body.backends[_].failover == BOOLEAN
    input.Body.backends[_].group == STRING
    input.Body.backends[_].maxConnections == INTEGER
    input.Body.backends[_].maxConnectionsPerEndpoint == INTEGER
    input.Body.backends[_].maxConnectionsPerInstance == INTEGER
    input.Body.backends[_].maxRate == INTEGER
    input.Body.backends[_].maxRatePerEndpoint == NUMBER
    input.Body.backends[_].maxRatePerInstance == NUMBER
    input.Body.backends[_].maxUtilization == NUMBER
    input.Body.backends[_].preference == enum_BackendPreference[_]
    input.Body.cdnPolicy.bypassCacheOnRequestHeaders[_].headerName == STRING
    input.Body.cdnPolicy.cacheKeyPolicy.includeHost == BOOLEAN
    input.Body.cdnPolicy.cacheKeyPolicy.includeHttpHeaders[_] == STRING
    input.Body.cdnPolicy.cacheKeyPolicy.includeNamedCookies[_] == STRING
    input.Body.cdnPolicy.cacheKeyPolicy.includeProtocol == BOOLEAN
    input.Body.cdnPolicy.cacheKeyPolicy.includeQueryString == BOOLEAN
    input.Body.cdnPolicy.cacheKeyPolicy.queryStringBlacklist[_] == STRING
    input.Body.cdnPolicy.cacheKeyPolicy.queryStringWhitelist[_] == STRING
    input.Body.cdnPolicy.cacheMode == enum_BackendServiceCdnPolicyCacheMode[_]
    input.Body.cdnPolicy.clientTtl == INTEGER
    input.Body.cdnPolicy.defaultTtl == INTEGER
    input.Body.cdnPolicy.maxTtl == INTEGER
    input.Body.cdnPolicy.negativeCaching == BOOLEAN
    input.Body.cdnPolicy.negativeCachingPolicy[_].code == INTEGER
    input.Body.cdnPolicy.negativeCachingPolicy[_].ttl == INTEGER
    input.Body.cdnPolicy.requestCoalescing == BOOLEAN
    input.Body.cdnPolicy.serveWhileStale == INTEGER
    input.Body.cdnPolicy.signedUrlCacheMaxAgeSec == STRING
    input.Body.cdnPolicy.signedUrlKeyNames[_] == STRING
    input.Body.circuitBreakers.maxConnections == INTEGER
    input.Body.circuitBreakers.maxPendingRequests == INTEGER
    input.Body.circuitBreakers.maxRequests == INTEGER
    input.Body.circuitBreakers.maxRequestsPerConnection == INTEGER
    input.Body.circuitBreakers.maxRetries == INTEGER
    input.Body.compressionMode == enum_BackendServiceCompressionMode[_]
    input.Body.connectionDraining.drainingTimeoutSec == INTEGER
    input.Body.connectionTrackingPolicy.connectionPersistenceOnUnhealthyBackends == enum_BackendServiceConnectionTrackingPolicyConnectionPersistenceOnUnhealthyBackends[_]
    input.Body.connectionTrackingPolicy.enableStrongAffinity == BOOLEAN
    input.Body.connectionTrackingPolicy.idleTimeoutSec == INTEGER
    input.Body.connectionTrackingPolicy.trackingMode == enum_BackendServiceConnectionTrackingPolicyTrackingMode[_]
    input.Body.consistentHash.httpCookie.name == STRING
    input.Body.consistentHash.httpCookie.path == STRING
    input.Body.consistentHash.httpCookie.ttl.nanos == INTEGER
    input.Body.consistentHash.httpCookie.ttl.seconds == STRING
    input.Body.consistentHash.httpHeaderName == STRING
    input.Body.consistentHash.minimumRingSize == STRING
    input.Body.creationTimestamp == STRING
    input.Body.customRequestHeaders[_] == STRING
    input.Body.customResponseHeaders[_] == STRING
    input.Body.description == STRING
    input.Body.edgeSecurityPolicy == STRING
    input.Body.enableCDN == BOOLEAN
    input.Body.failoverPolicy.disableConnectionDrainOnFailover == BOOLEAN
    input.Body.failoverPolicy.dropTrafficIfUnhealthy == BOOLEAN
    input.Body.failoverPolicy.failoverRatio == NUMBER
    input.Body.fingerprint == STRING
    input.Body.healthChecks[_] == STRING
    input.Body.iap.enabled == BOOLEAN
    input.Body.iap.oauth2ClientId == STRING
    input.Body.iap.oauth2ClientSecret == STRING
    input.Body.iap.oauth2ClientSecretSha256 == STRING
    input.Body.id == STRING
    input.Body.kind == STRING
    input.Body.loadBalancingScheme == enum_BackendServiceLoadBalancingScheme[_]
    input.Body.localityLbPolicies[_].customPolicy.data == STRING
    input.Body.localityLbPolicies[_].customPolicy.name == STRING
    input.Body.localityLbPolicies[_].policy.name == enum_BackendServiceLocalityLoadBalancingPolicyConfigPolicyName[_]
    input.Body.localityLbPolicy == enum_BackendServiceLocalityLbPolicy[_]
    input.Body.logConfig.enable == BOOLEAN
    input.Body.logConfig.optionalFields[_] == STRING
    input.Body.logConfig.optionalMode == enum_BackendServiceLogConfigOptionalMode[_]
    input.Body.logConfig.sampleRate == NUMBER
    input.Body.maxStreamDuration.nanos == INTEGER
    input.Body.maxStreamDuration.seconds == STRING
    input.Body.metadatas.STRING == STRING
    input.Body.name == STRING
    input.Body.network == STRING
    input.Body.outlierDetection.baseEjectionTime.nanos == INTEGER
    input.Body.outlierDetection.baseEjectionTime.seconds == STRING
    input.Body.outlierDetection.consecutiveErrors == INTEGER
    input.Body.outlierDetection.consecutiveGatewayFailure == INTEGER
    input.Body.outlierDetection.enforcingConsecutiveErrors == INTEGER
    input.Body.outlierDetection.enforcingConsecutiveGatewayFailure == INTEGER
    input.Body.outlierDetection.enforcingSuccessRate == INTEGER
    input.Body.outlierDetection.interval.nanos == INTEGER
    input.Body.outlierDetection.interval.seconds == STRING
    input.Body.outlierDetection.maxEjectionPercent == INTEGER
    input.Body.outlierDetection.successRateMinimumHosts == INTEGER
    input.Body.outlierDetection.successRateRequestVolume == INTEGER
    input.Body.outlierDetection.successRateStdevFactor == INTEGER
    input.Body.port == INTEGER
    input.Body.portName == STRING
    input.Body.protocol == enum_BackendServiceProtocol[_]
    input.Body.region == STRING
    input.Body.securityPolicy == STRING
    input.Body.securitySettings.awsV4Authentication.accessKey == STRING
    input.Body.securitySettings.awsV4Authentication.accessKeyId == STRING
    input.Body.securitySettings.awsV4Authentication.accessKeyVersion == STRING
    input.Body.securitySettings.awsV4Authentication.originRegion == STRING
    input.Body.securitySettings.clientTlsPolicy == STRING
    input.Body.securitySettings.subjectAltNames[_] == STRING
    input.Body.selfLink == STRING
    input.Body.serviceBindings[_] == STRING
    input.Body.serviceLbPolicy == STRING
    input.Body.sessionAffinity == enum_BackendServiceSessionAffinity[_]
    input.Body.subsetting.policy == enum_SubsettingPolicy[_]
    input.Body.timeoutSec == INTEGER
    input.Body.usedBy[_].reference == STRING
    input.ReqMap.ProjectID == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.backendServices.list

valid {
    input.ReqMap.ProjectID == STRING
    input.Qs.filter == STRING
    input.Qs.maxResults == INTEGER
    input.Qs.orderBy == STRING
    input.Qs.pageToken == STRING
    input.Qs.returnPartialSuccess == BOOLEAN
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.backendServices.listUsable

valid {
    input.ReqMap.ProjectID == STRING
    input.Qs.filter == STRING
    input.Qs.maxResults == INTEGER
    input.Qs.orderBy == STRING
    input.Qs.pageToken == STRING
    input.Qs.returnPartialSuccess == BOOLEAN
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.backendServices.patch

enum_BackendBalancingMode := [ "CONNECTION", "RATE", "UTILIZATION" ]
enum_BackendPreference := [ "DEFAULT", "PREFERENCE_UNSPECIFIED", "PREFERRED" ]
enum_BackendServiceCdnPolicyCacheMode := [ "CACHE_ALL_STATIC", "FORCE_CACHE_ALL", "INVALID_CACHE_MODE", "USE_ORIGIN_HEADERS" ]
enum_BackendServiceCompressionMode := [ "AUTOMATIC", "DISABLED" ]
enum_BackendServiceConnectionTrackingPolicyConnectionPersistenceOnUnhealthyBackends := [ "ALWAYS_PERSIST", "DEFAULT_FOR_PROTOCOL", "NEVER_PERSIST" ]
enum_BackendServiceConnectionTrackingPolicyTrackingMode := [ "INVALID_TRACKING_MODE", "PER_CONNECTION", "PER_SESSION" ]
enum_BackendServiceLoadBalancingScheme := [ "EXTERNAL", "EXTERNAL_MANAGED", "INTERNAL", "INTERNAL_MANAGED", "INTERNAL_SELF_MANAGED", "INVALID_LOAD_BALANCING_SCHEME" ]
enum_BackendServiceLocalityLbPolicy := [ "INVALID_LB_POLICY", "LEAST_REQUEST", "MAGLEV", "ORIGINAL_DESTINATION", "RANDOM", "RING_HASH", "ROUND_ROBIN", "WEIGHTED_MAGLEV" ]
enum_BackendServiceLocalityLoadBalancingPolicyConfigPolicyName := [ "INVALID_LB_POLICY", "LEAST_REQUEST", "MAGLEV", "ORIGINAL_DESTINATION", "RANDOM", "RING_HASH", "ROUND_ROBIN", "WEIGHTED_MAGLEV" ]
enum_BackendServiceLogConfigOptionalMode := [ "CUSTOM", "EXCLUDE_ALL_OPTIONAL", "INCLUDE_ALL_OPTIONAL" ]
enum_BackendServiceProtocol := [ "GRPC", "HTTP", "HTTP2", "HTTPS", "SSL", "TCP", "UDP", "UNSPECIFIED" ]
enum_BackendServiceSessionAffinity := [ "CLIENT_IP", "CLIENT_IP_NO_DESTINATION", "CLIENT_IP_PORT_PROTO", "CLIENT_IP_PROTO", "GENERATED_COOKIE", "HEADER_FIELD", "HTTP_COOKIE", "NONE" ]
enum_SubsettingPolicy := [ "CONSISTENT_HASH_SUBSETTING", "NONE" ]

valid {
    input.Body.affinityCookieTtlSec == INTEGER
    input.Body.backends[_].balancingMode == enum_BackendBalancingMode[_]
    input.Body.backends[_].capacityScaler == NUMBER
    input.Body.backends[_].description == STRING
    input.Body.backends[_].failover == BOOLEAN
    input.Body.backends[_].group == STRING
    input.Body.backends[_].maxConnections == INTEGER
    input.Body.backends[_].maxConnectionsPerEndpoint == INTEGER
    input.Body.backends[_].maxConnectionsPerInstance == INTEGER
    input.Body.backends[_].maxRate == INTEGER
    input.Body.backends[_].maxRatePerEndpoint == NUMBER
    input.Body.backends[_].maxRatePerInstance == NUMBER
    input.Body.backends[_].maxUtilization == NUMBER
    input.Body.backends[_].preference == enum_BackendPreference[_]
    input.Body.cdnPolicy.bypassCacheOnRequestHeaders[_].headerName == STRING
    input.Body.cdnPolicy.cacheKeyPolicy.includeHost == BOOLEAN
    input.Body.cdnPolicy.cacheKeyPolicy.includeHttpHeaders[_] == STRING
    input.Body.cdnPolicy.cacheKeyPolicy.includeNamedCookies[_] == STRING
    input.Body.cdnPolicy.cacheKeyPolicy.includeProtocol == BOOLEAN
    input.Body.cdnPolicy.cacheKeyPolicy.includeQueryString == BOOLEAN
    input.Body.cdnPolicy.cacheKeyPolicy.queryStringBlacklist[_] == STRING
    input.Body.cdnPolicy.cacheKeyPolicy.queryStringWhitelist[_] == STRING
    input.Body.cdnPolicy.cacheMode == enum_BackendServiceCdnPolicyCacheMode[_]
    input.Body.cdnPolicy.clientTtl == INTEGER
    input.Body.cdnPolicy.defaultTtl == INTEGER
    input.Body.cdnPolicy.maxTtl == INTEGER
    input.Body.cdnPolicy.negativeCaching == BOOLEAN
    input.Body.cdnPolicy.negativeCachingPolicy[_].code == INTEGER
    input.Body.cdnPolicy.negativeCachingPolicy[_].ttl == INTEGER
    input.Body.cdnPolicy.requestCoalescing == BOOLEAN
    input.Body.cdnPolicy.serveWhileStale == INTEGER
    input.Body.cdnPolicy.signedUrlCacheMaxAgeSec == STRING
    input.Body.cdnPolicy.signedUrlKeyNames[_] == STRING
    input.Body.circuitBreakers.maxConnections == INTEGER
    input.Body.circuitBreakers.maxPendingRequests == INTEGER
    input.Body.circuitBreakers.maxRequests == INTEGER
    input.Body.circuitBreakers.maxRequestsPerConnection == INTEGER
    input.Body.circuitBreakers.maxRetries == INTEGER
    input.Body.compressionMode == enum_BackendServiceCompressionMode[_]
    input.Body.connectionDraining.drainingTimeoutSec == INTEGER
    input.Body.connectionTrackingPolicy.connectionPersistenceOnUnhealthyBackends == enum_BackendServiceConnectionTrackingPolicyConnectionPersistenceOnUnhealthyBackends[_]
    input.Body.connectionTrackingPolicy.enableStrongAffinity == BOOLEAN
    input.Body.connectionTrackingPolicy.idleTimeoutSec == INTEGER
    input.Body.connectionTrackingPolicy.trackingMode == enum_BackendServiceConnectionTrackingPolicyTrackingMode[_]
    input.Body.consistentHash.httpCookie.name == STRING
    input.Body.consistentHash.httpCookie.path == STRING
    input.Body.consistentHash.httpCookie.ttl.nanos == INTEGER
    input.Body.consistentHash.httpCookie.ttl.seconds == STRING
    input.Body.consistentHash.httpHeaderName == STRING
    input.Body.consistentHash.minimumRingSize == STRING
    input.Body.creationTimestamp == STRING
    input.Body.customRequestHeaders[_] == STRING
    input.Body.customResponseHeaders[_] == STRING
    input.Body.description == STRING
    input.Body.edgeSecurityPolicy == STRING
    input.Body.enableCDN == BOOLEAN
    input.Body.failoverPolicy.disableConnectionDrainOnFailover == BOOLEAN
    input.Body.failoverPolicy.dropTrafficIfUnhealthy == BOOLEAN
    input.Body.failoverPolicy.failoverRatio == NUMBER
    input.Body.fingerprint == STRING
    input.Body.healthChecks[_] == STRING
    input.Body.iap.enabled == BOOLEAN
    input.Body.iap.oauth2ClientId == STRING
    input.Body.iap.oauth2ClientSecret == STRING
    input.Body.iap.oauth2ClientSecretSha256 == STRING
    input.Body.id == STRING
    input.Body.kind == STRING
    input.Body.loadBalancingScheme == enum_BackendServiceLoadBalancingScheme[_]
    input.Body.localityLbPolicies[_].customPolicy.data == STRING
    input.Body.localityLbPolicies[_].customPolicy.name == STRING
    input.Body.localityLbPolicies[_].policy.name == enum_BackendServiceLocalityLoadBalancingPolicyConfigPolicyName[_]
    input.Body.localityLbPolicy == enum_BackendServiceLocalityLbPolicy[_]
    input.Body.logConfig.enable == BOOLEAN
    input.Body.logConfig.optionalFields[_] == STRING
    input.Body.logConfig.optionalMode == enum_BackendServiceLogConfigOptionalMode[_]
    input.Body.logConfig.sampleRate == NUMBER
    input.Body.maxStreamDuration.nanos == INTEGER
    input.Body.maxStreamDuration.seconds == STRING
    input.Body.metadatas.STRING == STRING
    input.Body.name == STRING
    input.Body.network == STRING
    input.Body.outlierDetection.baseEjectionTime.nanos == INTEGER
    input.Body.outlierDetection.baseEjectionTime.seconds == STRING
    input.Body.outlierDetection.consecutiveErrors == INTEGER
    input.Body.outlierDetection.consecutiveGatewayFailure == INTEGER
    input.Body.outlierDetection.enforcingConsecutiveErrors == INTEGER
    input.Body.outlierDetection.enforcingConsecutiveGatewayFailure == INTEGER
    input.Body.outlierDetection.enforcingSuccessRate == INTEGER
    input.Body.outlierDetection.interval.nanos == INTEGER
    input.Body.outlierDetection.interval.seconds == STRING
    input.Body.outlierDetection.maxEjectionPercent == INTEGER
    input.Body.outlierDetection.successRateMinimumHosts == INTEGER
    input.Body.outlierDetection.successRateRequestVolume == INTEGER
    input.Body.outlierDetection.successRateStdevFactor == INTEGER
    input.Body.port == INTEGER
    input.Body.portName == STRING
    input.Body.protocol == enum_BackendServiceProtocol[_]
    input.Body.region == STRING
    input.Body.securityPolicy == STRING
    input.Body.securitySettings.awsV4Authentication.accessKey == STRING
    input.Body.securitySettings.awsV4Authentication.accessKeyId == STRING
    input.Body.securitySettings.awsV4Authentication.accessKeyVersion == STRING
    input.Body.securitySettings.awsV4Authentication.originRegion == STRING
    input.Body.securitySettings.clientTlsPolicy == STRING
    input.Body.securitySettings.subjectAltNames[_] == STRING
    input.Body.selfLink == STRING
    input.Body.serviceBindings[_] == STRING
    input.Body.serviceLbPolicy == STRING
    input.Body.sessionAffinity == enum_BackendServiceSessionAffinity[_]
    input.Body.subsetting.policy == enum_SubsettingPolicy[_]
    input.Body.timeoutSec == INTEGER
    input.Body.usedBy[_].reference == STRING
    input.ReqMap.backendService == STRING
    input.ReqMap.ProjectID == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.backendServices.setEdgeSecurityPolicy

valid {
    input.Body.securityPolicy == STRING
    input.ReqMap.backendService == STRING
    input.ReqMap.ProjectID == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.backendServices.setIamPolicy

enum_AuditLogConfigLogType := [ "ADMIN_READ", "DATA_READ", "DATA_WRITE", "LOG_TYPE_UNSPECIFIED" ]
enum_AuthorizationLoggingOptionsPermissionType := [ "ADMIN_READ", "ADMIN_WRITE", "DATA_READ", "DATA_WRITE", "PERMISSION_TYPE_UNSPECIFIED" ]
enum_ConditionIam := [ "APPROVER", "ATTRIBUTION", "AUTHORITY", "CREDENTIALS_TYPE", "CREDS_ASSERTION", "JUSTIFICATION_TYPE", "NO_ATTR", "SECURITY_REALM" ]
enum_ConditionOp := [ "DISCHARGED", "EQUALS", "IN", "NOT_EQUALS", "NOT_IN", "NO_OP" ]
enum_ConditionSys := [ "IP", "NAME", "NO_ATTR", "REGION", "SERVICE" ]
enum_LogConfigCloudAuditOptionsLogName := [ "ADMIN_ACTIVITY", "DATA_ACCESS", "UNSPECIFIED_LOG_NAME" ]
enum_LogConfigDataAccessOptionsLogMode := [ "LOG_FAIL_CLOSED", "LOG_MODE_UNSPECIFIED" ]
enum_RuleAction := [ "ALLOW", "ALLOW_WITH_LOG", "DENY", "DENY_WITH_LOG", "LOG", "NO_ACTION" ]

valid {
    input.Body.bindings[_].bindingId == STRING
    input.Body.bindings[_].condition.description == STRING
    input.Body.bindings[_].condition.expression == STRING
    input.Body.bindings[_].condition.location == STRING
    input.Body.bindings[_].condition.title == STRING
    input.Body.bindings[_].members[_] == STRING
    input.Body.bindings[_].role == STRING
    input.Body.etag == STRING
    input.Body.policy.auditConfigs[_].auditLogConfigs[_].exemptedMembers[_] == STRING
    input.Body.policy.auditConfigs[_].auditLogConfigs[_].ignoreChildExemptions == BOOLEAN
    input.Body.policy.auditConfigs[_].auditLogConfigs[_].logType == enum_AuditLogConfigLogType[_]
    input.Body.policy.auditConfigs[_].exemptedMembers[_] == STRING
    input.Body.policy.auditConfigs[_].service == STRING
    input.Body.policy.bindings[_].bindingId == 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.rules[_].action == enum_RuleAction[_]
    input.Body.policy.rules[_].conditions[_].iam == enum_ConditionIam[_]
    input.Body.policy.rules[_].conditions[_].op == enum_ConditionOp[_]
    input.Body.policy.rules[_].conditions[_].svc == STRING
    input.Body.policy.rules[_].conditions[_].sys == enum_ConditionSys[_]
    input.Body.policy.rules[_].conditions[_].values[_] == STRING
    input.Body.policy.rules[_].description == STRING
    input.Body.policy.rules[_].ins[_] == STRING
    input.Body.policy.rules[_].logConfigs[_].cloudAudit.authorizationLoggingOptions.permissionType == enum_AuthorizationLoggingOptionsPermissionType[_]
    input.Body.policy.rules[_].logConfigs[_].cloudAudit.logName == enum_LogConfigCloudAuditOptionsLogName[_]
    input.Body.policy.rules[_].logConfigs[_].counter.customFields[_].name == STRING
    input.Body.policy.rules[_].logConfigs[_].counter.customFields[_].value == STRING
    input.Body.policy.rules[_].logConfigs[_].counter.field == STRING
    input.Body.policy.rules[_].logConfigs[_].counter.metric == STRING
    input.Body.policy.rules[_].logConfigs[_].dataAccess.logMode == enum_LogConfigDataAccessOptionsLogMode[_]
    input.Body.policy.rules[_].notIns[_] == STRING
    input.Body.policy.rules[_].permissions[_] == STRING
    input.Body.policy.version == INTEGER
    input.ReqMap.ProjectID == STRING
    input.ReqMap.resource == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.backendServices.setSecurityPolicy

valid {
    input.Body.securityPolicy == STRING
    input.ReqMap.backendService == STRING
    input.ReqMap.ProjectID == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.backendServices.testIamPermissions

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

compute.backendServices.update

enum_BackendBalancingMode := [ "CONNECTION", "RATE", "UTILIZATION" ]
enum_BackendPreference := [ "DEFAULT", "PREFERENCE_UNSPECIFIED", "PREFERRED" ]
enum_BackendServiceCdnPolicyCacheMode := [ "CACHE_ALL_STATIC", "FORCE_CACHE_ALL", "INVALID_CACHE_MODE", "USE_ORIGIN_HEADERS" ]
enum_BackendServiceCompressionMode := [ "AUTOMATIC", "DISABLED" ]
enum_BackendServiceConnectionTrackingPolicyConnectionPersistenceOnUnhealthyBackends := [ "ALWAYS_PERSIST", "DEFAULT_FOR_PROTOCOL", "NEVER_PERSIST" ]
enum_BackendServiceConnectionTrackingPolicyTrackingMode := [ "INVALID_TRACKING_MODE", "PER_CONNECTION", "PER_SESSION" ]
enum_BackendServiceLoadBalancingScheme := [ "EXTERNAL", "EXTERNAL_MANAGED", "INTERNAL", "INTERNAL_MANAGED", "INTERNAL_SELF_MANAGED", "INVALID_LOAD_BALANCING_SCHEME" ]
enum_BackendServiceLocalityLbPolicy := [ "INVALID_LB_POLICY", "LEAST_REQUEST", "MAGLEV", "ORIGINAL_DESTINATION", "RANDOM", "RING_HASH", "ROUND_ROBIN", "WEIGHTED_MAGLEV" ]
enum_BackendServiceLocalityLoadBalancingPolicyConfigPolicyName := [ "INVALID_LB_POLICY", "LEAST_REQUEST", "MAGLEV", "ORIGINAL_DESTINATION", "RANDOM", "RING_HASH", "ROUND_ROBIN", "WEIGHTED_MAGLEV" ]
enum_BackendServiceLogConfigOptionalMode := [ "CUSTOM", "EXCLUDE_ALL_OPTIONAL", "INCLUDE_ALL_OPTIONAL" ]
enum_BackendServiceProtocol := [ "GRPC", "HTTP", "HTTP2", "HTTPS", "SSL", "TCP", "UDP", "UNSPECIFIED" ]
enum_BackendServiceSessionAffinity := [ "CLIENT_IP", "CLIENT_IP_NO_DESTINATION", "CLIENT_IP_PORT_PROTO", "CLIENT_IP_PROTO", "GENERATED_COOKIE", "HEADER_FIELD", "HTTP_COOKIE", "NONE" ]
enum_SubsettingPolicy := [ "CONSISTENT_HASH_SUBSETTING", "NONE" ]

valid {
    input.Body.affinityCookieTtlSec == INTEGER
    input.Body.backends[_].balancingMode == enum_BackendBalancingMode[_]
    input.Body.backends[_].capacityScaler == NUMBER
    input.Body.backends[_].description == STRING
    input.Body.backends[_].failover == BOOLEAN
    input.Body.backends[_].group == STRING
    input.Body.backends[_].maxConnections == INTEGER
    input.Body.backends[_].maxConnectionsPerEndpoint == INTEGER
    input.Body.backends[_].maxConnectionsPerInstance == INTEGER
    input.Body.backends[_].maxRate == INTEGER
    input.Body.backends[_].maxRatePerEndpoint == NUMBER
    input.Body.backends[_].maxRatePerInstance == NUMBER
    input.Body.backends[_].maxUtilization == NUMBER
    input.Body.backends[_].preference == enum_BackendPreference[_]
    input.Body.cdnPolicy.bypassCacheOnRequestHeaders[_].headerName == STRING
    input.Body.cdnPolicy.cacheKeyPolicy.includeHost == BOOLEAN
    input.Body.cdnPolicy.cacheKeyPolicy.includeHttpHeaders[_] == STRING
    input.Body.cdnPolicy.cacheKeyPolicy.includeNamedCookies[_] == STRING
    input.Body.cdnPolicy.cacheKeyPolicy.includeProtocol == BOOLEAN
    input.Body.cdnPolicy.cacheKeyPolicy.includeQueryString == BOOLEAN
    input.Body.cdnPolicy.cacheKeyPolicy.queryStringBlacklist[_] == STRING
    input.Body.cdnPolicy.cacheKeyPolicy.queryStringWhitelist[_] == STRING
    input.Body.cdnPolicy.cacheMode == enum_BackendServiceCdnPolicyCacheMode[_]
    input.Body.cdnPolicy.clientTtl == INTEGER
    input.Body.cdnPolicy.defaultTtl == INTEGER
    input.Body.cdnPolicy.maxTtl == INTEGER
    input.Body.cdnPolicy.negativeCaching == BOOLEAN
    input.Body.cdnPolicy.negativeCachingPolicy[_].code == INTEGER
    input.Body.cdnPolicy.negativeCachingPolicy[_].ttl == INTEGER
    input.Body.cdnPolicy.requestCoalescing == BOOLEAN
    input.Body.cdnPolicy.serveWhileStale == INTEGER
    input.Body.cdnPolicy.signedUrlCacheMaxAgeSec == STRING
    input.Body.cdnPolicy.signedUrlKeyNames[_] == STRING
    input.Body.circuitBreakers.maxConnections == INTEGER
    input.Body.circuitBreakers.maxPendingRequests == INTEGER
    input.Body.circuitBreakers.maxRequests == INTEGER
    input.Body.circuitBreakers.maxRequestsPerConnection == INTEGER
    input.Body.circuitBreakers.maxRetries == INTEGER
    input.Body.compressionMode == enum_BackendServiceCompressionMode[_]
    input.Body.connectionDraining.drainingTimeoutSec == INTEGER
    input.Body.connectionTrackingPolicy.connectionPersistenceOnUnhealthyBackends == enum_BackendServiceConnectionTrackingPolicyConnectionPersistenceOnUnhealthyBackends[_]
    input.Body.connectionTrackingPolicy.enableStrongAffinity == BOOLEAN
    input.Body.connectionTrackingPolicy.idleTimeoutSec == INTEGER
    input.Body.connectionTrackingPolicy.trackingMode == enum_BackendServiceConnectionTrackingPolicyTrackingMode[_]
    input.Body.consistentHash.httpCookie.name == STRING
    input.Body.consistentHash.httpCookie.path == STRING
    input.Body.consistentHash.httpCookie.ttl.nanos == INTEGER
    input.Body.consistentHash.httpCookie.ttl.seconds == STRING
    input.Body.consistentHash.httpHeaderName == STRING
    input.Body.consistentHash.minimumRingSize == STRING
    input.Body.creationTimestamp == STRING
    input.Body.customRequestHeaders[_] == STRING
    input.Body.customResponseHeaders[_] == STRING
    input.Body.description == STRING
    input.Body.edgeSecurityPolicy == STRING
    input.Body.enableCDN == BOOLEAN
    input.Body.failoverPolicy.disableConnectionDrainOnFailover == BOOLEAN
    input.Body.failoverPolicy.dropTrafficIfUnhealthy == BOOLEAN
    input.Body.failoverPolicy.failoverRatio == NUMBER
    input.Body.fingerprint == STRING
    input.Body.healthChecks[_] == STRING
    input.Body.iap.enabled == BOOLEAN
    input.Body.iap.oauth2ClientId == STRING
    input.Body.iap.oauth2ClientSecret == STRING
    input.Body.iap.oauth2ClientSecretSha256 == STRING
    input.Body.id == STRING
    input.Body.kind == STRING
    input.Body.loadBalancingScheme == enum_BackendServiceLoadBalancingScheme[_]
    input.Body.localityLbPolicies[_].customPolicy.data == STRING
    input.Body.localityLbPolicies[_].customPolicy.name == STRING
    input.Body.localityLbPolicies[_].policy.name == enum_BackendServiceLocalityLoadBalancingPolicyConfigPolicyName[_]
    input.Body.localityLbPolicy == enum_BackendServiceLocalityLbPolicy[_]
    input.Body.logConfig.enable == BOOLEAN
    input.Body.logConfig.optionalFields[_] == STRING
    input.Body.logConfig.optionalMode == enum_BackendServiceLogConfigOptionalMode[_]
    input.Body.logConfig.sampleRate == NUMBER
    input.Body.maxStreamDuration.nanos == INTEGER
    input.Body.maxStreamDuration.seconds == STRING
    input.Body.metadatas.STRING == STRING
    input.Body.name == STRING
    input.Body.network == STRING
    input.Body.outlierDetection.baseEjectionTime.nanos == INTEGER
    input.Body.outlierDetection.baseEjectionTime.seconds == STRING
    input.Body.outlierDetection.consecutiveErrors == INTEGER
    input.Body.outlierDetection.consecutiveGatewayFailure == INTEGER
    input.Body.outlierDetection.enforcingConsecutiveErrors == INTEGER
    input.Body.outlierDetection.enforcingConsecutiveGatewayFailure == INTEGER
    input.Body.outlierDetection.enforcingSuccessRate == INTEGER
    input.Body.outlierDetection.interval.nanos == INTEGER
    input.Body.outlierDetection.interval.seconds == STRING
    input.Body.outlierDetection.maxEjectionPercent == INTEGER
    input.Body.outlierDetection.successRateMinimumHosts == INTEGER
    input.Body.outlierDetection.successRateRequestVolume == INTEGER
    input.Body.outlierDetection.successRateStdevFactor == INTEGER
    input.Body.port == INTEGER
    input.Body.portName == STRING
    input.Body.protocol == enum_BackendServiceProtocol[_]
    input.Body.region == STRING
    input.Body.securityPolicy == STRING
    input.Body.securitySettings.awsV4Authentication.accessKey == STRING
    input.Body.securitySettings.awsV4Authentication.accessKeyId == STRING
    input.Body.securitySettings.awsV4Authentication.accessKeyVersion == STRING
    input.Body.securitySettings.awsV4Authentication.originRegion == STRING
    input.Body.securitySettings.clientTlsPolicy == STRING
    input.Body.securitySettings.subjectAltNames[_] == STRING
    input.Body.selfLink == STRING
    input.Body.serviceBindings[_] == STRING
    input.Body.serviceLbPolicy == STRING
    input.Body.sessionAffinity == enum_BackendServiceSessionAffinity[_]
    input.Body.subsetting.policy == enum_SubsettingPolicy[_]
    input.Body.timeoutSec == INTEGER
    input.Body.usedBy[_].reference == STRING
    input.ReqMap.backendService == STRING
    input.ReqMap.ProjectID == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.diskSettings.get

valid {
    input.ReqMap.ProjectID == STRING
    input.ReqMap.zone == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.diskSettings.patch

valid {
    input.Body.accessLocation.locations.STRING.region == STRING
    input.Body.defaultResourcePolicies.STRING.excludedDiskTypes[_] == STRING
    input.Body.defaultResourcePolicies.STRING.resourcePolicy == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.zone == STRING
    input.Qs.requestId == STRING
    input.Qs.updateMask == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.diskTypes.aggregatedList

valid {
    input.ReqMap.ProjectID == STRING
    input.Qs.filter == STRING
    input.Qs.includeAllScopes == BOOLEAN
    input.Qs.maxResults == INTEGER
    input.Qs.orderBy == STRING
    input.Qs.pageToken == STRING
    input.Qs.returnPartialSuccess == BOOLEAN
    input.Qs.serviceProjectNumber == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.diskTypes.get

valid {
    input.ReqMap.diskType == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.zone == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.diskTypes.list

valid {
    input.ReqMap.ProjectID == STRING
    input.ReqMap.zone == STRING
    input.Qs.filter == STRING
    input.Qs.maxResults == INTEGER
    input.Qs.orderBy == STRING
    input.Qs.pageToken == STRING
    input.Qs.returnPartialSuccess == BOOLEAN
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.disks.addResourcePolicies

valid {
    input.Body.resourcePolicies[_] == STRING
    input.ReqMap.disk == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.zone == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.disks.aggregatedList

valid {
    input.ReqMap.ProjectID == STRING
    input.Qs.filter == STRING
    input.Qs.includeAllScopes == BOOLEAN
    input.Qs.maxResults == INTEGER
    input.Qs.orderBy == STRING
    input.Qs.pageToken == STRING
    input.Qs.returnPartialSuccess == BOOLEAN
    input.Qs.serviceProjectNumber == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.disks.bulkInsert

valid {
    input.Body.sourceConsistencyGroupPolicy == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.zone == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.disks.createSnapshot

enum_GuestOsFeatureType := [ "FEATURE_TYPE_UNSPECIFIED", "GVNIC", "IDPF", "MULTI_IP_SUBNET", "SECURE_BOOT", "SEV_CAPABLE", "SEV_LIVE_MIGRATABLE", "SEV_LIVE_MIGRATABLE_V2", "SEV_SNP_CAPABLE", "UEFI_COMPATIBLE", "VIRTIO_SCSI_MULTIQUEUE", "WINDOWS" ]
enum_SnapshotArchitecture := [ "ARCHITECTURE_UNSPECIFIED", "ARM64", "X86_64" ]
enum_SnapshotSnapshotType := [ "ARCHIVE", "STANDARD" ]
enum_SnapshotStatus := [ "CREATING", "DELETING", "FAILED", "READY", "UPLOADING" ]
enum_SnapshotStorageBytesStatus := [ "UPDATING", "UP_TO_DATE" ]

valid {
    input.Body.architecture == enum_SnapshotArchitecture[_]
    input.Body.autoCreated == BOOLEAN
    input.Body.chainName == STRING
    input.Body.creationSizeBytes == STRING
    input.Body.creationTimestamp == STRING
    input.Body.description == STRING
    input.Body.diskSizeGb == STRING
    input.Body.downloadBytes == STRING
    input.Body.enableConfidentialCompute == BOOLEAN
    input.Body.guestOsFeatures[_].type == enum_GuestOsFeatureType[_]
    input.Body.id == STRING
    input.Body.kind == STRING
    input.Body.labelFingerprint == STRING
    input.Body.labels.STRING == STRING
    input.Body.licenseCodes[_] == STRING
    input.Body.licenses[_] == STRING
    input.Body.locationHint == STRING
    input.Body.name == STRING
    input.Body.satisfiesPzs == BOOLEAN
    input.Body.selfLink == STRING
    input.Body.snapshotEncryptionKey.kmsKeyName == STRING
    input.Body.snapshotEncryptionKey.kmsKeyServiceAccount == STRING
    input.Body.snapshotEncryptionKey.rawKey == STRING
    input.Body.snapshotEncryptionKey.rsaEncryptedKey == STRING
    input.Body.snapshotEncryptionKey.sha256 == STRING
    input.Body.snapshotType == enum_SnapshotSnapshotType[_]
    input.Body.sourceDisk == STRING
    input.Body.sourceDiskEncryptionKey.kmsKeyName == STRING
    input.Body.sourceDiskEncryptionKey.kmsKeyServiceAccount == STRING
    input.Body.sourceDiskEncryptionKey.rawKey == STRING
    input.Body.sourceDiskEncryptionKey.rsaEncryptedKey == STRING
    input.Body.sourceDiskEncryptionKey.sha256 == STRING
    input.Body.sourceDiskForRecoveryCheckpoint == STRING
    input.Body.sourceDiskId == STRING
    input.Body.sourceInstantSnapshot == STRING
    input.Body.sourceInstantSnapshotEncryptionKey.kmsKeyName == STRING
    input.Body.sourceInstantSnapshotEncryptionKey.kmsKeyServiceAccount == STRING
    input.Body.sourceInstantSnapshotEncryptionKey.rawKey == STRING
    input.Body.sourceInstantSnapshotEncryptionKey.rsaEncryptedKey == STRING
    input.Body.sourceInstantSnapshotEncryptionKey.sha256 == STRING
    input.Body.sourceInstantSnapshotId == STRING
    input.Body.sourceSnapshotSchedulePolicy == STRING
    input.Body.sourceSnapshotSchedulePolicyId == STRING
    input.Body.status == enum_SnapshotStatus[_]
    input.Body.storageBytes == STRING
    input.Body.storageBytesStatus == enum_SnapshotStorageBytesStatus[_]
    input.Body.storageLocations[_] == STRING
    input.ReqMap.disk == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.zone == STRING
    input.Qs.guestFlush == BOOLEAN
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.disks.delete

valid {
    input.ReqMap.disk == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.zone == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.disks.get

valid {
    input.ReqMap.disk == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.zone == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.disks.getIamPolicy

valid {
    input.ReqMap.ProjectID == STRING
    input.ReqMap.resource == STRING
    input.ReqMap.zone == STRING
    input.Qs.optionsRequestedPolicyVersion == INTEGER
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.disks.insert

enum_DiskArchitecture := [ "ARCHITECTURE_UNSPECIFIED", "ARM64", "X86_64" ]
enum_DiskResourceStatusAsyncReplicationStatusState := [ "ACTIVE", "CREATED", "STARTING", "STATE_UNSPECIFIED", "STOPPED", "STOPPING" ]
enum_DiskStatus := [ "CREATING", "DELETING", "FAILED", "READY", "RESTORING", "UNAVAILABLE" ]
enum_GuestOsFeatureType := [ "FEATURE_TYPE_UNSPECIFIED", "GVNIC", "IDPF", "MULTI_IP_SUBNET", "SECURE_BOOT", "SEV_CAPABLE", "SEV_LIVE_MIGRATABLE", "SEV_LIVE_MIGRATABLE_V2", "SEV_SNP_CAPABLE", "UEFI_COMPATIBLE", "VIRTIO_SCSI_MULTIQUEUE", "WINDOWS" ]

valid {
    input.Body.architecture == enum_DiskArchitecture[_]
    input.Body.asyncPrimaryDisk.consistencyGroupPolicy == STRING
    input.Body.asyncPrimaryDisk.consistencyGroupPolicyId == STRING
    input.Body.asyncPrimaryDisk.disk == STRING
    input.Body.asyncPrimaryDisk.diskId == STRING
    input.Body.asyncSecondaryDisks.STRING.asyncReplicationDisk.consistencyGroupPolicy == STRING
    input.Body.asyncSecondaryDisks.STRING.asyncReplicationDisk.consistencyGroupPolicyId == STRING
    input.Body.asyncSecondaryDisks.STRING.asyncReplicationDisk.disk == STRING
    input.Body.asyncSecondaryDisks.STRING.asyncReplicationDisk.diskId == STRING
    input.Body.creationTimestamp == STRING
    input.Body.description == STRING
    input.Body.diskEncryptionKey.kmsKeyName == STRING
    input.Body.diskEncryptionKey.kmsKeyServiceAccount == STRING
    input.Body.diskEncryptionKey.rawKey == STRING
    input.Body.diskEncryptionKey.rsaEncryptedKey == STRING
    input.Body.diskEncryptionKey.sha256 == STRING
    input.Body.enableConfidentialCompute == BOOLEAN
    input.Body.guestOsFeatures[_].type == enum_GuestOsFeatureType[_]
    input.Body.id == STRING
    input.Body.kind == STRING
    input.Body.labelFingerprint == STRING
    input.Body.labels.STRING == STRING
    input.Body.lastAttachTimestamp == STRING
    input.Body.lastDetachTimestamp == STRING
    input.Body.licenseCodes[_] == STRING
    input.Body.licenses[_] == STRING
    input.Body.locationHint == STRING
    input.Body.name == STRING
    input.Body.options == STRING
    input.Body.params.resourceManagerTags.STRING == STRING
    input.Body.physicalBlockSizeBytes == STRING
    input.Body.provisionedIops == STRING
    input.Body.provisionedThroughput == STRING
    input.Body.region == STRING
    input.Body.replicaZones[_] == STRING
    input.Body.resourcePolicies[_] == STRING
    input.Body.resourceStatus.asyncPrimaryDisk.state == enum_DiskResourceStatusAsyncReplicationStatusState[_]
    input.Body.resourceStatus.asyncSecondaryDisks.STRING.state == enum_DiskResourceStatusAsyncReplicationStatusState[_]
    input.Body.satisfiesPzs == BOOLEAN
    input.Body.selfLink == STRING
    input.Body.sizeGb == STRING
    input.Body.sourceConsistencyGroupPolicy == STRING
    input.Body.sourceConsistencyGroupPolicyId == STRING
    input.Body.sourceDisk == STRING
    input.Body.sourceDiskId == STRING
    input.Body.sourceImage == STRING
    input.Body.sourceImageEncryptionKey.kmsKeyName == STRING
    input.Body.sourceImageEncryptionKey.kmsKeyServiceAccount == STRING
    input.Body.sourceImageEncryptionKey.rawKey == STRING
    input.Body.sourceImageEncryptionKey.rsaEncryptedKey == STRING
    input.Body.sourceImageEncryptionKey.sha256 == STRING
    input.Body.sourceImageId == STRING
    input.Body.sourceInstantSnapshot == STRING
    input.Body.sourceInstantSnapshotId == STRING
    input.Body.sourceSnapshot == STRING
    input.Body.sourceSnapshotEncryptionKey.kmsKeyName == STRING
    input.Body.sourceSnapshotEncryptionKey.kmsKeyServiceAccount == STRING
    input.Body.sourceSnapshotEncryptionKey.rawKey == STRING
    input.Body.sourceSnapshotEncryptionKey.rsaEncryptedKey == STRING
    input.Body.sourceSnapshotEncryptionKey.sha256 == STRING
    input.Body.sourceSnapshotId == STRING
    input.Body.sourceStorageObject == STRING
    input.Body.status == enum_DiskStatus[_]
    input.Body.storagePool == STRING
    input.Body.type == STRING
    input.Body.users[_] == STRING
    input.Body.zone == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.zone == STRING
    input.Qs.requestId == STRING
    input.Qs.sourceImage == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.disks.list

valid {
    input.ReqMap.ProjectID == STRING
    input.ReqMap.zone == STRING
    input.Qs.filter == STRING
    input.Qs.maxResults == INTEGER
    input.Qs.orderBy == STRING
    input.Qs.pageToken == STRING
    input.Qs.returnPartialSuccess == BOOLEAN
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.disks.removeResourcePolicies

valid {
    input.Body.resourcePolicies[_] == STRING
    input.ReqMap.disk == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.zone == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.disks.resize

valid {
    input.Body.sizeGb == STRING
    input.ReqMap.disk == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.zone == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.disks.setIamPolicy

enum_AuditLogConfigLogType := [ "ADMIN_READ", "DATA_READ", "DATA_WRITE", "LOG_TYPE_UNSPECIFIED" ]
enum_AuthorizationLoggingOptionsPermissionType := [ "ADMIN_READ", "ADMIN_WRITE", "DATA_READ", "DATA_WRITE", "PERMISSION_TYPE_UNSPECIFIED" ]
enum_ConditionIam := [ "APPROVER", "ATTRIBUTION", "AUTHORITY", "CREDENTIALS_TYPE", "CREDS_ASSERTION", "JUSTIFICATION_TYPE", "NO_ATTR", "SECURITY_REALM" ]
enum_ConditionOp := [ "DISCHARGED", "EQUALS", "IN", "NOT_EQUALS", "NOT_IN", "NO_OP" ]
enum_ConditionSys := [ "IP", "NAME", "NO_ATTR", "REGION", "SERVICE" ]
enum_LogConfigCloudAuditOptionsLogName := [ "ADMIN_ACTIVITY", "DATA_ACCESS", "UNSPECIFIED_LOG_NAME" ]
enum_LogConfigDataAccessOptionsLogMode := [ "LOG_FAIL_CLOSED", "LOG_MODE_UNSPECIFIED" ]
enum_RuleAction := [ "ALLOW", "ALLOW_WITH_LOG", "DENY", "DENY_WITH_LOG", "LOG", "NO_ACTION" ]

valid {
    input.Body.bindings[_].bindingId == STRING
    input.Body.bindings[_].condition.description == STRING
    input.Body.bindings[_].condition.expression == STRING
    input.Body.bindings[_].condition.location == STRING
    input.Body.bindings[_].condition.title == STRING
    input.Body.bindings[_].members[_] == STRING
    input.Body.bindings[_].role == STRING
    input.Body.etag == STRING
    input.Body.policy.auditConfigs[_].auditLogConfigs[_].exemptedMembers[_] == STRING
    input.Body.policy.auditConfigs[_].auditLogConfigs[_].ignoreChildExemptions == BOOLEAN
    input.Body.policy.auditConfigs[_].auditLogConfigs[_].logType == enum_AuditLogConfigLogType[_]
    input.Body.policy.auditConfigs[_].exemptedMembers[_] == STRING
    input.Body.policy.auditConfigs[_].service == STRING
    input.Body.policy.bindings[_].bindingId == 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.rules[_].action == enum_RuleAction[_]
    input.Body.policy.rules[_].conditions[_].iam == enum_ConditionIam[_]
    input.Body.policy.rules[_].conditions[_].op == enum_ConditionOp[_]
    input.Body.policy.rules[_].conditions[_].svc == STRING
    input.Body.policy.rules[_].conditions[_].sys == enum_ConditionSys[_]
    input.Body.policy.rules[_].conditions[_].values[_] == STRING
    input.Body.policy.rules[_].description == STRING
    input.Body.policy.rules[_].ins[_] == STRING
    input.Body.policy.rules[_].logConfigs[_].cloudAudit.authorizationLoggingOptions.permissionType == enum_AuthorizationLoggingOptionsPermissionType[_]
    input.Body.policy.rules[_].logConfigs[_].cloudAudit.logName == enum_LogConfigCloudAuditOptionsLogName[_]
    input.Body.policy.rules[_].logConfigs[_].counter.customFields[_].name == STRING
    input.Body.policy.rules[_].logConfigs[_].counter.customFields[_].value == STRING
    input.Body.policy.rules[_].logConfigs[_].counter.field == STRING
    input.Body.policy.rules[_].logConfigs[_].counter.metric == STRING
    input.Body.policy.rules[_].logConfigs[_].dataAccess.logMode == enum_LogConfigDataAccessOptionsLogMode[_]
    input.Body.policy.rules[_].notIns[_] == STRING
    input.Body.policy.rules[_].permissions[_] == STRING
    input.Body.policy.version == INTEGER
    input.ReqMap.ProjectID == STRING
    input.ReqMap.resource == STRING
    input.ReqMap.zone == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.disks.setLabels

valid {
    input.Body.labelFingerprint == STRING
    input.Body.labels.STRING == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.resource == STRING
    input.ReqMap.zone == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.disks.startAsyncReplication

valid {
    input.Body.asyncSecondaryDisk == STRING
    input.ReqMap.disk == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.zone == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.disks.stopAsyncReplication

valid {
    input.ReqMap.disk == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.zone == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.disks.stopGroupAsyncReplication

valid {
    input.Body.resourcePolicy == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.zone == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.disks.testIamPermissions

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

compute.disks.update

enum_DiskArchitecture := [ "ARCHITECTURE_UNSPECIFIED", "ARM64", "X86_64" ]
enum_DiskResourceStatusAsyncReplicationStatusState := [ "ACTIVE", "CREATED", "STARTING", "STATE_UNSPECIFIED", "STOPPED", "STOPPING" ]
enum_DiskStatus := [ "CREATING", "DELETING", "FAILED", "READY", "RESTORING", "UNAVAILABLE" ]
enum_GuestOsFeatureType := [ "FEATURE_TYPE_UNSPECIFIED", "GVNIC", "IDPF", "MULTI_IP_SUBNET", "SECURE_BOOT", "SEV_CAPABLE", "SEV_LIVE_MIGRATABLE", "SEV_LIVE_MIGRATABLE_V2", "SEV_SNP_CAPABLE", "UEFI_COMPATIBLE", "VIRTIO_SCSI_MULTIQUEUE", "WINDOWS" ]

valid {
    input.Body.architecture == enum_DiskArchitecture[_]
    input.Body.asyncPrimaryDisk.consistencyGroupPolicy == STRING
    input.Body.asyncPrimaryDisk.consistencyGroupPolicyId == STRING
    input.Body.asyncPrimaryDisk.disk == STRING
    input.Body.asyncPrimaryDisk.diskId == STRING
    input.Body.asyncSecondaryDisks.STRING.asyncReplicationDisk.consistencyGroupPolicy == STRING
    input.Body.asyncSecondaryDisks.STRING.asyncReplicationDisk.consistencyGroupPolicyId == STRING
    input.Body.asyncSecondaryDisks.STRING.asyncReplicationDisk.disk == STRING
    input.Body.asyncSecondaryDisks.STRING.asyncReplicationDisk.diskId == STRING
    input.Body.creationTimestamp == STRING
    input.Body.description == STRING
    input.Body.diskEncryptionKey.kmsKeyName == STRING
    input.Body.diskEncryptionKey.kmsKeyServiceAccount == STRING
    input.Body.diskEncryptionKey.rawKey == STRING
    input.Body.diskEncryptionKey.rsaEncryptedKey == STRING
    input.Body.diskEncryptionKey.sha256 == STRING
    input.Body.enableConfidentialCompute == BOOLEAN
    input.Body.guestOsFeatures[_].type == enum_GuestOsFeatureType[_]
    input.Body.id == STRING
    input.Body.kind == STRING
    input.Body.labelFingerprint == STRING
    input.Body.labels.STRING == STRING
    input.Body.lastAttachTimestamp == STRING
    input.Body.lastDetachTimestamp == STRING
    input.Body.licenseCodes[_] == STRING
    input.Body.licenses[_] == STRING
    input.Body.locationHint == STRING
    input.Body.name == STRING
    input.Body.options == STRING
    input.Body.params.resourceManagerTags.STRING == STRING
    input.Body.physicalBlockSizeBytes == STRING
    input.Body.provisionedIops == STRING
    input.Body.provisionedThroughput == STRING
    input.Body.region == STRING
    input.Body.replicaZones[_] == STRING
    input.Body.resourcePolicies[_] == STRING
    input.Body.resourceStatus.asyncPrimaryDisk.state == enum_DiskResourceStatusAsyncReplicationStatusState[_]
    input.Body.resourceStatus.asyncSecondaryDisks.STRING.state == enum_DiskResourceStatusAsyncReplicationStatusState[_]
    input.Body.satisfiesPzs == BOOLEAN
    input.Body.selfLink == STRING
    input.Body.sizeGb == STRING
    input.Body.sourceConsistencyGroupPolicy == STRING
    input.Body.sourceConsistencyGroupPolicyId == STRING
    input.Body.sourceDisk == STRING
    input.Body.sourceDiskId == STRING
    input.Body.sourceImage == STRING
    input.Body.sourceImageEncryptionKey.kmsKeyName == STRING
    input.Body.sourceImageEncryptionKey.kmsKeyServiceAccount == STRING
    input.Body.sourceImageEncryptionKey.rawKey == STRING
    input.Body.sourceImageEncryptionKey.rsaEncryptedKey == STRING
    input.Body.sourceImageEncryptionKey.sha256 == STRING
    input.Body.sourceImageId == STRING
    input.Body.sourceInstantSnapshot == STRING
    input.Body.sourceInstantSnapshotId == STRING
    input.Body.sourceSnapshot == STRING
    input.Body.sourceSnapshotEncryptionKey.kmsKeyName == STRING
    input.Body.sourceSnapshotEncryptionKey.kmsKeyServiceAccount == STRING
    input.Body.sourceSnapshotEncryptionKey.rawKey == STRING
    input.Body.sourceSnapshotEncryptionKey.rsaEncryptedKey == STRING
    input.Body.sourceSnapshotEncryptionKey.sha256 == STRING
    input.Body.sourceSnapshotId == STRING
    input.Body.sourceStorageObject == STRING
    input.Body.status == enum_DiskStatus[_]
    input.Body.storagePool == STRING
    input.Body.type == STRING
    input.Body.users[_] == STRING
    input.Body.zone == STRING
    input.ReqMap.disk == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.zone == STRING
    input.Qs.paths == STRING
    input.Qs.requestId == STRING
    input.Qs.updateMask == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.externalVpnGateways.delete

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

compute.externalVpnGateways.get

valid {
    input.ReqMap.externalVpnGateway == STRING
    input.ReqMap.ProjectID == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.externalVpnGateways.insert

enum_ExternalVpnGatewayRedundancyType := [ "FOUR_IPS_REDUNDANCY", "SINGLE_IP_INTERNALLY_REDUNDANT", "TWO_IPS_REDUNDANCY" ]

valid {
    input.Body.creationTimestamp == STRING
    input.Body.description == STRING
    input.Body.id == STRING
    input.Body.interfaces[_].id == INTEGER
    input.Body.interfaces[_].ipAddress == STRING
    input.Body.interfaces[_].ipv6Address == STRING
    input.Body.kind == STRING
    input.Body.labelFingerprint == STRING
    input.Body.labels.STRING == STRING
    input.Body.name == STRING
    input.Body.redundancyType == enum_ExternalVpnGatewayRedundancyType[_]
    input.Body.selfLink == STRING
    input.ReqMap.ProjectID == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.externalVpnGateways.list

valid {
    input.ReqMap.ProjectID == STRING
    input.Qs.filter == STRING
    input.Qs.maxResults == INTEGER
    input.Qs.orderBy == STRING
    input.Qs.pageToken == STRING
    input.Qs.returnPartialSuccess == BOOLEAN
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.externalVpnGateways.setLabels

valid {
    input.Body.labelFingerprint == STRING
    input.Body.labels.STRING == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.resource == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.externalVpnGateways.testIamPermissions

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

compute.firewallPolicies.addAssociation

valid {
    input.Body.attachmentTarget == STRING
    input.Body.displayName == STRING
    input.Body.firewallPolicyId == STRING
    input.Body.name == STRING
    input.Body.shortName == STRING
    input.ReqMap.firewallPolicy == STRING
    input.Qs.replaceExistingAssociation == BOOLEAN
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
}

compute.firewallPolicies.addRule

enum_FirewallPolicyRuleDirection := [ "EGRESS", "INGRESS" ]
enum_FirewallPolicyRuleSecureTagState := [ "EFFECTIVE", "INEFFECTIVE" ]

valid {
    input.Body.action == STRING
    input.Body.description == STRING
    input.Body.direction == enum_FirewallPolicyRuleDirection[_]
    input.Body.disabled == BOOLEAN
    input.Body.enableLogging == BOOLEAN
    input.Body.kind == STRING
    input.Body.match.destAddressGroups[_] == STRING
    input.Body.match.destFqdns[_] == STRING
    input.Body.match.destIpRanges[_] == STRING
    input.Body.match.destRegionCodes[_] == STRING
    input.Body.match.destThreatIntelligences[_] == STRING
    input.Body.match.layer4Configs[_].ipProtocol == STRING
    input.Body.match.layer4Configs[_].ports[_] == STRING
    input.Body.match.srcAddressGroups[_] == STRING
    input.Body.match.srcFqdns[_] == STRING
    input.Body.match.srcIpRanges[_] == STRING
    input.Body.match.srcRegionCodes[_] == STRING
    input.Body.match.srcSecureTags[_].name == STRING
    input.Body.match.srcSecureTags[_].state == enum_FirewallPolicyRuleSecureTagState[_]
    input.Body.match.srcThreatIntelligences[_] == STRING
    input.Body.priority == INTEGER
    input.Body.ruleName == STRING
    input.Body.ruleTupleCount == INTEGER
    input.Body.securityProfileGroup == STRING
    input.Body.targetResources[_] == STRING
    input.Body.targetSecureTags[_].name == STRING
    input.Body.targetSecureTags[_].state == enum_FirewallPolicyRuleSecureTagState[_]
    input.Body.targetServiceAccounts[_] == STRING
    input.Body.tlsInspect == BOOLEAN
    input.ReqMap.firewallPolicy == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
}

compute.firewallPolicies.cloneRules

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

compute.firewallPolicies.delete

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

compute.firewallPolicies.get

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

compute.firewallPolicies.getAssociation

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

compute.firewallPolicies.getIamPolicy

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

compute.firewallPolicies.getRule

valid {
    input.ReqMap.firewallPolicy == STRING
    input.Qs.priority == INTEGER
    input.ProviderMetadata.Region == STRING
}

compute.firewallPolicies.insert

enum_FirewallPolicyRuleDirection := [ "EGRESS", "INGRESS" ]
enum_FirewallPolicyRuleSecureTagState := [ "EFFECTIVE", "INEFFECTIVE" ]

valid {
    input.Body.associations[_].attachmentTarget == STRING
    input.Body.associations[_].displayName == STRING
    input.Body.associations[_].firewallPolicyId == STRING
    input.Body.associations[_].name == STRING
    input.Body.associations[_].shortName == STRING
    input.Body.creationTimestamp == STRING
    input.Body.description == STRING
    input.Body.displayName == STRING
    input.Body.fingerprint == STRING
    input.Body.id == STRING
    input.Body.kind == STRING
    input.Body.name == STRING
    input.Body.parent == STRING
    input.Body.region == STRING
    input.Body.ruleTupleCount == INTEGER
    input.Body.rules[_].action == STRING
    input.Body.rules[_].description == STRING
    input.Body.rules[_].direction == enum_FirewallPolicyRuleDirection[_]
    input.Body.rules[_].disabled == BOOLEAN
    input.Body.rules[_].enableLogging == BOOLEAN
    input.Body.rules[_].kind == STRING
    input.Body.rules[_].match.destAddressGroups[_] == STRING
    input.Body.rules[_].match.destFqdns[_] == STRING
    input.Body.rules[_].match.destIpRanges[_] == STRING
    input.Body.rules[_].match.destRegionCodes[_] == STRING
    input.Body.rules[_].match.destThreatIntelligences[_] == STRING
    input.Body.rules[_].match.layer4Configs[_].ipProtocol == STRING
    input.Body.rules[_].match.layer4Configs[_].ports[_] == STRING
    input.Body.rules[_].match.srcAddressGroups[_] == STRING
    input.Body.rules[_].match.srcFqdns[_] == STRING
    input.Body.rules[_].match.srcIpRanges[_] == STRING
    input.Body.rules[_].match.srcRegionCodes[_] == STRING
    input.Body.rules[_].match.srcSecureTags[_].name == STRING
    input.Body.rules[_].match.srcSecureTags[_].state == enum_FirewallPolicyRuleSecureTagState[_]
    input.Body.rules[_].match.srcThreatIntelligences[_] == STRING
    input.Body.rules[_].priority == INTEGER
    input.Body.rules[_].ruleName == STRING
    input.Body.rules[_].ruleTupleCount == INTEGER
    input.Body.rules[_].securityProfileGroup == STRING
    input.Body.rules[_].targetResources[_] == STRING
    input.Body.rules[_].targetSecureTags[_].name == STRING
    input.Body.rules[_].targetSecureTags[_].state == enum_FirewallPolicyRuleSecureTagState[_]
    input.Body.rules[_].targetServiceAccounts[_] == STRING
    input.Body.rules[_].tlsInspect == BOOLEAN
    input.Body.selfLink == STRING
    input.Body.selfLinkWithId == STRING
    input.Body.shortName == STRING
    input.Qs.parentId == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
}

compute.firewallPolicies.list

valid {
    input.Qs.filter == STRING
    input.Qs.maxResults == INTEGER
    input.Qs.orderBy == STRING
    input.Qs.pageToken == STRING
    input.Qs.parentId == STRING
    input.Qs.returnPartialSuccess == BOOLEAN
    input.ProviderMetadata.Region == STRING
}

compute.firewallPolicies.listAssociations

valid {
    input.Qs.targetResource == STRING
    input.ProviderMetadata.Region == STRING
}

compute.firewallPolicies.move

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

compute.firewallPolicies.patch

enum_FirewallPolicyRuleDirection := [ "EGRESS", "INGRESS" ]
enum_FirewallPolicyRuleSecureTagState := [ "EFFECTIVE", "INEFFECTIVE" ]

valid {
    input.Body.associations[_].attachmentTarget == STRING
    input.Body.associations[_].displayName == STRING
    input.Body.associations[_].firewallPolicyId == STRING
    input.Body.associations[_].name == STRING
    input.Body.associations[_].shortName == STRING
    input.Body.creationTimestamp == STRING
    input.Body.description == STRING
    input.Body.displayName == STRING
    input.Body.fingerprint == STRING
    input.Body.id == STRING
    input.Body.kind == STRING
    input.Body.name == STRING
    input.Body.parent == STRING
    input.Body.region == STRING
    input.Body.ruleTupleCount == INTEGER
    input.Body.rules[_].action == STRING
    input.Body.rules[_].description == STRING
    input.Body.rules[_].direction == enum_FirewallPolicyRuleDirection[_]
    input.Body.rules[_].disabled == BOOLEAN
    input.Body.rules[_].enableLogging == BOOLEAN
    input.Body.rules[_].kind == STRING
    input.Body.rules[_].match.destAddressGroups[_] == STRING
    input.Body.rules[_].match.destFqdns[_] == STRING
    input.Body.rules[_].match.destIpRanges[_] == STRING
    input.Body.rules[_].match.destRegionCodes[_] == STRING
    input.Body.rules[_].match.destThreatIntelligences[_] == STRING
    input.Body.rules[_].match.layer4Configs[_].ipProtocol == STRING
    input.Body.rules[_].match.layer4Configs[_].ports[_] == STRING
    input.Body.rules[_].match.srcAddressGroups[_] == STRING
    input.Body.rules[_].match.srcFqdns[_] == STRING
    input.Body.rules[_].match.srcIpRanges[_] == STRING
    input.Body.rules[_].match.srcRegionCodes[_] == STRING
    input.Body.rules[_].match.srcSecureTags[_].name == STRING
    input.Body.rules[_].match.srcSecureTags[_].state == enum_FirewallPolicyRuleSecureTagState[_]
    input.Body.rules[_].match.srcThreatIntelligences[_] == STRING
    input.Body.rules[_].priority == INTEGER
    input.Body.rules[_].ruleName == STRING
    input.Body.rules[_].ruleTupleCount == INTEGER
    input.Body.rules[_].securityProfileGroup == STRING
    input.Body.rules[_].targetResources[_] == STRING
    input.Body.rules[_].targetSecureTags[_].name == STRING
    input.Body.rules[_].targetSecureTags[_].state == enum_FirewallPolicyRuleSecureTagState[_]
    input.Body.rules[_].targetServiceAccounts[_] == STRING
    input.Body.rules[_].tlsInspect == BOOLEAN
    input.Body.selfLink == STRING
    input.Body.selfLinkWithId == STRING
    input.Body.shortName == STRING
    input.ReqMap.firewallPolicy == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
}

compute.firewallPolicies.patchRule

enum_FirewallPolicyRuleDirection := [ "EGRESS", "INGRESS" ]
enum_FirewallPolicyRuleSecureTagState := [ "EFFECTIVE", "INEFFECTIVE" ]

valid {
    input.Body.action == STRING
    input.Body.description == STRING
    input.Body.direction == enum_FirewallPolicyRuleDirection[_]
    input.Body.disabled == BOOLEAN
    input.Body.enableLogging == BOOLEAN
    input.Body.kind == STRING
    input.Body.match.destAddressGroups[_] == STRING
    input.Body.match.destFqdns[_] == STRING
    input.Body.match.destIpRanges[_] == STRING
    input.Body.match.destRegionCodes[_] == STRING
    input.Body.match.destThreatIntelligences[_] == STRING
    input.Body.match.layer4Configs[_].ipProtocol == STRING
    input.Body.match.layer4Configs[_].ports[_] == STRING
    input.Body.match.srcAddressGroups[_] == STRING
    input.Body.match.srcFqdns[_] == STRING
    input.Body.match.srcIpRanges[_] == STRING
    input.Body.match.srcRegionCodes[_] == STRING
    input.Body.match.srcSecureTags[_].name == STRING
    input.Body.match.srcSecureTags[_].state == enum_FirewallPolicyRuleSecureTagState[_]
    input.Body.match.srcThreatIntelligences[_] == STRING
    input.Body.priority == INTEGER
    input.Body.ruleName == STRING
    input.Body.ruleTupleCount == INTEGER
    input.Body.securityProfileGroup == STRING
    input.Body.targetResources[_] == STRING
    input.Body.targetSecureTags[_].name == STRING
    input.Body.targetSecureTags[_].state == enum_FirewallPolicyRuleSecureTagState[_]
    input.Body.targetServiceAccounts[_] == STRING
    input.Body.tlsInspect == BOOLEAN
    input.ReqMap.firewallPolicy == STRING
    input.Qs.priority == INTEGER
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
}

compute.firewallPolicies.removeAssociation

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

compute.firewallPolicies.removeRule

valid {
    input.ReqMap.firewallPolicy == STRING
    input.Qs.priority == INTEGER
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
}

compute.firewallPolicies.setIamPolicy

enum_AuditLogConfigLogType := [ "ADMIN_READ", "DATA_READ", "DATA_WRITE", "LOG_TYPE_UNSPECIFIED" ]
enum_AuthorizationLoggingOptionsPermissionType := [ "ADMIN_READ", "ADMIN_WRITE", "DATA_READ", "DATA_WRITE", "PERMISSION_TYPE_UNSPECIFIED" ]
enum_ConditionIam := [ "APPROVER", "ATTRIBUTION", "AUTHORITY", "CREDENTIALS_TYPE", "CREDS_ASSERTION", "JUSTIFICATION_TYPE", "NO_ATTR", "SECURITY_REALM" ]
enum_ConditionOp := [ "DISCHARGED", "EQUALS", "IN", "NOT_EQUALS", "NOT_IN", "NO_OP" ]
enum_ConditionSys := [ "IP", "NAME", "NO_ATTR", "REGION", "SERVICE" ]
enum_LogConfigCloudAuditOptionsLogName := [ "ADMIN_ACTIVITY", "DATA_ACCESS", "UNSPECIFIED_LOG_NAME" ]
enum_LogConfigDataAccessOptionsLogMode := [ "LOG_FAIL_CLOSED", "LOG_MODE_UNSPECIFIED" ]
enum_RuleAction := [ "ALLOW", "ALLOW_WITH_LOG", "DENY", "DENY_WITH_LOG", "LOG", "NO_ACTION" ]

valid {
    input.Body.bindings[_].bindingId == STRING
    input.Body.bindings[_].condition.description == STRING
    input.Body.bindings[_].condition.expression == STRING
    input.Body.bindings[_].condition.location == STRING
    input.Body.bindings[_].condition.title == STRING
    input.Body.bindings[_].members[_] == STRING
    input.Body.bindings[_].role == STRING
    input.Body.etag == STRING
    input.Body.policy.auditConfigs[_].auditLogConfigs[_].exemptedMembers[_] == STRING
    input.Body.policy.auditConfigs[_].auditLogConfigs[_].ignoreChildExemptions == BOOLEAN
    input.Body.policy.auditConfigs[_].auditLogConfigs[_].logType == enum_AuditLogConfigLogType[_]
    input.Body.policy.auditConfigs[_].exemptedMembers[_] == STRING
    input.Body.policy.auditConfigs[_].service == STRING
    input.Body.policy.bindings[_].bindingId == 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.rules[_].action == enum_RuleAction[_]
    input.Body.policy.rules[_].conditions[_].iam == enum_ConditionIam[_]
    input.Body.policy.rules[_].conditions[_].op == enum_ConditionOp[_]
    input.Body.policy.rules[_].conditions[_].svc == STRING
    input.Body.policy.rules[_].conditions[_].sys == enum_ConditionSys[_]
    input.Body.policy.rules[_].conditions[_].values[_] == STRING
    input.Body.policy.rules[_].description == STRING
    input.Body.policy.rules[_].ins[_] == STRING
    input.Body.policy.rules[_].logConfigs[_].cloudAudit.authorizationLoggingOptions.permissionType == enum_AuthorizationLoggingOptionsPermissionType[_]
    input.Body.policy.rules[_].logConfigs[_].cloudAudit.logName == enum_LogConfigCloudAuditOptionsLogName[_]
    input.Body.policy.rules[_].logConfigs[_].counter.customFields[_].name == STRING
    input.Body.policy.rules[_].logConfigs[_].counter.customFields[_].value == STRING
    input.Body.policy.rules[_].logConfigs[_].counter.field == STRING
    input.Body.policy.rules[_].logConfigs[_].counter.metric == STRING
    input.Body.policy.rules[_].logConfigs[_].dataAccess.logMode == enum_LogConfigDataAccessOptionsLogMode[_]
    input.Body.policy.rules[_].notIns[_] == STRING
    input.Body.policy.rules[_].permissions[_] == STRING
    input.Body.policy.version == INTEGER
    input.ReqMap.resource == STRING
    input.ProviderMetadata.Region == STRING
}

compute.firewallPolicies.testIamPermissions

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

compute.firewalls.delete

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

compute.firewalls.get

valid {
    input.ReqMap.firewall == STRING
    input.ReqMap.ProjectID == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.firewalls.insert

enum_FirewallDirection := [ "EGRESS", "INGRESS" ]
enum_FirewallLogConfigMetadata := [ "EXCLUDE_ALL_METADATA", "INCLUDE_ALL_METADATA" ]

valid {
    input.Body.allowed[_].IPProtocol == STRING
    input.Body.allowed[_].ports[_] == STRING
    input.Body.creationTimestamp == STRING
    input.Body.denied[_].IPProtocol == STRING
    input.Body.denied[_].ports[_] == STRING
    input.Body.description == STRING
    input.Body.destinationRanges[_] == STRING
    input.Body.direction == enum_FirewallDirection[_]
    input.Body.disabled == BOOLEAN
    input.Body.id == STRING
    input.Body.kind == STRING
    input.Body.logConfig.enable == BOOLEAN
    input.Body.logConfig.metadata == enum_FirewallLogConfigMetadata[_]
    input.Body.name == STRING
    input.Body.network == STRING
    input.Body.priority == INTEGER
    input.Body.selfLink == STRING
    input.Body.sourceRanges[_] == STRING
    input.Body.sourceServiceAccounts[_] == STRING
    input.Body.sourceTags[_] == STRING
    input.Body.targetServiceAccounts[_] == STRING
    input.Body.targetTags[_] == STRING
    input.ReqMap.ProjectID == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.firewalls.list

valid {
    input.ReqMap.ProjectID == STRING
    input.Qs.filter == STRING
    input.Qs.maxResults == INTEGER
    input.Qs.orderBy == STRING
    input.Qs.pageToken == STRING
    input.Qs.returnPartialSuccess == BOOLEAN
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.firewalls.patch

enum_FirewallDirection := [ "EGRESS", "INGRESS" ]
enum_FirewallLogConfigMetadata := [ "EXCLUDE_ALL_METADATA", "INCLUDE_ALL_METADATA" ]

valid {
    input.Body.allowed[_].IPProtocol == STRING
    input.Body.allowed[_].ports[_] == STRING
    input.Body.creationTimestamp == STRING
    input.Body.denied[_].IPProtocol == STRING
    input.Body.denied[_].ports[_] == STRING
    input.Body.description == STRING
    input.Body.destinationRanges[_] == STRING
    input.Body.direction == enum_FirewallDirection[_]
    input.Body.disabled == BOOLEAN
    input.Body.id == STRING
    input.Body.kind == STRING
    input.Body.logConfig.enable == BOOLEAN
    input.Body.logConfig.metadata == enum_FirewallLogConfigMetadata[_]
    input.Body.name == STRING
    input.Body.network == STRING
    input.Body.priority == INTEGER
    input.Body.selfLink == STRING
    input.Body.sourceRanges[_] == STRING
    input.Body.sourceServiceAccounts[_] == STRING
    input.Body.sourceTags[_] == STRING
    input.Body.targetServiceAccounts[_] == STRING
    input.Body.targetTags[_] == STRING
    input.ReqMap.firewall == STRING
    input.ReqMap.ProjectID == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.firewalls.testIamPermissions

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

compute.firewalls.update

enum_FirewallDirection := [ "EGRESS", "INGRESS" ]
enum_FirewallLogConfigMetadata := [ "EXCLUDE_ALL_METADATA", "INCLUDE_ALL_METADATA" ]

valid {
    input.Body.allowed[_].IPProtocol == STRING
    input.Body.allowed[_].ports[_] == STRING
    input.Body.creationTimestamp == STRING
    input.Body.denied[_].IPProtocol == STRING
    input.Body.denied[_].ports[_] == STRING
    input.Body.description == STRING
    input.Body.destinationRanges[_] == STRING
    input.Body.direction == enum_FirewallDirection[_]
    input.Body.disabled == BOOLEAN
    input.Body.id == STRING
    input.Body.kind == STRING
    input.Body.logConfig.enable == BOOLEAN
    input.Body.logConfig.metadata == enum_FirewallLogConfigMetadata[_]
    input.Body.name == STRING
    input.Body.network == STRING
    input.Body.priority == INTEGER
    input.Body.selfLink == STRING
    input.Body.sourceRanges[_] == STRING
    input.Body.sourceServiceAccounts[_] == STRING
    input.Body.sourceTags[_] == STRING
    input.Body.targetServiceAccounts[_] == STRING
    input.Body.targetTags[_] == STRING
    input.ReqMap.firewall == STRING
    input.ReqMap.ProjectID == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.forwardingRules.aggregatedList

valid {
    input.ReqMap.ProjectID == STRING
    input.Qs.filter == STRING
    input.Qs.includeAllScopes == BOOLEAN
    input.Qs.maxResults == INTEGER
    input.Qs.orderBy == STRING
    input.Qs.pageToken == STRING
    input.Qs.returnPartialSuccess == BOOLEAN
    input.Qs.serviceProjectNumber == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.forwardingRules.delete

valid {
    input.ReqMap.forwardingRule == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.forwardingRules.get

valid {
    input.ReqMap.forwardingRule == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.forwardingRules.insert

enum_ForwardingRuleIPProtocol := [ "AH", "ESP", "ICMP", "L3_DEFAULT", "SCTP", "TCP", "UDP" ]
enum_ForwardingRuleIpVersion := [ "IPV4", "IPV6", "UNSPECIFIED_VERSION" ]
enum_ForwardingRuleLoadBalancingScheme := [ "EXTERNAL", "EXTERNAL_MANAGED", "INTERNAL", "INTERNAL_MANAGED", "INTERNAL_SELF_MANAGED", "INVALID" ]
enum_ForwardingRuleNetworkTier := [ "FIXED_STANDARD", "PREMIUM", "STANDARD", "STANDARD_OVERRIDES_FIXED_STANDARD" ]
enum_ForwardingRulePscConnectionStatus := [ "ACCEPTED", "CLOSED", "NEEDS_ATTENTION", "PENDING", "REJECTED", "STATUS_UNSPECIFIED" ]
enum_MetadataFilterFilterMatchCriteria := [ "MATCH_ALL", "MATCH_ANY", "NOT_SET" ]

valid {
    input.Body.IPAddress == STRING
    input.Body.IPProtocol == enum_ForwardingRuleIPProtocol[_]
    input.Body.allPorts == BOOLEAN
    input.Body.allowGlobalAccess == BOOLEAN
    input.Body.allowPscGlobalAccess == BOOLEAN
    input.Body.backendService == STRING
    input.Body.baseForwardingRule == STRING
    input.Body.creationTimestamp == STRING
    input.Body.description == STRING
    input.Body.fingerprint == STRING
    input.Body.id == STRING
    input.Body.ipVersion == enum_ForwardingRuleIpVersion[_]
    input.Body.isMirroringCollector == BOOLEAN
    input.Body.kind == STRING
    input.Body.labelFingerprint == STRING
    input.Body.labels.STRING == STRING
    input.Body.loadBalancingScheme == enum_ForwardingRuleLoadBalancingScheme[_]
    input.Body.metadataFilters[_].filterLabels[_].name == STRING
    input.Body.metadataFilters[_].filterLabels[_].value == STRING
    input.Body.metadataFilters[_].filterMatchCriteria == enum_MetadataFilterFilterMatchCriteria[_]
    input.Body.name == STRING
    input.Body.network == STRING
    input.Body.networkTier == enum_ForwardingRuleNetworkTier[_]
    input.Body.noAutomateDnsZone == BOOLEAN
    input.Body.portRange == STRING
    input.Body.ports[_] == STRING
    input.Body.pscConnectionId == STRING
    input.Body.pscConnectionStatus == enum_ForwardingRulePscConnectionStatus[_]
    input.Body.region == STRING
    input.Body.selfLink == STRING
    input.Body.serviceDirectoryRegistrations[_].namespace == STRING
    input.Body.serviceDirectoryRegistrations[_].service == STRING
    input.Body.serviceDirectoryRegistrations[_].serviceDirectoryRegion == STRING
    input.Body.serviceLabel == STRING
    input.Body.serviceName == STRING
    input.Body.sourceIpRanges[_] == STRING
    input.Body.subnetwork == STRING
    input.Body.target == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.forwardingRules.list

valid {
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.Qs.filter == STRING
    input.Qs.maxResults == INTEGER
    input.Qs.orderBy == STRING
    input.Qs.pageToken == STRING
    input.Qs.returnPartialSuccess == BOOLEAN
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.forwardingRules.patch

enum_ForwardingRuleIPProtocol := [ "AH", "ESP", "ICMP", "L3_DEFAULT", "SCTP", "TCP", "UDP" ]
enum_ForwardingRuleIpVersion := [ "IPV4", "IPV6", "UNSPECIFIED_VERSION" ]
enum_ForwardingRuleLoadBalancingScheme := [ "EXTERNAL", "EXTERNAL_MANAGED", "INTERNAL", "INTERNAL_MANAGED", "INTERNAL_SELF_MANAGED", "INVALID" ]
enum_ForwardingRuleNetworkTier := [ "FIXED_STANDARD", "PREMIUM", "STANDARD", "STANDARD_OVERRIDES_FIXED_STANDARD" ]
enum_ForwardingRulePscConnectionStatus := [ "ACCEPTED", "CLOSED", "NEEDS_ATTENTION", "PENDING", "REJECTED", "STATUS_UNSPECIFIED" ]
enum_MetadataFilterFilterMatchCriteria := [ "MATCH_ALL", "MATCH_ANY", "NOT_SET" ]

valid {
    input.Body.IPAddress == STRING
    input.Body.IPProtocol == enum_ForwardingRuleIPProtocol[_]
    input.Body.allPorts == BOOLEAN
    input.Body.allowGlobalAccess == BOOLEAN
    input.Body.allowPscGlobalAccess == BOOLEAN
    input.Body.backendService == STRING
    input.Body.baseForwardingRule == STRING
    input.Body.creationTimestamp == STRING
    input.Body.description == STRING
    input.Body.fingerprint == STRING
    input.Body.id == STRING
    input.Body.ipVersion == enum_ForwardingRuleIpVersion[_]
    input.Body.isMirroringCollector == BOOLEAN
    input.Body.kind == STRING
    input.Body.labelFingerprint == STRING
    input.Body.labels.STRING == STRING
    input.Body.loadBalancingScheme == enum_ForwardingRuleLoadBalancingScheme[_]
    input.Body.metadataFilters[_].filterLabels[_].name == STRING
    input.Body.metadataFilters[_].filterLabels[_].value == STRING
    input.Body.metadataFilters[_].filterMatchCriteria == enum_MetadataFilterFilterMatchCriteria[_]
    input.Body.name == STRING
    input.Body.network == STRING
    input.Body.networkTier == enum_ForwardingRuleNetworkTier[_]
    input.Body.noAutomateDnsZone == BOOLEAN
    input.Body.portRange == STRING
    input.Body.ports[_] == STRING
    input.Body.pscConnectionId == STRING
    input.Body.pscConnectionStatus == enum_ForwardingRulePscConnectionStatus[_]
    input.Body.region == STRING
    input.Body.selfLink == STRING
    input.Body.serviceDirectoryRegistrations[_].namespace == STRING
    input.Body.serviceDirectoryRegistrations[_].service == STRING
    input.Body.serviceDirectoryRegistrations[_].serviceDirectoryRegion == STRING
    input.Body.serviceLabel == STRING
    input.Body.serviceName == STRING
    input.Body.sourceIpRanges[_] == STRING
    input.Body.subnetwork == STRING
    input.Body.target == STRING
    input.ReqMap.forwardingRule == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.forwardingRules.setLabels

valid {
    input.Body.labelFingerprint == STRING
    input.Body.labels.STRING == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.ReqMap.resource == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.forwardingRules.setTarget

valid {
    input.Body.target == STRING
    input.ReqMap.forwardingRule == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.forwardingRules.testIamPermissions

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

compute.futureReservations.aggregatedList

valid {
    input.ReqMap.ProjectID == STRING
    input.Qs.filter == STRING
    input.Qs.includeAllScopes == BOOLEAN
    input.Qs.maxResults == INTEGER
    input.Qs.orderBy == STRING
    input.Qs.pageToken == STRING
    input.Qs.returnPartialSuccess == BOOLEAN
    input.Qs.serviceProjectNumber == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.futureReservations.cancel

valid {
    input.ReqMap.futureReservation == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.zone == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.futureReservations.delete

valid {
    input.ReqMap.futureReservation == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.zone == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.futureReservations.get

valid {
    input.ReqMap.futureReservation == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.zone == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.futureReservations.insert

enum_AllocationSpecificSKUAllocationAllocatedInstancePropertiesReservedDiskInterface := [ "NVME", "SCSI" ]
enum_AllocationSpecificSKUAllocationReservedInstancePropertiesMaintenanceInterval := [ "AS_NEEDED", "PERIODIC", "RECURRENT" ]
enum_FutureReservationPlanningStatus := [ "DRAFT", "PLANNING_STATUS_UNSPECIFIED", "SUBMITTED" ]
enum_FutureReservationStatusAmendmentStatus := [ "AMENDMENT_APPROVED", "AMENDMENT_DECLINED", "AMENDMENT_IN_REVIEW", "AMENDMENT_STATUS_UNSPECIFIED" ]
enum_FutureReservationStatusLastKnownGoodStateProcurementStatus := [ "APPROVED", "CANCELLED", "COMMITTED", "DECLINED", "DRAFTING", "FAILED", "FAILED_PARTIALLY_FULFILLED", "FULFILLED", "PENDING_AMENDMENT_APPROVAL", "PENDING_APPROVAL", "PROCUREMENT_STATUS_UNSPECIFIED", "PROCURING", "PROVISIONING" ]
enum_FutureReservationStatusProcurementStatus := [ "APPROVED", "CANCELLED", "COMMITTED", "DECLINED", "DRAFTING", "FAILED", "FAILED_PARTIALLY_FULFILLED", "FULFILLED", "PENDING_AMENDMENT_APPROVAL", "PENDING_APPROVAL", "PROCUREMENT_STATUS_UNSPECIFIED", "PROCURING", "PROVISIONING" ]
enum_ShareSettingsShareType := [ "LOCAL", "ORGANIZATION", "SHARE_TYPE_UNSPECIFIED", "SPECIFIC_PROJECTS" ]

valid {
    input.Body.autoCreatedReservationsDeleteTime == STRING
    input.Body.autoCreatedReservationsDuration.nanos == INTEGER
    input.Body.autoCreatedReservationsDuration.seconds == STRING
    input.Body.autoDeleteAutoCreatedReservations == BOOLEAN
    input.Body.creationTimestamp == STRING
    input.Body.description == STRING
    input.Body.id == STRING
    input.Body.kind == STRING
    input.Body.name == STRING
    input.Body.namePrefix == STRING
    input.Body.planningStatus == enum_FutureReservationPlanningStatus[_]
    input.Body.selfLink == STRING
    input.Body.selfLinkWithId == STRING
    input.Body.shareSettings.projectMap.STRING.projectId == STRING
    input.Body.shareSettings.projects[_] == STRING
    input.Body.shareSettings.shareType == enum_ShareSettingsShareType[_]
    input.Body.specificSkuProperties.instanceProperties.guestAccelerators[_].acceleratorCount == INTEGER
    input.Body.specificSkuProperties.instanceProperties.guestAccelerators[_].acceleratorType == STRING
    input.Body.specificSkuProperties.instanceProperties.localSsds[_].diskSizeGb == STRING
    input.Body.specificSkuProperties.instanceProperties.localSsds[_].interface == enum_AllocationSpecificSKUAllocationAllocatedInstancePropertiesReservedDiskInterface[_]
    input.Body.specificSkuProperties.instanceProperties.locationHint == STRING
    input.Body.specificSkuProperties.instanceProperties.machineType == STRING
    input.Body.specificSkuProperties.instanceProperties.maintenanceFreezeDurationHours == INTEGER
    input.Body.specificSkuProperties.instanceProperties.maintenanceInterval == enum_AllocationSpecificSKUAllocationReservedInstancePropertiesMaintenanceInterval[_]
    input.Body.specificSkuProperties.instanceProperties.minCpuPlatform == STRING
    input.Body.specificSkuProperties.sourceInstanceTemplate == STRING
    input.Body.specificSkuProperties.totalCount == STRING
    input.Body.status.amendmentStatus == enum_FutureReservationStatusAmendmentStatus[_]
    input.Body.status.autoCreatedReservations[_] == STRING
    input.Body.status.fulfilledCount == STRING
    input.Body.status.lastKnownGoodState.description == STRING
    input.Body.status.lastKnownGoodState.futureReservationSpecs.shareSettings.projectMap.STRING.projectId == STRING
    input.Body.status.lastKnownGoodState.futureReservationSpecs.shareSettings.projects[_] == STRING
    input.Body.status.lastKnownGoodState.futureReservationSpecs.shareSettings.shareType == enum_ShareSettingsShareType[_]
    input.Body.status.lastKnownGoodState.futureReservationSpecs.specificSkuProperties.instanceProperties.guestAccelerators[_].acceleratorCount == INTEGER
    input.Body.status.lastKnownGoodState.futureReservationSpecs.specificSkuProperties.instanceProperties.guestAccelerators[_].acceleratorType == STRING
    input.Body.status.lastKnownGoodState.futureReservationSpecs.specificSkuProperties.instanceProperties.localSsds[_].diskSizeGb == STRING
    input.Body.status.lastKnownGoodState.futureReservationSpecs.specificSkuProperties.instanceProperties.localSsds[_].interface == enum_AllocationSpecificSKUAllocationAllocatedInstancePropertiesReservedDiskInterface[_]
    input.Body.status.lastKnownGoodState.futureReservationSpecs.specificSkuProperties.instanceProperties.locationHint == STRING
    input.Body.status.lastKnownGoodState.futureReservationSpecs.specificSkuProperties.instanceProperties.machineType == STRING
    input.Body.status.lastKnownGoodState.futureReservationSpecs.specificSkuProperties.instanceProperties.maintenanceFreezeDurationHours == INTEGER
    input.Body.status.lastKnownGoodState.futureReservationSpecs.specificSkuProperties.instanceProperties.maintenanceInterval == enum_AllocationSpecificSKUAllocationReservedInstancePropertiesMaintenanceInterval[_]
    input.Body.status.lastKnownGoodState.futureReservationSpecs.specificSkuProperties.instanceProperties.minCpuPlatform == STRING
    input.Body.status.lastKnownGoodState.futureReservationSpecs.specificSkuProperties.sourceInstanceTemplate == STRING
    input.Body.status.lastKnownGoodState.futureReservationSpecs.specificSkuProperties.totalCount == STRING
    input.Body.status.lastKnownGoodState.futureReservationSpecs.timeWindow.duration.nanos == INTEGER
    input.Body.status.lastKnownGoodState.futureReservationSpecs.timeWindow.duration.seconds == STRING
    input.Body.status.lastKnownGoodState.futureReservationSpecs.timeWindow.endTime == STRING
    input.Body.status.lastKnownGoodState.futureReservationSpecs.timeWindow.startTime == STRING
    input.Body.status.lastKnownGoodState.lockTime == STRING
    input.Body.status.lastKnownGoodState.namePrefix == STRING
    input.Body.status.lastKnownGoodState.procurementStatus == enum_FutureReservationStatusLastKnownGoodStateProcurementStatus[_]
    input.Body.status.lockTime == STRING
    input.Body.status.procurementStatus == enum_FutureReservationStatusProcurementStatus[_]
    input.Body.status.specificSkuProperties.sourceInstanceTemplateId == STRING
    input.Body.timeWindow.duration.nanos == INTEGER
    input.Body.timeWindow.duration.seconds == STRING
    input.Body.timeWindow.endTime == STRING
    input.Body.timeWindow.startTime == STRING
    input.Body.zone == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.zone == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.futureReservations.list

valid {
    input.ReqMap.ProjectID == STRING
    input.ReqMap.zone == STRING
    input.Qs.filter == STRING
    input.Qs.maxResults == INTEGER
    input.Qs.orderBy == STRING
    input.Qs.pageToken == STRING
    input.Qs.returnPartialSuccess == BOOLEAN
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.futureReservations.update

enum_AllocationSpecificSKUAllocationAllocatedInstancePropertiesReservedDiskInterface := [ "NVME", "SCSI" ]
enum_AllocationSpecificSKUAllocationReservedInstancePropertiesMaintenanceInterval := [ "AS_NEEDED", "PERIODIC", "RECURRENT" ]
enum_FutureReservationPlanningStatus := [ "DRAFT", "PLANNING_STATUS_UNSPECIFIED", "SUBMITTED" ]
enum_FutureReservationStatusAmendmentStatus := [ "AMENDMENT_APPROVED", "AMENDMENT_DECLINED", "AMENDMENT_IN_REVIEW", "AMENDMENT_STATUS_UNSPECIFIED" ]
enum_FutureReservationStatusLastKnownGoodStateProcurementStatus := [ "APPROVED", "CANCELLED", "COMMITTED", "DECLINED", "DRAFTING", "FAILED", "FAILED_PARTIALLY_FULFILLED", "FULFILLED", "PENDING_AMENDMENT_APPROVAL", "PENDING_APPROVAL", "PROCUREMENT_STATUS_UNSPECIFIED", "PROCURING", "PROVISIONING" ]
enum_FutureReservationStatusProcurementStatus := [ "APPROVED", "CANCELLED", "COMMITTED", "DECLINED", "DRAFTING", "FAILED", "FAILED_PARTIALLY_FULFILLED", "FULFILLED", "PENDING_AMENDMENT_APPROVAL", "PENDING_APPROVAL", "PROCUREMENT_STATUS_UNSPECIFIED", "PROCURING", "PROVISIONING" ]
enum_ShareSettingsShareType := [ "LOCAL", "ORGANIZATION", "SHARE_TYPE_UNSPECIFIED", "SPECIFIC_PROJECTS" ]

valid {
    input.Body.autoCreatedReservationsDeleteTime == STRING
    input.Body.autoCreatedReservationsDuration.nanos == INTEGER
    input.Body.autoCreatedReservationsDuration.seconds == STRING
    input.Body.autoDeleteAutoCreatedReservations == BOOLEAN
    input.Body.creationTimestamp == STRING
    input.Body.description == STRING
    input.Body.id == STRING
    input.Body.kind == STRING
    input.Body.name == STRING
    input.Body.namePrefix == STRING
    input.Body.planningStatus == enum_FutureReservationPlanningStatus[_]
    input.Body.selfLink == STRING
    input.Body.selfLinkWithId == STRING
    input.Body.shareSettings.projectMap.STRING.projectId == STRING
    input.Body.shareSettings.projects[_] == STRING
    input.Body.shareSettings.shareType == enum_ShareSettingsShareType[_]
    input.Body.specificSkuProperties.instanceProperties.guestAccelerators[_].acceleratorCount == INTEGER
    input.Body.specificSkuProperties.instanceProperties.guestAccelerators[_].acceleratorType == STRING
    input.Body.specificSkuProperties.instanceProperties.localSsds[_].diskSizeGb == STRING
    input.Body.specificSkuProperties.instanceProperties.localSsds[_].interface == enum_AllocationSpecificSKUAllocationAllocatedInstancePropertiesReservedDiskInterface[_]
    input.Body.specificSkuProperties.instanceProperties.locationHint == STRING
    input.Body.specificSkuProperties.instanceProperties.machineType == STRING
    input.Body.specificSkuProperties.instanceProperties.maintenanceFreezeDurationHours == INTEGER
    input.Body.specificSkuProperties.instanceProperties.maintenanceInterval == enum_AllocationSpecificSKUAllocationReservedInstancePropertiesMaintenanceInterval[_]
    input.Body.specificSkuProperties.instanceProperties.minCpuPlatform == STRING
    input.Body.specificSkuProperties.sourceInstanceTemplate == STRING
    input.Body.specificSkuProperties.totalCount == STRING
    input.Body.status.amendmentStatus == enum_FutureReservationStatusAmendmentStatus[_]
    input.Body.status.autoCreatedReservations[_] == STRING
    input.Body.status.fulfilledCount == STRING
    input.Body.status.lastKnownGoodState.description == STRING
    input.Body.status.lastKnownGoodState.futureReservationSpecs.shareSettings.projectMap.STRING.projectId == STRING
    input.Body.status.lastKnownGoodState.futureReservationSpecs.shareSettings.projects[_] == STRING
    input.Body.status.lastKnownGoodState.futureReservationSpecs.shareSettings.shareType == enum_ShareSettingsShareType[_]
    input.Body.status.lastKnownGoodState.futureReservationSpecs.specificSkuProperties.instanceProperties.guestAccelerators[_].acceleratorCount == INTEGER
    input.Body.status.lastKnownGoodState.futureReservationSpecs.specificSkuProperties.instanceProperties.guestAccelerators[_].acceleratorType == STRING
    input.Body.status.lastKnownGoodState.futureReservationSpecs.specificSkuProperties.instanceProperties.localSsds[_].diskSizeGb == STRING
    input.Body.status.lastKnownGoodState.futureReservationSpecs.specificSkuProperties.instanceProperties.localSsds[_].interface == enum_AllocationSpecificSKUAllocationAllocatedInstancePropertiesReservedDiskInterface[_]
    input.Body.status.lastKnownGoodState.futureReservationSpecs.specificSkuProperties.instanceProperties.locationHint == STRING
    input.Body.status.lastKnownGoodState.futureReservationSpecs.specificSkuProperties.instanceProperties.machineType == STRING
    input.Body.status.lastKnownGoodState.futureReservationSpecs.specificSkuProperties.instanceProperties.maintenanceFreezeDurationHours == INTEGER
    input.Body.status.lastKnownGoodState.futureReservationSpecs.specificSkuProperties.instanceProperties.maintenanceInterval == enum_AllocationSpecificSKUAllocationReservedInstancePropertiesMaintenanceInterval[_]
    input.Body.status.lastKnownGoodState.futureReservationSpecs.specificSkuProperties.instanceProperties.minCpuPlatform == STRING
    input.Body.status.lastKnownGoodState.futureReservationSpecs.specificSkuProperties.sourceInstanceTemplate == STRING
    input.Body.status.lastKnownGoodState.futureReservationSpecs.specificSkuProperties.totalCount == STRING
    input.Body.status.lastKnownGoodState.futureReservationSpecs.timeWindow.duration.nanos == INTEGER
    input.Body.status.lastKnownGoodState.futureReservationSpecs.timeWindow.duration.seconds == STRING
    input.Body.status.lastKnownGoodState.futureReservationSpecs.timeWindow.endTime == STRING
    input.Body.status.lastKnownGoodState.futureReservationSpecs.timeWindow.startTime == STRING
    input.Body.status.lastKnownGoodState.lockTime == STRING
    input.Body.status.lastKnownGoodState.namePrefix == STRING
    input.Body.status.lastKnownGoodState.procurementStatus == enum_FutureReservationStatusLastKnownGoodStateProcurementStatus[_]
    input.Body.status.lockTime == STRING
    input.Body.status.procurementStatus == enum_FutureReservationStatusProcurementStatus[_]
    input.Body.status.specificSkuProperties.sourceInstanceTemplateId == STRING
    input.Body.timeWindow.duration.nanos == INTEGER
    input.Body.timeWindow.duration.seconds == STRING
    input.Body.timeWindow.endTime == STRING
    input.Body.timeWindow.startTime == STRING
    input.Body.zone == STRING
    input.ReqMap.futureReservation == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.zone == STRING
    input.Qs.requestId == STRING
    input.Qs.updateMask == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.globalAddresses.delete

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

compute.globalAddresses.get

valid {
    input.ReqMap.address == STRING
    input.ReqMap.ProjectID == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.globalAddresses.getOwnerInstance

valid {
    input.ReqMap.ProjectID == STRING
    input.Qs.ipAddress == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.globalAddresses.insert

enum_AddressAddressType := [ "EXTERNAL", "INTERNAL", "UNSPECIFIED_TYPE" ]
enum_AddressIpVersion := [ "IPV4", "IPV6", "UNSPECIFIED_VERSION" ]
enum_AddressIpv6EndpointType := [ "NETLB", "VM" ]
enum_AddressNetworkTier := [ "FIXED_STANDARD", "PREMIUM", "STANDARD", "STANDARD_OVERRIDES_FIXED_STANDARD" ]
enum_AddressPurpose := [ "DNS_RESOLVER", "GCE_ENDPOINT", "IPSEC_INTERCONNECT", "NAT_AUTO", "PRIVATE_SERVICE_CONNECT", "SERVERLESS", "SHARED_LOADBALANCER_VIP", "VPC_PEERING" ]
enum_AddressStatus := [ "IN_USE", "RESERVED", "RESERVING" ]

valid {
    input.Body.address == STRING
    input.Body.addressType == enum_AddressAddressType[_]
    input.Body.creationTimestamp == STRING
    input.Body.description == STRING
    input.Body.id == STRING
    input.Body.ipVersion == enum_AddressIpVersion[_]
    input.Body.ipv6EndpointType == enum_AddressIpv6EndpointType[_]
    input.Body.kind == STRING
    input.Body.labelFingerprint == STRING
    input.Body.labels.STRING == STRING
    input.Body.name == STRING
    input.Body.network == STRING
    input.Body.networkTier == enum_AddressNetworkTier[_]
    input.Body.prefixLength == INTEGER
    input.Body.purpose == enum_AddressPurpose[_]
    input.Body.region == STRING
    input.Body.selfLink == STRING
    input.Body.status == enum_AddressStatus[_]
    input.Body.subnetwork == STRING
    input.Body.users[_] == STRING
    input.ReqMap.ProjectID == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.globalAddresses.list

valid {
    input.ReqMap.ProjectID == STRING
    input.Qs.filter == STRING
    input.Qs.maxResults == INTEGER
    input.Qs.orderBy == STRING
    input.Qs.pageToken == STRING
    input.Qs.returnPartialSuccess == BOOLEAN
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.globalAddresses.move

valid {
    input.Body.description == STRING
    input.Body.destinationAddress == STRING
    input.ReqMap.address == STRING
    input.ReqMap.ProjectID == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.globalAddresses.setLabels

valid {
    input.Body.labelFingerprint == STRING
    input.Body.labels.STRING == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.resource == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.globalAddresses.testIamPermissions

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

compute.globalForwardingRules.delete

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

compute.globalForwardingRules.get

valid {
    input.ReqMap.forwardingRule == STRING
    input.ReqMap.ProjectID == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.globalForwardingRules.insert

enum_ForwardingRuleIPProtocol := [ "AH", "ESP", "ICMP", "L3_DEFAULT", "SCTP", "TCP", "UDP" ]
enum_ForwardingRuleIpVersion := [ "IPV4", "IPV6", "UNSPECIFIED_VERSION" ]
enum_ForwardingRuleLoadBalancingScheme := [ "EXTERNAL", "EXTERNAL_MANAGED", "INTERNAL", "INTERNAL_MANAGED", "INTERNAL_SELF_MANAGED", "INVALID" ]
enum_ForwardingRuleNetworkTier := [ "FIXED_STANDARD", "PREMIUM", "STANDARD", "STANDARD_OVERRIDES_FIXED_STANDARD" ]
enum_ForwardingRulePscConnectionStatus := [ "ACCEPTED", "CLOSED", "NEEDS_ATTENTION", "PENDING", "REJECTED", "STATUS_UNSPECIFIED" ]
enum_MetadataFilterFilterMatchCriteria := [ "MATCH_ALL", "MATCH_ANY", "NOT_SET" ]

valid {
    input.Body.IPAddress == STRING
    input.Body.IPProtocol == enum_ForwardingRuleIPProtocol[_]
    input.Body.allPorts == BOOLEAN
    input.Body.allowGlobalAccess == BOOLEAN
    input.Body.allowPscGlobalAccess == BOOLEAN
    input.Body.backendService == STRING
    input.Body.baseForwardingRule == STRING
    input.Body.creationTimestamp == STRING
    input.Body.description == STRING
    input.Body.fingerprint == STRING
    input.Body.id == STRING
    input.Body.ipVersion == enum_ForwardingRuleIpVersion[_]
    input.Body.isMirroringCollector == BOOLEAN
    input.Body.kind == STRING
    input.Body.labelFingerprint == STRING
    input.Body.labels.STRING == STRING
    input.Body.loadBalancingScheme == enum_ForwardingRuleLoadBalancingScheme[_]
    input.Body.metadataFilters[_].filterLabels[_].name == STRING
    input.Body.metadataFilters[_].filterLabels[_].value == STRING
    input.Body.metadataFilters[_].filterMatchCriteria == enum_MetadataFilterFilterMatchCriteria[_]
    input.Body.name == STRING
    input.Body.network == STRING
    input.Body.networkTier == enum_ForwardingRuleNetworkTier[_]
    input.Body.noAutomateDnsZone == BOOLEAN
    input.Body.portRange == STRING
    input.Body.ports[_] == STRING
    input.Body.pscConnectionId == STRING
    input.Body.pscConnectionStatus == enum_ForwardingRulePscConnectionStatus[_]
    input.Body.region == STRING
    input.Body.selfLink == STRING
    input.Body.serviceDirectoryRegistrations[_].namespace == STRING
    input.Body.serviceDirectoryRegistrations[_].service == STRING
    input.Body.serviceDirectoryRegistrations[_].serviceDirectoryRegion == STRING
    input.Body.serviceLabel == STRING
    input.Body.serviceName == STRING
    input.Body.sourceIpRanges[_] == STRING
    input.Body.subnetwork == STRING
    input.Body.target == STRING
    input.ReqMap.ProjectID == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.globalForwardingRules.list

valid {
    input.ReqMap.ProjectID == STRING
    input.Qs.filter == STRING
    input.Qs.maxResults == INTEGER
    input.Qs.orderBy == STRING
    input.Qs.pageToken == STRING
    input.Qs.returnPartialSuccess == BOOLEAN
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.globalForwardingRules.patch

enum_ForwardingRuleIPProtocol := [ "AH", "ESP", "ICMP", "L3_DEFAULT", "SCTP", "TCP", "UDP" ]
enum_ForwardingRuleIpVersion := [ "IPV4", "IPV6", "UNSPECIFIED_VERSION" ]
enum_ForwardingRuleLoadBalancingScheme := [ "EXTERNAL", "EXTERNAL_MANAGED", "INTERNAL", "INTERNAL_MANAGED", "INTERNAL_SELF_MANAGED", "INVALID" ]
enum_ForwardingRuleNetworkTier := [ "FIXED_STANDARD", "PREMIUM", "STANDARD", "STANDARD_OVERRIDES_FIXED_STANDARD" ]
enum_ForwardingRulePscConnectionStatus := [ "ACCEPTED", "CLOSED", "NEEDS_ATTENTION", "PENDING", "REJECTED", "STATUS_UNSPECIFIED" ]
enum_MetadataFilterFilterMatchCriteria := [ "MATCH_ALL", "MATCH_ANY", "NOT_SET" ]

valid {
    input.Body.IPAddress == STRING
    input.Body.IPProtocol == enum_ForwardingRuleIPProtocol[_]
    input.Body.allPorts == BOOLEAN
    input.Body.allowGlobalAccess == BOOLEAN
    input.Body.allowPscGlobalAccess == BOOLEAN
    input.Body.backendService == STRING
    input.Body.baseForwardingRule == STRING
    input.Body.creationTimestamp == STRING
    input.Body.description == STRING
    input.Body.fingerprint == STRING
    input.Body.id == STRING
    input.Body.ipVersion == enum_ForwardingRuleIpVersion[_]
    input.Body.isMirroringCollector == BOOLEAN
    input.Body.kind == STRING
    input.Body.labelFingerprint == STRING
    input.Body.labels.STRING == STRING
    input.Body.loadBalancingScheme == enum_ForwardingRuleLoadBalancingScheme[_]
    input.Body.metadataFilters[_].filterLabels[_].name == STRING
    input.Body.metadataFilters[_].filterLabels[_].value == STRING
    input.Body.metadataFilters[_].filterMatchCriteria == enum_MetadataFilterFilterMatchCriteria[_]
    input.Body.name == STRING
    input.Body.network == STRING
    input.Body.networkTier == enum_ForwardingRuleNetworkTier[_]
    input.Body.noAutomateDnsZone == BOOLEAN
    input.Body.portRange == STRING
    input.Body.ports[_] == STRING
    input.Body.pscConnectionId == STRING
    input.Body.pscConnectionStatus == enum_ForwardingRulePscConnectionStatus[_]
    input.Body.region == STRING
    input.Body.selfLink == STRING
    input.Body.serviceDirectoryRegistrations[_].namespace == STRING
    input.Body.serviceDirectoryRegistrations[_].service == STRING
    input.Body.serviceDirectoryRegistrations[_].serviceDirectoryRegion == STRING
    input.Body.serviceLabel == STRING
    input.Body.serviceName == STRING
    input.Body.sourceIpRanges[_] == STRING
    input.Body.subnetwork == STRING
    input.Body.target == STRING
    input.ReqMap.forwardingRule == STRING
    input.ReqMap.ProjectID == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.globalForwardingRules.setLabels

valid {
    input.Body.labelFingerprint == STRING
    input.Body.labels.STRING == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.resource == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.globalForwardingRules.setTarget

valid {
    input.Body.target == STRING
    input.ReqMap.forwardingRule == STRING
    input.ReqMap.ProjectID == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.globalForwardingRules.testIamPermissions

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

compute.globalNetworkEndpointGroups.attachNetworkEndpoints

valid {
    input.Body.networkEndpoints[_].annotations.STRING == STRING
    input.Body.networkEndpoints[_].fqdn == STRING
    input.Body.networkEndpoints[_].instance == STRING
    input.Body.networkEndpoints[_].ipAddress == STRING
    input.Body.networkEndpoints[_].port == INTEGER
    input.ReqMap.networkEndpointGroup == STRING
    input.ReqMap.ProjectID == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.globalNetworkEndpointGroups.delete

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

compute.globalNetworkEndpointGroups.detachNetworkEndpoints

valid {
    input.Body.networkEndpoints[_].annotations.STRING == STRING
    input.Body.networkEndpoints[_].fqdn == STRING
    input.Body.networkEndpoints[_].instance == STRING
    input.Body.networkEndpoints[_].ipAddress == STRING
    input.Body.networkEndpoints[_].port == INTEGER
    input.ReqMap.networkEndpointGroup == STRING
    input.ReqMap.ProjectID == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.globalNetworkEndpointGroups.get

valid {
    input.ReqMap.networkEndpointGroup == STRING
    input.ReqMap.ProjectID == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.globalNetworkEndpointGroups.insert

enum_NetworkEndpointGroupNetworkEndpointType := [ "GCE_VM_IP", "GCE_VM_IP_PORT", "INTERNET_FQDN_PORT", "INTERNET_IP_PORT", "NON_GCP_PRIVATE_IP_PORT", "PRIVATE_SERVICE_CONNECT", "SERVERLESS" ]
enum_NetworkEndpointGroupPscDataPscConnectionStatus := [ "ACCEPTED", "CLOSED", "NEEDS_ATTENTION", "PENDING", "REJECTED", "STATUS_UNSPECIFIED" ]

valid {
    input.Body.annotations.STRING == STRING
    input.Body.appEngine.service == STRING
    input.Body.appEngine.urlMask == STRING
    input.Body.appEngine.version == STRING
    input.Body.cloudFunction.function == STRING
    input.Body.cloudFunction.urlMask == STRING
    input.Body.cloudRun.service == STRING
    input.Body.cloudRun.tag == STRING
    input.Body.cloudRun.urlMask == STRING
    input.Body.creationTimestamp == STRING
    input.Body.defaultPort == INTEGER
    input.Body.description == STRING
    input.Body.id == STRING
    input.Body.kind == STRING
    input.Body.name == STRING
    input.Body.network == STRING
    input.Body.networkEndpointType == enum_NetworkEndpointGroupNetworkEndpointType[_]
    input.Body.pscData.consumerPscAddress == STRING
    input.Body.pscData.pscConnectionId == STRING
    input.Body.pscData.pscConnectionStatus == enum_NetworkEndpointGroupPscDataPscConnectionStatus[_]
    input.Body.pscTargetService == STRING
    input.Body.region == STRING
    input.Body.selfLink == STRING
    input.Body.size == INTEGER
    input.Body.subnetwork == STRING
    input.Body.zone == STRING
    input.ReqMap.ProjectID == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.globalNetworkEndpointGroups.list

valid {
    input.ReqMap.ProjectID == STRING
    input.Qs.filter == STRING
    input.Qs.maxResults == INTEGER
    input.Qs.orderBy == STRING
    input.Qs.pageToken == STRING
    input.Qs.returnPartialSuccess == BOOLEAN
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.globalNetworkEndpointGroups.listNetworkEndpoints

valid {
    input.ReqMap.networkEndpointGroup == STRING
    input.ReqMap.ProjectID == STRING
    input.Qs.filter == STRING
    input.Qs.maxResults == INTEGER
    input.Qs.orderBy == STRING
    input.Qs.pageToken == STRING
    input.Qs.returnPartialSuccess == BOOLEAN
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.globalOperations.aggregatedList

valid {
    input.ReqMap.ProjectID == STRING
    input.Qs.filter == STRING
    input.Qs.includeAllScopes == BOOLEAN
    input.Qs.maxResults == INTEGER
    input.Qs.orderBy == STRING
    input.Qs.pageToken == STRING
    input.Qs.returnPartialSuccess == BOOLEAN
    input.Qs.serviceProjectNumber == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.globalOperations.delete

valid {
    input.ReqMap.operation == STRING
    input.ReqMap.ProjectID == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.globalOperations.get

valid {
    input.ReqMap.operation == STRING
    input.ReqMap.ProjectID == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.globalOperations.list

valid {
    input.ReqMap.ProjectID == STRING
    input.Qs.filter == STRING
    input.Qs.maxResults == INTEGER
    input.Qs.orderBy == STRING
    input.Qs.pageToken == STRING
    input.Qs.returnPartialSuccess == BOOLEAN
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.globalOperations.wait

valid {
    input.ReqMap.operation == STRING
    input.ReqMap.ProjectID == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.globalOrganizationOperations.delete

valid {
    input.ReqMap.operation == STRING
    input.Qs.parentId == STRING
    input.ProviderMetadata.Region == STRING
}

compute.globalOrganizationOperations.get

valid {
    input.ReqMap.operation == STRING
    input.Qs.parentId == STRING
    input.ProviderMetadata.Region == STRING
}

compute.globalOrganizationOperations.list

valid {
    input.Qs.filter == STRING
    input.Qs.maxResults == INTEGER
    input.Qs.orderBy == STRING
    input.Qs.pageToken == STRING
    input.Qs.parentId == STRING
    input.Qs.returnPartialSuccess == BOOLEAN
    input.ProviderMetadata.Region == STRING
}

compute.globalPublicDelegatedPrefixes.delete

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

compute.globalPublicDelegatedPrefixes.get

valid {
    input.ReqMap.ProjectID == STRING
    input.ReqMap.publicDelegatedPrefix == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.globalPublicDelegatedPrefixes.insert

enum_PublicDelegatedPrefixByoipApiVersion := [ "V1", "V2" ]
enum_PublicDelegatedPrefixPublicDelegatedSubPrefixStatus := [ "ACTIVE", "INACTIVE" ]
enum_PublicDelegatedPrefixStatus := [ "ANNOUNCED", "ANNOUNCED_TO_GOOGLE", "ANNOUNCED_TO_INTERNET", "DELETING", "INITIALIZING", "READY_TO_ANNOUNCE" ]

valid {
    input.Body.byoipApiVersion == enum_PublicDelegatedPrefixByoipApiVersion[_]
    input.Body.creationTimestamp == STRING
    input.Body.description == STRING
    input.Body.fingerprint == STRING
    input.Body.id == STRING
    input.Body.ipCidrRange == STRING
    input.Body.isLiveMigration == BOOLEAN
    input.Body.kind == STRING
    input.Body.name == STRING
    input.Body.parentPrefix == STRING
    input.Body.publicDelegatedSubPrefixs[_].delegateeProject == STRING
    input.Body.publicDelegatedSubPrefixs[_].description == STRING
    input.Body.publicDelegatedSubPrefixs[_].ipCidrRange == STRING
    input.Body.publicDelegatedSubPrefixs[_].isAddress == BOOLEAN
    input.Body.publicDelegatedSubPrefixs[_].name == STRING
    input.Body.publicDelegatedSubPrefixs[_].region == STRING
    input.Body.publicDelegatedSubPrefixs[_].status == enum_PublicDelegatedPrefixPublicDelegatedSubPrefixStatus[_]
    input.Body.region == STRING
    input.Body.selfLink == STRING
    input.Body.status == enum_PublicDelegatedPrefixStatus[_]
    input.ReqMap.ProjectID == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.globalPublicDelegatedPrefixes.list

valid {
    input.ReqMap.ProjectID == STRING
    input.Qs.filter == STRING
    input.Qs.maxResults == INTEGER
    input.Qs.orderBy == STRING
    input.Qs.pageToken == STRING
    input.Qs.returnPartialSuccess == BOOLEAN
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.globalPublicDelegatedPrefixes.patch

enum_PublicDelegatedPrefixByoipApiVersion := [ "V1", "V2" ]
enum_PublicDelegatedPrefixPublicDelegatedSubPrefixStatus := [ "ACTIVE", "INACTIVE" ]
enum_PublicDelegatedPrefixStatus := [ "ANNOUNCED", "ANNOUNCED_TO_GOOGLE", "ANNOUNCED_TO_INTERNET", "DELETING", "INITIALIZING", "READY_TO_ANNOUNCE" ]

valid {
    input.Body.byoipApiVersion == enum_PublicDelegatedPrefixByoipApiVersion[_]
    input.Body.creationTimestamp == STRING
    input.Body.description == STRING
    input.Body.fingerprint == STRING
    input.Body.id == STRING
    input.Body.ipCidrRange == STRING
    input.Body.isLiveMigration == BOOLEAN
    input.Body.kind == STRING
    input.Body.name == STRING
    input.Body.parentPrefix == STRING
    input.Body.publicDelegatedSubPrefixs[_].delegateeProject == STRING
    input.Body.publicDelegatedSubPrefixs[_].description == STRING
    input.Body.publicDelegatedSubPrefixs[_].ipCidrRange == STRING
    input.Body.publicDelegatedSubPrefixs[_].isAddress == BOOLEAN
    input.Body.publicDelegatedSubPrefixs[_].name == STRING
    input.Body.publicDelegatedSubPrefixs[_].region == STRING
    input.Body.publicDelegatedSubPrefixs[_].status == enum_PublicDelegatedPrefixPublicDelegatedSubPrefixStatus[_]
    input.Body.region == STRING
    input.Body.selfLink == STRING
    input.Body.status == enum_PublicDelegatedPrefixStatus[_]
    input.ReqMap.ProjectID == STRING
    input.ReqMap.publicDelegatedPrefix == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.healthChecks.aggregatedList

valid {
    input.ReqMap.ProjectID == STRING
    input.Qs.filter == STRING
    input.Qs.includeAllScopes == BOOLEAN
    input.Qs.maxResults == INTEGER
    input.Qs.orderBy == STRING
    input.Qs.pageToken == STRING
    input.Qs.returnPartialSuccess == BOOLEAN
    input.Qs.serviceProjectNumber == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.healthChecks.delete

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

compute.healthChecks.get

valid {
    input.ReqMap.healthCheck == STRING
    input.ReqMap.ProjectID == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.healthChecks.insert

enum_GRPCHealthCheckPortSpecification := [ "USE_FIXED_PORT", "USE_NAMED_PORT", "USE_SERVING_PORT" ]
enum_HTTP2HealthCheckPortSpecification := [ "USE_FIXED_PORT", "USE_NAMED_PORT", "USE_SERVING_PORT" ]
enum_HTTP2HealthCheckProxyHeader := [ "NONE", "PROXY_V1" ]
enum_HTTPHealthCheckPortSpecification := [ "USE_FIXED_PORT", "USE_NAMED_PORT", "USE_SERVING_PORT" ]
enum_HTTPHealthCheckProxyHeader := [ "NONE", "PROXY_V1" ]
enum_HTTPSHealthCheckPortSpecification := [ "USE_FIXED_PORT", "USE_NAMED_PORT", "USE_SERVING_PORT" ]
enum_HTTPSHealthCheckProxyHeader := [ "NONE", "PROXY_V1" ]
enum_HealthCheckType := [ "GRPC", "HTTP", "HTTP2", "HTTPS", "INVALID", "SSL", "TCP" ]
enum_SSLHealthCheckPortSpecification := [ "USE_FIXED_PORT", "USE_NAMED_PORT", "USE_SERVING_PORT" ]
enum_SSLHealthCheckProxyHeader := [ "NONE", "PROXY_V1" ]
enum_TCPHealthCheckPortSpecification := [ "USE_FIXED_PORT", "USE_NAMED_PORT", "USE_SERVING_PORT" ]
enum_TCPHealthCheckProxyHeader := [ "NONE", "PROXY_V1" ]

valid {
    input.Body.checkIntervalSec == INTEGER
    input.Body.creationTimestamp == STRING
    input.Body.description == STRING
    input.Body.grpcHealthCheck.grpcServiceName == STRING
    input.Body.grpcHealthCheck.port == INTEGER
    input.Body.grpcHealthCheck.portName == STRING
    input.Body.grpcHealthCheck.portSpecification == enum_GRPCHealthCheckPortSpecification[_]
    input.Body.healthyThreshold == INTEGER
    input.Body.http2HealthCheck.host == STRING
    input.Body.http2HealthCheck.port == INTEGER
    input.Body.http2HealthCheck.portName == STRING
    input.Body.http2HealthCheck.portSpecification == enum_HTTP2HealthCheckPortSpecification[_]
    input.Body.http2HealthCheck.proxyHeader == enum_HTTP2HealthCheckProxyHeader[_]
    input.Body.http2HealthCheck.requestPath == STRING
    input.Body.http2HealthCheck.response == STRING
    input.Body.httpHealthCheck.host == STRING
    input.Body.httpHealthCheck.port == INTEGER
    input.Body.httpHealthCheck.portName == STRING
    input.Body.httpHealthCheck.portSpecification == enum_HTTPHealthCheckPortSpecification[_]
    input.Body.httpHealthCheck.proxyHeader == enum_HTTPHealthCheckProxyHeader[_]
    input.Body.httpHealthCheck.requestPath == STRING
    input.Body.httpHealthCheck.response == STRING
    input.Body.httpsHealthCheck.host == STRING
    input.Body.httpsHealthCheck.port == INTEGER
    input.Body.httpsHealthCheck.portName == STRING
    input.Body.httpsHealthCheck.portSpecification == enum_HTTPSHealthCheckPortSpecification[_]
    input.Body.httpsHealthCheck.proxyHeader == enum_HTTPSHealthCheckProxyHeader[_]
    input.Body.httpsHealthCheck.requestPath == STRING
    input.Body.httpsHealthCheck.response == STRING
    input.Body.id == STRING
    input.Body.kind == STRING
    input.Body.logConfig.enable == BOOLEAN
    input.Body.name == STRING
    input.Body.region == STRING
    input.Body.selfLink == STRING
    input.Body.sslHealthCheck.port == INTEGER
    input.Body.sslHealthCheck.portName == STRING
    input.Body.sslHealthCheck.portSpecification == enum_SSLHealthCheckPortSpecification[_]
    input.Body.sslHealthCheck.proxyHeader == enum_SSLHealthCheckProxyHeader[_]
    input.Body.sslHealthCheck.request == STRING
    input.Body.sslHealthCheck.response == STRING
    input.Body.tcpHealthCheck.port == INTEGER
    input.Body.tcpHealthCheck.portName == STRING
    input.Body.tcpHealthCheck.portSpecification == enum_TCPHealthCheckPortSpecification[_]
    input.Body.tcpHealthCheck.proxyHeader == enum_TCPHealthCheckProxyHeader[_]
    input.Body.tcpHealthCheck.request == STRING
    input.Body.tcpHealthCheck.response == STRING
    input.Body.timeoutSec == INTEGER
    input.Body.type == enum_HealthCheckType[_]
    input.Body.unhealthyThreshold == INTEGER
    input.ReqMap.ProjectID == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.healthChecks.list

valid {
    input.ReqMap.ProjectID == STRING
    input.Qs.filter == STRING
    input.Qs.maxResults == INTEGER
    input.Qs.orderBy == STRING
    input.Qs.pageToken == STRING
    input.Qs.returnPartialSuccess == BOOLEAN
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.healthChecks.patch

enum_GRPCHealthCheckPortSpecification := [ "USE_FIXED_PORT", "USE_NAMED_PORT", "USE_SERVING_PORT" ]
enum_HTTP2HealthCheckPortSpecification := [ "USE_FIXED_PORT", "USE_NAMED_PORT", "USE_SERVING_PORT" ]
enum_HTTP2HealthCheckProxyHeader := [ "NONE", "PROXY_V1" ]
enum_HTTPHealthCheckPortSpecification := [ "USE_FIXED_PORT", "USE_NAMED_PORT", "USE_SERVING_PORT" ]
enum_HTTPHealthCheckProxyHeader := [ "NONE", "PROXY_V1" ]
enum_HTTPSHealthCheckPortSpecification := [ "USE_FIXED_PORT", "USE_NAMED_PORT", "USE_SERVING_PORT" ]
enum_HTTPSHealthCheckProxyHeader := [ "NONE", "PROXY_V1" ]
enum_HealthCheckType := [ "GRPC", "HTTP", "HTTP2", "HTTPS", "INVALID", "SSL", "TCP" ]
enum_SSLHealthCheckPortSpecification := [ "USE_FIXED_PORT", "USE_NAMED_PORT", "USE_SERVING_PORT" ]
enum_SSLHealthCheckProxyHeader := [ "NONE", "PROXY_V1" ]
enum_TCPHealthCheckPortSpecification := [ "USE_FIXED_PORT", "USE_NAMED_PORT", "USE_SERVING_PORT" ]
enum_TCPHealthCheckProxyHeader := [ "NONE", "PROXY_V1" ]

valid {
    input.Body.checkIntervalSec == INTEGER
    input.Body.creationTimestamp == STRING
    input.Body.description == STRING
    input.Body.grpcHealthCheck.grpcServiceName == STRING
    input.Body.grpcHealthCheck.port == INTEGER
    input.Body.grpcHealthCheck.portName == STRING
    input.Body.grpcHealthCheck.portSpecification == enum_GRPCHealthCheckPortSpecification[_]
    input.Body.healthyThreshold == INTEGER
    input.Body.http2HealthCheck.host == STRING
    input.Body.http2HealthCheck.port == INTEGER
    input.Body.http2HealthCheck.portName == STRING
    input.Body.http2HealthCheck.portSpecification == enum_HTTP2HealthCheckPortSpecification[_]
    input.Body.http2HealthCheck.proxyHeader == enum_HTTP2HealthCheckProxyHeader[_]
    input.Body.http2HealthCheck.requestPath == STRING
    input.Body.http2HealthCheck.response == STRING
    input.Body.httpHealthCheck.host == STRING
    input.Body.httpHealthCheck.port == INTEGER
    input.Body.httpHealthCheck.portName == STRING
    input.Body.httpHealthCheck.portSpecification == enum_HTTPHealthCheckPortSpecification[_]
    input.Body.httpHealthCheck.proxyHeader == enum_HTTPHealthCheckProxyHeader[_]
    input.Body.httpHealthCheck.requestPath == STRING
    input.Body.httpHealthCheck.response == STRING
    input.Body.httpsHealthCheck.host == STRING
    input.Body.httpsHealthCheck.port == INTEGER
    input.Body.httpsHealthCheck.portName == STRING
    input.Body.httpsHealthCheck.portSpecification == enum_HTTPSHealthCheckPortSpecification[_]
    input.Body.httpsHealthCheck.proxyHeader == enum_HTTPSHealthCheckProxyHeader[_]
    input.Body.httpsHealthCheck.requestPath == STRING
    input.Body.httpsHealthCheck.response == STRING
    input.Body.id == STRING
    input.Body.kind == STRING
    input.Body.logConfig.enable == BOOLEAN
    input.Body.name == STRING
    input.Body.region == STRING
    input.Body.selfLink == STRING
    input.Body.sslHealthCheck.port == INTEGER
    input.Body.sslHealthCheck.portName == STRING
    input.Body.sslHealthCheck.portSpecification == enum_SSLHealthCheckPortSpecification[_]
    input.Body.sslHealthCheck.proxyHeader == enum_SSLHealthCheckProxyHeader[_]
    input.Body.sslHealthCheck.request == STRING
    input.Body.sslHealthCheck.response == STRING
    input.Body.tcpHealthCheck.port == INTEGER
    input.Body.tcpHealthCheck.portName == STRING
    input.Body.tcpHealthCheck.portSpecification == enum_TCPHealthCheckPortSpecification[_]
    input.Body.tcpHealthCheck.proxyHeader == enum_TCPHealthCheckProxyHeader[_]
    input.Body.tcpHealthCheck.request == STRING
    input.Body.tcpHealthCheck.response == STRING
    input.Body.timeoutSec == INTEGER
    input.Body.type == enum_HealthCheckType[_]
    input.Body.unhealthyThreshold == INTEGER
    input.ReqMap.healthCheck == STRING
    input.ReqMap.ProjectID == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.healthChecks.testIamPermissions

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

compute.healthChecks.update

enum_GRPCHealthCheckPortSpecification := [ "USE_FIXED_PORT", "USE_NAMED_PORT", "USE_SERVING_PORT" ]
enum_HTTP2HealthCheckPortSpecification := [ "USE_FIXED_PORT", "USE_NAMED_PORT", "USE_SERVING_PORT" ]
enum_HTTP2HealthCheckProxyHeader := [ "NONE", "PROXY_V1" ]
enum_HTTPHealthCheckPortSpecification := [ "USE_FIXED_PORT", "USE_NAMED_PORT", "USE_SERVING_PORT" ]
enum_HTTPHealthCheckProxyHeader := [ "NONE", "PROXY_V1" ]
enum_HTTPSHealthCheckPortSpecification := [ "USE_FIXED_PORT", "USE_NAMED_PORT", "USE_SERVING_PORT" ]
enum_HTTPSHealthCheckProxyHeader := [ "NONE", "PROXY_V1" ]
enum_HealthCheckType := [ "GRPC", "HTTP", "HTTP2", "HTTPS", "INVALID", "SSL", "TCP" ]
enum_SSLHealthCheckPortSpecification := [ "USE_FIXED_PORT", "USE_NAMED_PORT", "USE_SERVING_PORT" ]
enum_SSLHealthCheckProxyHeader := [ "NONE", "PROXY_V1" ]
enum_TCPHealthCheckPortSpecification := [ "USE_FIXED_PORT", "USE_NAMED_PORT", "USE_SERVING_PORT" ]
enum_TCPHealthCheckProxyHeader := [ "NONE", "PROXY_V1" ]

valid {
    input.Body.checkIntervalSec == INTEGER
    input.Body.creationTimestamp == STRING
    input.Body.description == STRING
    input.Body.grpcHealthCheck.grpcServiceName == STRING
    input.Body.grpcHealthCheck.port == INTEGER
    input.Body.grpcHealthCheck.portName == STRING
    input.Body.grpcHealthCheck.portSpecification == enum_GRPCHealthCheckPortSpecification[_]
    input.Body.healthyThreshold == INTEGER
    input.Body.http2HealthCheck.host == STRING
    input.Body.http2HealthCheck.port == INTEGER
    input.Body.http2HealthCheck.portName == STRING
    input.Body.http2HealthCheck.portSpecification == enum_HTTP2HealthCheckPortSpecification[_]
    input.Body.http2HealthCheck.proxyHeader == enum_HTTP2HealthCheckProxyHeader[_]
    input.Body.http2HealthCheck.requestPath == STRING
    input.Body.http2HealthCheck.response == STRING
    input.Body.httpHealthCheck.host == STRING
    input.Body.httpHealthCheck.port == INTEGER
    input.Body.httpHealthCheck.portName == STRING
    input.Body.httpHealthCheck.portSpecification == enum_HTTPHealthCheckPortSpecification[_]
    input.Body.httpHealthCheck.proxyHeader == enum_HTTPHealthCheckProxyHeader[_]
    input.Body.httpHealthCheck.requestPath == STRING
    input.Body.httpHealthCheck.response == STRING
    input.Body.httpsHealthCheck.host == STRING
    input.Body.httpsHealthCheck.port == INTEGER
    input.Body.httpsHealthCheck.portName == STRING
    input.Body.httpsHealthCheck.portSpecification == enum_HTTPSHealthCheckPortSpecification[_]
    input.Body.httpsHealthCheck.proxyHeader == enum_HTTPSHealthCheckProxyHeader[_]
    input.Body.httpsHealthCheck.requestPath == STRING
    input.Body.httpsHealthCheck.response == STRING
    input.Body.id == STRING
    input.Body.kind == STRING
    input.Body.logConfig.enable == BOOLEAN
    input.Body.name == STRING
    input.Body.region == STRING
    input.Body.selfLink == STRING
    input.Body.sslHealthCheck.port == INTEGER
    input.Body.sslHealthCheck.portName == STRING
    input.Body.sslHealthCheck.portSpecification == enum_SSLHealthCheckPortSpecification[_]
    input.Body.sslHealthCheck.proxyHeader == enum_SSLHealthCheckProxyHeader[_]
    input.Body.sslHealthCheck.request == STRING
    input.Body.sslHealthCheck.response == STRING
    input.Body.tcpHealthCheck.port == INTEGER
    input.Body.tcpHealthCheck.portName == STRING
    input.Body.tcpHealthCheck.portSpecification == enum_TCPHealthCheckPortSpecification[_]
    input.Body.tcpHealthCheck.proxyHeader == enum_TCPHealthCheckProxyHeader[_]
    input.Body.tcpHealthCheck.request == STRING
    input.Body.tcpHealthCheck.response == STRING
    input.Body.timeoutSec == INTEGER
    input.Body.type == enum_HealthCheckType[_]
    input.Body.unhealthyThreshold == INTEGER
    input.ReqMap.healthCheck == STRING
    input.ReqMap.ProjectID == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.httpHealthChecks.delete

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

compute.httpHealthChecks.get

valid {
    input.ReqMap.httpHealthCheck == STRING
    input.ReqMap.ProjectID == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.httpHealthChecks.insert

valid {
    input.Body.checkIntervalSec == INTEGER
    input.Body.creationTimestamp == STRING
    input.Body.description == STRING
    input.Body.healthyThreshold == INTEGER
    input.Body.host == STRING
    input.Body.id == STRING
    input.Body.kind == STRING
    input.Body.name == STRING
    input.Body.port == INTEGER
    input.Body.requestPath == STRING
    input.Body.selfLink == STRING
    input.Body.timeoutSec == INTEGER
    input.Body.unhealthyThreshold == INTEGER
    input.ReqMap.ProjectID == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.httpHealthChecks.list

valid {
    input.ReqMap.ProjectID == STRING
    input.Qs.filter == STRING
    input.Qs.maxResults == INTEGER
    input.Qs.orderBy == STRING
    input.Qs.pageToken == STRING
    input.Qs.returnPartialSuccess == BOOLEAN
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.httpHealthChecks.patch

valid {
    input.Body.checkIntervalSec == INTEGER
    input.Body.creationTimestamp == STRING
    input.Body.description == STRING
    input.Body.healthyThreshold == INTEGER
    input.Body.host == STRING
    input.Body.id == STRING
    input.Body.kind == STRING
    input.Body.name == STRING
    input.Body.port == INTEGER
    input.Body.requestPath == STRING
    input.Body.selfLink == STRING
    input.Body.timeoutSec == INTEGER
    input.Body.unhealthyThreshold == INTEGER
    input.ReqMap.httpHealthCheck == STRING
    input.ReqMap.ProjectID == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.httpHealthChecks.testIamPermissions

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

compute.httpHealthChecks.update

valid {
    input.Body.checkIntervalSec == INTEGER
    input.Body.creationTimestamp == STRING
    input.Body.description == STRING
    input.Body.healthyThreshold == INTEGER
    input.Body.host == STRING
    input.Body.id == STRING
    input.Body.kind == STRING
    input.Body.name == STRING
    input.Body.port == INTEGER
    input.Body.requestPath == STRING
    input.Body.selfLink == STRING
    input.Body.timeoutSec == INTEGER
    input.Body.unhealthyThreshold == INTEGER
    input.ReqMap.httpHealthCheck == STRING
    input.ReqMap.ProjectID == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.httpsHealthChecks.delete

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

compute.httpsHealthChecks.get

valid {
    input.ReqMap.httpsHealthCheck == STRING
    input.ReqMap.ProjectID == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.httpsHealthChecks.insert

valid {
    input.Body.checkIntervalSec == INTEGER
    input.Body.creationTimestamp == STRING
    input.Body.description == STRING
    input.Body.healthyThreshold == INTEGER
    input.Body.host == STRING
    input.Body.id == STRING
    input.Body.kind == STRING
    input.Body.name == STRING
    input.Body.port == INTEGER
    input.Body.requestPath == STRING
    input.Body.selfLink == STRING
    input.Body.timeoutSec == INTEGER
    input.Body.unhealthyThreshold == INTEGER
    input.ReqMap.ProjectID == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.httpsHealthChecks.list

valid {
    input.ReqMap.ProjectID == STRING
    input.Qs.filter == STRING
    input.Qs.maxResults == INTEGER
    input.Qs.orderBy == STRING
    input.Qs.pageToken == STRING
    input.Qs.returnPartialSuccess == BOOLEAN
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.httpsHealthChecks.patch

valid {
    input.Body.checkIntervalSec == INTEGER
    input.Body.creationTimestamp == STRING
    input.Body.description == STRING
    input.Body.healthyThreshold == INTEGER
    input.Body.host == STRING
    input.Body.id == STRING
    input.Body.kind == STRING
    input.Body.name == STRING
    input.Body.port == INTEGER
    input.Body.requestPath == STRING
    input.Body.selfLink == STRING
    input.Body.timeoutSec == INTEGER
    input.Body.unhealthyThreshold == INTEGER
    input.ReqMap.httpsHealthCheck == STRING
    input.ReqMap.ProjectID == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.httpsHealthChecks.testIamPermissions

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

compute.httpsHealthChecks.update

valid {
    input.Body.checkIntervalSec == INTEGER
    input.Body.creationTimestamp == STRING
    input.Body.description == STRING
    input.Body.healthyThreshold == INTEGER
    input.Body.host == STRING
    input.Body.id == STRING
    input.Body.kind == STRING
    input.Body.name == STRING
    input.Body.port == INTEGER
    input.Body.requestPath == STRING
    input.Body.selfLink == STRING
    input.Body.timeoutSec == INTEGER
    input.Body.unhealthyThreshold == INTEGER
    input.ReqMap.httpsHealthCheck == STRING
    input.ReqMap.ProjectID == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.imageFamilyViews.get

valid {
    input.ReqMap.family == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.zone == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.images.delete

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

compute.images.deprecate

enum_DeprecationStatusState := [ "ACTIVE", "DELETED", "DEPRECATED", "OBSOLETE" ]

valid {
    input.Body.deleted == STRING
    input.Body.deprecated == STRING
    input.Body.obsolete == STRING
    input.Body.replacement == STRING
    input.Body.state == enum_DeprecationStatusState[_]
    input.ReqMap.image == STRING
    input.ReqMap.ProjectID == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.images.get

valid {
    input.ReqMap.image == STRING
    input.ReqMap.ProjectID == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.images.getFromFamily

valid {
    input.ReqMap.family == STRING
    input.ReqMap.ProjectID == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.images.getIamPolicy

valid {
    input.ReqMap.ProjectID == STRING
    input.ReqMap.resource == STRING
    input.Qs.optionsRequestedPolicyVersion == INTEGER
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.images.insert

enum_DeprecationStatusState := [ "ACTIVE", "DELETED", "DEPRECATED", "OBSOLETE" ]
enum_FileContentBufferFileType := [ "BIN", "UNDEFINED", "X509" ]
enum_GuestOsFeatureType := [ "FEATURE_TYPE_UNSPECIFIED", "GVNIC", "IDPF", "MULTI_IP_SUBNET", "SECURE_BOOT", "SEV_CAPABLE", "SEV_LIVE_MIGRATABLE", "SEV_LIVE_MIGRATABLE_V2", "SEV_SNP_CAPABLE", "UEFI_COMPATIBLE", "VIRTIO_SCSI_MULTIQUEUE", "WINDOWS" ]
enum_ImageArchitecture := [ "ARCHITECTURE_UNSPECIFIED", "ARM64", "X86_64" ]
enum_ImageRawDiskContainerType := [ "TAR" ]
enum_ImageSourceType := [ "RAW" ]
enum_ImageStatus := [ "DELETING", "FAILED", "PENDING", "READY" ]

valid {
    input.Body.architecture == enum_ImageArchitecture[_]
    input.Body.archiveSizeBytes == STRING
    input.Body.creationTimestamp == STRING
    input.Body.deprecated.deleted == STRING
    input.Body.deprecated.deprecated == STRING
    input.Body.deprecated.obsolete == STRING
    input.Body.deprecated.replacement == STRING
    input.Body.deprecated.state == enum_DeprecationStatusState[_]
    input.Body.description == STRING
    input.Body.diskSizeGb == STRING
    input.Body.enableConfidentialCompute == BOOLEAN
    input.Body.family == STRING
    input.Body.guestOsFeatures[_].type == enum_GuestOsFeatureType[_]
    input.Body.id == STRING
    input.Body.imageEncryptionKey.kmsKeyName == STRING
    input.Body.imageEncryptionKey.kmsKeyServiceAccount == STRING
    input.Body.imageEncryptionKey.rawKey == STRING
    input.Body.imageEncryptionKey.rsaEncryptedKey == STRING
    input.Body.imageEncryptionKey.sha256 == STRING
    input.Body.kind == STRING
    input.Body.labelFingerprint == STRING
    input.Body.labels.STRING == STRING
    input.Body.licenseCodes[_] == STRING
    input.Body.licenses[_] == STRING
    input.Body.name == STRING
    input.Body.rawDisk.containerType == enum_ImageRawDiskContainerType[_]
    input.Body.rawDisk.sha1Checksum == STRING
    input.Body.rawDisk.source == STRING
    input.Body.satisfiesPzs == BOOLEAN
    input.Body.selfLink == STRING
    input.Body.shieldedInstanceInitialState.dbs[_].content == STRING
    input.Body.shieldedInstanceInitialState.dbs[_].fileType == enum_FileContentBufferFileType[_]
    input.Body.shieldedInstanceInitialState.dbxs[_].content == STRING
    input.Body.shieldedInstanceInitialState.dbxs[_].fileType == enum_FileContentBufferFileType[_]
    input.Body.shieldedInstanceInitialState.keks[_].content == STRING
    input.Body.shieldedInstanceInitialState.keks[_].fileType == enum_FileContentBufferFileType[_]
    input.Body.shieldedInstanceInitialState.pk.content == STRING
    input.Body.shieldedInstanceInitialState.pk.fileType == enum_FileContentBufferFileType[_]
    input.Body.sourceDisk == STRING
    input.Body.sourceDiskEncryptionKey.kmsKeyName == STRING
    input.Body.sourceDiskEncryptionKey.kmsKeyServiceAccount == STRING
    input.Body.sourceDiskEncryptionKey.rawKey == STRING
    input.Body.sourceDiskEncryptionKey.rsaEncryptedKey == STRING
    input.Body.sourceDiskEncryptionKey.sha256 == STRING
    input.Body.sourceDiskId == STRING
    input.Body.sourceImage == STRING
    input.Body.sourceImageEncryptionKey.kmsKeyName == STRING
    input.Body.sourceImageEncryptionKey.kmsKeyServiceAccount == STRING
    input.Body.sourceImageEncryptionKey.rawKey == STRING
    input.Body.sourceImageEncryptionKey.rsaEncryptedKey == STRING
    input.Body.sourceImageEncryptionKey.sha256 == STRING
    input.Body.sourceImageId == STRING
    input.Body.sourceSnapshot == STRING
    input.Body.sourceSnapshotEncryptionKey.kmsKeyName == STRING
    input.Body.sourceSnapshotEncryptionKey.kmsKeyServiceAccount == STRING
    input.Body.sourceSnapshotEncryptionKey.rawKey == STRING
    input.Body.sourceSnapshotEncryptionKey.rsaEncryptedKey == STRING
    input.Body.sourceSnapshotEncryptionKey.sha256 == STRING
    input.Body.sourceSnapshotId == STRING
    input.Body.sourceType == enum_ImageSourceType[_]
    input.Body.status == enum_ImageStatus[_]
    input.Body.storageLocations[_] == STRING
    input.ReqMap.ProjectID == STRING
    input.Qs.forceCreate == BOOLEAN
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.images.list

valid {
    input.ReqMap.ProjectID == STRING
    input.Qs.filter == STRING
    input.Qs.maxResults == INTEGER
    input.Qs.orderBy == STRING
    input.Qs.pageToken == STRING
    input.Qs.returnPartialSuccess == BOOLEAN
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.images.patch

enum_DeprecationStatusState := [ "ACTIVE", "DELETED", "DEPRECATED", "OBSOLETE" ]
enum_FileContentBufferFileType := [ "BIN", "UNDEFINED", "X509" ]
enum_GuestOsFeatureType := [ "FEATURE_TYPE_UNSPECIFIED", "GVNIC", "IDPF", "MULTI_IP_SUBNET", "SECURE_BOOT", "SEV_CAPABLE", "SEV_LIVE_MIGRATABLE", "SEV_LIVE_MIGRATABLE_V2", "SEV_SNP_CAPABLE", "UEFI_COMPATIBLE", "VIRTIO_SCSI_MULTIQUEUE", "WINDOWS" ]
enum_ImageArchitecture := [ "ARCHITECTURE_UNSPECIFIED", "ARM64", "X86_64" ]
enum_ImageRawDiskContainerType := [ "TAR" ]
enum_ImageSourceType := [ "RAW" ]
enum_ImageStatus := [ "DELETING", "FAILED", "PENDING", "READY" ]

valid {
    input.Body.architecture == enum_ImageArchitecture[_]
    input.Body.archiveSizeBytes == STRING
    input.Body.creationTimestamp == STRING
    input.Body.deprecated.deleted == STRING
    input.Body.deprecated.deprecated == STRING
    input.Body.deprecated.obsolete == STRING
    input.Body.deprecated.replacement == STRING
    input.Body.deprecated.state == enum_DeprecationStatusState[_]
    input.Body.description == STRING
    input.Body.diskSizeGb == STRING
    input.Body.enableConfidentialCompute == BOOLEAN
    input.Body.family == STRING
    input.Body.guestOsFeatures[_].type == enum_GuestOsFeatureType[_]
    input.Body.id == STRING
    input.Body.imageEncryptionKey.kmsKeyName == STRING
    input.Body.imageEncryptionKey.kmsKeyServiceAccount == STRING
    input.Body.imageEncryptionKey.rawKey == STRING
    input.Body.imageEncryptionKey.rsaEncryptedKey == STRING
    input.Body.imageEncryptionKey.sha256 == STRING
    input.Body.kind == STRING
    input.Body.labelFingerprint == STRING
    input.Body.labels.STRING == STRING
    input.Body.licenseCodes[_] == STRING
    input.Body.licenses[_] == STRING
    input.Body.name == STRING
    input.Body.rawDisk.containerType == enum_ImageRawDiskContainerType[_]
    input.Body.rawDisk.sha1Checksum == STRING
    input.Body.rawDisk.source == STRING
    input.Body.satisfiesPzs == BOOLEAN
    input.Body.selfLink == STRING
    input.Body.shieldedInstanceInitialState.dbs[_].content == STRING
    input.Body.shieldedInstanceInitialState.dbs[_].fileType == enum_FileContentBufferFileType[_]
    input.Body.shieldedInstanceInitialState.dbxs[_].content == STRING
    input.Body.shieldedInstanceInitialState.dbxs[_].fileType == enum_FileContentBufferFileType[_]
    input.Body.shieldedInstanceInitialState.keks[_].content == STRING
    input.Body.shieldedInstanceInitialState.keks[_].fileType == enum_FileContentBufferFileType[_]
    input.Body.shieldedInstanceInitialState.pk.content == STRING
    input.Body.shieldedInstanceInitialState.pk.fileType == enum_FileContentBufferFileType[_]
    input.Body.sourceDisk == STRING
    input.Body.sourceDiskEncryptionKey.kmsKeyName == STRING
    input.Body.sourceDiskEncryptionKey.kmsKeyServiceAccount == STRING
    input.Body.sourceDiskEncryptionKey.rawKey == STRING
    input.Body.sourceDiskEncryptionKey.rsaEncryptedKey == STRING
    input.Body.sourceDiskEncryptionKey.sha256 == STRING
    input.Body.sourceDiskId == STRING
    input.Body.sourceImage == STRING
    input.Body.sourceImageEncryptionKey.kmsKeyName == STRING
    input.Body.sourceImageEncryptionKey.kmsKeyServiceAccount == STRING
    input.Body.sourceImageEncryptionKey.rawKey == STRING
    input.Body.sourceImageEncryptionKey.rsaEncryptedKey == STRING
    input.Body.sourceImageEncryptionKey.sha256 == STRING
    input.Body.sourceImageId == STRING
    input.Body.sourceSnapshot == STRING
    input.Body.sourceSnapshotEncryptionKey.kmsKeyName == STRING
    input.Body.sourceSnapshotEncryptionKey.kmsKeyServiceAccount == STRING
    input.Body.sourceSnapshotEncryptionKey.rawKey == STRING
    input.Body.sourceSnapshotEncryptionKey.rsaEncryptedKey == STRING
    input.Body.sourceSnapshotEncryptionKey.sha256 == STRING
    input.Body.sourceSnapshotId == STRING
    input.Body.sourceType == enum_ImageSourceType[_]
    input.Body.status == enum_ImageStatus[_]
    input.Body.storageLocations[_] == STRING
    input.ReqMap.image == STRING
    input.ReqMap.ProjectID == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.images.setIamPolicy

enum_AuditLogConfigLogType := [ "ADMIN_READ", "DATA_READ", "DATA_WRITE", "LOG_TYPE_UNSPECIFIED" ]
enum_AuthorizationLoggingOptionsPermissionType := [ "ADMIN_READ", "ADMIN_WRITE", "DATA_READ", "DATA_WRITE", "PERMISSION_TYPE_UNSPECIFIED" ]
enum_ConditionIam := [ "APPROVER", "ATTRIBUTION", "AUTHORITY", "CREDENTIALS_TYPE", "CREDS_ASSERTION", "JUSTIFICATION_TYPE", "NO_ATTR", "SECURITY_REALM" ]
enum_ConditionOp := [ "DISCHARGED", "EQUALS", "IN", "NOT_EQUALS", "NOT_IN", "NO_OP" ]
enum_ConditionSys := [ "IP", "NAME", "NO_ATTR", "REGION", "SERVICE" ]
enum_LogConfigCloudAuditOptionsLogName := [ "ADMIN_ACTIVITY", "DATA_ACCESS", "UNSPECIFIED_LOG_NAME" ]
enum_LogConfigDataAccessOptionsLogMode := [ "LOG_FAIL_CLOSED", "LOG_MODE_UNSPECIFIED" ]
enum_RuleAction := [ "ALLOW", "ALLOW_WITH_LOG", "DENY", "DENY_WITH_LOG", "LOG", "NO_ACTION" ]

valid {
    input.Body.bindings[_].bindingId == STRING
    input.Body.bindings[_].condition.description == STRING
    input.Body.bindings[_].condition.expression == STRING
    input.Body.bindings[_].condition.location == STRING
    input.Body.bindings[_].condition.title == STRING
    input.Body.bindings[_].members[_] == STRING
    input.Body.bindings[_].role == STRING
    input.Body.etag == STRING
    input.Body.policy.auditConfigs[_].auditLogConfigs[_].exemptedMembers[_] == STRING
    input.Body.policy.auditConfigs[_].auditLogConfigs[_].ignoreChildExemptions == BOOLEAN
    input.Body.policy.auditConfigs[_].auditLogConfigs[_].logType == enum_AuditLogConfigLogType[_]
    input.Body.policy.auditConfigs[_].exemptedMembers[_] == STRING
    input.Body.policy.auditConfigs[_].service == STRING
    input.Body.policy.bindings[_].bindingId == 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.rules[_].action == enum_RuleAction[_]
    input.Body.policy.rules[_].conditions[_].iam == enum_ConditionIam[_]
    input.Body.policy.rules[_].conditions[_].op == enum_ConditionOp[_]
    input.Body.policy.rules[_].conditions[_].svc == STRING
    input.Body.policy.rules[_].conditions[_].sys == enum_ConditionSys[_]
    input.Body.policy.rules[_].conditions[_].values[_] == STRING
    input.Body.policy.rules[_].description == STRING
    input.Body.policy.rules[_].ins[_] == STRING
    input.Body.policy.rules[_].logConfigs[_].cloudAudit.authorizationLoggingOptions.permissionType == enum_AuthorizationLoggingOptionsPermissionType[_]
    input.Body.policy.rules[_].logConfigs[_].cloudAudit.logName == enum_LogConfigCloudAuditOptionsLogName[_]
    input.Body.policy.rules[_].logConfigs[_].counter.customFields[_].name == STRING
    input.Body.policy.rules[_].logConfigs[_].counter.customFields[_].value == STRING
    input.Body.policy.rules[_].logConfigs[_].counter.field == STRING
    input.Body.policy.rules[_].logConfigs[_].counter.metric == STRING
    input.Body.policy.rules[_].logConfigs[_].dataAccess.logMode == enum_LogConfigDataAccessOptionsLogMode[_]
    input.Body.policy.rules[_].notIns[_] == STRING
    input.Body.policy.rules[_].permissions[_] == STRING
    input.Body.policy.version == INTEGER
    input.ReqMap.ProjectID == STRING
    input.ReqMap.resource == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.images.setLabels

valid {
    input.Body.labelFingerprint == STRING
    input.Body.labels.STRING == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.resource == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.images.testIamPermissions

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

compute.instanceGroupManagerResizeRequests.cancel

valid {
    input.ReqMap.instanceGroupManager == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.resizeRequest == STRING
    input.ReqMap.zone == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.instanceGroupManagerResizeRequests.delete

valid {
    input.ReqMap.instanceGroupManager == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.resizeRequest == STRING
    input.ReqMap.zone == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.instanceGroupManagerResizeRequests.get

valid {
    input.ReqMap.instanceGroupManager == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.resizeRequest == STRING
    input.ReqMap.zone == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.instanceGroupManagerResizeRequests.insert

enum_InstanceGroupManagerResizeRequestState := [ "ACCEPTED", "CANCELLED", "CREATING", "FAILED", "STATE_UNSPECIFIED", "SUCCEEDED" ]
enum_QuotaExceededInfoRolloutStatus := [ "IN_PROGRESS", "ROLLOUT_STATUS_UNSPECIFIED" ]

valid {
    input.Body.creationTimestamp == STRING
    input.Body.description == STRING
    input.Body.id == STRING
    input.Body.kind == STRING
    input.Body.name == STRING
    input.Body.requestedRunDuration.nanos == INTEGER
    input.Body.requestedRunDuration.seconds == STRING
    input.Body.resizeBy == INTEGER
    input.Body.selfLink == STRING
    input.Body.selfLinkWithId == STRING
    input.Body.state == enum_InstanceGroupManagerResizeRequestState[_]
    input.Body.status.error.errors[_].code == STRING
    input.Body.status.error.errors[_].errorDetails[_].errorInfo.domain == STRING
    input.Body.status.error.errors[_].errorDetails[_].errorInfo.metadatas.STRING == STRING
    input.Body.status.error.errors[_].errorDetails[_].errorInfo.reason == STRING
    input.Body.status.error.errors[_].errorDetails[_].help.links[_].description == STRING
    input.Body.status.error.errors[_].errorDetails[_].help.links[_].url == STRING
    input.Body.status.error.errors[_].errorDetails[_].localizedMessage.locale == STRING
    input.Body.status.error.errors[_].errorDetails[_].localizedMessage.message == STRING
    input.Body.status.error.errors[_].errorDetails[_].quotaInfo.dimensions.STRING == STRING
    input.Body.status.error.errors[_].errorDetails[_].quotaInfo.futureLimit == NUMBER
    input.Body.status.error.errors[_].errorDetails[_].quotaInfo.limit == NUMBER
    input.Body.status.error.errors[_].errorDetails[_].quotaInfo.limitName == STRING
    input.Body.status.error.errors[_].errorDetails[_].quotaInfo.metricName == STRING
    input.Body.status.error.errors[_].errorDetails[_].quotaInfo.rolloutStatus == enum_QuotaExceededInfoRolloutStatus[_]
    input.Body.status.error.errors[_].location == STRING
    input.Body.status.error.errors[_].message == STRING
    input.Body.status.lastAttempt.error.errors[_].code == STRING
    input.Body.status.lastAttempt.error.errors[_].errorDetails[_].errorInfo.domain == STRING
    input.Body.status.lastAttempt.error.errors[_].errorDetails[_].errorInfo.metadatas.STRING == STRING
    input.Body.status.lastAttempt.error.errors[_].errorDetails[_].errorInfo.reason == STRING
    input.Body.status.lastAttempt.error.errors[_].errorDetails[_].help.links[_].description == STRING
    input.Body.status.lastAttempt.error.errors[_].errorDetails[_].help.links[_].url == STRING
    input.Body.status.lastAttempt.error.errors[_].errorDetails[_].localizedMessage.locale == STRING
    input.Body.status.lastAttempt.error.errors[_].errorDetails[_].localizedMessage.message == STRING
    input.Body.status.lastAttempt.error.errors[_].errorDetails[_].quotaInfo.dimensions.STRING == STRING
    input.Body.status.lastAttempt.error.errors[_].errorDetails[_].quotaInfo.futureLimit == NUMBER
    input.Body.status.lastAttempt.error.errors[_].errorDetails[_].quotaInfo.limit == NUMBER
    input.Body.status.lastAttempt.error.errors[_].errorDetails[_].quotaInfo.limitName == STRING
    input.Body.status.lastAttempt.error.errors[_].errorDetails[_].quotaInfo.metricName == STRING
    input.Body.status.lastAttempt.error.errors[_].errorDetails[_].quotaInfo.rolloutStatus == enum_QuotaExceededInfoRolloutStatus[_]
    input.Body.status.lastAttempt.error.errors[_].location == STRING
    input.Body.status.lastAttempt.error.errors[_].message == STRING
    input.Body.zone == STRING
    input.ReqMap.instanceGroupManager == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.zone == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.instanceGroupManagerResizeRequests.list

valid {
    input.ReqMap.instanceGroupManager == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.zone == STRING
    input.Qs.filter == STRING
    input.Qs.maxResults == INTEGER
    input.Qs.orderBy == STRING
    input.Qs.pageToken == STRING
    input.Qs.returnPartialSuccess == BOOLEAN
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.instanceGroupManagers.abandonInstances

valid {
    input.Body.instances[_] == STRING
    input.ReqMap.instanceGroupManager == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.zone == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.instanceGroupManagers.aggregatedList

valid {
    input.ReqMap.ProjectID == STRING
    input.Qs.filter == STRING
    input.Qs.includeAllScopes == BOOLEAN
    input.Qs.maxResults == INTEGER
    input.Qs.orderBy == STRING
    input.Qs.pageToken == STRING
    input.Qs.returnPartialSuccess == BOOLEAN
    input.Qs.serviceProjectNumber == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.instanceGroupManagers.applyUpdatesToInstances

enum_InstanceGroupManagersApplyUpdatesRequestMinimalAction := [ "NONE", "REFRESH", "REPLACE", "RESTART" ]
enum_InstanceGroupManagersApplyUpdatesRequestMostDisruptiveAllowedAction := [ "NONE", "REFRESH", "REPLACE", "RESTART" ]

valid {
    input.Body.allInstances == BOOLEAN
    input.Body.instances[_] == STRING
    input.Body.minimalAction == enum_InstanceGroupManagersApplyUpdatesRequestMinimalAction[_]
    input.Body.mostDisruptiveAllowedAction == enum_InstanceGroupManagersApplyUpdatesRequestMostDisruptiveAllowedAction[_]
    input.ReqMap.instanceGroupManager == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.zone == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.instanceGroupManagers.createInstances

enum_PerInstanceConfigStatus := [ "APPLYING", "DELETING", "EFFECTIVE", "NONE", "UNAPPLIED", "UNAPPLIED_DELETION" ]
enum_PreservedStatePreservedDiskAutoDelete := [ "NEVER", "ON_PERMANENT_INSTANCE_DELETION" ]
enum_PreservedStatePreservedDiskMode := [ "READ_ONLY", "READ_WRITE" ]
enum_PreservedStatePreservedNetworkIpAutoDelete := [ "NEVER", "ON_PERMANENT_INSTANCE_DELETION" ]

valid {
    input.Body.instances[_].fingerprint == STRING
    input.Body.instances[_].name == STRING
    input.Body.instances[_].preservedState.disks.STRING.autoDelete == enum_PreservedStatePreservedDiskAutoDelete[_]
    input.Body.instances[_].preservedState.disks.STRING.mode == enum_PreservedStatePreservedDiskMode[_]
    input.Body.instances[_].preservedState.disks.STRING.source == STRING
    input.Body.instances[_].preservedState.externalIPs.STRING.autoDelete == enum_PreservedStatePreservedNetworkIpAutoDelete[_]
    input.Body.instances[_].preservedState.externalIPs.STRING.ipAddress.address == STRING
    input.Body.instances[_].preservedState.externalIPs.STRING.ipAddress.literal == STRING
    input.Body.instances[_].preservedState.internalIPs.STRING.autoDelete == enum_PreservedStatePreservedNetworkIpAutoDelete[_]
    input.Body.instances[_].preservedState.internalIPs.STRING.ipAddress.address == STRING
    input.Body.instances[_].preservedState.internalIPs.STRING.ipAddress.literal == STRING
    input.Body.instances[_].preservedState.metadata.STRING == STRING
    input.Body.instances[_].status == enum_PerInstanceConfigStatus[_]
    input.ReqMap.instanceGroupManager == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.zone == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.instanceGroupManagers.delete

valid {
    input.ReqMap.instanceGroupManager == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.zone == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.instanceGroupManagers.deleteInstances

valid {
    input.Body.instances[_] == STRING
    input.Body.skipInstancesOnValidationError == BOOLEAN
    input.ReqMap.instanceGroupManager == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.zone == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.instanceGroupManagers.deletePerInstanceConfigs

valid {
    input.Body.names[_] == STRING
    input.ReqMap.instanceGroupManager == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.zone == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.instanceGroupManagers.get

valid {
    input.ReqMap.instanceGroupManager == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.zone == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.instanceGroupManagers.insert

enum_DistributionPolicyTargetShape := [ "ANY", "ANY_SINGLE_ZONE", "BALANCED", "EVEN" ]
enum_InstanceGroupManagerInstanceLifecyclePolicyDefaultActionOnFailure := [ "DO_NOTHING", "REPAIR" ]
enum_InstanceGroupManagerInstanceLifecyclePolicyForceUpdateOnRepair := [ "NO", "YES" ]
enum_InstanceGroupManagerListManagedInstancesResults := [ "PAGELESS", "PAGINATED" ]
enum_InstanceGroupManagerUpdatePolicyInstanceRedistributionType := [ "NONE", "PROACTIVE" ]
enum_InstanceGroupManagerUpdatePolicyMinimalAction := [ "NONE", "REFRESH", "REPLACE", "RESTART" ]
enum_InstanceGroupManagerUpdatePolicyMostDisruptiveAllowedAction := [ "NONE", "REFRESH", "REPLACE", "RESTART" ]
enum_InstanceGroupManagerUpdatePolicyReplacementMethod := [ "RECREATE", "SUBSTITUTE" ]
enum_InstanceGroupManagerUpdatePolicyType := [ "OPPORTUNISTIC", "PROACTIVE" ]
enum_StatefulPolicyPreservedStateDiskDeviceAutoDelete := [ "NEVER", "ON_PERMANENT_INSTANCE_DELETION" ]
enum_StatefulPolicyPreservedStateNetworkIpAutoDelete := [ "NEVER", "ON_PERMANENT_INSTANCE_DELETION" ]

valid {
    input.Body.allInstancesConfig.properties.labels.STRING == STRING
    input.Body.allInstancesConfig.properties.metadata.STRING == STRING
    input.Body.autoHealingPolicies[_].healthCheck == STRING
    input.Body.autoHealingPolicies[_].initialDelaySec == INTEGER
    input.Body.baseInstanceName == STRING
    input.Body.creationTimestamp == STRING
    input.Body.currentActions.abandoning == INTEGER
    input.Body.currentActions.creating == INTEGER
    input.Body.currentActions.creatingWithoutRetries == INTEGER
    input.Body.currentActions.deleting == INTEGER
    input.Body.currentActions.none == INTEGER
    input.Body.currentActions.recreating == INTEGER
    input.Body.currentActions.refreshing == INTEGER
    input.Body.currentActions.restarting == INTEGER
    input.Body.currentActions.resuming == INTEGER
    input.Body.currentActions.starting == INTEGER
    input.Body.currentActions.stopping == INTEGER
    input.Body.currentActions.suspending == INTEGER
    input.Body.currentActions.verifying == INTEGER
    input.Body.description == STRING
    input.Body.distributionPolicy.targetShape == enum_DistributionPolicyTargetShape[_]
    input.Body.distributionPolicy.zones[_].zone == STRING
    input.Body.fingerprint == STRING
    input.Body.id == STRING
    input.Body.instanceGroup == STRING
    input.Body.instanceLifecyclePolicy.defaultActionOnFailure == enum_InstanceGroupManagerInstanceLifecyclePolicyDefaultActionOnFailure[_]
    input.Body.instanceLifecyclePolicy.forceUpdateOnRepair == enum_InstanceGroupManagerInstanceLifecyclePolicyForceUpdateOnRepair[_]
    input.Body.instanceTemplate == STRING
    input.Body.kind == STRING
    input.Body.listManagedInstancesResults == enum_InstanceGroupManagerListManagedInstancesResults[_]
    input.Body.name == STRING
    input.Body.namedPorts[_].name == STRING
    input.Body.namedPorts[_].port == INTEGER
    input.Body.region == STRING
    input.Body.selfLink == STRING
    input.Body.statefulPolicy.preservedState.disks.STRING.autoDelete == enum_StatefulPolicyPreservedStateDiskDeviceAutoDelete[_]
    input.Body.statefulPolicy.preservedState.externalIPs.STRING.autoDelete == enum_StatefulPolicyPreservedStateNetworkIpAutoDelete[_]
    input.Body.statefulPolicy.preservedState.internalIPs.STRING.autoDelete == enum_StatefulPolicyPreservedStateNetworkIpAutoDelete[_]
    input.Body.status.allInstancesConfig.currentRevision == STRING
    input.Body.status.allInstancesConfig.effective == BOOLEAN
    input.Body.status.autoscaler == STRING
    input.Body.status.isStable == BOOLEAN
    input.Body.status.stateful.hasStatefulConfig == BOOLEAN
    input.Body.status.stateful.perInstanceConfigs.allEffective == BOOLEAN
    input.Body.status.versionTarget.isReached == BOOLEAN
    input.Body.targetPools[_] == STRING
    input.Body.targetSize == INTEGER
    input.Body.updatePolicy.instanceRedistributionType == enum_InstanceGroupManagerUpdatePolicyInstanceRedistributionType[_]
    input.Body.updatePolicy.maxSurge.calculated == INTEGER
    input.Body.updatePolicy.maxSurge.fixed == INTEGER
    input.Body.updatePolicy.maxSurge.percent == INTEGER
    input.Body.updatePolicy.maxUnavailable.calculated == INTEGER
    input.Body.updatePolicy.maxUnavailable.fixed == INTEGER
    input.Body.updatePolicy.maxUnavailable.percent == INTEGER
    input.Body.updatePolicy.minimalAction == enum_InstanceGroupManagerUpdatePolicyMinimalAction[_]
    input.Body.updatePolicy.mostDisruptiveAllowedAction == enum_InstanceGroupManagerUpdatePolicyMostDisruptiveAllowedAction[_]
    input.Body.updatePolicy.replacementMethod == enum_InstanceGroupManagerUpdatePolicyReplacementMethod[_]
    input.Body.updatePolicy.type == enum_InstanceGroupManagerUpdatePolicyType[_]
    input.Body.versions[_].instanceTemplate == STRING
    input.Body.versions[_].name == STRING
    input.Body.versions[_].targetSize.calculated == INTEGER
    input.Body.versions[_].targetSize.fixed == INTEGER
    input.Body.versions[_].targetSize.percent == INTEGER
    input.Body.zone == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.zone == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.instanceGroupManagers.list

valid {
    input.ReqMap.ProjectID == STRING
    input.ReqMap.zone == STRING
    input.Qs.filter == STRING
    input.Qs.maxResults == INTEGER
    input.Qs.orderBy == STRING
    input.Qs.pageToken == STRING
    input.Qs.returnPartialSuccess == BOOLEAN
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.instanceGroupManagers.listErrors

valid {
    input.ReqMap.instanceGroupManager == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.zone == STRING
    input.Qs.filter == STRING
    input.Qs.maxResults == INTEGER
    input.Qs.orderBy == STRING
    input.Qs.pageToken == STRING
    input.Qs.returnPartialSuccess == BOOLEAN
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.instanceGroupManagers.listManagedInstances

valid {
    input.ReqMap.instanceGroupManager == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.zone == STRING
    input.Qs.filter == STRING
    input.Qs.maxResults == INTEGER
    input.Qs.orderBy == STRING
    input.Qs.pageToken == STRING
    input.Qs.returnPartialSuccess == BOOLEAN
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.instanceGroupManagers.listPerInstanceConfigs

valid {
    input.ReqMap.instanceGroupManager == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.zone == STRING
    input.Qs.filter == STRING
    input.Qs.maxResults == INTEGER
    input.Qs.orderBy == STRING
    input.Qs.pageToken == STRING
    input.Qs.returnPartialSuccess == BOOLEAN
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.instanceGroupManagers.patch

enum_DistributionPolicyTargetShape := [ "ANY", "ANY_SINGLE_ZONE", "BALANCED", "EVEN" ]
enum_InstanceGroupManagerInstanceLifecyclePolicyDefaultActionOnFailure := [ "DO_NOTHING", "REPAIR" ]
enum_InstanceGroupManagerInstanceLifecyclePolicyForceUpdateOnRepair := [ "NO", "YES" ]
enum_InstanceGroupManagerListManagedInstancesResults := [ "PAGELESS", "PAGINATED" ]
enum_InstanceGroupManagerUpdatePolicyInstanceRedistributionType := [ "NONE", "PROACTIVE" ]
enum_InstanceGroupManagerUpdatePolicyMinimalAction := [ "NONE", "REFRESH", "REPLACE", "RESTART" ]
enum_InstanceGroupManagerUpdatePolicyMostDisruptiveAllowedAction := [ "NONE", "REFRESH", "REPLACE", "RESTART" ]
enum_InstanceGroupManagerUpdatePolicyReplacementMethod := [ "RECREATE", "SUBSTITUTE" ]
enum_InstanceGroupManagerUpdatePolicyType := [ "OPPORTUNISTIC", "PROACTIVE" ]
enum_StatefulPolicyPreservedStateDiskDeviceAutoDelete := [ "NEVER", "ON_PERMANENT_INSTANCE_DELETION" ]
enum_StatefulPolicyPreservedStateNetworkIpAutoDelete := [ "NEVER", "ON_PERMANENT_INSTANCE_DELETION" ]

valid {
    input.Body.allInstancesConfig.properties.labels.STRING == STRING
    input.Body.allInstancesConfig.properties.metadata.STRING == STRING
    input.Body.autoHealingPolicies[_].healthCheck == STRING
    input.Body.autoHealingPolicies[_].initialDelaySec == INTEGER
    input.Body.baseInstanceName == STRING
    input.Body.creationTimestamp == STRING
    input.Body.currentActions.abandoning == INTEGER
    input.Body.currentActions.creating == INTEGER
    input.Body.currentActions.creatingWithoutRetries == INTEGER
    input.Body.currentActions.deleting == INTEGER
    input.Body.currentActions.none == INTEGER
    input.Body.currentActions.recreating == INTEGER
    input.Body.currentActions.refreshing == INTEGER
    input.Body.currentActions.restarting == INTEGER
    input.Body.currentActions.resuming == INTEGER
    input.Body.currentActions.starting == INTEGER
    input.Body.currentActions.stopping == INTEGER
    input.Body.currentActions.suspending == INTEGER
    input.Body.currentActions.verifying == INTEGER
    input.Body.description == STRING
    input.Body.distributionPolicy.targetShape == enum_DistributionPolicyTargetShape[_]
    input.Body.distributionPolicy.zones[_].zone == STRING
    input.Body.fingerprint == STRING
    input.Body.id == STRING
    input.Body.instanceGroup == STRING
    input.Body.instanceLifecyclePolicy.defaultActionOnFailure == enum_InstanceGroupManagerInstanceLifecyclePolicyDefaultActionOnFailure[_]
    input.Body.instanceLifecyclePolicy.forceUpdateOnRepair == enum_InstanceGroupManagerInstanceLifecyclePolicyForceUpdateOnRepair[_]
    input.Body.instanceTemplate == STRING
    input.Body.kind == STRING
    input.Body.listManagedInstancesResults == enum_InstanceGroupManagerListManagedInstancesResults[_]
    input.Body.name == STRING
    input.Body.namedPorts[_].name == STRING
    input.Body.namedPorts[_].port == INTEGER
    input.Body.region == STRING
    input.Body.selfLink == STRING
    input.Body.statefulPolicy.preservedState.disks.STRING.autoDelete == enum_StatefulPolicyPreservedStateDiskDeviceAutoDelete[_]
    input.Body.statefulPolicy.preservedState.externalIPs.STRING.autoDelete == enum_StatefulPolicyPreservedStateNetworkIpAutoDelete[_]
    input.Body.statefulPolicy.preservedState.internalIPs.STRING.autoDelete == enum_StatefulPolicyPreservedStateNetworkIpAutoDelete[_]
    input.Body.status.allInstancesConfig.currentRevision == STRING
    input.Body.status.allInstancesConfig.effective == BOOLEAN
    input.Body.status.autoscaler == STRING
    input.Body.status.isStable == BOOLEAN
    input.Body.status.stateful.hasStatefulConfig == BOOLEAN
    input.Body.status.stateful.perInstanceConfigs.allEffective == BOOLEAN
    input.Body.status.versionTarget.isReached == BOOLEAN
    input.Body.targetPools[_] == STRING
    input.Body.targetSize == INTEGER
    input.Body.updatePolicy.instanceRedistributionType == enum_InstanceGroupManagerUpdatePolicyInstanceRedistributionType[_]
    input.Body.updatePolicy.maxSurge.calculated == INTEGER
    input.Body.updatePolicy.maxSurge.fixed == INTEGER
    input.Body.updatePolicy.maxSurge.percent == INTEGER
    input.Body.updatePolicy.maxUnavailable.calculated == INTEGER
    input.Body.updatePolicy.maxUnavailable.fixed == INTEGER
    input.Body.updatePolicy.maxUnavailable.percent == INTEGER
    input.Body.updatePolicy.minimalAction == enum_InstanceGroupManagerUpdatePolicyMinimalAction[_]
    input.Body.updatePolicy.mostDisruptiveAllowedAction == enum_InstanceGroupManagerUpdatePolicyMostDisruptiveAllowedAction[_]
    input.Body.updatePolicy.replacementMethod == enum_InstanceGroupManagerUpdatePolicyReplacementMethod[_]
    input.Body.updatePolicy.type == enum_InstanceGroupManagerUpdatePolicyType[_]
    input.Body.versions[_].instanceTemplate == STRING
    input.Body.versions[_].name == STRING
    input.Body.versions[_].targetSize.calculated == INTEGER
    input.Body.versions[_].targetSize.fixed == INTEGER
    input.Body.versions[_].targetSize.percent == INTEGER
    input.Body.zone == STRING
    input.ReqMap.instanceGroupManager == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.zone == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.instanceGroupManagers.patchPerInstanceConfigs

enum_PerInstanceConfigStatus := [ "APPLYING", "DELETING", "EFFECTIVE", "NONE", "UNAPPLIED", "UNAPPLIED_DELETION" ]
enum_PreservedStatePreservedDiskAutoDelete := [ "NEVER", "ON_PERMANENT_INSTANCE_DELETION" ]
enum_PreservedStatePreservedDiskMode := [ "READ_ONLY", "READ_WRITE" ]
enum_PreservedStatePreservedNetworkIpAutoDelete := [ "NEVER", "ON_PERMANENT_INSTANCE_DELETION" ]

valid {
    input.Body.perInstanceConfigs[_].fingerprint == STRING
    input.Body.perInstanceConfigs[_].name == STRING
    input.Body.perInstanceConfigs[_].preservedState.disks.STRING.autoDelete == enum_PreservedStatePreservedDiskAutoDelete[_]
    input.Body.perInstanceConfigs[_].preservedState.disks.STRING.mode == enum_PreservedStatePreservedDiskMode[_]
    input.Body.perInstanceConfigs[_].preservedState.disks.STRING.source == STRING
    input.Body.perInstanceConfigs[_].preservedState.externalIPs.STRING.autoDelete == enum_PreservedStatePreservedNetworkIpAutoDelete[_]
    input.Body.perInstanceConfigs[_].preservedState.externalIPs.STRING.ipAddress.address == STRING
    input.Body.perInstanceConfigs[_].preservedState.externalIPs.STRING.ipAddress.literal == STRING
    input.Body.perInstanceConfigs[_].preservedState.internalIPs.STRING.autoDelete == enum_PreservedStatePreservedNetworkIpAutoDelete[_]
    input.Body.perInstanceConfigs[_].preservedState.internalIPs.STRING.ipAddress.address == STRING
    input.Body.perInstanceConfigs[_].preservedState.internalIPs.STRING.ipAddress.literal == STRING
    input.Body.perInstanceConfigs[_].preservedState.metadata.STRING == STRING
    input.Body.perInstanceConfigs[_].status == enum_PerInstanceConfigStatus[_]
    input.ReqMap.instanceGroupManager == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.zone == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.instanceGroupManagers.recreateInstances

valid {
    input.Body.instances[_] == STRING
    input.ReqMap.instanceGroupManager == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.zone == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.instanceGroupManagers.resize

valid {
    input.ReqMap.instanceGroupManager == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.zone == STRING
    input.Qs.requestId == STRING
    input.Qs.size == INTEGER
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.instanceGroupManagers.resizeAdvanced

valid {
    input.Body.noCreationRetries == BOOLEAN
    input.Body.targetSize == INTEGER
    input.ReqMap.instanceGroupManager == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.zone == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.instanceGroupManagers.resumeInstances

valid {
    input.Body.instances[_] == STRING
    input.ReqMap.instanceGroupManager == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.zone == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.instanceGroupManagers.setAutoHealingPolicies

valid {
    input.Body.autoHealingPolicies[_].healthCheck == STRING
    input.Body.autoHealingPolicies[_].initialDelaySec == INTEGER
    input.ReqMap.instanceGroupManager == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.zone == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.instanceGroupManagers.setInstanceTemplate

valid {
    input.Body.instanceTemplate == STRING
    input.ReqMap.instanceGroupManager == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.zone == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.instanceGroupManagers.setTargetPools

valid {
    input.Body.fingerprint == STRING
    input.Body.targetPools[_] == STRING
    input.ReqMap.instanceGroupManager == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.zone == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.instanceGroupManagers.startInstances

valid {
    input.Body.instances[_] == STRING
    input.ReqMap.instanceGroupManager == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.zone == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.instanceGroupManagers.stopInstances

valid {
    input.Body.forceStop == BOOLEAN
    input.Body.instances[_] == STRING
    input.ReqMap.instanceGroupManager == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.zone == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.instanceGroupManagers.suspendInstances

valid {
    input.Body.forceSuspend == BOOLEAN
    input.Body.instances[_] == STRING
    input.ReqMap.instanceGroupManager == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.zone == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.instanceGroupManagers.testIamPermissions

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

compute.instanceGroupManagers.update

enum_DistributionPolicyTargetShape := [ "ANY", "ANY_SINGLE_ZONE", "BALANCED", "EVEN" ]
enum_InstanceGroupManagerFailoverAction := [ "NO_FAILOVER", "UNKNOWN" ]
enum_InstanceGroupManagerInstanceLifecyclePolicyDefaultActionOnFailure := [ "DELETE", "DO_NOTHING", "REPAIR" ]
enum_InstanceGroupManagerInstanceLifecyclePolicyForceUpdateOnRepair := [ "NO", "YES" ]
enum_InstanceGroupManagerListManagedInstancesResults := [ "PAGELESS", "PAGINATED" ]
enum_InstanceGroupManagerStandbyPolicyMode := [ "MANUAL", "SCALE_OUT_POOL" ]
enum_InstanceGroupManagerUpdatePolicyInstanceRedistributionType := [ "NONE", "PROACTIVE" ]
enum_InstanceGroupManagerUpdatePolicyMinimalAction := [ "NONE", "REFRESH", "REPLACE", "RESTART" ]
enum_InstanceGroupManagerUpdatePolicyMostDisruptiveAllowedAction := [ "NONE", "REFRESH", "REPLACE", "RESTART" ]
enum_InstanceGroupManagerUpdatePolicyReplacementMethod := [ "RECREATE", "SUBSTITUTE" ]
enum_InstanceGroupManagerUpdatePolicyType := [ "OPPORTUNISTIC", "PROACTIVE" ]
enum_StatefulPolicyPreservedStateDiskDeviceAutoDelete := [ "NEVER", "ON_PERMANENT_INSTANCE_DELETION" ]
enum_StatefulPolicyPreservedStateNetworkIpAutoDelete := [ "NEVER", "ON_PERMANENT_INSTANCE_DELETION" ]

valid {
    input.Body.allInstancesConfig.properties.labels.STRING == STRING
    input.Body.allInstancesConfig.properties.metadata.STRING == STRING
    input.Body.autoHealingPolicies[_].healthCheck == STRING
    input.Body.autoHealingPolicies[_].initialDelaySec == INTEGER
    input.Body.baseInstanceName == STRING
    input.Body.creationTimestamp == STRING
    input.Body.currentActions.abandoning == INTEGER
    input.Body.currentActions.creating == INTEGER
    input.Body.currentActions.creatingWithoutRetries == INTEGER
    input.Body.currentActions.deleting == INTEGER
    input.Body.currentActions.none == INTEGER
    input.Body.currentActions.recreating == INTEGER
    input.Body.currentActions.refreshing == INTEGER
    input.Body.currentActions.restarting == INTEGER
    input.Body.currentActions.resuming == INTEGER
    input.Body.currentActions.starting == INTEGER
    input.Body.currentActions.stopping == INTEGER
    input.Body.currentActions.suspending == INTEGER
    input.Body.currentActions.verifying == INTEGER
    input.Body.description == STRING
    input.Body.distributionPolicy.targetShape == enum_DistributionPolicyTargetShape[_]
    input.Body.distributionPolicy.zones[_].zone == STRING
    input.Body.failoverAction == enum_InstanceGroupManagerFailoverAction[_]
    input.Body.fingerprint == STRING
    input.Body.id == STRING
    input.Body.instanceFlexibilityPolicy.instanceSelectionLists.STRING.machineTypes[_] == STRING
    input.Body.instanceFlexibilityPolicy.instanceSelectionLists.STRING.rank == INTEGER
    input.Body.instanceFlexibilityPolicy.instanceSelections.STRING.machineTypes[_] == STRING
    input.Body.instanceFlexibilityPolicy.instanceSelections.STRING.rank == INTEGER
    input.Body.instanceGroup == STRING
    input.Body.instanceLifecyclePolicy.defaultActionOnFailure == enum_InstanceGroupManagerInstanceLifecyclePolicyDefaultActionOnFailure[_]
    input.Body.instanceLifecyclePolicy.forceUpdateOnRepair == enum_InstanceGroupManagerInstanceLifecyclePolicyForceUpdateOnRepair[_]
    input.Body.instanceTemplate == STRING
    input.Body.kind == STRING
    input.Body.listManagedInstancesResults == enum_InstanceGroupManagerListManagedInstancesResults[_]
    input.Body.name == STRING
    input.Body.namedPorts[_].name == STRING
    input.Body.namedPorts[_].port == INTEGER
    input.Body.params.resourceManagerTags.STRING == STRING
    input.Body.region == STRING
    input.Body.selfLink == STRING
    input.Body.serviceAccount == STRING
    input.Body.standbyPolicy.initialDelaySec == INTEGER
    input.Body.standbyPolicy.mode == enum_InstanceGroupManagerStandbyPolicyMode[_]
    input.Body.statefulPolicy.preservedState.disks.STRING.autoDelete == enum_StatefulPolicyPreservedStateDiskDeviceAutoDelete[_]
    input.Body.statefulPolicy.preservedState.externalIPs.STRING.autoDelete == enum_StatefulPolicyPreservedStateNetworkIpAutoDelete[_]
    input.Body.statefulPolicy.preservedState.internalIPs.STRING.autoDelete == enum_StatefulPolicyPreservedStateNetworkIpAutoDelete[_]
    input.Body.status.allInstancesConfig.currentRevision == STRING
    input.Body.status.allInstancesConfig.effective == BOOLEAN
    input.Body.status.autoscaler == STRING
    input.Body.status.isStable == BOOLEAN
    input.Body.status.stateful.hasStatefulConfig == BOOLEAN
    input.Body.status.stateful.isStateful == BOOLEAN
    input.Body.status.stateful.perInstanceConfigs.allEffective == BOOLEAN
    input.Body.status.versionTarget.isReached == BOOLEAN
    input.Body.targetPools[_] == STRING
    input.Body.targetSize == INTEGER
    input.Body.targetStoppedSize == INTEGER
    input.Body.targetSuspendedSize == INTEGER
    input.Body.updatePolicy.instanceRedistributionType == enum_InstanceGroupManagerUpdatePolicyInstanceRedistributionType[_]
    input.Body.updatePolicy.maxSurge.calculated == INTEGER
    input.Body.updatePolicy.maxSurge.fixed == INTEGER
    input.Body.updatePolicy.maxSurge.percent == INTEGER
    input.Body.updatePolicy.maxUnavailable.calculated == INTEGER
    input.Body.updatePolicy.maxUnavailable.fixed == INTEGER
    input.Body.updatePolicy.maxUnavailable.percent == INTEGER
    input.Body.updatePolicy.minReadySec == INTEGER
    input.Body.updatePolicy.minimalAction == enum_InstanceGroupManagerUpdatePolicyMinimalAction[_]
    input.Body.updatePolicy.mostDisruptiveAllowedAction == enum_InstanceGroupManagerUpdatePolicyMostDisruptiveAllowedAction[_]
    input.Body.updatePolicy.replacementMethod == enum_InstanceGroupManagerUpdatePolicyReplacementMethod[_]
    input.Body.updatePolicy.type == enum_InstanceGroupManagerUpdatePolicyType[_]
    input.Body.versions[_].instanceTemplate == STRING
    input.Body.versions[_].name == STRING
    input.Body.versions[_].targetSize.calculated == INTEGER
    input.Body.versions[_].targetSize.fixed == INTEGER
    input.Body.versions[_].targetSize.percent == INTEGER
    input.Body.zone == STRING
    input.ReqMap.instanceGroupManager == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.zone == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.instanceGroupManagers.updatePerInstanceConfigs

enum_PerInstanceConfigStatus := [ "APPLYING", "DELETING", "EFFECTIVE", "NONE", "UNAPPLIED", "UNAPPLIED_DELETION" ]
enum_PreservedStatePreservedDiskAutoDelete := [ "NEVER", "ON_PERMANENT_INSTANCE_DELETION" ]
enum_PreservedStatePreservedDiskMode := [ "READ_ONLY", "READ_WRITE" ]
enum_PreservedStatePreservedNetworkIpAutoDelete := [ "NEVER", "ON_PERMANENT_INSTANCE_DELETION" ]

valid {
    input.Body.perInstanceConfigs[_].fingerprint == STRING
    input.Body.perInstanceConfigs[_].name == STRING
    input.Body.perInstanceConfigs[_].preservedState.disks.STRING.autoDelete == enum_PreservedStatePreservedDiskAutoDelete[_]
    input.Body.perInstanceConfigs[_].preservedState.disks.STRING.mode == enum_PreservedStatePreservedDiskMode[_]
    input.Body.perInstanceConfigs[_].preservedState.disks.STRING.source == STRING
    input.Body.perInstanceConfigs[_].preservedState.externalIPs.STRING.autoDelete == enum_PreservedStatePreservedNetworkIpAutoDelete[_]
    input.Body.perInstanceConfigs[_].preservedState.externalIPs.STRING.ipAddress.address == STRING
    input.Body.perInstanceConfigs[_].preservedState.externalIPs.STRING.ipAddress.literal == STRING
    input.Body.perInstanceConfigs[_].preservedState.internalIPs.STRING.autoDelete == enum_PreservedStatePreservedNetworkIpAutoDelete[_]
    input.Body.perInstanceConfigs[_].preservedState.internalIPs.STRING.ipAddress.address == STRING
    input.Body.perInstanceConfigs[_].preservedState.internalIPs.STRING.ipAddress.literal == STRING
    input.Body.perInstanceConfigs[_].preservedState.metadata.STRING == STRING
    input.Body.perInstanceConfigs[_].status == enum_PerInstanceConfigStatus[_]
    input.ReqMap.instanceGroupManager == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.zone == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.instanceGroups.addInstances

valid {
    input.Body.instances[_].instance == STRING
    input.ReqMap.instanceGroup == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.zone == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.instanceGroups.aggregatedList

valid {
    input.ReqMap.ProjectID == STRING
    input.Qs.filter == STRING
    input.Qs.includeAllScopes == BOOLEAN
    input.Qs.maxResults == INTEGER
    input.Qs.orderBy == STRING
    input.Qs.pageToken == STRING
    input.Qs.returnPartialSuccess == BOOLEAN
    input.Qs.serviceProjectNumber == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.instanceGroups.delete

valid {
    input.ReqMap.instanceGroup == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.zone == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.instanceGroups.get

valid {
    input.ReqMap.instanceGroup == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.zone == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.instanceGroups.insert

valid {
    input.Body.creationTimestamp == STRING
    input.Body.description == STRING
    input.Body.fingerprint == STRING
    input.Body.id == STRING
    input.Body.kind == STRING
    input.Body.name == STRING
    input.Body.namedPorts[_].name == STRING
    input.Body.namedPorts[_].port == INTEGER
    input.Body.network == STRING
    input.Body.region == STRING
    input.Body.selfLink == STRING
    input.Body.size == INTEGER
    input.Body.subnetwork == STRING
    input.Body.zone == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.zone == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.instanceGroups.list

valid {
    input.ReqMap.ProjectID == STRING
    input.ReqMap.zone == STRING
    input.Qs.filter == STRING
    input.Qs.maxResults == INTEGER
    input.Qs.orderBy == STRING
    input.Qs.pageToken == STRING
    input.Qs.returnPartialSuccess == BOOLEAN
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.instanceGroups.listInstances

enum_InstanceGroupsListInstancesRequestInstanceState := [ "ALL", "RUNNING" ]

valid {
    input.Body.instanceState == enum_InstanceGroupsListInstancesRequestInstanceState[_]
    input.ReqMap.instanceGroup == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.zone == STRING
    input.Qs.filter == STRING
    input.Qs.maxResults == INTEGER
    input.Qs.orderBy == STRING
    input.Qs.pageToken == STRING
    input.Qs.returnPartialSuccess == BOOLEAN
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.instanceGroups.removeInstances

valid {
    input.Body.instances[_].instance == STRING
    input.ReqMap.instanceGroup == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.zone == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.instanceGroups.setNamedPorts

valid {
    input.Body.fingerprint == STRING
    input.Body.namedPorts[_].name == STRING
    input.Body.namedPorts[_].port == INTEGER
    input.ReqMap.instanceGroup == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.zone == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.instanceGroups.testIamPermissions

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

compute.instanceSettings.get

valid {
    input.ReqMap.ProjectID == STRING
    input.ReqMap.zone == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.instanceSettings.patch

valid {
    input.Body.fingerprint == STRING
    input.Body.kind == STRING
    input.Body.metadata.items.STRING == STRING
    input.Body.metadata.kind == STRING
    input.Body.zone == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.zone == STRING
    input.Qs.requestId == STRING
    input.Qs.updateMask == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.instanceTemplates.aggregatedList

valid {
    input.ReqMap.ProjectID == STRING
    input.Qs.filter == STRING
    input.Qs.includeAllScopes == BOOLEAN
    input.Qs.maxResults == INTEGER
    input.Qs.orderBy == STRING
    input.Qs.pageToken == STRING
    input.Qs.returnPartialSuccess == BOOLEAN
    input.Qs.serviceProjectNumber == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.instanceTemplates.delete

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

compute.instanceTemplates.get

valid {
    input.ReqMap.instanceTemplate == STRING
    input.ReqMap.ProjectID == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.instanceTemplates.getIamPolicy

valid {
    input.ReqMap.ProjectID == STRING
    input.ReqMap.resource == STRING
    input.Qs.optionsRequestedPolicyVersion == INTEGER
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.instanceTemplates.insert

enum_AccessConfigNetworkTier := [ "FIXED_STANDARD", "PREMIUM", "STANDARD", "STANDARD_OVERRIDES_FIXED_STANDARD" ]
enum_AccessConfigType := [ "DIRECT_IPV6", "ONE_TO_ONE_NAT" ]
enum_AttachedDiskArchitecture := [ "ARCHITECTURE_UNSPECIFIED", "ARM64", "X86_64" ]
enum_AttachedDiskInitializeParamsArchitecture := [ "ARCHITECTURE_UNSPECIFIED", "ARM64", "X86_64" ]
enum_AttachedDiskInitializeParamsOnUpdateAction := [ "RECREATE_DISK", "RECREATE_DISK_IF_SOURCE_CHANGED", "USE_EXISTING_DISK" ]
enum_AttachedDiskInterface := [ "NVME", "SCSI" ]
enum_AttachedDiskMode := [ "READ_ONLY", "READ_WRITE" ]
enum_AttachedDiskSavedState := [ "DISK_SAVED_STATE_UNSPECIFIED", "PRESERVED" ]
enum_AttachedDiskType := [ "PERSISTENT", "SCRATCH" ]
enum_DiskInstantiationConfigInstantiateFrom := [ "ATTACH_READ_ONLY", "BLANK", "CUSTOM_IMAGE", "DEFAULT", "DO_NOT_INCLUDE", "SOURCE_IMAGE", "SOURCE_IMAGE_FAMILY" ]
enum_FileContentBufferFileType := [ "BIN", "UNDEFINED", "X509" ]
enum_GuestOsFeatureType := [ "FEATURE_TYPE_UNSPECIFIED", "GVNIC", "IDPF", "MULTI_IP_SUBNET", "SECURE_BOOT", "SEV_CAPABLE", "SEV_LIVE_MIGRATABLE", "SEV_LIVE_MIGRATABLE_V2", "SEV_SNP_CAPABLE", "UEFI_COMPATIBLE", "VIRTIO_SCSI_MULTIQUEUE", "WINDOWS" ]
enum_InstancePropertiesKeyRevocationActionType := [ "KEY_REVOCATION_ACTION_TYPE_UNSPECIFIED", "NONE", "STOP" ]
enum_InstancePropertiesPrivateIpv6GoogleAccess := [ "ENABLE_BIDIRECTIONAL_ACCESS_TO_GOOGLE", "ENABLE_OUTBOUND_VM_ACCESS_TO_GOOGLE", "INHERIT_FROM_SUBNETWORK" ]
enum_NetworkInterfaceIpv6AccessType := [ "EXTERNAL", "INTERNAL" ]
enum_NetworkInterfaceNicType := [ "GVNIC", "UNSPECIFIED_NIC_TYPE", "VIRTIO_NET" ]
enum_NetworkInterfaceStackType := [ "IPV4_IPV6", "IPV4_ONLY" ]
enum_NetworkPerformanceConfigTotalEgressBandwidthTier := [ "DEFAULT", "TIER_1" ]
enum_ReservationAffinityConsumeReservationType := [ "ANY_RESERVATION", "NO_RESERVATION", "SPECIFIC_RESERVATION", "UNSPECIFIED" ]
enum_SchedulingInstanceTerminationAction := [ "DELETE", "INSTANCE_TERMINATION_ACTION_UNSPECIFIED", "STOP" ]
enum_SchedulingNodeAffinityOperator := [ "IN", "NOT_IN", "OPERATOR_UNSPECIFIED" ]
enum_SchedulingOnHostMaintenance := [ "MIGRATE", "TERMINATE" ]
enum_SchedulingProvisioningModel := [ "SPOT", "STANDARD" ]

valid {
    input.Body.creationTimestamp == STRING
    input.Body.description == STRING
    input.Body.id == STRING
    input.Body.kind == STRING
    input.Body.name == STRING
    input.Body.properties.advancedMachineFeatures.enableNestedVirtualization == BOOLEAN
    input.Body.properties.advancedMachineFeatures.enableUefiNetworking == BOOLEAN
    input.Body.properties.advancedMachineFeatures.threadsPerCore == INTEGER
    input.Body.properties.advancedMachineFeatures.visibleCoreCount == INTEGER
    input.Body.properties.canIpForward == BOOLEAN
    input.Body.properties.confidentialInstanceConfig.enableConfidentialCompute == BOOLEAN
    input.Body.properties.description == STRING
    input.Body.properties.disks[_].architecture == enum_AttachedDiskArchitecture[_]
    input.Body.properties.disks[_].autoDelete == BOOLEAN
    input.Body.properties.disks[_].boot == BOOLEAN
    input.Body.properties.disks[_].deviceName == STRING
    input.Body.properties.disks[_].diskEncryptionKey.kmsKeyName == STRING
    input.Body.properties.disks[_].diskEncryptionKey.kmsKeyServiceAccount == STRING
    input.Body.properties.disks[_].diskEncryptionKey.rawKey == STRING
    input.Body.properties.disks[_].diskEncryptionKey.rsaEncryptedKey == STRING
    input.Body.properties.disks[_].diskEncryptionKey.sha256 == STRING
    input.Body.properties.disks[_].diskSizeGb == STRING
    input.Body.properties.disks[_].forceAttach == BOOLEAN
    input.Body.properties.disks[_].guestOsFeatures[_].type == enum_GuestOsFeatureType[_]
    input.Body.properties.disks[_].index == INTEGER
    input.Body.properties.disks[_].initializeParams.architecture == enum_AttachedDiskInitializeParamsArchitecture[_]
    input.Body.properties.disks[_].initializeParams.description == STRING
    input.Body.properties.disks[_].initializeParams.diskName == STRING
    input.Body.properties.disks[_].initializeParams.diskSizeGb == STRING
    input.Body.properties.disks[_].initializeParams.diskType == STRING
    input.Body.properties.disks[_].initializeParams.enableConfidentialCompute == BOOLEAN
    input.Body.properties.disks[_].initializeParams.labels.STRING == STRING
    input.Body.properties.disks[_].initializeParams.licenses[_] == STRING
    input.Body.properties.disks[_].initializeParams.onUpdateAction == enum_AttachedDiskInitializeParamsOnUpdateAction[_]
    input.Body.properties.disks[_].initializeParams.provisionedIops == STRING
    input.Body.properties.disks[_].initializeParams.provisionedThroughput == STRING
    input.Body.properties.disks[_].initializeParams.replicaZones[_] == STRING
    input.Body.properties.disks[_].initializeParams.resourceManagerTags.STRING == STRING
    input.Body.properties.disks[_].initializeParams.resourcePolicies[_] == STRING
    input.Body.properties.disks[_].initializeParams.sourceImage == STRING
    input.Body.properties.disks[_].initializeParams.sourceImageEncryptionKey.kmsKeyName == STRING
    input.Body.properties.disks[_].initializeParams.sourceImageEncryptionKey.kmsKeyServiceAccount == STRING
    input.Body.properties.disks[_].initializeParams.sourceImageEncryptionKey.rawKey == STRING
    input.Body.properties.disks[_].initializeParams.sourceImageEncryptionKey.rsaEncryptedKey == STRING
    input.Body.properties.disks[_].initializeParams.sourceImageEncryptionKey.sha256 == STRING
    input.Body.properties.disks[_].initializeParams.sourceSnapshot == STRING
    input.Body.properties.disks[_].initializeParams.sourceSnapshotEncryptionKey.kmsKeyName == STRING
    input.Body.properties.disks[_].initializeParams.sourceSnapshotEncryptionKey.kmsKeyServiceAccount == STRING
    input.Body.properties.disks[_].initializeParams.sourceSnapshotEncryptionKey.rawKey == STRING
    input.Body.properties.disks[_].initializeParams.sourceSnapshotEncryptionKey.rsaEncryptedKey == STRING
    input.Body.properties.disks[_].initializeParams.sourceSnapshotEncryptionKey.sha256 == STRING
    input.Body.properties.disks[_].initializeParams.storagePool == STRING
    input.Body.properties.disks[_].interface == enum_AttachedDiskInterface[_]
    input.Body.properties.disks[_].kind == STRING
    input.Body.properties.disks[_].licenses[_] == STRING
    input.Body.properties.disks[_].mode == enum_AttachedDiskMode[_]
    input.Body.properties.disks[_].savedState == enum_AttachedDiskSavedState[_]
    input.Body.properties.disks[_].shieldedInstanceInitialState.dbs[_].content == STRING
    input.Body.properties.disks[_].shieldedInstanceInitialState.dbs[_].fileType == enum_FileContentBufferFileType[_]
    input.Body.properties.disks[_].shieldedInstanceInitialState.dbxs[_].content == STRING
    input.Body.properties.disks[_].shieldedInstanceInitialState.dbxs[_].fileType == enum_FileContentBufferFileType[_]
    input.Body.properties.disks[_].shieldedInstanceInitialState.keks[_].content == STRING
    input.Body.properties.disks[_].shieldedInstanceInitialState.keks[_].fileType == enum_FileContentBufferFileType[_]
    input.Body.properties.disks[_].shieldedInstanceInitialState.pk.content == STRING
    input.Body.properties.disks[_].shieldedInstanceInitialState.pk.fileType == enum_FileContentBufferFileType[_]
    input.Body.properties.disks[_].source == STRING
    input.Body.properties.disks[_].type == enum_AttachedDiskType[_]
    input.Body.properties.guestAccelerators[_].acceleratorCount == INTEGER
    input.Body.properties.guestAccelerators[_].acceleratorType == STRING
    input.Body.properties.keyRevocationActionType == enum_InstancePropertiesKeyRevocationActionType[_]
    input.Body.properties.labels.STRING == STRING
    input.Body.properties.machineType == STRING
    input.Body.properties.metadata.fingerprint == STRING
    input.Body.properties.metadata.items[_].key == STRING
    input.Body.properties.metadata.items[_].value == STRING
    input.Body.properties.metadata.kind == STRING
    input.Body.properties.minCpuPlatform == STRING
    input.Body.properties.networkInterfaces[_].accessConfigs[_].externalIpv6 == STRING
    input.Body.properties.networkInterfaces[_].accessConfigs[_].externalIpv6PrefixLength == INTEGER
    input.Body.properties.networkInterfaces[_].accessConfigs[_].kind == STRING
    input.Body.properties.networkInterfaces[_].accessConfigs[_].name == STRING
    input.Body.properties.networkInterfaces[_].accessConfigs[_].natIP == STRING
    input.Body.properties.networkInterfaces[_].accessConfigs[_].networkTier == enum_AccessConfigNetworkTier[_]
    input.Body.properties.networkInterfaces[_].accessConfigs[_].publicPtrDomainName == STRING
    input.Body.properties.networkInterfaces[_].accessConfigs[_].securityPolicy == STRING
    input.Body.properties.networkInterfaces[_].accessConfigs[_].setPublicPtr == BOOLEAN
    input.Body.properties.networkInterfaces[_].accessConfigs[_].type == enum_AccessConfigType[_]
    input.Body.properties.networkInterfaces[_].aliasIpRanges[_].ipCidrRange == STRING
    input.Body.properties.networkInterfaces[_].aliasIpRanges[_].subnetworkRangeName == STRING
    input.Body.properties.networkInterfaces[_].fingerprint == STRING
    input.Body.properties.networkInterfaces[_].internalIpv6PrefixLength == INTEGER
    input.Body.properties.networkInterfaces[_].ipv6AccessConfigs[_].externalIpv6 == STRING
    input.Body.properties.networkInterfaces[_].ipv6AccessConfigs[_].externalIpv6PrefixLength == INTEGER
    input.Body.properties.networkInterfaces[_].ipv6AccessConfigs[_].kind == STRING
    input.Body.properties.networkInterfaces[_].ipv6AccessConfigs[_].name == STRING
    input.Body.properties.networkInterfaces[_].ipv6AccessConfigs[_].natIP == STRING
    input.Body.properties.networkInterfaces[_].ipv6AccessConfigs[_].networkTier == enum_AccessConfigNetworkTier[_]
    input.Body.properties.networkInterfaces[_].ipv6AccessConfigs[_].publicPtrDomainName == STRING
    input.Body.properties.networkInterfaces[_].ipv6AccessConfigs[_].securityPolicy == STRING
    input.Body.properties.networkInterfaces[_].ipv6AccessConfigs[_].setPublicPtr == BOOLEAN
    input.Body.properties.networkInterfaces[_].ipv6AccessConfigs[_].type == enum_AccessConfigType[_]
    input.Body.properties.networkInterfaces[_].ipv6AccessType == enum_NetworkInterfaceIpv6AccessType[_]
    input.Body.properties.networkInterfaces[_].ipv6Address == STRING
    input.Body.properties.networkInterfaces[_].kind == STRING
    input.Body.properties.networkInterfaces[_].name == STRING
    input.Body.properties.networkInterfaces[_].network == STRING
    input.Body.properties.networkInterfaces[_].networkAttachment == STRING
    input.Body.properties.networkInterfaces[_].networkIP == STRING
    input.Body.properties.networkInterfaces[_].nicType == enum_NetworkInterfaceNicType[_]
    input.Body.properties.networkInterfaces[_].queueCount == INTEGER
    input.Body.properties.networkInterfaces[_].stackType == enum_NetworkInterfaceStackType[_]
    input.Body.properties.networkInterfaces[_].subnetwork == STRING
    input.Body.properties.networkPerformanceConfig.totalEgressBandwidthTier == enum_NetworkPerformanceConfigTotalEgressBandwidthTier[_]
    input.Body.properties.privateIpv6GoogleAccess == enum_InstancePropertiesPrivateIpv6GoogleAccess[_]
    input.Body.properties.reservationAffinity.consumeReservationType == enum_ReservationAffinityConsumeReservationType[_]
    input.Body.properties.reservationAffinity.key == STRING
    input.Body.properties.reservationAffinity.values[_] == STRING
    input.Body.properties.resourceManagerTags.STRING == STRING
    input.Body.properties.resourcePolicies[_] == STRING
    input.Body.properties.scheduling.automaticRestart == BOOLEAN
    input.Body.properties.scheduling.instanceTerminationAction == enum_SchedulingInstanceTerminationAction[_]
    input.Body.properties.scheduling.localSsdRecoveryTimeout.nanos == INTEGER
    input.Body.properties.scheduling.localSsdRecoveryTimeout.seconds == STRING
    input.Body.properties.scheduling.locationHint == STRING
    input.Body.properties.scheduling.minNodeCpus == INTEGER
    input.Body.properties.scheduling.nodeAffinities[_].key == STRING
    input.Body.properties.scheduling.nodeAffinities[_].operator == enum_SchedulingNodeAffinityOperator[_]
    input.Body.properties.scheduling.nodeAffinities[_].values[_] == STRING
    input.Body.properties.scheduling.onHostMaintenance == enum_SchedulingOnHostMaintenance[_]
    input.Body.properties.scheduling.preemptible == BOOLEAN
    input.Body.properties.scheduling.provisioningModel == enum_SchedulingProvisioningModel[_]
    input.Body.properties.serviceAccounts[_].email == STRING
    input.Body.properties.serviceAccounts[_].scopes[_] == STRING
    input.Body.properties.shieldedInstanceConfig.enableIntegrityMonitoring == BOOLEAN
    input.Body.properties.shieldedInstanceConfig.enableSecureBoot == BOOLEAN
    input.Body.properties.shieldedInstanceConfig.enableVtpm == BOOLEAN
    input.Body.properties.tags.fingerprint == STRING
    input.Body.properties.tags.items[_] == STRING
    input.Body.region == STRING
    input.Body.selfLink == STRING
    input.Body.sourceInstance == STRING
    input.Body.sourceInstanceParams.diskConfigs[_].autoDelete == BOOLEAN
    input.Body.sourceInstanceParams.diskConfigs[_].customImage == STRING
    input.Body.sourceInstanceParams.diskConfigs[_].deviceName == STRING
    input.Body.sourceInstanceParams.diskConfigs[_].instantiateFrom == enum_DiskInstantiationConfigInstantiateFrom[_]
    input.ReqMap.ProjectID == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.instanceTemplates.list

valid {
    input.ReqMap.ProjectID == STRING
    input.Qs.filter == STRING
    input.Qs.maxResults == INTEGER
    input.Qs.orderBy == STRING
    input.Qs.pageToken == STRING
    input.Qs.returnPartialSuccess == BOOLEAN
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.instanceTemplates.setIamPolicy

enum_AuditLogConfigLogType := [ "ADMIN_READ", "DATA_READ", "DATA_WRITE", "LOG_TYPE_UNSPECIFIED" ]
enum_AuthorizationLoggingOptionsPermissionType := [ "ADMIN_READ", "ADMIN_WRITE", "DATA_READ", "DATA_WRITE", "PERMISSION_TYPE_UNSPECIFIED" ]
enum_ConditionIam := [ "APPROVER", "ATTRIBUTION", "AUTHORITY", "CREDENTIALS_TYPE", "CREDS_ASSERTION", "JUSTIFICATION_TYPE", "NO_ATTR", "SECURITY_REALM" ]
enum_ConditionOp := [ "DISCHARGED", "EQUALS", "IN", "NOT_EQUALS", "NOT_IN", "NO_OP" ]
enum_ConditionSys := [ "IP", "NAME", "NO_ATTR", "REGION", "SERVICE" ]
enum_LogConfigCloudAuditOptionsLogName := [ "ADMIN_ACTIVITY", "DATA_ACCESS", "UNSPECIFIED_LOG_NAME" ]
enum_LogConfigDataAccessOptionsLogMode := [ "LOG_FAIL_CLOSED", "LOG_MODE_UNSPECIFIED" ]
enum_RuleAction := [ "ALLOW", "ALLOW_WITH_LOG", "DENY", "DENY_WITH_LOG", "LOG", "NO_ACTION" ]

valid {
    input.Body.bindings[_].bindingId == STRING
    input.Body.bindings[_].condition.description == STRING
    input.Body.bindings[_].condition.expression == STRING
    input.Body.bindings[_].condition.location == STRING
    input.Body.bindings[_].condition.title == STRING
    input.Body.bindings[_].members[_] == STRING
    input.Body.bindings[_].role == STRING
    input.Body.etag == STRING
    input.Body.policy.auditConfigs[_].auditLogConfigs[_].exemptedMembers[_] == STRING
    input.Body.policy.auditConfigs[_].auditLogConfigs[_].ignoreChildExemptions == BOOLEAN
    input.Body.policy.auditConfigs[_].auditLogConfigs[_].logType == enum_AuditLogConfigLogType[_]
    input.Body.policy.auditConfigs[_].exemptedMembers[_] == STRING
    input.Body.policy.auditConfigs[_].service == STRING
    input.Body.policy.bindings[_].bindingId == 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.rules[_].action == enum_RuleAction[_]
    input.Body.policy.rules[_].conditions[_].iam == enum_ConditionIam[_]
    input.Body.policy.rules[_].conditions[_].op == enum_ConditionOp[_]
    input.Body.policy.rules[_].conditions[_].svc == STRING
    input.Body.policy.rules[_].conditions[_].sys == enum_ConditionSys[_]
    input.Body.policy.rules[_].conditions[_].values[_] == STRING
    input.Body.policy.rules[_].description == STRING
    input.Body.policy.rules[_].ins[_] == STRING
    input.Body.policy.rules[_].logConfigs[_].cloudAudit.authorizationLoggingOptions.permissionType == enum_AuthorizationLoggingOptionsPermissionType[_]
    input.Body.policy.rules[_].logConfigs[_].cloudAudit.logName == enum_LogConfigCloudAuditOptionsLogName[_]
    input.Body.policy.rules[_].logConfigs[_].counter.customFields[_].name == STRING
    input.Body.policy.rules[_].logConfigs[_].counter.customFields[_].value == STRING
    input.Body.policy.rules[_].logConfigs[_].counter.field == STRING
    input.Body.policy.rules[_].logConfigs[_].counter.metric == STRING
    input.Body.policy.rules[_].logConfigs[_].dataAccess.logMode == enum_LogConfigDataAccessOptionsLogMode[_]
    input.Body.policy.rules[_].notIns[_] == STRING
    input.Body.policy.rules[_].permissions[_] == STRING
    input.Body.policy.version == INTEGER
    input.ReqMap.ProjectID == STRING
    input.ReqMap.resource == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.instanceTemplates.testIamPermissions

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

compute.instances.addAccessConfig

enum_AccessConfigNetworkTier := [ "FIXED_STANDARD", "PREMIUM", "STANDARD", "STANDARD_OVERRIDES_FIXED_STANDARD" ]
enum_AccessConfigType := [ "DIRECT_IPV6", "ONE_TO_ONE_NAT" ]

valid {
    input.Body.externalIpv6 == STRING
    input.Body.externalIpv6PrefixLength == INTEGER
    input.Body.kind == STRING
    input.Body.name == STRING
    input.Body.natIP == STRING
    input.Body.networkTier == enum_AccessConfigNetworkTier[_]
    input.Body.publicPtrDomainName == STRING
    input.Body.securityPolicy == STRING
    input.Body.setPublicPtr == BOOLEAN
    input.Body.type == enum_AccessConfigType[_]
    input.ReqMap.instance == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.zone == STRING
    input.Qs.networkInterface == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.instances.addNetworkInterface

enum_AccessConfigNetworkTier := [ "FIXED_STANDARD", "PREMIUM", "SELECT", "STANDARD", "STANDARD_OVERRIDES_FIXED_STANDARD" ]
enum_AccessConfigType := [ "DIRECT_IPV6", "ONE_TO_ONE_NAT" ]
enum_NetworkInterfaceIgmpQuery := [ "IGMP_QUERY_DISABLED", "IGMP_QUERY_V2" ]
enum_NetworkInterfaceIpv6AccessType := [ "EXTERNAL", "INTERNAL" ]
enum_NetworkInterfaceNicType := [ "GVNIC", "IDPF", "UNSPECIFIED_NIC_TYPE", "VIRTIO_NET" ]
enum_NetworkInterfaceStackType := [ "IPV4_IPV6", "IPV4_ONLY", "IPV6_ONLY" ]
enum_NetworkInterfaceSubInterfaceIpAllocationMode := [ "ALLOCATE_IP", "DO_NOT_ALLOCATE_IP", "UNSPECIFIED" ]

valid {
    input.Body.accessConfigs[_].externalIpv6 == STRING
    input.Body.accessConfigs[_].externalIpv6PrefixLength == INTEGER
    input.Body.accessConfigs[_].kind == STRING
    input.Body.accessConfigs[_].name == STRING
    input.Body.accessConfigs[_].natIP == STRING
    input.Body.accessConfigs[_].networkTier == enum_AccessConfigNetworkTier[_]
    input.Body.accessConfigs[_].publicDnsName == STRING
    input.Body.accessConfigs[_].publicPtrDomainName == STRING
    input.Body.accessConfigs[_].securityPolicy == STRING
    input.Body.accessConfigs[_].setPublicDns == BOOLEAN
    input.Body.accessConfigs[_].setPublicPtr == BOOLEAN
    input.Body.accessConfigs[_].type == enum_AccessConfigType[_]
    input.Body.aliasIpRanges[_].ipCidrRange == STRING
    input.Body.aliasIpRanges[_].subnetworkRangeName == STRING
    input.Body.fingerprint == STRING
    input.Body.igmpQuery == enum_NetworkInterfaceIgmpQuery[_]
    input.Body.internalIpv6PrefixLength == INTEGER
    input.Body.ipv6AccessConfigs[_].externalIpv6 == STRING
    input.Body.ipv6AccessConfigs[_].externalIpv6PrefixLength == INTEGER
    input.Body.ipv6AccessConfigs[_].kind == STRING
    input.Body.ipv6AccessConfigs[_].name == STRING
    input.Body.ipv6AccessConfigs[_].natIP == STRING
    input.Body.ipv6AccessConfigs[_].networkTier == enum_AccessConfigNetworkTier[_]
    input.Body.ipv6AccessConfigs[_].publicDnsName == STRING
    input.Body.ipv6AccessConfigs[_].publicPtrDomainName == STRING
    input.Body.ipv6AccessConfigs[_].securityPolicy == STRING
    input.Body.ipv6AccessConfigs[_].setPublicDns == BOOLEAN
    input.Body.ipv6AccessConfigs[_].setPublicPtr == BOOLEAN
    input.Body.ipv6AccessConfigs[_].type == enum_AccessConfigType[_]
    input.Body.ipv6AccessType == enum_NetworkInterfaceIpv6AccessType[_]
    input.Body.ipv6Address == STRING
    input.Body.kind == STRING
    input.Body.name == STRING
    input.Body.network == STRING
    input.Body.networkAttachment == STRING
    input.Body.networkIP == STRING
    input.Body.nicType == enum_NetworkInterfaceNicType[_]
    input.Body.parentNicName == STRING
    input.Body.queueCount == INTEGER
    input.Body.stackType == enum_NetworkInterfaceStackType[_]
    input.Body.subinterfaces[_].ipAddress == STRING
    input.Body.subinterfaces[_].ipAllocationMode == enum_NetworkInterfaceSubInterfaceIpAllocationMode[_]
    input.Body.subinterfaces[_].subnetwork == STRING
    input.Body.subinterfaces[_].vlan == INTEGER
    input.Body.subnetwork == STRING
    input.Body.vlan == INTEGER
    input.ReqMap.instance == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.zone == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.instances.addResourcePolicies

valid {
    input.Body.resourcePolicies[_] == STRING
    input.ReqMap.instance == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.zone == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.instances.aggregatedList

valid {
    input.ReqMap.ProjectID == STRING
    input.Qs.filter == STRING
    input.Qs.includeAllScopes == BOOLEAN
    input.Qs.maxResults == INTEGER
    input.Qs.orderBy == STRING
    input.Qs.pageToken == STRING
    input.Qs.returnPartialSuccess == BOOLEAN
    input.Qs.serviceProjectNumber == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.instances.attachDisk

enum_AttachedDiskArchitecture := [ "ARCHITECTURE_UNSPECIFIED", "ARM64", "X86_64" ]
enum_AttachedDiskInitializeParamsArchitecture := [ "ARCHITECTURE_UNSPECIFIED", "ARM64", "X86_64" ]
enum_AttachedDiskInitializeParamsOnUpdateAction := [ "RECREATE_DISK", "RECREATE_DISK_IF_SOURCE_CHANGED", "USE_EXISTING_DISK" ]
enum_AttachedDiskInterface := [ "NVME", "SCSI" ]
enum_AttachedDiskMode := [ "READ_ONLY", "READ_WRITE" ]
enum_AttachedDiskSavedState := [ "DISK_SAVED_STATE_UNSPECIFIED", "PRESERVED" ]
enum_AttachedDiskType := [ "PERSISTENT", "SCRATCH" ]
enum_FileContentBufferFileType := [ "BIN", "UNDEFINED", "X509" ]
enum_GuestOsFeatureType := [ "FEATURE_TYPE_UNSPECIFIED", "GVNIC", "IDPF", "MULTI_IP_SUBNET", "SECURE_BOOT", "SEV_CAPABLE", "SEV_LIVE_MIGRATABLE", "SEV_LIVE_MIGRATABLE_V2", "SEV_SNP_CAPABLE", "UEFI_COMPATIBLE", "VIRTIO_SCSI_MULTIQUEUE", "WINDOWS" ]

valid {
    input.Body.architecture == enum_AttachedDiskArchitecture[_]
    input.Body.autoDelete == BOOLEAN
    input.Body.boot == BOOLEAN
    input.Body.deviceName == STRING
    input.Body.diskEncryptionKey.kmsKeyName == STRING
    input.Body.diskEncryptionKey.kmsKeyServiceAccount == STRING
    input.Body.diskEncryptionKey.rawKey == STRING
    input.Body.diskEncryptionKey.rsaEncryptedKey == STRING
    input.Body.diskEncryptionKey.sha256 == STRING
    input.Body.diskSizeGb == STRING
    input.Body.forceAttach == BOOLEAN
    input.Body.guestOsFeatures[_].type == enum_GuestOsFeatureType[_]
    input.Body.index == INTEGER
    input.Body.initializeParams.architecture == enum_AttachedDiskInitializeParamsArchitecture[_]
    input.Body.initializeParams.description == STRING
    input.Body.initializeParams.diskName == STRING
    input.Body.initializeParams.diskSizeGb == STRING
    input.Body.initializeParams.diskType == STRING
    input.Body.initializeParams.enableConfidentialCompute == BOOLEAN
    input.Body.initializeParams.labels.STRING == STRING
    input.Body.initializeParams.licenses[_] == STRING
    input.Body.initializeParams.onUpdateAction == enum_AttachedDiskInitializeParamsOnUpdateAction[_]
    input.Body.initializeParams.provisionedIops == STRING
    input.Body.initializeParams.provisionedThroughput == STRING
    input.Body.initializeParams.replicaZones[_] == STRING
    input.Body.initializeParams.resourceManagerTags.STRING == STRING
    input.Body.initializeParams.resourcePolicies[_] == STRING
    input.Body.initializeParams.sourceImage == STRING
    input.Body.initializeParams.sourceImageEncryptionKey.kmsKeyName == STRING
    input.Body.initializeParams.sourceImageEncryptionKey.kmsKeyServiceAccount == STRING
    input.Body.initializeParams.sourceImageEncryptionKey.rawKey == STRING
    input.Body.initializeParams.sourceImageEncryptionKey.rsaEncryptedKey == STRING
    input.Body.initializeParams.sourceImageEncryptionKey.sha256 == STRING
    input.Body.initializeParams.sourceSnapshot == STRING
    input.Body.initializeParams.sourceSnapshotEncryptionKey.kmsKeyName == STRING
    input.Body.initializeParams.sourceSnapshotEncryptionKey.kmsKeyServiceAccount == STRING
    input.Body.initializeParams.sourceSnapshotEncryptionKey.rawKey == STRING
    input.Body.initializeParams.sourceSnapshotEncryptionKey.rsaEncryptedKey == STRING
    input.Body.initializeParams.sourceSnapshotEncryptionKey.sha256 == STRING
    input.Body.initializeParams.storagePool == STRING
    input.Body.interface == enum_AttachedDiskInterface[_]
    input.Body.kind == STRING
    input.Body.licenses[_] == STRING
    input.Body.mode == enum_AttachedDiskMode[_]
    input.Body.savedState == enum_AttachedDiskSavedState[_]
    input.Body.shieldedInstanceInitialState.dbs[_].content == STRING
    input.Body.shieldedInstanceInitialState.dbs[_].fileType == enum_FileContentBufferFileType[_]
    input.Body.shieldedInstanceInitialState.dbxs[_].content == STRING
    input.Body.shieldedInstanceInitialState.dbxs[_].fileType == enum_FileContentBufferFileType[_]
    input.Body.shieldedInstanceInitialState.keks[_].content == STRING
    input.Body.shieldedInstanceInitialState.keks[_].fileType == enum_FileContentBufferFileType[_]
    input.Body.shieldedInstanceInitialState.pk.content == STRING
    input.Body.shieldedInstanceInitialState.pk.fileType == enum_FileContentBufferFileType[_]
    input.Body.source == STRING
    input.Body.type == enum_AttachedDiskType[_]
    input.ReqMap.instance == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.zone == STRING
    input.Qs.forceAttach == BOOLEAN
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.instances.bulkInsert

enum_AccessConfigNetworkTier := [ "FIXED_STANDARD", "PREMIUM", "STANDARD", "STANDARD_OVERRIDES_FIXED_STANDARD" ]
enum_AccessConfigType := [ "DIRECT_IPV6", "ONE_TO_ONE_NAT" ]
enum_AttachedDiskArchitecture := [ "ARCHITECTURE_UNSPECIFIED", "ARM64", "X86_64" ]
enum_AttachedDiskInitializeParamsArchitecture := [ "ARCHITECTURE_UNSPECIFIED", "ARM64", "X86_64" ]
enum_AttachedDiskInitializeParamsOnUpdateAction := [ "RECREATE_DISK", "RECREATE_DISK_IF_SOURCE_CHANGED", "USE_EXISTING_DISK" ]
enum_AttachedDiskInterface := [ "NVME", "SCSI" ]
enum_AttachedDiskMode := [ "READ_ONLY", "READ_WRITE" ]
enum_AttachedDiskSavedState := [ "DISK_SAVED_STATE_UNSPECIFIED", "PRESERVED" ]
enum_AttachedDiskType := [ "PERSISTENT", "SCRATCH" ]
enum_FileContentBufferFileType := [ "BIN", "UNDEFINED", "X509" ]
enum_GuestOsFeatureType := [ "FEATURE_TYPE_UNSPECIFIED", "GVNIC", "IDPF", "MULTI_IP_SUBNET", "SECURE_BOOT", "SEV_CAPABLE", "SEV_LIVE_MIGRATABLE", "SEV_LIVE_MIGRATABLE_V2", "SEV_SNP_CAPABLE", "UEFI_COMPATIBLE", "VIRTIO_SCSI_MULTIQUEUE", "WINDOWS" ]
enum_InstancePropertiesKeyRevocationActionType := [ "KEY_REVOCATION_ACTION_TYPE_UNSPECIFIED", "NONE", "STOP" ]
enum_InstancePropertiesPrivateIpv6GoogleAccess := [ "ENABLE_BIDIRECTIONAL_ACCESS_TO_GOOGLE", "ENABLE_OUTBOUND_VM_ACCESS_TO_GOOGLE", "INHERIT_FROM_SUBNETWORK" ]
enum_LocationPolicyLocationPreference := [ "ALLOW", "DENY", "PREFERENCE_UNSPECIFIED" ]
enum_LocationPolicyTargetShape := [ "ANY", "ANY_SINGLE_ZONE", "BALANCED" ]
enum_NetworkInterfaceIpv6AccessType := [ "EXTERNAL", "INTERNAL" ]
enum_NetworkInterfaceNicType := [ "GVNIC", "UNSPECIFIED_NIC_TYPE", "VIRTIO_NET" ]
enum_NetworkInterfaceStackType := [ "IPV4_IPV6", "IPV4_ONLY" ]
enum_NetworkPerformanceConfigTotalEgressBandwidthTier := [ "DEFAULT", "TIER_1" ]
enum_ReservationAffinityConsumeReservationType := [ "ANY_RESERVATION", "NO_RESERVATION", "SPECIFIC_RESERVATION", "UNSPECIFIED" ]
enum_SchedulingInstanceTerminationAction := [ "DELETE", "INSTANCE_TERMINATION_ACTION_UNSPECIFIED", "STOP" ]
enum_SchedulingNodeAffinityOperator := [ "IN", "NOT_IN", "OPERATOR_UNSPECIFIED" ]
enum_SchedulingOnHostMaintenance := [ "MIGRATE", "TERMINATE" ]
enum_SchedulingProvisioningModel := [ "SPOT", "STANDARD" ]

valid {
    input.Body.count == STRING
    input.Body.instanceProperties.advancedMachineFeatures.enableNestedVirtualization == BOOLEAN
    input.Body.instanceProperties.advancedMachineFeatures.enableUefiNetworking == BOOLEAN
    input.Body.instanceProperties.advancedMachineFeatures.threadsPerCore == INTEGER
    input.Body.instanceProperties.advancedMachineFeatures.visibleCoreCount == INTEGER
    input.Body.instanceProperties.canIpForward == BOOLEAN
    input.Body.instanceProperties.confidentialInstanceConfig.enableConfidentialCompute == BOOLEAN
    input.Body.instanceProperties.description == STRING
    input.Body.instanceProperties.disks[_].architecture == enum_AttachedDiskArchitecture[_]
    input.Body.instanceProperties.disks[_].autoDelete == BOOLEAN
    input.Body.instanceProperties.disks[_].boot == BOOLEAN
    input.Body.instanceProperties.disks[_].deviceName == STRING
    input.Body.instanceProperties.disks[_].diskEncryptionKey.kmsKeyName == STRING
    input.Body.instanceProperties.disks[_].diskEncryptionKey.kmsKeyServiceAccount == STRING
    input.Body.instanceProperties.disks[_].diskEncryptionKey.rawKey == STRING
    input.Body.instanceProperties.disks[_].diskEncryptionKey.rsaEncryptedKey == STRING
    input.Body.instanceProperties.disks[_].diskEncryptionKey.sha256 == STRING
    input.Body.instanceProperties.disks[_].diskSizeGb == STRING
    input.Body.instanceProperties.disks[_].forceAttach == BOOLEAN
    input.Body.instanceProperties.disks[_].guestOsFeatures[_].type == enum_GuestOsFeatureType[_]
    input.Body.instanceProperties.disks[_].index == INTEGER
    input.Body.instanceProperties.disks[_].initializeParams.architecture == enum_AttachedDiskInitializeParamsArchitecture[_]
    input.Body.instanceProperties.disks[_].initializeParams.description == STRING
    input.Body.instanceProperties.disks[_].initializeParams.diskName == STRING
    input.Body.instanceProperties.disks[_].initializeParams.diskSizeGb == STRING
    input.Body.instanceProperties.disks[_].initializeParams.diskType == STRING
    input.Body.instanceProperties.disks[_].initializeParams.enableConfidentialCompute == BOOLEAN
    input.Body.instanceProperties.disks[_].initializeParams.labels.STRING == STRING
    input.Body.instanceProperties.disks[_].initializeParams.licenses[_] == STRING
    input.Body.instanceProperties.disks[_].initializeParams.onUpdateAction == enum_AttachedDiskInitializeParamsOnUpdateAction[_]
    input.Body.instanceProperties.disks[_].initializeParams.provisionedIops == STRING
    input.Body.instanceProperties.disks[_].initializeParams.provisionedThroughput == STRING
    input.Body.instanceProperties.disks[_].initializeParams.replicaZones[_] == STRING
    input.Body.instanceProperties.disks[_].initializeParams.resourceManagerTags.STRING == STRING
    input.Body.instanceProperties.disks[_].initializeParams.resourcePolicies[_] == STRING
    input.Body.instanceProperties.disks[_].initializeParams.sourceImage == STRING
    input.Body.instanceProperties.disks[_].initializeParams.sourceImageEncryptionKey.kmsKeyName == STRING
    input.Body.instanceProperties.disks[_].initializeParams.sourceImageEncryptionKey.kmsKeyServiceAccount == STRING
    input.Body.instanceProperties.disks[_].initializeParams.sourceImageEncryptionKey.rawKey == STRING
    input.Body.instanceProperties.disks[_].initializeParams.sourceImageEncryptionKey.rsaEncryptedKey == STRING
    input.Body.instanceProperties.disks[_].initializeParams.sourceImageEncryptionKey.sha256 == STRING
    input.Body.instanceProperties.disks[_].initializeParams.sourceSnapshot == STRING
    input.Body.instanceProperties.disks[_].initializeParams.sourceSnapshotEncryptionKey.kmsKeyName == STRING
    input.Body.instanceProperties.disks[_].initializeParams.sourceSnapshotEncryptionKey.kmsKeyServiceAccount == STRING
    input.Body.instanceProperties.disks[_].initializeParams.sourceSnapshotEncryptionKey.rawKey == STRING
    input.Body.instanceProperties.disks[_].initializeParams.sourceSnapshotEncryptionKey.rsaEncryptedKey == STRING
    input.Body.instanceProperties.disks[_].initializeParams.sourceSnapshotEncryptionKey.sha256 == STRING
    input.Body.instanceProperties.disks[_].initializeParams.storagePool == STRING
    input.Body.instanceProperties.disks[_].interface == enum_AttachedDiskInterface[_]
    input.Body.instanceProperties.disks[_].kind == STRING
    input.Body.instanceProperties.disks[_].licenses[_] == STRING
    input.Body.instanceProperties.disks[_].mode == enum_AttachedDiskMode[_]
    input.Body.instanceProperties.disks[_].savedState == enum_AttachedDiskSavedState[_]
    input.Body.instanceProperties.disks[_].shieldedInstanceInitialState.dbs[_].content == STRING
    input.Body.instanceProperties.disks[_].shieldedInstanceInitialState.dbs[_].fileType == enum_FileContentBufferFileType[_]
    input.Body.instanceProperties.disks[_].shieldedInstanceInitialState.dbxs[_].content == STRING
    input.Body.instanceProperties.disks[_].shieldedInstanceInitialState.dbxs[_].fileType == enum_FileContentBufferFileType[_]
    input.Body.instanceProperties.disks[_].shieldedInstanceInitialState.keks[_].content == STRING
    input.Body.instanceProperties.disks[_].shieldedInstanceInitialState.keks[_].fileType == enum_FileContentBufferFileType[_]
    input.Body.instanceProperties.disks[_].shieldedInstanceInitialState.pk.content == STRING
    input.Body.instanceProperties.disks[_].shieldedInstanceInitialState.pk.fileType == enum_FileContentBufferFileType[_]
    input.Body.instanceProperties.disks[_].source == STRING
    input.Body.instanceProperties.disks[_].type == enum_AttachedDiskType[_]
    input.Body.instanceProperties.guestAccelerators[_].acceleratorCount == INTEGER
    input.Body.instanceProperties.guestAccelerators[_].acceleratorType == STRING
    input.Body.instanceProperties.keyRevocationActionType == enum_InstancePropertiesKeyRevocationActionType[_]
    input.Body.instanceProperties.labels.STRING == STRING
    input.Body.instanceProperties.machineType == STRING
    input.Body.instanceProperties.metadata.fingerprint == STRING
    input.Body.instanceProperties.metadata.items[_].key == STRING
    input.Body.instanceProperties.metadata.items[_].value == STRING
    input.Body.instanceProperties.metadata.kind == STRING
    input.Body.instanceProperties.minCpuPlatform == STRING
    input.Body.instanceProperties.networkInterfaces[_].accessConfigs[_].externalIpv6 == STRING
    input.Body.instanceProperties.networkInterfaces[_].accessConfigs[_].externalIpv6PrefixLength == INTEGER
    input.Body.instanceProperties.networkInterfaces[_].accessConfigs[_].kind == STRING
    input.Body.instanceProperties.networkInterfaces[_].accessConfigs[_].name == STRING
    input.Body.instanceProperties.networkInterfaces[_].accessConfigs[_].natIP == STRING
    input.Body.instanceProperties.networkInterfaces[_].accessConfigs[_].networkTier == enum_AccessConfigNetworkTier[_]
    input.Body.instanceProperties.networkInterfaces[_].accessConfigs[_].publicPtrDomainName == STRING
    input.Body.instanceProperties.networkInterfaces[_].accessConfigs[_].securityPolicy == STRING
    input.Body.instanceProperties.networkInterfaces[_].accessConfigs[_].setPublicPtr == BOOLEAN
    input.Body.instanceProperties.networkInterfaces[_].accessConfigs[_].type == enum_AccessConfigType[_]
    input.Body.instanceProperties.networkInterfaces[_].aliasIpRanges[_].ipCidrRange == STRING
    input.Body.instanceProperties.networkInterfaces[_].aliasIpRanges[_].subnetworkRangeName == STRING
    input.Body.instanceProperties.networkInterfaces[_].fingerprint == STRING
    input.Body.instanceProperties.networkInterfaces[_].internalIpv6PrefixLength == INTEGER
    input.Body.instanceProperties.networkInterfaces[_].ipv6AccessConfigs[_].externalIpv6 == STRING
    input.Body.instanceProperties.networkInterfaces[_].ipv6AccessConfigs[_].externalIpv6PrefixLength == INTEGER
    input.Body.instanceProperties.networkInterfaces[_].ipv6AccessConfigs[_].kind == STRING
    input.Body.instanceProperties.networkInterfaces[_].ipv6AccessConfigs[_].name == STRING
    input.Body.instanceProperties.networkInterfaces[_].ipv6AccessConfigs[_].natIP == STRING
    input.Body.instanceProperties.networkInterfaces[_].ipv6AccessConfigs[_].networkTier == enum_AccessConfigNetworkTier[_]
    input.Body.instanceProperties.networkInterfaces[_].ipv6AccessConfigs[_].publicPtrDomainName == STRING
    input.Body.instanceProperties.networkInterfaces[_].ipv6AccessConfigs[_].securityPolicy == STRING
    input.Body.instanceProperties.networkInterfaces[_].ipv6AccessConfigs[_].setPublicPtr == BOOLEAN
    input.Body.instanceProperties.networkInterfaces[_].ipv6AccessConfigs[_].type == enum_AccessConfigType[_]
    input.Body.instanceProperties.networkInterfaces[_].ipv6AccessType == enum_NetworkInterfaceIpv6AccessType[_]
    input.Body.instanceProperties.networkInterfaces[_].ipv6Address == STRING
    input.Body.instanceProperties.networkInterfaces[_].kind == STRING
    input.Body.instanceProperties.networkInterfaces[_].name == STRING
    input.Body.instanceProperties.networkInterfaces[_].network == STRING
    input.Body.instanceProperties.networkInterfaces[_].networkAttachment == STRING
    input.Body.instanceProperties.networkInterfaces[_].networkIP == STRING
    input.Body.instanceProperties.networkInterfaces[_].nicType == enum_NetworkInterfaceNicType[_]
    input.Body.instanceProperties.networkInterfaces[_].queueCount == INTEGER
    input.Body.instanceProperties.networkInterfaces[_].stackType == enum_NetworkInterfaceStackType[_]
    input.Body.instanceProperties.networkInterfaces[_].subnetwork == STRING
    input.Body.instanceProperties.networkPerformanceConfig.totalEgressBandwidthTier == enum_NetworkPerformanceConfigTotalEgressBandwidthTier[_]
    input.Body.instanceProperties.privateIpv6GoogleAccess == enum_InstancePropertiesPrivateIpv6GoogleAccess[_]
    input.Body.instanceProperties.reservationAffinity.consumeReservationType == enum_ReservationAffinityConsumeReservationType[_]
    input.Body.instanceProperties.reservationAffinity.key == STRING
    input.Body.instanceProperties.reservationAffinity.values[_] == STRING
    input.Body.instanceProperties.resourceManagerTags.STRING == STRING
    input.Body.instanceProperties.resourcePolicies[_] == STRING
    input.Body.instanceProperties.scheduling.automaticRestart == BOOLEAN
    input.Body.instanceProperties.scheduling.instanceTerminationAction == enum_SchedulingInstanceTerminationAction[_]
    input.Body.instanceProperties.scheduling.localSsdRecoveryTimeout.nanos == INTEGER
    input.Body.instanceProperties.scheduling.localSsdRecoveryTimeout.seconds == STRING
    input.Body.instanceProperties.scheduling.locationHint == STRING
    input.Body.instanceProperties.scheduling.minNodeCpus == INTEGER
    input.Body.instanceProperties.scheduling.nodeAffinities[_].key == STRING
    input.Body.instanceProperties.scheduling.nodeAffinities[_].operator == enum_SchedulingNodeAffinityOperator[_]
    input.Body.instanceProperties.scheduling.nodeAffinities[_].values[_] == STRING
    input.Body.instanceProperties.scheduling.onHostMaintenance == enum_SchedulingOnHostMaintenance[_]
    input.Body.instanceProperties.scheduling.preemptible == BOOLEAN
    input.Body.instanceProperties.scheduling.provisioningModel == enum_SchedulingProvisioningModel[_]
    input.Body.instanceProperties.serviceAccounts[_].email == STRING
    input.Body.instanceProperties.serviceAccounts[_].scopes[_] == STRING
    input.Body.instanceProperties.shieldedInstanceConfig.enableIntegrityMonitoring == BOOLEAN
    input.Body.instanceProperties.shieldedInstanceConfig.enableSecureBoot == BOOLEAN
    input.Body.instanceProperties.shieldedInstanceConfig.enableVtpm == BOOLEAN
    input.Body.instanceProperties.tags.fingerprint == STRING
    input.Body.instanceProperties.tags.items[_] == STRING
    input.Body.locationPolicy.locations.STRING.constraints.maxCount == INTEGER
    input.Body.locationPolicy.locations.STRING.preference == enum_LocationPolicyLocationPreference[_]
    input.Body.locationPolicy.targetShape == enum_LocationPolicyTargetShape[_]
    input.Body.minCount == STRING
    input.Body.namePattern == STRING
    input.Body.perInstanceProperties.STRING.hostname == STRING
    input.Body.perInstanceProperties.STRING.name == STRING
    input.Body.sourceInstanceTemplate == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.zone == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.instances.delete

valid {
    input.ReqMap.instance == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.zone == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.instances.deleteAccessConfig

valid {
    input.ReqMap.instance == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.zone == STRING
    input.Qs.accessConfig == STRING
    input.Qs.networkInterface == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.instances.deleteNetworkInterface

valid {
    input.ReqMap.instance == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.zone == STRING
    input.Qs.networkInterfaceName == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.instances.detachDisk

valid {
    input.ReqMap.instance == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.zone == STRING
    input.Qs.deviceName == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.instances.get

valid {
    input.ReqMap.instance == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.zone == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.instances.getEffectiveFirewalls

valid {
    input.ReqMap.instance == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.zone == STRING
    input.Qs.networkInterface == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.instances.getGuestAttributes

valid {
    input.ReqMap.instance == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.zone == STRING
    input.Qs.queryPath == STRING
    input.Qs.variableKey == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.instances.getIamPolicy

valid {
    input.ReqMap.ProjectID == STRING
    input.ReqMap.resource == STRING
    input.ReqMap.zone == STRING
    input.Qs.optionsRequestedPolicyVersion == INTEGER
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.instances.getPartnerMetadata

valid {
    input.ReqMap.instance == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.zone == STRING
    input.Qs.namespaces == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.instances.getScreenshot

valid {
    input.ReqMap.instance == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.zone == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.instances.getSerialPortOutput

valid {
    input.ReqMap.instance == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.zone == STRING
    input.Qs.port == INTEGER
    input.Qs.start == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.instances.getShieldedInstanceIdentity

valid {
    input.ReqMap.instance == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.zone == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.instances.getShieldedVmIdentity

valid {
    input.ReqMap.instance == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.zone == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.instances.insert

enum_AccessConfigNetworkTier := [ "FIXED_STANDARD", "PREMIUM", "STANDARD", "STANDARD_OVERRIDES_FIXED_STANDARD" ]
enum_AccessConfigType := [ "DIRECT_IPV6", "ONE_TO_ONE_NAT" ]
enum_AttachedDiskArchitecture := [ "ARCHITECTURE_UNSPECIFIED", "ARM64", "X86_64" ]
enum_AttachedDiskInitializeParamsArchitecture := [ "ARCHITECTURE_UNSPECIFIED", "ARM64", "X86_64" ]
enum_AttachedDiskInitializeParamsOnUpdateAction := [ "RECREATE_DISK", "RECREATE_DISK_IF_SOURCE_CHANGED", "USE_EXISTING_DISK" ]
enum_AttachedDiskInterface := [ "NVME", "SCSI" ]
enum_AttachedDiskMode := [ "READ_ONLY", "READ_WRITE" ]
enum_AttachedDiskSavedState := [ "DISK_SAVED_STATE_UNSPECIFIED", "PRESERVED" ]
enum_AttachedDiskType := [ "PERSISTENT", "SCRATCH" ]
enum_FileContentBufferFileType := [ "BIN", "UNDEFINED", "X509" ]
enum_GuestOsFeatureType := [ "FEATURE_TYPE_UNSPECIFIED", "GVNIC", "IDPF", "MULTI_IP_SUBNET", "SECURE_BOOT", "SEV_CAPABLE", "SEV_LIVE_MIGRATABLE", "SEV_LIVE_MIGRATABLE_V2", "SEV_SNP_CAPABLE", "UEFI_COMPATIBLE", "VIRTIO_SCSI_MULTIQUEUE", "WINDOWS" ]
enum_InstanceKeyRevocationActionType := [ "KEY_REVOCATION_ACTION_TYPE_UNSPECIFIED", "NONE", "STOP" ]
enum_InstancePrivateIpv6GoogleAccess := [ "ENABLE_BIDIRECTIONAL_ACCESS_TO_GOOGLE", "ENABLE_OUTBOUND_VM_ACCESS_TO_GOOGLE", "INHERIT_FROM_SUBNETWORK" ]
enum_InstanceStatus := [ "DEPROVISIONING", "PROVISIONING", "REPAIRING", "RUNNING", "STAGING", "STOPPED", "STOPPING", "SUSPENDED", "SUSPENDING", "TERMINATED" ]
enum_NetworkInterfaceIpv6AccessType := [ "EXTERNAL", "INTERNAL" ]
enum_NetworkInterfaceNicType := [ "GVNIC", "UNSPECIFIED_NIC_TYPE", "VIRTIO_NET" ]
enum_NetworkInterfaceStackType := [ "IPV4_IPV6", "IPV4_ONLY" ]
enum_NetworkPerformanceConfigTotalEgressBandwidthTier := [ "DEFAULT", "TIER_1" ]
enum_ReservationAffinityConsumeReservationType := [ "ANY_RESERVATION", "NO_RESERVATION", "SPECIFIC_RESERVATION", "UNSPECIFIED" ]
enum_SchedulingInstanceTerminationAction := [ "DELETE", "INSTANCE_TERMINATION_ACTION_UNSPECIFIED", "STOP" ]
enum_SchedulingNodeAffinityOperator := [ "IN", "NOT_IN", "OPERATOR_UNSPECIFIED" ]
enum_SchedulingOnHostMaintenance := [ "MIGRATE", "TERMINATE" ]
enum_SchedulingProvisioningModel := [ "SPOT", "STANDARD" ]
enum_UpcomingMaintenanceMaintenanceStatus := [ "ONGOING", "PENDING", "UNKNOWN" ]
enum_UpcomingMaintenanceType := [ "SCHEDULED", "UNKNOWN_TYPE", "UNSCHEDULED" ]

valid {
    input.Body.advancedMachineFeatures.enableNestedVirtualization == BOOLEAN
    input.Body.advancedMachineFeatures.enableUefiNetworking == BOOLEAN
    input.Body.advancedMachineFeatures.threadsPerCore == INTEGER
    input.Body.advancedMachineFeatures.visibleCoreCount == INTEGER
    input.Body.canIpForward == BOOLEAN
    input.Body.confidentialInstanceConfig.enableConfidentialCompute == BOOLEAN
    input.Body.cpuPlatform == STRING
    input.Body.creationTimestamp == STRING
    input.Body.deletionProtection == BOOLEAN
    input.Body.description == STRING
    input.Body.disks[_].architecture == enum_AttachedDiskArchitecture[_]
    input.Body.disks[_].autoDelete == BOOLEAN
    input.Body.disks[_].boot == BOOLEAN
    input.Body.disks[_].deviceName == STRING
    input.Body.disks[_].diskEncryptionKey.kmsKeyName == STRING
    input.Body.disks[_].diskEncryptionKey.kmsKeyServiceAccount == STRING
    input.Body.disks[_].diskEncryptionKey.rawKey == STRING
    input.Body.disks[_].diskEncryptionKey.rsaEncryptedKey == STRING
    input.Body.disks[_].diskEncryptionKey.sha256 == STRING
    input.Body.disks[_].diskSizeGb == STRING
    input.Body.disks[_].forceAttach == BOOLEAN
    input.Body.disks[_].guestOsFeatures[_].type == enum_GuestOsFeatureType[_]
    input.Body.disks[_].index == INTEGER
    input.Body.disks[_].initializeParams.architecture == enum_AttachedDiskInitializeParamsArchitecture[_]
    input.Body.disks[_].initializeParams.description == STRING
    input.Body.disks[_].initializeParams.diskName == STRING
    input.Body.disks[_].initializeParams.diskSizeGb == STRING
    input.Body.disks[_].initializeParams.diskType == STRING
    input.Body.disks[_].initializeParams.enableConfidentialCompute == BOOLEAN
    input.Body.disks[_].initializeParams.labels.STRING == STRING
    input.Body.disks[_].initializeParams.licenses[_] == STRING
    input.Body.disks[_].initializeParams.onUpdateAction == enum_AttachedDiskInitializeParamsOnUpdateAction[_]
    input.Body.disks[_].initializeParams.provisionedIops == STRING
    input.Body.disks[_].initializeParams.provisionedThroughput == STRING
    input.Body.disks[_].initializeParams.replicaZones[_] == STRING
    input.Body.disks[_].initializeParams.resourceManagerTags.STRING == STRING
    input.Body.disks[_].initializeParams.resourcePolicies[_] == STRING
    input.Body.disks[_].initializeParams.sourceImage == STRING
    input.Body.disks[_].initializeParams.sourceImageEncryptionKey.kmsKeyName == STRING
    input.Body.disks[_].initializeParams.sourceImageEncryptionKey.kmsKeyServiceAccount == STRING
    input.Body.disks[_].initializeParams.sourceImageEncryptionKey.rawKey == STRING
    input.Body.disks[_].initializeParams.sourceImageEncryptionKey.rsaEncryptedKey == STRING
    input.Body.disks[_].initializeParams.sourceImageEncryptionKey.sha256 == STRING
    input.Body.disks[_].initializeParams.sourceSnapshot == STRING
    input.Body.disks[_].initializeParams.sourceSnapshotEncryptionKey.kmsKeyName == STRING
    input.Body.disks[_].initializeParams.sourceSnapshotEncryptionKey.kmsKeyServiceAccount == STRING
    input.Body.disks[_].initializeParams.sourceSnapshotEncryptionKey.rawKey == STRING
    input.Body.disks[_].initializeParams.sourceSnapshotEncryptionKey.rsaEncryptedKey == STRING
    input.Body.disks[_].initializeParams.sourceSnapshotEncryptionKey.sha256 == STRING
    input.Body.disks[_].initializeParams.storagePool == STRING
    input.Body.disks[_].interface == enum_AttachedDiskInterface[_]
    input.Body.disks[_].kind == STRING
    input.Body.disks[_].licenses[_] == STRING
    input.Body.disks[_].mode == enum_AttachedDiskMode[_]
    input.Body.disks[_].savedState == enum_AttachedDiskSavedState[_]
    input.Body.disks[_].shieldedInstanceInitialState.dbs[_].content == STRING
    input.Body.disks[_].shieldedInstanceInitialState.dbs[_].fileType == enum_FileContentBufferFileType[_]
    input.Body.disks[_].shieldedInstanceInitialState.dbxs[_].content == STRING
    input.Body.disks[_].shieldedInstanceInitialState.dbxs[_].fileType == enum_FileContentBufferFileType[_]
    input.Body.disks[_].shieldedInstanceInitialState.keks[_].content == STRING
    input.Body.disks[_].shieldedInstanceInitialState.keks[_].fileType == enum_FileContentBufferFileType[_]
    input.Body.disks[_].shieldedInstanceInitialState.pk.content == STRING
    input.Body.disks[_].shieldedInstanceInitialState.pk.fileType == enum_FileContentBufferFileType[_]
    input.Body.disks[_].source == STRING
    input.Body.disks[_].type == enum_AttachedDiskType[_]
    input.Body.displayDevice.enableDisplay == BOOLEAN
    input.Body.fingerprint == STRING
    input.Body.guestAccelerators[_].acceleratorCount == INTEGER
    input.Body.guestAccelerators[_].acceleratorType == STRING
    input.Body.hostname == STRING
    input.Body.id == STRING
    input.Body.instanceEncryptionKey.kmsKeyName == STRING
    input.Body.instanceEncryptionKey.kmsKeyServiceAccount == STRING
    input.Body.instanceEncryptionKey.rawKey == STRING
    input.Body.instanceEncryptionKey.rsaEncryptedKey == STRING
    input.Body.instanceEncryptionKey.sha256 == STRING
    input.Body.keyRevocationActionType == enum_InstanceKeyRevocationActionType[_]
    input.Body.kind == STRING
    input.Body.labelFingerprint == STRING
    input.Body.labels.STRING == STRING
    input.Body.lastStartTimestamp == STRING
    input.Body.lastStopTimestamp == STRING
    input.Body.lastSuspendedTimestamp == STRING
    input.Body.machineType == STRING
    input.Body.metadata.fingerprint == STRING
    input.Body.metadata.items[_].key == STRING
    input.Body.metadata.items[_].value == STRING
    input.Body.metadata.kind == STRING
    input.Body.minCpuPlatform == STRING
    input.Body.name == STRING
    input.Body.networkInterfaces[_].accessConfigs[_].externalIpv6 == STRING
    input.Body.networkInterfaces[_].accessConfigs[_].externalIpv6PrefixLength == INTEGER
    input.Body.networkInterfaces[_].accessConfigs[_].kind == STRING
    input.Body.networkInterfaces[_].accessConfigs[_].name == STRING
    input.Body.networkInterfaces[_].accessConfigs[_].natIP == STRING
    input.Body.networkInterfaces[_].accessConfigs[_].networkTier == enum_AccessConfigNetworkTier[_]
    input.Body.networkInterfaces[_].accessConfigs[_].publicPtrDomainName == STRING
    input.Body.networkInterfaces[_].accessConfigs[_].securityPolicy == STRING
    input.Body.networkInterfaces[_].accessConfigs[_].setPublicPtr == BOOLEAN
    input.Body.networkInterfaces[_].accessConfigs[_].type == enum_AccessConfigType[_]
    input.Body.networkInterfaces[_].aliasIpRanges[_].ipCidrRange == STRING
    input.Body.networkInterfaces[_].aliasIpRanges[_].subnetworkRangeName == STRING
    input.Body.networkInterfaces[_].fingerprint == STRING
    input.Body.networkInterfaces[_].internalIpv6PrefixLength == INTEGER
    input.Body.networkInterfaces[_].ipv6AccessConfigs[_].externalIpv6 == STRING
    input.Body.networkInterfaces[_].ipv6AccessConfigs[_].externalIpv6PrefixLength == INTEGER
    input.Body.networkInterfaces[_].ipv6AccessConfigs[_].kind == STRING
    input.Body.networkInterfaces[_].ipv6AccessConfigs[_].name == STRING
    input.Body.networkInterfaces[_].ipv6AccessConfigs[_].natIP == STRING
    input.Body.networkInterfaces[_].ipv6AccessConfigs[_].networkTier == enum_AccessConfigNetworkTier[_]
    input.Body.networkInterfaces[_].ipv6AccessConfigs[_].publicPtrDomainName == STRING
    input.Body.networkInterfaces[_].ipv6AccessConfigs[_].securityPolicy == STRING
    input.Body.networkInterfaces[_].ipv6AccessConfigs[_].setPublicPtr == BOOLEAN
    input.Body.networkInterfaces[_].ipv6AccessConfigs[_].type == enum_AccessConfigType[_]
    input.Body.networkInterfaces[_].ipv6AccessType == enum_NetworkInterfaceIpv6AccessType[_]
    input.Body.networkInterfaces[_].ipv6Address == STRING
    input.Body.networkInterfaces[_].kind == STRING
    input.Body.networkInterfaces[_].name == STRING
    input.Body.networkInterfaces[_].network == STRING
    input.Body.networkInterfaces[_].networkAttachment == STRING
    input.Body.networkInterfaces[_].networkIP == STRING
    input.Body.networkInterfaces[_].nicType == enum_NetworkInterfaceNicType[_]
    input.Body.networkInterfaces[_].queueCount == INTEGER
    input.Body.networkInterfaces[_].stackType == enum_NetworkInterfaceStackType[_]
    input.Body.networkInterfaces[_].subnetwork == STRING
    input.Body.networkPerformanceConfig.totalEgressBandwidthTier == enum_NetworkPerformanceConfigTotalEgressBandwidthTier[_]
    input.Body.params.resourceManagerTags.STRING == STRING
    input.Body.privateIpv6GoogleAccess == enum_InstancePrivateIpv6GoogleAccess[_]
    input.Body.reservationAffinity.consumeReservationType == enum_ReservationAffinityConsumeReservationType[_]
    input.Body.reservationAffinity.key == STRING
    input.Body.reservationAffinity.values[_] == STRING
    input.Body.resourcePolicies[_] == STRING
    input.Body.resourceStatus.physicalHost == STRING
    input.Body.resourceStatus.upcomingMaintenance.canReschedule == BOOLEAN
    input.Body.resourceStatus.upcomingMaintenance.latestWindowStartTime == STRING
    input.Body.resourceStatus.upcomingMaintenance.maintenanceStatus == enum_UpcomingMaintenanceMaintenanceStatus[_]
    input.Body.resourceStatus.upcomingMaintenance.type == enum_UpcomingMaintenanceType[_]
    input.Body.resourceStatus.upcomingMaintenance.windowEndTime == STRING
    input.Body.resourceStatus.upcomingMaintenance.windowStartTime == STRING
    input.Body.satisfiesPzi == BOOLEAN
    input.Body.satisfiesPzs == BOOLEAN
    input.Body.scheduling.automaticRestart == BOOLEAN
    input.Body.scheduling.instanceTerminationAction == enum_SchedulingInstanceTerminationAction[_]
    input.Body.scheduling.localSsdRecoveryTimeout.nanos == INTEGER
    input.Body.scheduling.localSsdRecoveryTimeout.seconds == STRING
    input.Body.scheduling.locationHint == STRING
    input.Body.scheduling.minNodeCpus == INTEGER
    input.Body.scheduling.nodeAffinities[_].key == STRING
    input.Body.scheduling.nodeAffinities[_].operator == enum_SchedulingNodeAffinityOperator[_]
    input.Body.scheduling.nodeAffinities[_].values[_] == STRING
    input.Body.scheduling.onHostMaintenance == enum_SchedulingOnHostMaintenance[_]
    input.Body.scheduling.preemptible == BOOLEAN
    input.Body.scheduling.provisioningModel == enum_SchedulingProvisioningModel[_]
    input.Body.selfLink == STRING
    input.Body.serviceAccounts[_].email == STRING
    input.Body.serviceAccounts[_].scopes[_] == STRING
    input.Body.shieldedInstanceConfig.enableIntegrityMonitoring == BOOLEAN
    input.Body.shieldedInstanceConfig.enableSecureBoot == BOOLEAN
    input.Body.shieldedInstanceConfig.enableVtpm == BOOLEAN
    input.Body.shieldedInstanceIntegrityPolicy.updateAutoLearnPolicy == BOOLEAN
    input.Body.sourceMachineImage == STRING
    input.Body.sourceMachineImageEncryptionKey.kmsKeyName == STRING
    input.Body.sourceMachineImageEncryptionKey.kmsKeyServiceAccount == STRING
    input.Body.sourceMachineImageEncryptionKey.rawKey == STRING
    input.Body.sourceMachineImageEncryptionKey.rsaEncryptedKey == STRING
    input.Body.sourceMachineImageEncryptionKey.sha256 == STRING
    input.Body.startRestricted == BOOLEAN
    input.Body.status == enum_InstanceStatus[_]
    input.Body.statusMessage == STRING
    input.Body.tags.fingerprint == STRING
    input.Body.tags.items[_] == STRING
    input.Body.zone == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.zone == STRING
    input.Qs.requestId == STRING
    input.Qs.sourceInstanceTemplate == STRING
    input.Qs.sourceMachineImage == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.instances.list

valid {
    input.ReqMap.ProjectID == STRING
    input.ReqMap.zone == STRING
    input.Qs.filter == STRING
    input.Qs.maxResults == INTEGER
    input.Qs.orderBy == STRING
    input.Qs.pageToken == STRING
    input.Qs.returnPartialSuccess == BOOLEAN
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.instances.listReferrers

valid {
    input.ReqMap.instance == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.zone == STRING
    input.Qs.filter == STRING
    input.Qs.maxResults == INTEGER
    input.Qs.orderBy == STRING
    input.Qs.pageToken == STRING
    input.Qs.returnPartialSuccess == BOOLEAN
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.instances.patchPartnerMetadata

valid {
    input.Body.fingerprint == STRING
    input.Body.partnerMetadata.STRING.entries.STRING == ANY
    input.ReqMap.instance == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.zone == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.instances.performMaintenance

valid {
    input.ReqMap.instance == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.zone == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.instances.removeResourcePolicies

valid {
    input.Body.resourcePolicies[_] == STRING
    input.ReqMap.instance == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.zone == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.instances.reset

valid {
    input.ReqMap.instance == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.zone == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.instances.resume

valid {
    input.ReqMap.instance == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.zone == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.instances.sendDiagnosticInterrupt

valid {
    input.ReqMap.instance == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.zone == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.instances.setDeletionProtection

valid {
    input.ReqMap.ProjectID == STRING
    input.ReqMap.resource == STRING
    input.ReqMap.zone == STRING
    input.Qs.deletionProtection == BOOLEAN
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.instances.setDiskAutoDelete

valid {
    input.ReqMap.instance == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.zone == STRING
    input.Qs.autoDelete == BOOLEAN
    input.Qs.deviceName == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.instances.setIamPolicy

enum_AuditLogConfigLogType := [ "ADMIN_READ", "DATA_READ", "DATA_WRITE", "LOG_TYPE_UNSPECIFIED" ]
enum_AuthorizationLoggingOptionsPermissionType := [ "ADMIN_READ", "ADMIN_WRITE", "DATA_READ", "DATA_WRITE", "PERMISSION_TYPE_UNSPECIFIED" ]
enum_ConditionIam := [ "APPROVER", "ATTRIBUTION", "AUTHORITY", "CREDENTIALS_TYPE", "CREDS_ASSERTION", "JUSTIFICATION_TYPE", "NO_ATTR", "SECURITY_REALM" ]
enum_ConditionOp := [ "DISCHARGED", "EQUALS", "IN", "NOT_EQUALS", "NOT_IN", "NO_OP" ]
enum_ConditionSys := [ "IP", "NAME", "NO_ATTR", "REGION", "SERVICE" ]
enum_LogConfigCloudAuditOptionsLogName := [ "ADMIN_ACTIVITY", "DATA_ACCESS", "UNSPECIFIED_LOG_NAME" ]
enum_LogConfigDataAccessOptionsLogMode := [ "LOG_FAIL_CLOSED", "LOG_MODE_UNSPECIFIED" ]
enum_RuleAction := [ "ALLOW", "ALLOW_WITH_LOG", "DENY", "DENY_WITH_LOG", "LOG", "NO_ACTION" ]

valid {
    input.Body.bindings[_].bindingId == STRING
    input.Body.bindings[_].condition.description == STRING
    input.Body.bindings[_].condition.expression == STRING
    input.Body.bindings[_].condition.location == STRING
    input.Body.bindings[_].condition.title == STRING
    input.Body.bindings[_].members[_] == STRING
    input.Body.bindings[_].role == STRING
    input.Body.etag == STRING
    input.Body.policy.auditConfigs[_].auditLogConfigs[_].exemptedMembers[_] == STRING
    input.Body.policy.auditConfigs[_].auditLogConfigs[_].ignoreChildExemptions == BOOLEAN
    input.Body.policy.auditConfigs[_].auditLogConfigs[_].logType == enum_AuditLogConfigLogType[_]
    input.Body.policy.auditConfigs[_].exemptedMembers[_] == STRING
    input.Body.policy.auditConfigs[_].service == STRING
    input.Body.policy.bindings[_].bindingId == 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.rules[_].action == enum_RuleAction[_]
    input.Body.policy.rules[_].conditions[_].iam == enum_ConditionIam[_]
    input.Body.policy.rules[_].conditions[_].op == enum_ConditionOp[_]
    input.Body.policy.rules[_].conditions[_].svc == STRING
    input.Body.policy.rules[_].conditions[_].sys == enum_ConditionSys[_]
    input.Body.policy.rules[_].conditions[_].values[_] == STRING
    input.Body.policy.rules[_].description == STRING
    input.Body.policy.rules[_].ins[_] == STRING
    input.Body.policy.rules[_].logConfigs[_].cloudAudit.authorizationLoggingOptions.permissionType == enum_AuthorizationLoggingOptionsPermissionType[_]
    input.Body.policy.rules[_].logConfigs[_].cloudAudit.logName == enum_LogConfigCloudAuditOptionsLogName[_]
    input.Body.policy.rules[_].logConfigs[_].counter.customFields[_].name == STRING
    input.Body.policy.rules[_].logConfigs[_].counter.customFields[_].value == STRING
    input.Body.policy.rules[_].logConfigs[_].counter.field == STRING
    input.Body.policy.rules[_].logConfigs[_].counter.metric == STRING
    input.Body.policy.rules[_].logConfigs[_].dataAccess.logMode == enum_LogConfigDataAccessOptionsLogMode[_]
    input.Body.policy.rules[_].notIns[_] == STRING
    input.Body.policy.rules[_].permissions[_] == STRING
    input.Body.policy.version == INTEGER
    input.ReqMap.ProjectID == STRING
    input.ReqMap.resource == STRING
    input.ReqMap.zone == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.instances.setLabels

valid {
    input.Body.labelFingerprint == STRING
    input.Body.labels.STRING == STRING
    input.ReqMap.instance == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.zone == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.instances.setMachineResources

valid {
    input.Body.guestAccelerators[_].acceleratorCount == INTEGER
    input.Body.guestAccelerators[_].acceleratorType == STRING
    input.ReqMap.instance == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.zone == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.instances.setMachineType

valid {
    input.Body.machineType == STRING
    input.ReqMap.instance == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.zone == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.instances.setMetadata

valid {
    input.Body.fingerprint == STRING
    input.Body.items[_].key == STRING
    input.Body.items[_].value == STRING
    input.Body.kind == STRING
    input.ReqMap.instance == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.zone == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.instances.setMinCpuPlatform

valid {
    input.Body.minCpuPlatform == STRING
    input.ReqMap.instance == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.zone == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.instances.setName

valid {
    input.Body.currentName == STRING
    input.Body.name == STRING
    input.ReqMap.instance == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.zone == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.instances.setScheduling

enum_SchedulingInstanceTerminationAction := [ "DELETE", "INSTANCE_TERMINATION_ACTION_UNSPECIFIED", "STOP" ]
enum_SchedulingNodeAffinityOperator := [ "IN", "NOT_IN", "OPERATOR_UNSPECIFIED" ]
enum_SchedulingOnHostMaintenance := [ "MIGRATE", "TERMINATE" ]
enum_SchedulingProvisioningModel := [ "SPOT", "STANDARD" ]

valid {
    input.Body.automaticRestart == BOOLEAN
    input.Body.instanceTerminationAction == enum_SchedulingInstanceTerminationAction[_]
    input.Body.localSsdRecoveryTimeout.nanos == INTEGER
    input.Body.localSsdRecoveryTimeout.seconds == STRING
    input.Body.locationHint == STRING
    input.Body.minNodeCpus == INTEGER
    input.Body.nodeAffinities[_].key == STRING
    input.Body.nodeAffinities[_].operator == enum_SchedulingNodeAffinityOperator[_]
    input.Body.nodeAffinities[_].values[_] == STRING
    input.Body.onHostMaintenance == enum_SchedulingOnHostMaintenance[_]
    input.Body.preemptible == BOOLEAN
    input.Body.provisioningModel == enum_SchedulingProvisioningModel[_]
    input.ReqMap.instance == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.zone == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.instances.setSecurityPolicy

valid {
    input.Body.networkInterfaces[_] == STRING
    input.Body.securityPolicy == STRING
    input.ReqMap.instance == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.zone == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.instances.setServiceAccount

valid {
    input.Body.email == STRING
    input.Body.scopes[_] == STRING
    input.ReqMap.instance == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.zone == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.instances.setShieldedInstanceIntegrityPolicy

valid {
    input.Body.updateAutoLearnPolicy == BOOLEAN
    input.ReqMap.instance == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.zone == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.instances.setShieldedVmIntegrityPolicy

valid {
    input.Body.updateAutoLearnPolicy == BOOLEAN
    input.ReqMap.instance == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.zone == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.instances.setTags

valid {
    input.Body.fingerprint == STRING
    input.Body.items[_] == STRING
    input.ReqMap.instance == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.zone == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.instances.simulateMaintenanceEvent

valid {
    input.ReqMap.instance == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.zone == STRING
    input.Qs.requestId == STRING
    input.Qs.withExtendedNotifications == BOOLEAN
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.instances.start

valid {
    input.ReqMap.instance == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.zone == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.instances.startWithEncryptionKey

valid {
    input.Body.disks[_].diskEncryptionKey.kmsKeyName == STRING
    input.Body.disks[_].diskEncryptionKey.kmsKeyServiceAccount == STRING
    input.Body.disks[_].diskEncryptionKey.rawKey == STRING
    input.Body.disks[_].diskEncryptionKey.rsaEncryptedKey == STRING
    input.Body.disks[_].diskEncryptionKey.sha256 == STRING
    input.Body.disks[_].source == STRING
    input.ReqMap.instance == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.zone == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.instances.stop

valid {
    input.ReqMap.instance == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.zone == STRING
    input.Qs.discardLocalSsd == BOOLEAN
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.instances.suspend

valid {
    input.ReqMap.instance == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.zone == STRING
    input.Qs.discardLocalSsd == BOOLEAN
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.instances.testIamPermissions

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

compute.instances.update

enum_AccessConfigNetworkTier := [ "FIXED_STANDARD", "PREMIUM", "STANDARD", "STANDARD_OVERRIDES_FIXED_STANDARD" ]
enum_AccessConfigType := [ "DIRECT_IPV6", "ONE_TO_ONE_NAT" ]
enum_AttachedDiskArchitecture := [ "ARCHITECTURE_UNSPECIFIED", "ARM64", "X86_64" ]
enum_AttachedDiskInitializeParamsArchitecture := [ "ARCHITECTURE_UNSPECIFIED", "ARM64", "X86_64" ]
enum_AttachedDiskInitializeParamsOnUpdateAction := [ "RECREATE_DISK", "RECREATE_DISK_IF_SOURCE_CHANGED", "USE_EXISTING_DISK" ]
enum_AttachedDiskInterface := [ "NVME", "SCSI" ]
enum_AttachedDiskMode := [ "READ_ONLY", "READ_WRITE" ]
enum_AttachedDiskSavedState := [ "DISK_SAVED_STATE_UNSPECIFIED", "PRESERVED" ]
enum_AttachedDiskType := [ "PERSISTENT", "SCRATCH" ]
enum_FileContentBufferFileType := [ "BIN", "UNDEFINED", "X509" ]
enum_GuestOsFeatureType := [ "FEATURE_TYPE_UNSPECIFIED", "GVNIC", "IDPF", "MULTI_IP_SUBNET", "SECURE_BOOT", "SEV_CAPABLE", "SEV_LIVE_MIGRATABLE", "SEV_LIVE_MIGRATABLE_V2", "SEV_SNP_CAPABLE", "UEFI_COMPATIBLE", "VIRTIO_SCSI_MULTIQUEUE", "WINDOWS" ]
enum_InstanceKeyRevocationActionType := [ "KEY_REVOCATION_ACTION_TYPE_UNSPECIFIED", "NONE", "STOP" ]
enum_InstancePrivateIpv6GoogleAccess := [ "ENABLE_BIDIRECTIONAL_ACCESS_TO_GOOGLE", "ENABLE_OUTBOUND_VM_ACCESS_TO_GOOGLE", "INHERIT_FROM_SUBNETWORK" ]
enum_InstanceStatus := [ "DEPROVISIONING", "PROVISIONING", "REPAIRING", "RUNNING", "STAGING", "STOPPED", "STOPPING", "SUSPENDED", "SUSPENDING", "TERMINATED" ]
enum_MinimalActionParameter := [ "INVALID", "NO_EFFECT", "REFRESH", "RESTART" ]
enum_MostDisruptiveAllowedActionParameter := [ "INVALID", "NO_EFFECT", "REFRESH", "RESTART" ]
enum_NetworkInterfaceIpv6AccessType := [ "EXTERNAL", "INTERNAL" ]
enum_NetworkInterfaceNicType := [ "GVNIC", "UNSPECIFIED_NIC_TYPE", "VIRTIO_NET" ]
enum_NetworkInterfaceStackType := [ "IPV4_IPV6", "IPV4_ONLY" ]
enum_NetworkPerformanceConfigTotalEgressBandwidthTier := [ "DEFAULT", "TIER_1" ]
enum_ReservationAffinityConsumeReservationType := [ "ANY_RESERVATION", "NO_RESERVATION", "SPECIFIC_RESERVATION", "UNSPECIFIED" ]
enum_SchedulingInstanceTerminationAction := [ "DELETE", "INSTANCE_TERMINATION_ACTION_UNSPECIFIED", "STOP" ]
enum_SchedulingNodeAffinityOperator := [ "IN", "NOT_IN", "OPERATOR_UNSPECIFIED" ]
enum_SchedulingOnHostMaintenance := [ "MIGRATE", "TERMINATE" ]
enum_SchedulingProvisioningModel := [ "SPOT", "STANDARD" ]
enum_UpcomingMaintenanceMaintenanceStatus := [ "ONGOING", "PENDING", "UNKNOWN" ]
enum_UpcomingMaintenanceType := [ "SCHEDULED", "UNKNOWN_TYPE", "UNSCHEDULED" ]

valid {
    input.Body.advancedMachineFeatures.enableNestedVirtualization == BOOLEAN
    input.Body.advancedMachineFeatures.enableUefiNetworking == BOOLEAN
    input.Body.advancedMachineFeatures.threadsPerCore == INTEGER
    input.Body.advancedMachineFeatures.visibleCoreCount == INTEGER
    input.Body.canIpForward == BOOLEAN
    input.Body.confidentialInstanceConfig.enableConfidentialCompute == BOOLEAN
    input.Body.cpuPlatform == STRING
    input.Body.creationTimestamp == STRING
    input.Body.deletionProtection == BOOLEAN
    input.Body.description == STRING
    input.Body.disks[_].architecture == enum_AttachedDiskArchitecture[_]
    input.Body.disks[_].autoDelete == BOOLEAN
    input.Body.disks[_].boot == BOOLEAN
    input.Body.disks[_].deviceName == STRING
    input.Body.disks[_].diskEncryptionKey.kmsKeyName == STRING
    input.Body.disks[_].diskEncryptionKey.kmsKeyServiceAccount == STRING
    input.Body.disks[_].diskEncryptionKey.rawKey == STRING
    input.Body.disks[_].diskEncryptionKey.rsaEncryptedKey == STRING
    input.Body.disks[_].diskEncryptionKey.sha256 == STRING
    input.Body.disks[_].diskSizeGb == STRING
    input.Body.disks[_].forceAttach == BOOLEAN
    input.Body.disks[_].guestOsFeatures[_].type == enum_GuestOsFeatureType[_]
    input.Body.disks[_].index == INTEGER
    input.Body.disks[_].initializeParams.architecture == enum_AttachedDiskInitializeParamsArchitecture[_]
    input.Body.disks[_].initializeParams.description == STRING
    input.Body.disks[_].initializeParams.diskName == STRING
    input.Body.disks[_].initializeParams.diskSizeGb == STRING
    input.Body.disks[_].initializeParams.diskType == STRING
    input.Body.disks[_].initializeParams.enableConfidentialCompute == BOOLEAN
    input.Body.disks[_].initializeParams.labels.STRING == STRING
    input.Body.disks[_].initializeParams.licenses[_] == STRING
    input.Body.disks[_].initializeParams.onUpdateAction == enum_AttachedDiskInitializeParamsOnUpdateAction[_]
    input.Body.disks[_].initializeParams.provisionedIops == STRING
    input.Body.disks[_].initializeParams.provisionedThroughput == STRING
    input.Body.disks[_].initializeParams.replicaZones[_] == STRING
    input.Body.disks[_].initializeParams.resourceManagerTags.STRING == STRING
    input.Body.disks[_].initializeParams.resourcePolicies[_] == STRING
    input.Body.disks[_].initializeParams.sourceImage == STRING
    input.Body.disks[_].initializeParams.sourceImageEncryptionKey.kmsKeyName == STRING
    input.Body.disks[_].initializeParams.sourceImageEncryptionKey.kmsKeyServiceAccount == STRING
    input.Body.disks[_].initializeParams.sourceImageEncryptionKey.rawKey == STRING
    input.Body.disks[_].initializeParams.sourceImageEncryptionKey.rsaEncryptedKey == STRING
    input.Body.disks[_].initializeParams.sourceImageEncryptionKey.sha256 == STRING
    input.Body.disks[_].initializeParams.sourceSnapshot == STRING
    input.Body.disks[_].initializeParams.sourceSnapshotEncryptionKey.kmsKeyName == STRING
    input.Body.disks[_].initializeParams.sourceSnapshotEncryptionKey.kmsKeyServiceAccount == STRING
    input.Body.disks[_].initializeParams.sourceSnapshotEncryptionKey.rawKey == STRING
    input.Body.disks[_].initializeParams.sourceSnapshotEncryptionKey.rsaEncryptedKey == STRING
    input.Body.disks[_].initializeParams.sourceSnapshotEncryptionKey.sha256 == STRING
    input.Body.disks[_].initializeParams.storagePool == STRING
    input.Body.disks[_].interface == enum_AttachedDiskInterface[_]
    input.Body.disks[_].kind == STRING
    input.Body.disks[_].licenses[_] == STRING
    input.Body.disks[_].mode == enum_AttachedDiskMode[_]
    input.Body.disks[_].savedState == enum_AttachedDiskSavedState[_]
    input.Body.disks[_].shieldedInstanceInitialState.dbs[_].content == STRING
    input.Body.disks[_].shieldedInstanceInitialState.dbs[_].fileType == enum_FileContentBufferFileType[_]
    input.Body.disks[_].shieldedInstanceInitialState.dbxs[_].content == STRING
    input.Body.disks[_].shieldedInstanceInitialState.dbxs[_].fileType == enum_FileContentBufferFileType[_]
    input.Body.disks[_].shieldedInstanceInitialState.keks[_].content == STRING
    input.Body.disks[_].shieldedInstanceInitialState.keks[_].fileType == enum_FileContentBufferFileType[_]
    input.Body.disks[_].shieldedInstanceInitialState.pk.content == STRING
    input.Body.disks[_].shieldedInstanceInitialState.pk.fileType == enum_FileContentBufferFileType[_]
    input.Body.disks[_].source == STRING
    input.Body.disks[_].type == enum_AttachedDiskType[_]
    input.Body.displayDevice.enableDisplay == BOOLEAN
    input.Body.fingerprint == STRING
    input.Body.guestAccelerators[_].acceleratorCount == INTEGER
    input.Body.guestAccelerators[_].acceleratorType == STRING
    input.Body.hostname == STRING
    input.Body.id == STRING
    input.Body.instanceEncryptionKey.kmsKeyName == STRING
    input.Body.instanceEncryptionKey.kmsKeyServiceAccount == STRING
    input.Body.instanceEncryptionKey.rawKey == STRING
    input.Body.instanceEncryptionKey.rsaEncryptedKey == STRING
    input.Body.instanceEncryptionKey.sha256 == STRING
    input.Body.keyRevocationActionType == enum_InstanceKeyRevocationActionType[_]
    input.Body.kind == STRING
    input.Body.labelFingerprint == STRING
    input.Body.labels.STRING == STRING
    input.Body.lastStartTimestamp == STRING
    input.Body.lastStopTimestamp == STRING
    input.Body.lastSuspendedTimestamp == STRING
    input.Body.machineType == STRING
    input.Body.metadata.fingerprint == STRING
    input.Body.metadata.items[_].key == STRING
    input.Body.metadata.items[_].value == STRING
    input.Body.metadata.kind == STRING
    input.Body.minCpuPlatform == STRING
    input.Body.name == STRING
    input.Body.networkInterfaces[_].accessConfigs[_].externalIpv6 == STRING
    input.Body.networkInterfaces[_].accessConfigs[_].externalIpv6PrefixLength == INTEGER
    input.Body.networkInterfaces[_].accessConfigs[_].kind == STRING
    input.Body.networkInterfaces[_].accessConfigs[_].name == STRING
    input.Body.networkInterfaces[_].accessConfigs[_].natIP == STRING
    input.Body.networkInterfaces[_].accessConfigs[_].networkTier == enum_AccessConfigNetworkTier[_]
    input.Body.networkInterfaces[_].accessConfigs[_].publicPtrDomainName == STRING
    input.Body.networkInterfaces[_].accessConfigs[_].securityPolicy == STRING
    input.Body.networkInterfaces[_].accessConfigs[_].setPublicPtr == BOOLEAN
    input.Body.networkInterfaces[_].accessConfigs[_].type == enum_AccessConfigType[_]
    input.Body.networkInterfaces[_].aliasIpRanges[_].ipCidrRange == STRING
    input.Body.networkInterfaces[_].aliasIpRanges[_].subnetworkRangeName == STRING
    input.Body.networkInterfaces[_].fingerprint == STRING
    input.Body.networkInterfaces[_].internalIpv6PrefixLength == INTEGER
    input.Body.networkInterfaces[_].ipv6AccessConfigs[_].externalIpv6 == STRING
    input.Body.networkInterfaces[_].ipv6AccessConfigs[_].externalIpv6PrefixLength == INTEGER
    input.Body.networkInterfaces[_].ipv6AccessConfigs[_].kind == STRING
    input.Body.networkInterfaces[_].ipv6AccessConfigs[_].name == STRING
    input.Body.networkInterfaces[_].ipv6AccessConfigs[_].natIP == STRING
    input.Body.networkInterfaces[_].ipv6AccessConfigs[_].networkTier == enum_AccessConfigNetworkTier[_]
    input.Body.networkInterfaces[_].ipv6AccessConfigs[_].publicPtrDomainName == STRING
    input.Body.networkInterfaces[_].ipv6AccessConfigs[_].securityPolicy == STRING
    input.Body.networkInterfaces[_].ipv6AccessConfigs[_].setPublicPtr == BOOLEAN
    input.Body.networkInterfaces[_].ipv6AccessConfigs[_].type == enum_AccessConfigType[_]
    input.Body.networkInterfaces[_].ipv6AccessType == enum_NetworkInterfaceIpv6AccessType[_]
    input.Body.networkInterfaces[_].ipv6Address == STRING
    input.Body.networkInterfaces[_].kind == STRING
    input.Body.networkInterfaces[_].name == STRING
    input.Body.networkInterfaces[_].network == STRING
    input.Body.networkInterfaces[_].networkAttachment == STRING
    input.Body.networkInterfaces[_].networkIP == STRING
    input.Body.networkInterfaces[_].nicType == enum_NetworkInterfaceNicType[_]
    input.Body.networkInterfaces[_].queueCount == INTEGER
    input.Body.networkInterfaces[_].stackType == enum_NetworkInterfaceStackType[_]
    input.Body.networkInterfaces[_].subnetwork == STRING
    input.Body.networkPerformanceConfig.totalEgressBandwidthTier == enum_NetworkPerformanceConfigTotalEgressBandwidthTier[_]
    input.Body.params.resourceManagerTags.STRING == STRING
    input.Body.privateIpv6GoogleAccess == enum_InstancePrivateIpv6GoogleAccess[_]
    input.Body.reservationAffinity.consumeReservationType == enum_ReservationAffinityConsumeReservationType[_]
    input.Body.reservationAffinity.key == STRING
    input.Body.reservationAffinity.values[_] == STRING
    input.Body.resourcePolicies[_] == STRING
    input.Body.resourceStatus.physicalHost == STRING
    input.Body.resourceStatus.upcomingMaintenance.canReschedule == BOOLEAN
    input.Body.resourceStatus.upcomingMaintenance.latestWindowStartTime == STRING
    input.Body.resourceStatus.upcomingMaintenance.maintenanceStatus == enum_UpcomingMaintenanceMaintenanceStatus[_]
    input.Body.resourceStatus.upcomingMaintenance.type == enum_UpcomingMaintenanceType[_]
    input.Body.resourceStatus.upcomingMaintenance.windowEndTime == STRING
    input.Body.resourceStatus.upcomingMaintenance.windowStartTime == STRING
    input.Body.satisfiesPzi == BOOLEAN
    input.Body.satisfiesPzs == BOOLEAN
    input.Body.scheduling.automaticRestart == BOOLEAN
    input.Body.scheduling.instanceTerminationAction == enum_SchedulingInstanceTerminationAction[_]
    input.Body.scheduling.localSsdRecoveryTimeout.nanos == INTEGER
    input.Body.scheduling.localSsdRecoveryTimeout.seconds == STRING
    input.Body.scheduling.locationHint == STRING
    input.Body.scheduling.minNodeCpus == INTEGER
    input.Body.scheduling.nodeAffinities[_].key == STRING
    input.Body.scheduling.nodeAffinities[_].operator == enum_SchedulingNodeAffinityOperator[_]
    input.Body.scheduling.nodeAffinities[_].values[_] == STRING
    input.Body.scheduling.onHostMaintenance == enum_SchedulingOnHostMaintenance[_]
    input.Body.scheduling.preemptible == BOOLEAN
    input.Body.scheduling.provisioningModel == enum_SchedulingProvisioningModel[_]
    input.Body.selfLink == STRING
    input.Body.serviceAccounts[_].email == STRING
    input.Body.serviceAccounts[_].scopes[_] == STRING
    input.Body.shieldedInstanceConfig.enableIntegrityMonitoring == BOOLEAN
    input.Body.shieldedInstanceConfig.enableSecureBoot == BOOLEAN
    input.Body.shieldedInstanceConfig.enableVtpm == BOOLEAN
    input.Body.shieldedInstanceIntegrityPolicy.updateAutoLearnPolicy == BOOLEAN
    input.Body.sourceMachineImage == STRING
    input.Body.sourceMachineImageEncryptionKey.kmsKeyName == STRING
    input.Body.sourceMachineImageEncryptionKey.kmsKeyServiceAccount == STRING
    input.Body.sourceMachineImageEncryptionKey.rawKey == STRING
    input.Body.sourceMachineImageEncryptionKey.rsaEncryptedKey == STRING
    input.Body.sourceMachineImageEncryptionKey.sha256 == STRING
    input.Body.startRestricted == BOOLEAN
    input.Body.status == enum_InstanceStatus[_]
    input.Body.statusMessage == STRING
    input.Body.tags.fingerprint == STRING
    input.Body.tags.items[_] == STRING
    input.Body.zone == STRING
    input.ReqMap.instance == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.zone == STRING
    input.Qs.minimalAction == enum_MinimalActionParameter[_]
    input.Qs.mostDisruptiveAllowedAction == enum_MostDisruptiveAllowedActionParameter[_]
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.instances.updateAccessConfig

enum_AccessConfigNetworkTier := [ "FIXED_STANDARD", "PREMIUM", "STANDARD", "STANDARD_OVERRIDES_FIXED_STANDARD" ]
enum_AccessConfigType := [ "DIRECT_IPV6", "ONE_TO_ONE_NAT" ]

valid {
    input.Body.externalIpv6 == STRING
    input.Body.externalIpv6PrefixLength == INTEGER
    input.Body.kind == STRING
    input.Body.name == STRING
    input.Body.natIP == STRING
    input.Body.networkTier == enum_AccessConfigNetworkTier[_]
    input.Body.publicPtrDomainName == STRING
    input.Body.securityPolicy == STRING
    input.Body.setPublicPtr == BOOLEAN
    input.Body.type == enum_AccessConfigType[_]
    input.ReqMap.instance == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.zone == STRING
    input.Qs.networkInterface == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.instances.updateDisplayDevice

valid {
    input.Body.enableDisplay == BOOLEAN
    input.ReqMap.instance == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.zone == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.instances.updateNetworkInterface

enum_AccessConfigNetworkTier := [ "FIXED_STANDARD", "PREMIUM", "STANDARD", "STANDARD_OVERRIDES_FIXED_STANDARD" ]
enum_AccessConfigType := [ "DIRECT_IPV6", "ONE_TO_ONE_NAT" ]
enum_NetworkInterfaceIpv6AccessType := [ "EXTERNAL", "INTERNAL" ]
enum_NetworkInterfaceNicType := [ "GVNIC", "UNSPECIFIED_NIC_TYPE", "VIRTIO_NET" ]
enum_NetworkInterfaceStackType := [ "IPV4_IPV6", "IPV4_ONLY" ]

valid {
    input.Body.accessConfigs[_].externalIpv6 == STRING
    input.Body.accessConfigs[_].externalIpv6PrefixLength == INTEGER
    input.Body.accessConfigs[_].kind == STRING
    input.Body.accessConfigs[_].name == STRING
    input.Body.accessConfigs[_].natIP == STRING
    input.Body.accessConfigs[_].networkTier == enum_AccessConfigNetworkTier[_]
    input.Body.accessConfigs[_].publicPtrDomainName == STRING
    input.Body.accessConfigs[_].securityPolicy == STRING
    input.Body.accessConfigs[_].setPublicPtr == BOOLEAN
    input.Body.accessConfigs[_].type == enum_AccessConfigType[_]
    input.Body.aliasIpRanges[_].ipCidrRange == STRING
    input.Body.aliasIpRanges[_].subnetworkRangeName == STRING
    input.Body.fingerprint == STRING
    input.Body.internalIpv6PrefixLength == INTEGER
    input.Body.ipv6AccessConfigs[_].externalIpv6 == STRING
    input.Body.ipv6AccessConfigs[_].externalIpv6PrefixLength == INTEGER
    input.Body.ipv6AccessConfigs[_].kind == STRING
    input.Body.ipv6AccessConfigs[_].name == STRING
    input.Body.ipv6AccessConfigs[_].natIP == STRING
    input.Body.ipv6AccessConfigs[_].networkTier == enum_AccessConfigNetworkTier[_]
    input.Body.ipv6AccessConfigs[_].publicPtrDomainName == STRING
    input.Body.ipv6AccessConfigs[_].securityPolicy == STRING
    input.Body.ipv6AccessConfigs[_].setPublicPtr == BOOLEAN
    input.Body.ipv6AccessConfigs[_].type == enum_AccessConfigType[_]
    input.Body.ipv6AccessType == enum_NetworkInterfaceIpv6AccessType[_]
    input.Body.ipv6Address == STRING
    input.Body.kind == STRING
    input.Body.name == STRING
    input.Body.network == STRING
    input.Body.networkAttachment == STRING
    input.Body.networkIP == STRING
    input.Body.nicType == enum_NetworkInterfaceNicType[_]
    input.Body.queueCount == INTEGER
    input.Body.stackType == enum_NetworkInterfaceStackType[_]
    input.Body.subnetwork == STRING
    input.ReqMap.instance == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.zone == STRING
    input.Qs.networkInterface == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.instances.updateShieldedInstanceConfig

valid {
    input.Body.enableIntegrityMonitoring == BOOLEAN
    input.Body.enableSecureBoot == BOOLEAN
    input.Body.enableVtpm == BOOLEAN
    input.ReqMap.instance == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.zone == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.instances.updateShieldedVmConfig

valid {
    input.Body.enableIntegrityMonitoring == BOOLEAN
    input.Body.enableSecureBoot == BOOLEAN
    input.Body.enableVtpm == BOOLEAN
    input.ReqMap.instance == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.zone == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.instantSnapshots.aggregatedList

valid {
    input.ReqMap.ProjectID == STRING
    input.Qs.filter == STRING
    input.Qs.includeAllScopes == BOOLEAN
    input.Qs.maxResults == INTEGER
    input.Qs.orderBy == STRING
    input.Qs.pageToken == STRING
    input.Qs.returnPartialSuccess == BOOLEAN
    input.Qs.serviceProjectNumber == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.instantSnapshots.delete

valid {
    input.ReqMap.instantSnapshot == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.zone == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.instantSnapshots.get

valid {
    input.ReqMap.instantSnapshot == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.zone == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.instantSnapshots.getIamPolicy

valid {
    input.ReqMap.ProjectID == STRING
    input.ReqMap.resource == STRING
    input.ReqMap.zone == STRING
    input.Qs.optionsRequestedPolicyVersion == INTEGER
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.instantSnapshots.insert

enum_InstantSnapshotArchitecture := [ "ARCHITECTURE_UNSPECIFIED", "ARM64", "X86_64" ]
enum_InstantSnapshotStatus := [ "CREATING", "DELETING", "FAILED", "READY", "UNAVAILABLE" ]

valid {
    input.Body.architecture == enum_InstantSnapshotArchitecture[_]
    input.Body.creationTimestamp == STRING
    input.Body.description == STRING
    input.Body.diskSizeGb == STRING
    input.Body.id == STRING
    input.Body.kind == STRING
    input.Body.labelFingerprint == STRING
    input.Body.labels.STRING == STRING
    input.Body.name == STRING
    input.Body.region == STRING
    input.Body.resourceStatus.storageSizeBytes == STRING
    input.Body.satisfiesPzs == BOOLEAN
    input.Body.selfLink == STRING
    input.Body.selfLinkWithId == STRING
    input.Body.sourceDisk == STRING
    input.Body.sourceDiskId == STRING
    input.Body.status == enum_InstantSnapshotStatus[_]
    input.Body.zone == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.zone == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.instantSnapshots.list

valid {
    input.ReqMap.ProjectID == STRING
    input.ReqMap.zone == STRING
    input.Qs.filter == STRING
    input.Qs.maxResults == INTEGER
    input.Qs.orderBy == STRING
    input.Qs.pageToken == STRING
    input.Qs.returnPartialSuccess == BOOLEAN
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.instantSnapshots.setIamPolicy

enum_AuditLogConfigLogType := [ "ADMIN_READ", "DATA_READ", "DATA_WRITE", "LOG_TYPE_UNSPECIFIED" ]
enum_AuthorizationLoggingOptionsPermissionType := [ "ADMIN_READ", "ADMIN_WRITE", "DATA_READ", "DATA_WRITE", "PERMISSION_TYPE_UNSPECIFIED" ]
enum_ConditionIam := [ "APPROVER", "ATTRIBUTION", "AUTHORITY", "CREDENTIALS_TYPE", "CREDS_ASSERTION", "JUSTIFICATION_TYPE", "NO_ATTR", "SECURITY_REALM" ]
enum_ConditionOp := [ "DISCHARGED", "EQUALS", "IN", "NOT_EQUALS", "NOT_IN", "NO_OP" ]
enum_ConditionSys := [ "IP", "NAME", "NO_ATTR", "REGION", "SERVICE" ]
enum_LogConfigCloudAuditOptionsLogName := [ "ADMIN_ACTIVITY", "DATA_ACCESS", "UNSPECIFIED_LOG_NAME" ]
enum_LogConfigDataAccessOptionsLogMode := [ "LOG_FAIL_CLOSED", "LOG_MODE_UNSPECIFIED" ]
enum_RuleAction := [ "ALLOW", "ALLOW_WITH_LOG", "DENY", "DENY_WITH_LOG", "LOG", "NO_ACTION" ]

valid {
    input.Body.bindings[_].bindingId == STRING
    input.Body.bindings[_].condition.description == STRING
    input.Body.bindings[_].condition.expression == STRING
    input.Body.bindings[_].condition.location == STRING
    input.Body.bindings[_].condition.title == STRING
    input.Body.bindings[_].members[_] == STRING
    input.Body.bindings[_].role == STRING
    input.Body.etag == STRING
    input.Body.policy.auditConfigs[_].auditLogConfigs[_].exemptedMembers[_] == STRING
    input.Body.policy.auditConfigs[_].auditLogConfigs[_].ignoreChildExemptions == BOOLEAN
    input.Body.policy.auditConfigs[_].auditLogConfigs[_].logType == enum_AuditLogConfigLogType[_]
    input.Body.policy.auditConfigs[_].exemptedMembers[_] == STRING
    input.Body.policy.auditConfigs[_].service == STRING
    input.Body.policy.bindings[_].bindingId == 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.rules[_].action == enum_RuleAction[_]
    input.Body.policy.rules[_].conditions[_].iam == enum_ConditionIam[_]
    input.Body.policy.rules[_].conditions[_].op == enum_ConditionOp[_]
    input.Body.policy.rules[_].conditions[_].svc == STRING
    input.Body.policy.rules[_].conditions[_].sys == enum_ConditionSys[_]
    input.Body.policy.rules[_].conditions[_].values[_] == STRING
    input.Body.policy.rules[_].description == STRING
    input.Body.policy.rules[_].ins[_] == STRING
    input.Body.policy.rules[_].logConfigs[_].cloudAudit.authorizationLoggingOptions.permissionType == enum_AuthorizationLoggingOptionsPermissionType[_]
    input.Body.policy.rules[_].logConfigs[_].cloudAudit.logName == enum_LogConfigCloudAuditOptionsLogName[_]
    input.Body.policy.rules[_].logConfigs[_].counter.customFields[_].name == STRING
    input.Body.policy.rules[_].logConfigs[_].counter.customFields[_].value == STRING
    input.Body.policy.rules[_].logConfigs[_].counter.field == STRING
    input.Body.policy.rules[_].logConfigs[_].counter.metric == STRING
    input.Body.policy.rules[_].logConfigs[_].dataAccess.logMode == enum_LogConfigDataAccessOptionsLogMode[_]
    input.Body.policy.rules[_].notIns[_] == STRING
    input.Body.policy.rules[_].permissions[_] == STRING
    input.Body.policy.version == INTEGER
    input.ReqMap.ProjectID == STRING
    input.ReqMap.resource == STRING
    input.ReqMap.zone == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.instantSnapshots.setLabels

valid {
    input.Body.labelFingerprint == STRING
    input.Body.labels.STRING == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.resource == STRING
    input.ReqMap.zone == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.instantSnapshots.testIamPermissions

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

compute.interconnectAttachments.aggregatedList

valid {
    input.ReqMap.ProjectID == STRING
    input.Qs.filter == STRING
    input.Qs.includeAllScopes == BOOLEAN
    input.Qs.maxResults == INTEGER
    input.Qs.orderBy == STRING
    input.Qs.pageToken == STRING
    input.Qs.returnPartialSuccess == BOOLEAN
    input.Qs.serviceProjectNumber == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.interconnectAttachments.delete

valid {
    input.ReqMap.interconnectAttachment == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.interconnectAttachments.get

valid {
    input.ReqMap.interconnectAttachment == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.interconnectAttachments.getIamPolicy

valid {
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.ReqMap.resource == STRING
    input.Qs.optionsRequestedPolicyVersion == INTEGER
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.interconnectAttachments.insert

enum_InterconnectAttachmentBandwidth := [ "BPS_100M", "BPS_10G", "BPS_1G", "BPS_200M", "BPS_20G", "BPS_2G", "BPS_300M", "BPS_400M", "BPS_500M", "BPS_50G", "BPS_50M", "BPS_5G" ]
enum_InterconnectAttachmentConfigurationConstraintsBgpMd5 := [ "MD5_OPTIONAL", "MD5_REQUIRED", "MD5_UNSUPPORTED" ]
enum_InterconnectAttachmentEdgeAvailabilityDomain := [ "AVAILABILITY_DOMAIN_1", "AVAILABILITY_DOMAIN_2", "AVAILABILITY_DOMAIN_ANY" ]
enum_InterconnectAttachmentEncryption := [ "IPSEC", "NONE" ]
enum_InterconnectAttachmentOperationalStatus := [ "OS_ACTIVE", "OS_UNPROVISIONED" ]
enum_InterconnectAttachmentStackType := [ "IPV4_IPV6", "IPV4_ONLY" ]
enum_InterconnectAttachmentState := [ "ACTIVE", "DEFUNCT", "PARTNER_REQUEST_RECEIVED", "PENDING_CUSTOMER", "PENDING_PARTNER", "STATE_UNSPECIFIED", "UNPROVISIONED" ]
enum_InterconnectAttachmentType := [ "DEDICATED", "PARTNER", "PARTNER_PROVIDER" ]

valid {
    input.Body.adminEnabled == BOOLEAN
    input.Body.bandwidth == enum_InterconnectAttachmentBandwidth[_]
    input.Body.candidateIpv6Subnets[_] == STRING
    input.Body.candidateSubnets[_] == STRING
    input.Body.cloudRouterIpAddress == STRING
    input.Body.cloudRouterIpv6Address == STRING
    input.Body.cloudRouterIpv6InterfaceId == STRING
    input.Body.configurationConstraints.bgpMd5 == enum_InterconnectAttachmentConfigurationConstraintsBgpMd5[_]
    input.Body.configurationConstraints.bgpPeerAsnRanges[_].max == INTEGER
    input.Body.configurationConstraints.bgpPeerAsnRanges[_].min == INTEGER
    input.Body.creationTimestamp == STRING
    input.Body.customerRouterIpAddress == STRING
    input.Body.customerRouterIpv6Address == STRING
    input.Body.customerRouterIpv6InterfaceId == STRING
    input.Body.dataplaneVersion == INTEGER
    input.Body.description == STRING
    input.Body.edgeAvailabilityDomain == enum_InterconnectAttachmentEdgeAvailabilityDomain[_]
    input.Body.encryption == enum_InterconnectAttachmentEncryption[_]
    input.Body.googleReferenceId == STRING
    input.Body.id == STRING
    input.Body.interconnect == STRING
    input.Body.ipsecInternalAddresses[_] == STRING
    input.Body.kind == STRING
    input.Body.labelFingerprint == STRING
    input.Body.labels.STRING == STRING
    input.Body.mtu == INTEGER
    input.Body.name == STRING
    input.Body.operationalStatus == enum_InterconnectAttachmentOperationalStatus[_]
    input.Body.pairingKey == STRING
    input.Body.partnerAsn == STRING
    input.Body.partnerMetadata.interconnectName == STRING
    input.Body.partnerMetadata.partnerName == STRING
    input.Body.partnerMetadata.portalUrl == STRING
    input.Body.privateInterconnectInfo.tag8021q == INTEGER
    input.Body.region == STRING
    input.Body.remoteService == STRING
    input.Body.router == STRING
    input.Body.satisfiesPzs == BOOLEAN
    input.Body.selfLink == STRING
    input.Body.stackType == enum_InterconnectAttachmentStackType[_]
    input.Body.state == enum_InterconnectAttachmentState[_]
    input.Body.subnetLength == INTEGER
    input.Body.type == enum_InterconnectAttachmentType[_]
    input.Body.vlanTag8021q == INTEGER
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.Qs.requestId == STRING
    input.Qs.validateOnly == BOOLEAN
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.interconnectAttachments.list

valid {
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.Qs.filter == STRING
    input.Qs.maxResults == INTEGER
    input.Qs.orderBy == STRING
    input.Qs.pageToken == STRING
    input.Qs.returnPartialSuccess == BOOLEAN
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.interconnectAttachments.patch

enum_InterconnectAttachmentBandwidth := [ "BPS_100M", "BPS_10G", "BPS_1G", "BPS_200M", "BPS_20G", "BPS_2G", "BPS_300M", "BPS_400M", "BPS_500M", "BPS_50G", "BPS_50M", "BPS_5G" ]
enum_InterconnectAttachmentConfigurationConstraintsBgpMd5 := [ "MD5_OPTIONAL", "MD5_REQUIRED", "MD5_UNSUPPORTED" ]
enum_InterconnectAttachmentEdgeAvailabilityDomain := [ "AVAILABILITY_DOMAIN_1", "AVAILABILITY_DOMAIN_2", "AVAILABILITY_DOMAIN_ANY" ]
enum_InterconnectAttachmentEncryption := [ "IPSEC", "NONE" ]
enum_InterconnectAttachmentOperationalStatus := [ "OS_ACTIVE", "OS_UNPROVISIONED" ]
enum_InterconnectAttachmentStackType := [ "IPV4_IPV6", "IPV4_ONLY" ]
enum_InterconnectAttachmentState := [ "ACTIVE", "DEFUNCT", "PARTNER_REQUEST_RECEIVED", "PENDING_CUSTOMER", "PENDING_PARTNER", "STATE_UNSPECIFIED", "UNPROVISIONED" ]
enum_InterconnectAttachmentType := [ "DEDICATED", "PARTNER", "PARTNER_PROVIDER" ]

valid {
    input.Body.adminEnabled == BOOLEAN
    input.Body.bandwidth == enum_InterconnectAttachmentBandwidth[_]
    input.Body.candidateIpv6Subnets[_] == STRING
    input.Body.candidateSubnets[_] == STRING
    input.Body.cloudRouterIpAddress == STRING
    input.Body.cloudRouterIpv6Address == STRING
    input.Body.cloudRouterIpv6InterfaceId == STRING
    input.Body.configurationConstraints.bgpMd5 == enum_InterconnectAttachmentConfigurationConstraintsBgpMd5[_]
    input.Body.configurationConstraints.bgpPeerAsnRanges[_].max == INTEGER
    input.Body.configurationConstraints.bgpPeerAsnRanges[_].min == INTEGER
    input.Body.creationTimestamp == STRING
    input.Body.customerRouterIpAddress == STRING
    input.Body.customerRouterIpv6Address == STRING
    input.Body.customerRouterIpv6InterfaceId == STRING
    input.Body.dataplaneVersion == INTEGER
    input.Body.description == STRING
    input.Body.edgeAvailabilityDomain == enum_InterconnectAttachmentEdgeAvailabilityDomain[_]
    input.Body.encryption == enum_InterconnectAttachmentEncryption[_]
    input.Body.googleReferenceId == STRING
    input.Body.id == STRING
    input.Body.interconnect == STRING
    input.Body.ipsecInternalAddresses[_] == STRING
    input.Body.kind == STRING
    input.Body.labelFingerprint == STRING
    input.Body.labels.STRING == STRING
    input.Body.mtu == INTEGER
    input.Body.name == STRING
    input.Body.operationalStatus == enum_InterconnectAttachmentOperationalStatus[_]
    input.Body.pairingKey == STRING
    input.Body.partnerAsn == STRING
    input.Body.partnerMetadata.interconnectName == STRING
    input.Body.partnerMetadata.partnerName == STRING
    input.Body.partnerMetadata.portalUrl == STRING
    input.Body.privateInterconnectInfo.tag8021q == INTEGER
    input.Body.region == STRING
    input.Body.remoteService == STRING
    input.Body.router == STRING
    input.Body.satisfiesPzs == BOOLEAN
    input.Body.selfLink == STRING
    input.Body.stackType == enum_InterconnectAttachmentStackType[_]
    input.Body.state == enum_InterconnectAttachmentState[_]
    input.Body.subnetLength == INTEGER
    input.Body.type == enum_InterconnectAttachmentType[_]
    input.Body.vlanTag8021q == INTEGER
    input.ReqMap.interconnectAttachment == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.interconnectAttachments.setIamPolicy

enum_AuditLogConfigLogType := [ "ADMIN_READ", "DATA_READ", "DATA_WRITE", "LOG_TYPE_UNSPECIFIED" ]
enum_AuthorizationLoggingOptionsPermissionType := [ "ADMIN_READ", "ADMIN_WRITE", "DATA_READ", "DATA_WRITE", "PERMISSION_TYPE_UNSPECIFIED" ]
enum_ConditionIam := [ "APPROVER", "ATTRIBUTION", "AUTHORITY", "CREDENTIALS_TYPE", "CREDS_ASSERTION", "JUSTIFICATION_TYPE", "NO_ATTR", "SECURITY_REALM" ]
enum_ConditionOp := [ "DISCHARGED", "EQUALS", "IN", "NOT_EQUALS", "NOT_IN", "NO_OP" ]
enum_ConditionSys := [ "IP", "NAME", "NO_ATTR", "REGION", "SERVICE" ]
enum_LogConfigCloudAuditOptionsLogName := [ "ADMIN_ACTIVITY", "DATA_ACCESS", "UNSPECIFIED_LOG_NAME" ]
enum_LogConfigDataAccessOptionsLogMode := [ "LOG_FAIL_CLOSED", "LOG_MODE_UNSPECIFIED" ]
enum_RuleAction := [ "ALLOW", "ALLOW_WITH_LOG", "DENY", "DENY_WITH_LOG", "LOG", "NO_ACTION" ]

valid {
    input.Body.bindings[_].bindingId == STRING
    input.Body.bindings[_].condition.description == STRING
    input.Body.bindings[_].condition.expression == STRING
    input.Body.bindings[_].condition.location == STRING
    input.Body.bindings[_].condition.title == STRING
    input.Body.bindings[_].members[_] == STRING
    input.Body.bindings[_].role == STRING
    input.Body.etag == STRING
    input.Body.policy.auditConfigs[_].auditLogConfigs[_].exemptedMembers[_] == STRING
    input.Body.policy.auditConfigs[_].auditLogConfigs[_].ignoreChildExemptions == BOOLEAN
    input.Body.policy.auditConfigs[_].auditLogConfigs[_].logType == enum_AuditLogConfigLogType[_]
    input.Body.policy.auditConfigs[_].exemptedMembers[_] == STRING
    input.Body.policy.auditConfigs[_].service == STRING
    input.Body.policy.bindings[_].bindingId == 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.rules[_].action == enum_RuleAction[_]
    input.Body.policy.rules[_].conditions[_].iam == enum_ConditionIam[_]
    input.Body.policy.rules[_].conditions[_].op == enum_ConditionOp[_]
    input.Body.policy.rules[_].conditions[_].svc == STRING
    input.Body.policy.rules[_].conditions[_].sys == enum_ConditionSys[_]
    input.Body.policy.rules[_].conditions[_].values[_] == STRING
    input.Body.policy.rules[_].description == STRING
    input.Body.policy.rules[_].ins[_] == STRING
    input.Body.policy.rules[_].logConfigs[_].cloudAudit.authorizationLoggingOptions.permissionType == enum_AuthorizationLoggingOptionsPermissionType[_]
    input.Body.policy.rules[_].logConfigs[_].cloudAudit.logName == enum_LogConfigCloudAuditOptionsLogName[_]
    input.Body.policy.rules[_].logConfigs[_].counter.customFields[_].name == STRING
    input.Body.policy.rules[_].logConfigs[_].counter.customFields[_].value == STRING
    input.Body.policy.rules[_].logConfigs[_].counter.field == STRING
    input.Body.policy.rules[_].logConfigs[_].counter.metric == STRING
    input.Body.policy.rules[_].logConfigs[_].dataAccess.logMode == enum_LogConfigDataAccessOptionsLogMode[_]
    input.Body.policy.rules[_].notIns[_] == STRING
    input.Body.policy.rules[_].permissions[_] == STRING
    input.Body.policy.version == INTEGER
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.ReqMap.resource == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.interconnectAttachments.setLabels

valid {
    input.Body.labelFingerprint == STRING
    input.Body.labels.STRING == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.ReqMap.resource == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.interconnectAttachments.testIamPermissions

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

compute.interconnectLocations.get

valid {
    input.ReqMap.interconnectLocation == STRING
    input.ReqMap.ProjectID == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.interconnectLocations.list

valid {
    input.ReqMap.ProjectID == STRING
    input.Qs.filter == STRING
    input.Qs.maxResults == INTEGER
    input.Qs.orderBy == STRING
    input.Qs.pageToken == STRING
    input.Qs.returnPartialSuccess == BOOLEAN
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.interconnectLocations.testIamPermissions

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

compute.interconnectRemoteLocations.get

valid {
    input.ReqMap.interconnectRemoteLocation == STRING
    input.ReqMap.ProjectID == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.interconnectRemoteLocations.list

valid {
    input.ReqMap.ProjectID == STRING
    input.Qs.filter == STRING
    input.Qs.maxResults == INTEGER
    input.Qs.orderBy == STRING
    input.Qs.pageToken == STRING
    input.Qs.returnPartialSuccess == BOOLEAN
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.interconnectRemoteLocations.testIamPermissions

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

compute.interconnects.delete

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

compute.interconnects.get

valid {
    input.ReqMap.interconnect == STRING
    input.ReqMap.ProjectID == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.interconnects.getDiagnostics

valid {
    input.ReqMap.interconnect == STRING
    input.ReqMap.ProjectID == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.interconnects.getIamPolicy

valid {
    input.ReqMap.ProjectID == STRING
    input.ReqMap.resource == STRING
    input.Qs.optionsRequestedPolicyVersion == INTEGER
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.interconnects.getMacsecConfig

valid {
    input.ReqMap.interconnect == STRING
    input.ReqMap.ProjectID == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.interconnects.insert

enum_InterconnectAvailableFeatures := [ "IF_MACSEC" ]
enum_InterconnectInterconnectType := [ "DEDICATED", "IT_PRIVATE", "PARTNER" ]
enum_InterconnectLinkType := [ "LINK_TYPE_ETHERNET_100G_LR", "LINK_TYPE_ETHERNET_10G_LR" ]
enum_InterconnectOperationalStatus := [ "OS_ACTIVE", "OS_UNPROVISIONED" ]
enum_InterconnectOutageNotificationIssueType := [ "IT_OUTAGE", "IT_PARTIAL_OUTAGE", "OUTAGE", "PARTIAL_OUTAGE" ]
enum_InterconnectOutageNotificationSource := [ "GOOGLE", "NSRC_GOOGLE" ]
enum_InterconnectOutageNotificationState := [ "ACTIVE", "CANCELLED", "COMPLETED", "NS_ACTIVE", "NS_CANCELED" ]
enum_InterconnectRequestedFeatures := [ "IF_MACSEC" ]
enum_InterconnectState := [ "ACTIVE", "UNPROVISIONED" ]

valid {
    input.Body.adminEnabled == BOOLEAN
    input.Body.availableFeatures[_] == enum_InterconnectAvailableFeatures[_]
    input.Body.circuitInfos[_].customerDemarcId == STRING
    input.Body.circuitInfos[_].googleCircuitId == STRING
    input.Body.circuitInfos[_].googleDemarcId == STRING
    input.Body.creationTimestamp == STRING
    input.Body.customerName == STRING
    input.Body.description == STRING
    input.Body.expectedOutages[_].affectedCircuits[_] == STRING
    input.Body.expectedOutages[_].description == STRING
    input.Body.expectedOutages[_].endTime == STRING
    input.Body.expectedOutages[_].issueType == enum_InterconnectOutageNotificationIssueType[_]
    input.Body.expectedOutages[_].name == STRING
    input.Body.expectedOutages[_].source == enum_InterconnectOutageNotificationSource[_]
    input.Body.expectedOutages[_].startTime == STRING
    input.Body.expectedOutages[_].state == enum_InterconnectOutageNotificationState[_]
    input.Body.googleIpAddress == STRING
    input.Body.googleReferenceId == STRING
    input.Body.id == STRING
    input.Body.interconnectAttachments[_] == STRING
    input.Body.interconnectType == enum_InterconnectInterconnectType[_]
    input.Body.kind == STRING
    input.Body.labelFingerprint == STRING
    input.Body.labels.STRING == STRING
    input.Body.linkType == enum_InterconnectLinkType[_]
    input.Body.location == STRING
    input.Body.macsec.failOpen == BOOLEAN
    input.Body.macsec.preSharedKeys[_].name == STRING
    input.Body.macsec.preSharedKeys[_].startTime == STRING
    input.Body.macsecEnabled == BOOLEAN
    input.Body.name == STRING
    input.Body.nocContactEmail == STRING
    input.Body.operationalStatus == enum_InterconnectOperationalStatus[_]
    input.Body.peerIpAddress == STRING
    input.Body.provisionedLinkCount == INTEGER
    input.Body.remoteLocation == STRING
    input.Body.requestedFeatures[_] == enum_InterconnectRequestedFeatures[_]
    input.Body.requestedLinkCount == INTEGER
    input.Body.satisfiesPzs == BOOLEAN
    input.Body.selfLink == STRING
    input.Body.state == enum_InterconnectState[_]
    input.ReqMap.ProjectID == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.interconnects.list

valid {
    input.ReqMap.ProjectID == STRING
    input.Qs.filter == STRING
    input.Qs.maxResults == INTEGER
    input.Qs.orderBy == STRING
    input.Qs.pageToken == STRING
    input.Qs.returnPartialSuccess == BOOLEAN
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.interconnects.patch

enum_InterconnectAvailableFeatures := [ "IF_MACSEC" ]
enum_InterconnectInterconnectType := [ "DEDICATED", "IT_PRIVATE", "PARTNER" ]
enum_InterconnectLinkType := [ "LINK_TYPE_ETHERNET_100G_LR", "LINK_TYPE_ETHERNET_10G_LR" ]
enum_InterconnectOperationalStatus := [ "OS_ACTIVE", "OS_UNPROVISIONED" ]
enum_InterconnectOutageNotificationIssueType := [ "IT_OUTAGE", "IT_PARTIAL_OUTAGE", "OUTAGE", "PARTIAL_OUTAGE" ]
enum_InterconnectOutageNotificationSource := [ "GOOGLE", "NSRC_GOOGLE" ]
enum_InterconnectOutageNotificationState := [ "ACTIVE", "CANCELLED", "COMPLETED", "NS_ACTIVE", "NS_CANCELED" ]
enum_InterconnectRequestedFeatures := [ "IF_MACSEC" ]
enum_InterconnectState := [ "ACTIVE", "UNPROVISIONED" ]

valid {
    input.Body.adminEnabled == BOOLEAN
    input.Body.availableFeatures[_] == enum_InterconnectAvailableFeatures[_]
    input.Body.circuitInfos[_].customerDemarcId == STRING
    input.Body.circuitInfos[_].googleCircuitId == STRING
    input.Body.circuitInfos[_].googleDemarcId == STRING
    input.Body.creationTimestamp == STRING
    input.Body.customerName == STRING
    input.Body.description == STRING
    input.Body.expectedOutages[_].affectedCircuits[_] == STRING
    input.Body.expectedOutages[_].description == STRING
    input.Body.expectedOutages[_].endTime == STRING
    input.Body.expectedOutages[_].issueType == enum_InterconnectOutageNotificationIssueType[_]
    input.Body.expectedOutages[_].name == STRING
    input.Body.expectedOutages[_].source == enum_InterconnectOutageNotificationSource[_]
    input.Body.expectedOutages[_].startTime == STRING
    input.Body.expectedOutages[_].state == enum_InterconnectOutageNotificationState[_]
    input.Body.googleIpAddress == STRING
    input.Body.googleReferenceId == STRING
    input.Body.id == STRING
    input.Body.interconnectAttachments[_] == STRING
    input.Body.interconnectType == enum_InterconnectInterconnectType[_]
    input.Body.kind == STRING
    input.Body.labelFingerprint == STRING
    input.Body.labels.STRING == STRING
    input.Body.linkType == enum_InterconnectLinkType[_]
    input.Body.location == STRING
    input.Body.macsec.failOpen == BOOLEAN
    input.Body.macsec.preSharedKeys[_].name == STRING
    input.Body.macsec.preSharedKeys[_].startTime == STRING
    input.Body.macsecEnabled == BOOLEAN
    input.Body.name == STRING
    input.Body.nocContactEmail == STRING
    input.Body.operationalStatus == enum_InterconnectOperationalStatus[_]
    input.Body.peerIpAddress == STRING
    input.Body.provisionedLinkCount == INTEGER
    input.Body.remoteLocation == STRING
    input.Body.requestedFeatures[_] == enum_InterconnectRequestedFeatures[_]
    input.Body.requestedLinkCount == INTEGER
    input.Body.satisfiesPzs == BOOLEAN
    input.Body.selfLink == STRING
    input.Body.state == enum_InterconnectState[_]
    input.ReqMap.interconnect == STRING
    input.ReqMap.ProjectID == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.interconnects.setIamPolicy

enum_AuditLogConfigLogType := [ "ADMIN_READ", "DATA_READ", "DATA_WRITE", "LOG_TYPE_UNSPECIFIED" ]
enum_AuthorizationLoggingOptionsPermissionType := [ "ADMIN_READ", "ADMIN_WRITE", "DATA_READ", "DATA_WRITE", "PERMISSION_TYPE_UNSPECIFIED" ]
enum_ConditionIam := [ "APPROVER", "ATTRIBUTION", "AUTHORITY", "CREDENTIALS_TYPE", "CREDS_ASSERTION", "JUSTIFICATION_TYPE", "NO_ATTR", "SECURITY_REALM" ]
enum_ConditionOp := [ "DISCHARGED", "EQUALS", "IN", "NOT_EQUALS", "NOT_IN", "NO_OP" ]
enum_ConditionSys := [ "IP", "NAME", "NO_ATTR", "REGION", "SERVICE" ]
enum_LogConfigCloudAuditOptionsLogName := [ "ADMIN_ACTIVITY", "DATA_ACCESS", "UNSPECIFIED_LOG_NAME" ]
enum_LogConfigDataAccessOptionsLogMode := [ "LOG_FAIL_CLOSED", "LOG_MODE_UNSPECIFIED" ]
enum_RuleAction := [ "ALLOW", "ALLOW_WITH_LOG", "DENY", "DENY_WITH_LOG", "LOG", "NO_ACTION" ]

valid {
    input.Body.bindings[_].bindingId == STRING
    input.Body.bindings[_].condition.description == STRING
    input.Body.bindings[_].condition.expression == STRING
    input.Body.bindings[_].condition.location == STRING
    input.Body.bindings[_].condition.title == STRING
    input.Body.bindings[_].members[_] == STRING
    input.Body.bindings[_].role == STRING
    input.Body.etag == STRING
    input.Body.policy.auditConfigs[_].auditLogConfigs[_].exemptedMembers[_] == STRING
    input.Body.policy.auditConfigs[_].auditLogConfigs[_].ignoreChildExemptions == BOOLEAN
    input.Body.policy.auditConfigs[_].auditLogConfigs[_].logType == enum_AuditLogConfigLogType[_]
    input.Body.policy.auditConfigs[_].exemptedMembers[_] == STRING
    input.Body.policy.auditConfigs[_].service == STRING
    input.Body.policy.bindings[_].bindingId == 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.rules[_].action == enum_RuleAction[_]
    input.Body.policy.rules[_].conditions[_].iam == enum_ConditionIam[_]
    input.Body.policy.rules[_].conditions[_].op == enum_ConditionOp[_]
    input.Body.policy.rules[_].conditions[_].svc == STRING
    input.Body.policy.rules[_].conditions[_].sys == enum_ConditionSys[_]
    input.Body.policy.rules[_].conditions[_].values[_] == STRING
    input.Body.policy.rules[_].description == STRING
    input.Body.policy.rules[_].ins[_] == STRING
    input.Body.policy.rules[_].logConfigs[_].cloudAudit.authorizationLoggingOptions.permissionType == enum_AuthorizationLoggingOptionsPermissionType[_]
    input.Body.policy.rules[_].logConfigs[_].cloudAudit.logName == enum_LogConfigCloudAuditOptionsLogName[_]
    input.Body.policy.rules[_].logConfigs[_].counter.customFields[_].name == STRING
    input.Body.policy.rules[_].logConfigs[_].counter.customFields[_].value == STRING
    input.Body.policy.rules[_].logConfigs[_].counter.field == STRING
    input.Body.policy.rules[_].logConfigs[_].counter.metric == STRING
    input.Body.policy.rules[_].logConfigs[_].dataAccess.logMode == enum_LogConfigDataAccessOptionsLogMode[_]
    input.Body.policy.rules[_].notIns[_] == STRING
    input.Body.policy.rules[_].permissions[_] == STRING
    input.Body.policy.version == INTEGER
    input.ReqMap.ProjectID == STRING
    input.ReqMap.resource == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.interconnects.setLabels

valid {
    input.Body.labelFingerprint == STRING
    input.Body.labels.STRING == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.resource == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.interconnects.testIamPermissions

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

compute.licenseCodes.get

valid {
    input.ReqMap.licenseCode == STRING
    input.ReqMap.ProjectID == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.licenseCodes.getIamPolicy

valid {
    input.ReqMap.ProjectID == STRING
    input.ReqMap.resource == STRING
    input.Qs.optionsRequestedPolicyVersion == INTEGER
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.licenseCodes.setIamPolicy

enum_AuditLogConfigLogType := [ "ADMIN_READ", "DATA_READ", "DATA_WRITE", "LOG_TYPE_UNSPECIFIED" ]
enum_AuthorizationLoggingOptionsPermissionType := [ "ADMIN_READ", "ADMIN_WRITE", "DATA_READ", "DATA_WRITE", "PERMISSION_TYPE_UNSPECIFIED" ]
enum_ConditionIam := [ "APPROVER", "ATTRIBUTION", "AUTHORITY", "CREDENTIALS_TYPE", "CREDS_ASSERTION", "JUSTIFICATION_TYPE", "NO_ATTR", "SECURITY_REALM" ]
enum_ConditionOp := [ "DISCHARGED", "EQUALS", "IN", "NOT_EQUALS", "NOT_IN", "NO_OP" ]
enum_ConditionSys := [ "IP", "NAME", "NO_ATTR", "REGION", "SERVICE" ]
enum_LogConfigCloudAuditOptionsLogName := [ "ADMIN_ACTIVITY", "DATA_ACCESS", "UNSPECIFIED_LOG_NAME" ]
enum_LogConfigDataAccessOptionsLogMode := [ "LOG_FAIL_CLOSED", "LOG_MODE_UNSPECIFIED" ]
enum_RuleAction := [ "ALLOW", "ALLOW_WITH_LOG", "DENY", "DENY_WITH_LOG", "LOG", "NO_ACTION" ]

valid {
    input.Body.bindings[_].bindingId == STRING
    input.Body.bindings[_].condition.description == STRING
    input.Body.bindings[_].condition.expression == STRING
    input.Body.bindings[_].condition.location == STRING
    input.Body.bindings[_].condition.title == STRING
    input.Body.bindings[_].members[_] == STRING
    input.Body.bindings[_].role == STRING
    input.Body.etag == STRING
    input.Body.policy.auditConfigs[_].auditLogConfigs[_].exemptedMembers[_] == STRING
    input.Body.policy.auditConfigs[_].auditLogConfigs[_].ignoreChildExemptions == BOOLEAN
    input.Body.policy.auditConfigs[_].auditLogConfigs[_].logType == enum_AuditLogConfigLogType[_]
    input.Body.policy.auditConfigs[_].exemptedMembers[_] == STRING
    input.Body.policy.auditConfigs[_].service == STRING
    input.Body.policy.bindings[_].bindingId == 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.rules[_].action == enum_RuleAction[_]
    input.Body.policy.rules[_].conditions[_].iam == enum_ConditionIam[_]
    input.Body.policy.rules[_].conditions[_].op == enum_ConditionOp[_]
    input.Body.policy.rules[_].conditions[_].svc == STRING
    input.Body.policy.rules[_].conditions[_].sys == enum_ConditionSys[_]
    input.Body.policy.rules[_].conditions[_].values[_] == STRING
    input.Body.policy.rules[_].description == STRING
    input.Body.policy.rules[_].ins[_] == STRING
    input.Body.policy.rules[_].logConfigs[_].cloudAudit.authorizationLoggingOptions.permissionType == enum_AuthorizationLoggingOptionsPermissionType[_]
    input.Body.policy.rules[_].logConfigs[_].cloudAudit.logName == enum_LogConfigCloudAuditOptionsLogName[_]
    input.Body.policy.rules[_].logConfigs[_].counter.customFields[_].name == STRING
    input.Body.policy.rules[_].logConfigs[_].counter.customFields[_].value == STRING
    input.Body.policy.rules[_].logConfigs[_].counter.field == STRING
    input.Body.policy.rules[_].logConfigs[_].counter.metric == STRING
    input.Body.policy.rules[_].logConfigs[_].dataAccess.logMode == enum_LogConfigDataAccessOptionsLogMode[_]
    input.Body.policy.rules[_].notIns[_] == STRING
    input.Body.policy.rules[_].permissions[_] == STRING
    input.Body.policy.version == INTEGER
    input.ReqMap.ProjectID == STRING
    input.ReqMap.resource == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.licenseCodes.testIamPermissions

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

compute.licenses.delete

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

compute.licenses.get

valid {
    input.ReqMap.license == STRING
    input.ReqMap.ProjectID == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.licenses.getIamPolicy

valid {
    input.ReqMap.ProjectID == STRING
    input.ReqMap.resource == STRING
    input.Qs.optionsRequestedPolicyVersion == INTEGER
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.licenses.insert

valid {
    input.Body.chargesUseFee == BOOLEAN
    input.Body.creationTimestamp == STRING
    input.Body.description == STRING
    input.Body.id == STRING
    input.Body.kind == STRING
    input.Body.licenseCode == STRING
    input.Body.name == STRING
    input.Body.resourceRequirements.minGuestCpuCount == INTEGER
    input.Body.resourceRequirements.minMemoryMb == INTEGER
    input.Body.selfLink == STRING
    input.Body.transferable == BOOLEAN
    input.ReqMap.ProjectID == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.licenses.list

valid {
    input.ReqMap.ProjectID == STRING
    input.Qs.filter == STRING
    input.Qs.maxResults == INTEGER
    input.Qs.orderBy == STRING
    input.Qs.pageToken == STRING
    input.Qs.returnPartialSuccess == BOOLEAN
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.licenses.setIamPolicy

enum_AuditLogConfigLogType := [ "ADMIN_READ", "DATA_READ", "DATA_WRITE", "LOG_TYPE_UNSPECIFIED" ]
enum_AuthorizationLoggingOptionsPermissionType := [ "ADMIN_READ", "ADMIN_WRITE", "DATA_READ", "DATA_WRITE", "PERMISSION_TYPE_UNSPECIFIED" ]
enum_ConditionIam := [ "APPROVER", "ATTRIBUTION", "AUTHORITY", "CREDENTIALS_TYPE", "CREDS_ASSERTION", "JUSTIFICATION_TYPE", "NO_ATTR", "SECURITY_REALM" ]
enum_ConditionOp := [ "DISCHARGED", "EQUALS", "IN", "NOT_EQUALS", "NOT_IN", "NO_OP" ]
enum_ConditionSys := [ "IP", "NAME", "NO_ATTR", "REGION", "SERVICE" ]
enum_LogConfigCloudAuditOptionsLogName := [ "ADMIN_ACTIVITY", "DATA_ACCESS", "UNSPECIFIED_LOG_NAME" ]
enum_LogConfigDataAccessOptionsLogMode := [ "LOG_FAIL_CLOSED", "LOG_MODE_UNSPECIFIED" ]
enum_RuleAction := [ "ALLOW", "ALLOW_WITH_LOG", "DENY", "DENY_WITH_LOG", "LOG", "NO_ACTION" ]

valid {
    input.Body.bindings[_].bindingId == STRING
    input.Body.bindings[_].condition.description == STRING
    input.Body.bindings[_].condition.expression == STRING
    input.Body.bindings[_].condition.location == STRING
    input.Body.bindings[_].condition.title == STRING
    input.Body.bindings[_].members[_] == STRING
    input.Body.bindings[_].role == STRING
    input.Body.etag == STRING
    input.Body.policy.auditConfigs[_].auditLogConfigs[_].exemptedMembers[_] == STRING
    input.Body.policy.auditConfigs[_].auditLogConfigs[_].ignoreChildExemptions == BOOLEAN
    input.Body.policy.auditConfigs[_].auditLogConfigs[_].logType == enum_AuditLogConfigLogType[_]
    input.Body.policy.auditConfigs[_].exemptedMembers[_] == STRING
    input.Body.policy.auditConfigs[_].service == STRING
    input.Body.policy.bindings[_].bindingId == 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.rules[_].action == enum_RuleAction[_]
    input.Body.policy.rules[_].conditions[_].iam == enum_ConditionIam[_]
    input.Body.policy.rules[_].conditions[_].op == enum_ConditionOp[_]
    input.Body.policy.rules[_].conditions[_].svc == STRING
    input.Body.policy.rules[_].conditions[_].sys == enum_ConditionSys[_]
    input.Body.policy.rules[_].conditions[_].values[_] == STRING
    input.Body.policy.rules[_].description == STRING
    input.Body.policy.rules[_].ins[_] == STRING
    input.Body.policy.rules[_].logConfigs[_].cloudAudit.authorizationLoggingOptions.permissionType == enum_AuthorizationLoggingOptionsPermissionType[_]
    input.Body.policy.rules[_].logConfigs[_].cloudAudit.logName == enum_LogConfigCloudAuditOptionsLogName[_]
    input.Body.policy.rules[_].logConfigs[_].counter.customFields[_].name == STRING
    input.Body.policy.rules[_].logConfigs[_].counter.customFields[_].value == STRING
    input.Body.policy.rules[_].logConfigs[_].counter.field == STRING
    input.Body.policy.rules[_].logConfigs[_].counter.metric == STRING
    input.Body.policy.rules[_].logConfigs[_].dataAccess.logMode == enum_LogConfigDataAccessOptionsLogMode[_]
    input.Body.policy.rules[_].notIns[_] == STRING
    input.Body.policy.rules[_].permissions[_] == STRING
    input.Body.policy.version == INTEGER
    input.ReqMap.ProjectID == STRING
    input.ReqMap.resource == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.licenses.testIamPermissions

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

compute.machineImages.delete

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

compute.machineImages.get

valid {
    input.ReqMap.machineImage == STRING
    input.ReqMap.ProjectID == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.machineImages.getIamPolicy

valid {
    input.ReqMap.ProjectID == STRING
    input.ReqMap.resource == STRING
    input.Qs.optionsRequestedPolicyVersion == INTEGER
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.machineImages.insert

enum_AccessConfigNetworkTier := [ "FIXED_STANDARD", "PREMIUM", "STANDARD", "STANDARD_OVERRIDES_FIXED_STANDARD" ]
enum_AccessConfigType := [ "DIRECT_IPV6", "ONE_TO_ONE_NAT" ]
enum_AttachedDiskArchitecture := [ "ARCHITECTURE_UNSPECIFIED", "ARM64", "X86_64" ]
enum_AttachedDiskInitializeParamsArchitecture := [ "ARCHITECTURE_UNSPECIFIED", "ARM64", "X86_64" ]
enum_AttachedDiskInitializeParamsOnUpdateAction := [ "RECREATE_DISK", "RECREATE_DISK_IF_SOURCE_CHANGED", "USE_EXISTING_DISK" ]
enum_AttachedDiskInterface := [ "NVME", "SCSI" ]
enum_AttachedDiskMode := [ "READ_ONLY", "READ_WRITE" ]
enum_AttachedDiskSavedState := [ "DISK_SAVED_STATE_UNSPECIFIED", "PRESERVED" ]
enum_AttachedDiskType := [ "PERSISTENT", "SCRATCH" ]
enum_FileContentBufferFileType := [ "BIN", "UNDEFINED", "X509" ]
enum_GuestOsFeatureType := [ "FEATURE_TYPE_UNSPECIFIED", "GVNIC", "IDPF", "MULTI_IP_SUBNET", "SECURE_BOOT", "SEV_CAPABLE", "SEV_LIVE_MIGRATABLE", "SEV_LIVE_MIGRATABLE_V2", "SEV_SNP_CAPABLE", "UEFI_COMPATIBLE", "VIRTIO_SCSI_MULTIQUEUE", "WINDOWS" ]
enum_InstancePropertiesKeyRevocationActionType := [ "KEY_REVOCATION_ACTION_TYPE_UNSPECIFIED", "NONE", "STOP" ]
enum_InstancePropertiesPrivateIpv6GoogleAccess := [ "ENABLE_BIDIRECTIONAL_ACCESS_TO_GOOGLE", "ENABLE_OUTBOUND_VM_ACCESS_TO_GOOGLE", "INHERIT_FROM_SUBNETWORK" ]
enum_MachineImageStatus := [ "CREATING", "DELETING", "INVALID", "READY", "UPLOADING" ]
enum_NetworkInterfaceIpv6AccessType := [ "EXTERNAL", "INTERNAL" ]
enum_NetworkInterfaceNicType := [ "GVNIC", "UNSPECIFIED_NIC_TYPE", "VIRTIO_NET" ]
enum_NetworkInterfaceStackType := [ "IPV4_IPV6", "IPV4_ONLY" ]
enum_NetworkPerformanceConfigTotalEgressBandwidthTier := [ "DEFAULT", "TIER_1" ]
enum_ReservationAffinityConsumeReservationType := [ "ANY_RESERVATION", "NO_RESERVATION", "SPECIFIC_RESERVATION", "UNSPECIFIED" ]
enum_SavedAttachedDiskInterface := [ "NVME", "SCSI" ]
enum_SavedAttachedDiskMode := [ "READ_ONLY", "READ_WRITE" ]
enum_SavedAttachedDiskStorageBytesStatus := [ "UPDATING", "UP_TO_DATE" ]
enum_SavedAttachedDiskType := [ "PERSISTENT", "SCRATCH" ]
enum_SavedDiskArchitecture := [ "ARCHITECTURE_UNSPECIFIED", "ARM64", "X86_64" ]
enum_SavedDiskStorageBytesStatus := [ "UPDATING", "UP_TO_DATE" ]
enum_SchedulingInstanceTerminationAction := [ "DELETE", "INSTANCE_TERMINATION_ACTION_UNSPECIFIED", "STOP" ]
enum_SchedulingNodeAffinityOperator := [ "IN", "NOT_IN", "OPERATOR_UNSPECIFIED" ]
enum_SchedulingOnHostMaintenance := [ "MIGRATE", "TERMINATE" ]
enum_SchedulingProvisioningModel := [ "SPOT", "STANDARD" ]
enum_SourceInstancePropertiesKeyRevocationActionType := [ "KEY_REVOCATION_ACTION_TYPE_UNSPECIFIED", "NONE", "STOP" ]

valid {
    input.Body.creationTimestamp == STRING
    input.Body.description == STRING
    input.Body.guestFlush == BOOLEAN
    input.Body.id == STRING
    input.Body.instanceProperties.advancedMachineFeatures.enableNestedVirtualization == BOOLEAN
    input.Body.instanceProperties.advancedMachineFeatures.enableUefiNetworking == BOOLEAN
    input.Body.instanceProperties.advancedMachineFeatures.threadsPerCore == INTEGER
    input.Body.instanceProperties.advancedMachineFeatures.visibleCoreCount == INTEGER
    input.Body.instanceProperties.canIpForward == BOOLEAN
    input.Body.instanceProperties.confidentialInstanceConfig.enableConfidentialCompute == BOOLEAN
    input.Body.instanceProperties.description == STRING
    input.Body.instanceProperties.disks[_].architecture == enum_AttachedDiskArchitecture[_]
    input.Body.instanceProperties.disks[_].autoDelete == BOOLEAN
    input.Body.instanceProperties.disks[_].boot == BOOLEAN
    input.Body.instanceProperties.disks[_].deviceName == STRING
    input.Body.instanceProperties.disks[_].diskEncryptionKey.kmsKeyName == STRING
    input.Body.instanceProperties.disks[_].diskEncryptionKey.kmsKeyServiceAccount == STRING
    input.Body.instanceProperties.disks[_].diskEncryptionKey.rawKey == STRING
    input.Body.instanceProperties.disks[_].diskEncryptionKey.rsaEncryptedKey == STRING
    input.Body.instanceProperties.disks[_].diskEncryptionKey.sha256 == STRING
    input.Body.instanceProperties.disks[_].diskSizeGb == STRING
    input.Body.instanceProperties.disks[_].forceAttach == BOOLEAN
    input.Body.instanceProperties.disks[_].guestOsFeatures[_].type == enum_GuestOsFeatureType[_]
    input.Body.instanceProperties.disks[_].index == INTEGER
    input.Body.instanceProperties.disks[_].initializeParams.architecture == enum_AttachedDiskInitializeParamsArchitecture[_]
    input.Body.instanceProperties.disks[_].initializeParams.description == STRING
    input.Body.instanceProperties.disks[_].initializeParams.diskName == STRING
    input.Body.instanceProperties.disks[_].initializeParams.diskSizeGb == STRING
    input.Body.instanceProperties.disks[_].initializeParams.diskType == STRING
    input.Body.instanceProperties.disks[_].initializeParams.enableConfidentialCompute == BOOLEAN
    input.Body.instanceProperties.disks[_].initializeParams.labels.STRING == STRING
    input.Body.instanceProperties.disks[_].initializeParams.licenses[_] == STRING
    input.Body.instanceProperties.disks[_].initializeParams.onUpdateAction == enum_AttachedDiskInitializeParamsOnUpdateAction[_]
    input.Body.instanceProperties.disks[_].initializeParams.provisionedIops == STRING
    input.Body.instanceProperties.disks[_].initializeParams.provisionedThroughput == STRING
    input.Body.instanceProperties.disks[_].initializeParams.replicaZones[_] == STRING
    input.Body.instanceProperties.disks[_].initializeParams.resourceManagerTags.STRING == STRING
    input.Body.instanceProperties.disks[_].initializeParams.resourcePolicies[_] == STRING
    input.Body.instanceProperties.disks[_].initializeParams.sourceImage == STRING
    input.Body.instanceProperties.disks[_].initializeParams.sourceImageEncryptionKey.kmsKeyName == STRING
    input.Body.instanceProperties.disks[_].initializeParams.sourceImageEncryptionKey.kmsKeyServiceAccount == STRING
    input.Body.instanceProperties.disks[_].initializeParams.sourceImageEncryptionKey.rawKey == STRING
    input.Body.instanceProperties.disks[_].initializeParams.sourceImageEncryptionKey.rsaEncryptedKey == STRING
    input.Body.instanceProperties.disks[_].initializeParams.sourceImageEncryptionKey.sha256 == STRING
    input.Body.instanceProperties.disks[_].initializeParams.sourceSnapshot == STRING
    input.Body.instanceProperties.disks[_].initializeParams.sourceSnapshotEncryptionKey.kmsKeyName == STRING
    input.Body.instanceProperties.disks[_].initializeParams.sourceSnapshotEncryptionKey.kmsKeyServiceAccount == STRING
    input.Body.instanceProperties.disks[_].initializeParams.sourceSnapshotEncryptionKey.rawKey == STRING
    input.Body.instanceProperties.disks[_].initializeParams.sourceSnapshotEncryptionKey.rsaEncryptedKey == STRING
    input.Body.instanceProperties.disks[_].initializeParams.sourceSnapshotEncryptionKey.sha256 == STRING
    input.Body.instanceProperties.disks[_].initializeParams.storagePool == STRING
    input.Body.instanceProperties.disks[_].interface == enum_AttachedDiskInterface[_]
    input.Body.instanceProperties.disks[_].kind == STRING
    input.Body.instanceProperties.disks[_].licenses[_] == STRING
    input.Body.instanceProperties.disks[_].mode == enum_AttachedDiskMode[_]
    input.Body.instanceProperties.disks[_].savedState == enum_AttachedDiskSavedState[_]
    input.Body.instanceProperties.disks[_].shieldedInstanceInitialState.dbs[_].content == STRING
    input.Body.instanceProperties.disks[_].shieldedInstanceInitialState.dbs[_].fileType == enum_FileContentBufferFileType[_]
    input.Body.instanceProperties.disks[_].shieldedInstanceInitialState.dbxs[_].content == STRING
    input.Body.instanceProperties.disks[_].shieldedInstanceInitialState.dbxs[_].fileType == enum_FileContentBufferFileType[_]
    input.Body.instanceProperties.disks[_].shieldedInstanceInitialState.keks[_].content == STRING
    input.Body.instanceProperties.disks[_].shieldedInstanceInitialState.keks[_].fileType == enum_FileContentBufferFileType[_]
    input.Body.instanceProperties.disks[_].shieldedInstanceInitialState.pk.content == STRING
    input.Body.instanceProperties.disks[_].shieldedInstanceInitialState.pk.fileType == enum_FileContentBufferFileType[_]
    input.Body.instanceProperties.disks[_].source == STRING
    input.Body.instanceProperties.disks[_].type == enum_AttachedDiskType[_]
    input.Body.instanceProperties.guestAccelerators[_].acceleratorCount == INTEGER
    input.Body.instanceProperties.guestAccelerators[_].acceleratorType == STRING
    input.Body.instanceProperties.keyRevocationActionType == enum_InstancePropertiesKeyRevocationActionType[_]
    input.Body.instanceProperties.labels.STRING == STRING
    input.Body.instanceProperties.machineType == STRING
    input.Body.instanceProperties.metadata.fingerprint == STRING
    input.Body.instanceProperties.metadata.items[_].key == STRING
    input.Body.instanceProperties.metadata.items[_].value == STRING
    input.Body.instanceProperties.metadata.kind == STRING
    input.Body.instanceProperties.minCpuPlatform == STRING
    input.Body.instanceProperties.networkInterfaces[_].accessConfigs[_].externalIpv6 == STRING
    input.Body.instanceProperties.networkInterfaces[_].accessConfigs[_].externalIpv6PrefixLength == INTEGER
    input.Body.instanceProperties.networkInterfaces[_].accessConfigs[_].kind == STRING
    input.Body.instanceProperties.networkInterfaces[_].accessConfigs[_].name == STRING
    input.Body.instanceProperties.networkInterfaces[_].accessConfigs[_].natIP == STRING
    input.Body.instanceProperties.networkInterfaces[_].accessConfigs[_].networkTier == enum_AccessConfigNetworkTier[_]
    input.Body.instanceProperties.networkInterfaces[_].accessConfigs[_].publicPtrDomainName == STRING
    input.Body.instanceProperties.networkInterfaces[_].accessConfigs[_].securityPolicy == STRING
    input.Body.instanceProperties.networkInterfaces[_].accessConfigs[_].setPublicPtr == BOOLEAN
    input.Body.instanceProperties.networkInterfaces[_].accessConfigs[_].type == enum_AccessConfigType[_]
    input.Body.instanceProperties.networkInterfaces[_].aliasIpRanges[_].ipCidrRange == STRING
    input.Body.instanceProperties.networkInterfaces[_].aliasIpRanges[_].subnetworkRangeName == STRING
    input.Body.instanceProperties.networkInterfaces[_].fingerprint == STRING
    input.Body.instanceProperties.networkInterfaces[_].internalIpv6PrefixLength == INTEGER
    input.Body.instanceProperties.networkInterfaces[_].ipv6AccessConfigs[_].externalIpv6 == STRING
    input.Body.instanceProperties.networkInterfaces[_].ipv6AccessConfigs[_].externalIpv6PrefixLength == INTEGER
    input.Body.instanceProperties.networkInterfaces[_].ipv6AccessConfigs[_].kind == STRING
    input.Body.instanceProperties.networkInterfaces[_].ipv6AccessConfigs[_].name == STRING
    input.Body.instanceProperties.networkInterfaces[_].ipv6AccessConfigs[_].natIP == STRING
    input.Body.instanceProperties.networkInterfaces[_].ipv6AccessConfigs[_].networkTier == enum_AccessConfigNetworkTier[_]
    input.Body.instanceProperties.networkInterfaces[_].ipv6AccessConfigs[_].publicPtrDomainName == STRING
    input.Body.instanceProperties.networkInterfaces[_].ipv6AccessConfigs[_].securityPolicy == STRING
    input.Body.instanceProperties.networkInterfaces[_].ipv6AccessConfigs[_].setPublicPtr == BOOLEAN
    input.Body.instanceProperties.networkInterfaces[_].ipv6AccessConfigs[_].type == enum_AccessConfigType[_]
    input.Body.instanceProperties.networkInterfaces[_].ipv6AccessType == enum_NetworkInterfaceIpv6AccessType[_]
    input.Body.instanceProperties.networkInterfaces[_].ipv6Address == STRING
    input.Body.instanceProperties.networkInterfaces[_].kind == STRING
    input.Body.instanceProperties.networkInterfaces[_].name == STRING
    input.Body.instanceProperties.networkInterfaces[_].network == STRING
    input.Body.instanceProperties.networkInterfaces[_].networkAttachment == STRING
    input.Body.instanceProperties.networkInterfaces[_].networkIP == STRING
    input.Body.instanceProperties.networkInterfaces[_].nicType == enum_NetworkInterfaceNicType[_]
    input.Body.instanceProperties.networkInterfaces[_].queueCount == INTEGER
    input.Body.instanceProperties.networkInterfaces[_].stackType == enum_NetworkInterfaceStackType[_]
    input.Body.instanceProperties.networkInterfaces[_].subnetwork == STRING
    input.Body.instanceProperties.networkPerformanceConfig.totalEgressBandwidthTier == enum_NetworkPerformanceConfigTotalEgressBandwidthTier[_]
    input.Body.instanceProperties.privateIpv6GoogleAccess == enum_InstancePropertiesPrivateIpv6GoogleAccess[_]
    input.Body.instanceProperties.reservationAffinity.consumeReservationType == enum_ReservationAffinityConsumeReservationType[_]
    input.Body.instanceProperties.reservationAffinity.key == STRING
    input.Body.instanceProperties.reservationAffinity.values[_] == STRING
    input.Body.instanceProperties.resourceManagerTags.STRING == STRING
    input.Body.instanceProperties.resourcePolicies[_] == STRING
    input.Body.instanceProperties.scheduling.automaticRestart == BOOLEAN
    input.Body.instanceProperties.scheduling.instanceTerminationAction == enum_SchedulingInstanceTerminationAction[_]
    input.Body.instanceProperties.scheduling.localSsdRecoveryTimeout.nanos == INTEGER
    input.Body.instanceProperties.scheduling.localSsdRecoveryTimeout.seconds == STRING
    input.Body.instanceProperties.scheduling.locationHint == STRING
    input.Body.instanceProperties.scheduling.minNodeCpus == INTEGER
    input.Body.instanceProperties.scheduling.nodeAffinities[_].key == STRING
    input.Body.instanceProperties.scheduling.nodeAffinities[_].operator == enum_SchedulingNodeAffinityOperator[_]
    input.Body.instanceProperties.scheduling.nodeAffinities[_].values[_] == STRING
    input.Body.instanceProperties.scheduling.onHostMaintenance == enum_SchedulingOnHostMaintenance[_]
    input.Body.instanceProperties.scheduling.preemptible == BOOLEAN
    input.Body.instanceProperties.scheduling.provisioningModel == enum_SchedulingProvisioningModel[_]
    input.Body.instanceProperties.serviceAccounts[_].email == STRING
    input.Body.instanceProperties.serviceAccounts[_].scopes[_] == STRING
    input.Body.instanceProperties.shieldedInstanceConfig.enableIntegrityMonitoring == BOOLEAN
    input.Body.instanceProperties.shieldedInstanceConfig.enableSecureBoot == BOOLEAN
    input.Body.instanceProperties.shieldedInstanceConfig.enableVtpm == BOOLEAN
    input.Body.instanceProperties.tags.fingerprint == STRING
    input.Body.instanceProperties.tags.items[_] == STRING
    input.Body.kind == STRING
    input.Body.machineImageEncryptionKey.kmsKeyName == STRING
    input.Body.machineImageEncryptionKey.kmsKeyServiceAccount == STRING
    input.Body.machineImageEncryptionKey.rawKey == STRING
    input.Body.machineImageEncryptionKey.rsaEncryptedKey == STRING
    input.Body.machineImageEncryptionKey.sha256 == STRING
    input.Body.name == STRING
    input.Body.satisfiesPzs == BOOLEAN
    input.Body.savedDisks[_].architecture == enum_SavedDiskArchitecture[_]
    input.Body.savedDisks[_].kind == STRING
    input.Body.savedDisks[_].sourceDisk == STRING
    input.Body.savedDisks[_].storageBytes == STRING
    input.Body.savedDisks[_].storageBytesStatus == enum_SavedDiskStorageBytesStatus[_]
    input.Body.selfLink == STRING
    input.Body.sourceDiskEncryptionKeys[_].diskEncryptionKey.kmsKeyName == STRING
    input.Body.sourceDiskEncryptionKeys[_].diskEncryptionKey.kmsKeyServiceAccount == STRING
    input.Body.sourceDiskEncryptionKeys[_].diskEncryptionKey.rawKey == STRING
    input.Body.sourceDiskEncryptionKeys[_].diskEncryptionKey.rsaEncryptedKey == STRING
    input.Body.sourceDiskEncryptionKeys[_].diskEncryptionKey.sha256 == STRING
    input.Body.sourceDiskEncryptionKeys[_].sourceDisk == STRING
    input.Body.sourceInstance == STRING
    input.Body.sourceInstanceProperties.canIpForward == BOOLEAN
    input.Body.sourceInstanceProperties.deletionProtection == BOOLEAN
    input.Body.sourceInstanceProperties.description == STRING
    input.Body.sourceInstanceProperties.disks[_].autoDelete == BOOLEAN
    input.Body.sourceInstanceProperties.disks[_].boot == BOOLEAN
    input.Body.sourceInstanceProperties.disks[_].deviceName == STRING
    input.Body.sourceInstanceProperties.disks[_].diskEncryptionKey.kmsKeyName == STRING
    input.Body.sourceInstanceProperties.disks[_].diskEncryptionKey.kmsKeyServiceAccount == STRING
    input.Body.sourceInstanceProperties.disks[_].diskEncryptionKey.rawKey == STRING
    input.Body.sourceInstanceProperties.disks[_].diskEncryptionKey.rsaEncryptedKey == STRING
    input.Body.sourceInstanceProperties.disks[_].diskEncryptionKey.sha256 == STRING
    input.Body.sourceInstanceProperties.disks[_].diskSizeGb == STRING
    input.Body.sourceInstanceProperties.disks[_].diskType == STRING
    input.Body.sourceInstanceProperties.disks[_].guestOsFeatures[_].type == enum_GuestOsFeatureType[_]
    input.Body.sourceInstanceProperties.disks[_].index == INTEGER
    input.Body.sourceInstanceProperties.disks[_].interface == enum_SavedAttachedDiskInterface[_]
    input.Body.sourceInstanceProperties.disks[_].kind == STRING
    input.Body.sourceInstanceProperties.disks[_].licenses[_] == STRING
    input.Body.sourceInstanceProperties.disks[_].mode == enum_SavedAttachedDiskMode[_]
    input.Body.sourceInstanceProperties.disks[_].source == STRING
    input.Body.sourceInstanceProperties.disks[_].storageBytes == STRING
    input.Body.sourceInstanceProperties.disks[_].storageBytesStatus == enum_SavedAttachedDiskStorageBytesStatus[_]
    input.Body.sourceInstanceProperties.disks[_].type == enum_SavedAttachedDiskType[_]
    input.Body.sourceInstanceProperties.guestAccelerators[_].acceleratorCount == INTEGER
    input.Body.sourceInstanceProperties.guestAccelerators[_].acceleratorType == STRING
    input.Body.sourceInstanceProperties.keyRevocationActionType == enum_SourceInstancePropertiesKeyRevocationActionType[_]
    input.Body.sourceInstanceProperties.labels.STRING == STRING
    input.Body.sourceInstanceProperties.machineType == STRING
    input.Body.sourceInstanceProperties.metadata.fingerprint == STRING
    input.Body.sourceInstanceProperties.metadata.items[_].key == STRING
    input.Body.sourceInstanceProperties.metadata.items[_].value == STRING
    input.Body.sourceInstanceProperties.metadata.kind == STRING
    input.Body.sourceInstanceProperties.minCpuPlatform == STRING
    input.Body.sourceInstanceProperties.networkInterfaces[_].accessConfigs[_].externalIpv6 == STRING
    input.Body.sourceInstanceProperties.networkInterfaces[_].accessConfigs[_].externalIpv6PrefixLength == INTEGER
    input.Body.sourceInstanceProperties.networkInterfaces[_].accessConfigs[_].kind == STRING
    input.Body.sourceInstanceProperties.networkInterfaces[_].accessConfigs[_].name == STRING
    input.Body.sourceInstanceProperties.networkInterfaces[_].accessConfigs[_].natIP == STRING
    input.Body.sourceInstanceProperties.networkInterfaces[_].accessConfigs[_].networkTier == enum_AccessConfigNetworkTier[_]
    input.Body.sourceInstanceProperties.networkInterfaces[_].accessConfigs[_].publicPtrDomainName == STRING
    input.Body.sourceInstanceProperties.networkInterfaces[_].accessConfigs[_].securityPolicy == STRING
    input.Body.sourceInstanceProperties.networkInterfaces[_].accessConfigs[_].setPublicPtr == BOOLEAN
    input.Body.sourceInstanceProperties.networkInterfaces[_].accessConfigs[_].type == enum_AccessConfigType[_]
    input.Body.sourceInstanceProperties.networkInterfaces[_].aliasIpRanges[_].ipCidrRange == STRING
    input.Body.sourceInstanceProperties.networkInterfaces[_].aliasIpRanges[_].subnetworkRangeName == STRING
    input.Body.sourceInstanceProperties.networkInterfaces[_].fingerprint == STRING
    input.Body.sourceInstanceProperties.networkInterfaces[_].internalIpv6PrefixLength == INTEGER
    input.Body.sourceInstanceProperties.networkInterfaces[_].ipv6AccessConfigs[_].externalIpv6 == STRING
    input.Body.sourceInstanceProperties.networkInterfaces[_].ipv6AccessConfigs[_].externalIpv6PrefixLength == INTEGER
    input.Body.sourceInstanceProperties.networkInterfaces[_].ipv6AccessConfigs[_].kind == STRING
    input.Body.sourceInstanceProperties.networkInterfaces[_].ipv6AccessConfigs[_].name == STRING
    input.Body.sourceInstanceProperties.networkInterfaces[_].ipv6AccessConfigs[_].natIP == STRING
    input.Body.sourceInstanceProperties.networkInterfaces[_].ipv6AccessConfigs[_].networkTier == enum_AccessConfigNetworkTier[_]
    input.Body.sourceInstanceProperties.networkInterfaces[_].ipv6AccessConfigs[_].publicPtrDomainName == STRING
    input.Body.sourceInstanceProperties.networkInterfaces[_].ipv6AccessConfigs[_].securityPolicy == STRING
    input.Body.sourceInstanceProperties.networkInterfaces[_].ipv6AccessConfigs[_].setPublicPtr == BOOLEAN
    input.Body.sourceInstanceProperties.networkInterfaces[_].ipv6AccessConfigs[_].type == enum_AccessConfigType[_]
    input.Body.sourceInstanceProperties.networkInterfaces[_].ipv6AccessType == enum_NetworkInterfaceIpv6AccessType[_]
    input.Body.sourceInstanceProperties.networkInterfaces[_].ipv6Address == STRING
    input.Body.sourceInstanceProperties.networkInterfaces[_].kind == STRING
    input.Body.sourceInstanceProperties.networkInterfaces[_].name == STRING
    input.Body.sourceInstanceProperties.networkInterfaces[_].network == STRING
    input.Body.sourceInstanceProperties.networkInterfaces[_].networkAttachment == STRING
    input.Body.sourceInstanceProperties.networkInterfaces[_].networkIP == STRING
    input.Body.sourceInstanceProperties.networkInterfaces[_].nicType == enum_NetworkInterfaceNicType[_]
    input.Body.sourceInstanceProperties.networkInterfaces[_].queueCount == INTEGER
    input.Body.sourceInstanceProperties.networkInterfaces[_].stackType == enum_NetworkInterfaceStackType[_]
    input.Body.sourceInstanceProperties.networkInterfaces[_].subnetwork == STRING
    input.Body.sourceInstanceProperties.scheduling.automaticRestart == BOOLEAN
    input.Body.sourceInstanceProperties.scheduling.instanceTerminationAction == enum_SchedulingInstanceTerminationAction[_]
    input.Body.sourceInstanceProperties.scheduling.localSsdRecoveryTimeout.nanos == INTEGER
    input.Body.sourceInstanceProperties.scheduling.localSsdRecoveryTimeout.seconds == STRING
    input.Body.sourceInstanceProperties.scheduling.locationHint == STRING
    input.Body.sourceInstanceProperties.scheduling.minNodeCpus == INTEGER
    input.Body.sourceInstanceProperties.scheduling.nodeAffinities[_].key == STRING
    input.Body.sourceInstanceProperties.scheduling.nodeAffinities[_].operator == enum_SchedulingNodeAffinityOperator[_]
    input.Body.sourceInstanceProperties.scheduling.nodeAffinities[_].values[_] == STRING
    input.Body.sourceInstanceProperties.scheduling.onHostMaintenance == enum_SchedulingOnHostMaintenance[_]
    input.Body.sourceInstanceProperties.scheduling.preemptible == BOOLEAN
    input.Body.sourceInstanceProperties.scheduling.provisioningModel == enum_SchedulingProvisioningModel[_]
    input.Body.sourceInstanceProperties.serviceAccounts[_].email == STRING
    input.Body.sourceInstanceProperties.serviceAccounts[_].scopes[_] == STRING
    input.Body.sourceInstanceProperties.tags.fingerprint == STRING
    input.Body.sourceInstanceProperties.tags.items[_] == STRING
    input.Body.status == enum_MachineImageStatus[_]
    input.Body.storageLocations[_] == STRING
    input.Body.totalStorageBytes == STRING
    input.ReqMap.ProjectID == STRING
    input.Qs.requestId == STRING
    input.Qs.sourceInstance == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.machineImages.list

valid {
    input.ReqMap.ProjectID == STRING
    input.Qs.filter == STRING
    input.Qs.maxResults == INTEGER
    input.Qs.orderBy == STRING
    input.Qs.pageToken == STRING
    input.Qs.returnPartialSuccess == BOOLEAN
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.machineImages.setIamPolicy

enum_AuditLogConfigLogType := [ "ADMIN_READ", "DATA_READ", "DATA_WRITE", "LOG_TYPE_UNSPECIFIED" ]
enum_AuthorizationLoggingOptionsPermissionType := [ "ADMIN_READ", "ADMIN_WRITE", "DATA_READ", "DATA_WRITE", "PERMISSION_TYPE_UNSPECIFIED" ]
enum_ConditionIam := [ "APPROVER", "ATTRIBUTION", "AUTHORITY", "CREDENTIALS_TYPE", "CREDS_ASSERTION", "JUSTIFICATION_TYPE", "NO_ATTR", "SECURITY_REALM" ]
enum_ConditionOp := [ "DISCHARGED", "EQUALS", "IN", "NOT_EQUALS", "NOT_IN", "NO_OP" ]
enum_ConditionSys := [ "IP", "NAME", "NO_ATTR", "REGION", "SERVICE" ]
enum_LogConfigCloudAuditOptionsLogName := [ "ADMIN_ACTIVITY", "DATA_ACCESS", "UNSPECIFIED_LOG_NAME" ]
enum_LogConfigDataAccessOptionsLogMode := [ "LOG_FAIL_CLOSED", "LOG_MODE_UNSPECIFIED" ]
enum_RuleAction := [ "ALLOW", "ALLOW_WITH_LOG", "DENY", "DENY_WITH_LOG", "LOG", "NO_ACTION" ]

valid {
    input.Body.bindings[_].bindingId == STRING
    input.Body.bindings[_].condition.description == STRING
    input.Body.bindings[_].condition.expression == STRING
    input.Body.bindings[_].condition.location == STRING
    input.Body.bindings[_].condition.title == STRING
    input.Body.bindings[_].members[_] == STRING
    input.Body.bindings[_].role == STRING
    input.Body.etag == STRING
    input.Body.policy.auditConfigs[_].auditLogConfigs[_].exemptedMembers[_] == STRING
    input.Body.policy.auditConfigs[_].auditLogConfigs[_].ignoreChildExemptions == BOOLEAN
    input.Body.policy.auditConfigs[_].auditLogConfigs[_].logType == enum_AuditLogConfigLogType[_]
    input.Body.policy.auditConfigs[_].exemptedMembers[_] == STRING
    input.Body.policy.auditConfigs[_].service == STRING
    input.Body.policy.bindings[_].bindingId == 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.rules[_].action == enum_RuleAction[_]
    input.Body.policy.rules[_].conditions[_].iam == enum_ConditionIam[_]
    input.Body.policy.rules[_].conditions[_].op == enum_ConditionOp[_]
    input.Body.policy.rules[_].conditions[_].svc == STRING
    input.Body.policy.rules[_].conditions[_].sys == enum_ConditionSys[_]
    input.Body.policy.rules[_].conditions[_].values[_] == STRING
    input.Body.policy.rules[_].description == STRING
    input.Body.policy.rules[_].ins[_] == STRING
    input.Body.policy.rules[_].logConfigs[_].cloudAudit.authorizationLoggingOptions.permissionType == enum_AuthorizationLoggingOptionsPermissionType[_]
    input.Body.policy.rules[_].logConfigs[_].cloudAudit.logName == enum_LogConfigCloudAuditOptionsLogName[_]
    input.Body.policy.rules[_].logConfigs[_].counter.customFields[_].name == STRING
    input.Body.policy.rules[_].logConfigs[_].counter.customFields[_].value == STRING
    input.Body.policy.rules[_].logConfigs[_].counter.field == STRING
    input.Body.policy.rules[_].logConfigs[_].counter.metric == STRING
    input.Body.policy.rules[_].logConfigs[_].dataAccess.logMode == enum_LogConfigDataAccessOptionsLogMode[_]
    input.Body.policy.rules[_].notIns[_] == STRING
    input.Body.policy.rules[_].permissions[_] == STRING
    input.Body.policy.version == INTEGER
    input.ReqMap.ProjectID == STRING
    input.ReqMap.resource == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.machineImages.testIamPermissions

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

compute.machineTypes.aggregatedList

valid {
    input.ReqMap.ProjectID == STRING
    input.Qs.filter == STRING
    input.Qs.includeAllScopes == BOOLEAN
    input.Qs.maxResults == INTEGER
    input.Qs.orderBy == STRING
    input.Qs.pageToken == STRING
    input.Qs.returnPartialSuccess == BOOLEAN
    input.Qs.serviceProjectNumber == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.machineTypes.get

valid {
    input.ReqMap.machineType == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.zone == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.machineTypes.list

valid {
    input.ReqMap.ProjectID == STRING
    input.ReqMap.zone == STRING
    input.Qs.filter == STRING
    input.Qs.maxResults == INTEGER
    input.Qs.orderBy == STRING
    input.Qs.pageToken == STRING
    input.Qs.returnPartialSuccess == BOOLEAN
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.networkAttachments.aggregatedList

valid {
    input.ReqMap.ProjectID == STRING
    input.Qs.filter == STRING
    input.Qs.includeAllScopes == BOOLEAN
    input.Qs.maxResults == INTEGER
    input.Qs.orderBy == STRING
    input.Qs.pageToken == STRING
    input.Qs.returnPartialSuccess == BOOLEAN
    input.Qs.serviceProjectNumber == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.networkAttachments.delete

valid {
    input.ReqMap.networkAttachment == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.networkAttachments.get

valid {
    input.ReqMap.networkAttachment == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.networkAttachments.getIamPolicy

valid {
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.ReqMap.resource == STRING
    input.Qs.optionsRequestedPolicyVersion == INTEGER
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.networkAttachments.insert

enum_NetworkAttachmentConnectedEndpointStatus := [ "ACCEPTED", "CLOSED", "NEEDS_ATTENTION", "PENDING", "REJECTED", "STATUS_UNSPECIFIED" ]
enum_NetworkAttachmentConnectionPreference := [ "ACCEPT_AUTOMATIC", "ACCEPT_MANUAL", "INVALID" ]

valid {
    input.Body.connectionEndpoints[_].ipAddress == STRING
    input.Body.connectionEndpoints[_].ipv6Address == STRING
    input.Body.connectionEndpoints[_].projectIdOrNum == STRING
    input.Body.connectionEndpoints[_].secondaryIpCidrRanges[_] == STRING
    input.Body.connectionEndpoints[_].status == enum_NetworkAttachmentConnectedEndpointStatus[_]
    input.Body.connectionEndpoints[_].subnetwork == STRING
    input.Body.connectionEndpoints[_].subnetworkCidrRange == STRING
    input.Body.connectionPreference == enum_NetworkAttachmentConnectionPreference[_]
    input.Body.creationTimestamp == STRING
    input.Body.description == STRING
    input.Body.fingerprint == STRING
    input.Body.id == STRING
    input.Body.kind == STRING
    input.Body.name == STRING
    input.Body.network == STRING
    input.Body.producerAcceptLists[_] == STRING
    input.Body.producerRejectLists[_] == STRING
    input.Body.region == STRING
    input.Body.selfLink == STRING
    input.Body.selfLinkWithId == STRING
    input.Body.subnetworks[_] == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.networkAttachments.list

valid {
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.Qs.filter == STRING
    input.Qs.maxResults == INTEGER
    input.Qs.orderBy == STRING
    input.Qs.pageToken == STRING
    input.Qs.returnPartialSuccess == BOOLEAN
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.networkAttachments.patch

enum_NetworkAttachmentConnectedEndpointStatus := [ "ACCEPTED", "CLOSED", "NEEDS_ATTENTION", "PENDING", "REJECTED", "STATUS_UNSPECIFIED" ]
enum_NetworkAttachmentConnectionPreference := [ "ACCEPT_AUTOMATIC", "ACCEPT_MANUAL", "INVALID" ]

valid {
    input.Body.connectionEndpoints[_].ipAddress == STRING
    input.Body.connectionEndpoints[_].ipv6Address == STRING
    input.Body.connectionEndpoints[_].projectIdOrNum == STRING
    input.Body.connectionEndpoints[_].secondaryIpCidrRanges[_] == STRING
    input.Body.connectionEndpoints[_].status == enum_NetworkAttachmentConnectedEndpointStatus[_]
    input.Body.connectionEndpoints[_].subnetwork == STRING
    input.Body.connectionEndpoints[_].subnetworkCidrRange == STRING
    input.Body.connectionPreference == enum_NetworkAttachmentConnectionPreference[_]
    input.Body.creationTimestamp == STRING
    input.Body.description == STRING
    input.Body.fingerprint == STRING
    input.Body.id == STRING
    input.Body.kind == STRING
    input.Body.name == STRING
    input.Body.network == STRING
    input.Body.producerAcceptLists[_] == STRING
    input.Body.producerRejectLists[_] == STRING
    input.Body.region == STRING
    input.Body.selfLink == STRING
    input.Body.selfLinkWithId == STRING
    input.Body.subnetworks[_] == STRING
    input.ReqMap.networkAttachment == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.networkAttachments.setIamPolicy

enum_AuditLogConfigLogType := [ "ADMIN_READ", "DATA_READ", "DATA_WRITE", "LOG_TYPE_UNSPECIFIED" ]
enum_AuthorizationLoggingOptionsPermissionType := [ "ADMIN_READ", "ADMIN_WRITE", "DATA_READ", "DATA_WRITE", "PERMISSION_TYPE_UNSPECIFIED" ]
enum_ConditionIam := [ "APPROVER", "ATTRIBUTION", "AUTHORITY", "CREDENTIALS_TYPE", "CREDS_ASSERTION", "JUSTIFICATION_TYPE", "NO_ATTR", "SECURITY_REALM" ]
enum_ConditionOp := [ "DISCHARGED", "EQUALS", "IN", "NOT_EQUALS", "NOT_IN", "NO_OP" ]
enum_ConditionSys := [ "IP", "NAME", "NO_ATTR", "REGION", "SERVICE" ]
enum_LogConfigCloudAuditOptionsLogName := [ "ADMIN_ACTIVITY", "DATA_ACCESS", "UNSPECIFIED_LOG_NAME" ]
enum_LogConfigDataAccessOptionsLogMode := [ "LOG_FAIL_CLOSED", "LOG_MODE_UNSPECIFIED" ]
enum_RuleAction := [ "ALLOW", "ALLOW_WITH_LOG", "DENY", "DENY_WITH_LOG", "LOG", "NO_ACTION" ]

valid {
    input.Body.bindings[_].bindingId == STRING
    input.Body.bindings[_].condition.description == STRING
    input.Body.bindings[_].condition.expression == STRING
    input.Body.bindings[_].condition.location == STRING
    input.Body.bindings[_].condition.title == STRING
    input.Body.bindings[_].members[_] == STRING
    input.Body.bindings[_].role == STRING
    input.Body.etag == STRING
    input.Body.policy.auditConfigs[_].auditLogConfigs[_].exemptedMembers[_] == STRING
    input.Body.policy.auditConfigs[_].auditLogConfigs[_].ignoreChildExemptions == BOOLEAN
    input.Body.policy.auditConfigs[_].auditLogConfigs[_].logType == enum_AuditLogConfigLogType[_]
    input.Body.policy.auditConfigs[_].exemptedMembers[_] == STRING
    input.Body.policy.auditConfigs[_].service == STRING
    input.Body.policy.bindings[_].bindingId == 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.rules[_].action == enum_RuleAction[_]
    input.Body.policy.rules[_].conditions[_].iam == enum_ConditionIam[_]
    input.Body.policy.rules[_].conditions[_].op == enum_ConditionOp[_]
    input.Body.policy.rules[_].conditions[_].svc == STRING
    input.Body.policy.rules[_].conditions[_].sys == enum_ConditionSys[_]
    input.Body.policy.rules[_].conditions[_].values[_] == STRING
    input.Body.policy.rules[_].description == STRING
    input.Body.policy.rules[_].ins[_] == STRING
    input.Body.policy.rules[_].logConfigs[_].cloudAudit.authorizationLoggingOptions.permissionType == enum_AuthorizationLoggingOptionsPermissionType[_]
    input.Body.policy.rules[_].logConfigs[_].cloudAudit.logName == enum_LogConfigCloudAuditOptionsLogName[_]
    input.Body.policy.rules[_].logConfigs[_].counter.customFields[_].name == STRING
    input.Body.policy.rules[_].logConfigs[_].counter.customFields[_].value == STRING
    input.Body.policy.rules[_].logConfigs[_].counter.field == STRING
    input.Body.policy.rules[_].logConfigs[_].counter.metric == STRING
    input.Body.policy.rules[_].logConfigs[_].dataAccess.logMode == enum_LogConfigDataAccessOptionsLogMode[_]
    input.Body.policy.rules[_].notIns[_] == STRING
    input.Body.policy.rules[_].permissions[_] == STRING
    input.Body.policy.version == INTEGER
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.ReqMap.resource == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.networkAttachments.testIamPermissions

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

compute.networkEdgeSecurityServices.aggregatedList

valid {
    input.ReqMap.ProjectID == STRING
    input.Qs.filter == STRING
    input.Qs.includeAllScopes == BOOLEAN
    input.Qs.maxResults == INTEGER
    input.Qs.orderBy == STRING
    input.Qs.pageToken == STRING
    input.Qs.returnPartialSuccess == BOOLEAN
    input.Qs.serviceProjectNumber == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.networkEdgeSecurityServices.delete

valid {
    input.ReqMap.networkEdgeSecurityService == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.networkEdgeSecurityServices.get

valid {
    input.ReqMap.networkEdgeSecurityService == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.networkEdgeSecurityServices.insert

valid {
    input.Body.creationTimestamp == STRING
    input.Body.description == STRING
    input.Body.fingerprint == STRING
    input.Body.id == STRING
    input.Body.kind == STRING
    input.Body.name == STRING
    input.Body.region == STRING
    input.Body.securityPolicy == STRING
    input.Body.selfLink == STRING
    input.Body.selfLinkWithId == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.Qs.requestId == STRING
    input.Qs.validateOnly == BOOLEAN
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.networkEdgeSecurityServices.patch

valid {
    input.Body.creationTimestamp == STRING
    input.Body.description == STRING
    input.Body.fingerprint == STRING
    input.Body.id == STRING
    input.Body.kind == STRING
    input.Body.name == STRING
    input.Body.region == STRING
    input.Body.securityPolicy == STRING
    input.Body.selfLink == STRING
    input.Body.selfLinkWithId == STRING
    input.ReqMap.networkEdgeSecurityService == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.Qs.paths == STRING
    input.Qs.requestId == STRING
    input.Qs.updateMask == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.networkEndpointGroups.aggregatedList

valid {
    input.ReqMap.ProjectID == STRING
    input.Qs.filter == STRING
    input.Qs.includeAllScopes == BOOLEAN
    input.Qs.maxResults == INTEGER
    input.Qs.orderBy == STRING
    input.Qs.pageToken == STRING
    input.Qs.returnPartialSuccess == BOOLEAN
    input.Qs.serviceProjectNumber == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.networkEndpointGroups.attachNetworkEndpoints

valid {
    input.Body.networkEndpoints[_].annotations.STRING == STRING
    input.Body.networkEndpoints[_].fqdn == STRING
    input.Body.networkEndpoints[_].instance == STRING
    input.Body.networkEndpoints[_].ipAddress == STRING
    input.Body.networkEndpoints[_].port == INTEGER
    input.ReqMap.networkEndpointGroup == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.zone == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.networkEndpointGroups.delete

valid {
    input.ReqMap.networkEndpointGroup == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.zone == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.networkEndpointGroups.detachNetworkEndpoints

valid {
    input.Body.networkEndpoints[_].annotations.STRING == STRING
    input.Body.networkEndpoints[_].fqdn == STRING
    input.Body.networkEndpoints[_].instance == STRING
    input.Body.networkEndpoints[_].ipAddress == STRING
    input.Body.networkEndpoints[_].port == INTEGER
    input.ReqMap.networkEndpointGroup == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.zone == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.networkEndpointGroups.get

valid {
    input.ReqMap.networkEndpointGroup == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.zone == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.networkEndpointGroups.insert

enum_NetworkEndpointGroupNetworkEndpointType := [ "GCE_VM_IP", "GCE_VM_IP_PORT", "INTERNET_FQDN_PORT", "INTERNET_IP_PORT", "NON_GCP_PRIVATE_IP_PORT", "PRIVATE_SERVICE_CONNECT", "SERVERLESS" ]
enum_NetworkEndpointGroupPscDataPscConnectionStatus := [ "ACCEPTED", "CLOSED", "NEEDS_ATTENTION", "PENDING", "REJECTED", "STATUS_UNSPECIFIED" ]

valid {
    input.Body.annotations.STRING == STRING
    input.Body.appEngine.service == STRING
    input.Body.appEngine.urlMask == STRING
    input.Body.appEngine.version == STRING
    input.Body.cloudFunction.function == STRING
    input.Body.cloudFunction.urlMask == STRING
    input.Body.cloudRun.service == STRING
    input.Body.cloudRun.tag == STRING
    input.Body.cloudRun.urlMask == STRING
    input.Body.creationTimestamp == STRING
    input.Body.defaultPort == INTEGER
    input.Body.description == STRING
    input.Body.id == STRING
    input.Body.kind == STRING
    input.Body.name == STRING
    input.Body.network == STRING
    input.Body.networkEndpointType == enum_NetworkEndpointGroupNetworkEndpointType[_]
    input.Body.pscData.consumerPscAddress == STRING
    input.Body.pscData.pscConnectionId == STRING
    input.Body.pscData.pscConnectionStatus == enum_NetworkEndpointGroupPscDataPscConnectionStatus[_]
    input.Body.pscTargetService == STRING
    input.Body.region == STRING
    input.Body.selfLink == STRING
    input.Body.size == INTEGER
    input.Body.subnetwork == STRING
    input.Body.zone == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.zone == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.networkEndpointGroups.list

valid {
    input.ReqMap.ProjectID == STRING
    input.ReqMap.zone == STRING
    input.Qs.filter == STRING
    input.Qs.maxResults == INTEGER
    input.Qs.orderBy == STRING
    input.Qs.pageToken == STRING
    input.Qs.returnPartialSuccess == BOOLEAN
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.networkEndpointGroups.listNetworkEndpoints

enum_NetworkEndpointGroupsListEndpointsRequestHealthStatus := [ "SHOW", "SKIP" ]

valid {
    input.Body.healthStatus == enum_NetworkEndpointGroupsListEndpointsRequestHealthStatus[_]
    input.ReqMap.networkEndpointGroup == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.zone == STRING
    input.Qs.filter == STRING
    input.Qs.maxResults == INTEGER
    input.Qs.orderBy == STRING
    input.Qs.pageToken == STRING
    input.Qs.returnPartialSuccess == BOOLEAN
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.networkEndpointGroups.testIamPermissions

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

compute.networkFirewallPolicies.addAssociation

valid {
    input.Body.attachmentTarget == STRING
    input.Body.displayName == STRING
    input.Body.firewallPolicyId == STRING
    input.Body.name == STRING
    input.Body.shortName == STRING
    input.ReqMap.firewallPolicy == STRING
    input.ReqMap.ProjectID == STRING
    input.Qs.replaceExistingAssociation == BOOLEAN
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.networkFirewallPolicies.addRule

enum_FirewallPolicyRuleDirection := [ "EGRESS", "INGRESS" ]
enum_FirewallPolicyRuleSecureTagState := [ "EFFECTIVE", "INEFFECTIVE" ]

valid {
    input.Body.action == STRING
    input.Body.description == STRING
    input.Body.direction == enum_FirewallPolicyRuleDirection[_]
    input.Body.disabled == BOOLEAN
    input.Body.enableLogging == BOOLEAN
    input.Body.kind == STRING
    input.Body.match.destAddressGroups[_] == STRING
    input.Body.match.destFqdns[_] == STRING
    input.Body.match.destIpRanges[_] == STRING
    input.Body.match.destRegionCodes[_] == STRING
    input.Body.match.destThreatIntelligences[_] == STRING
    input.Body.match.layer4Configs[_].ipProtocol == STRING
    input.Body.match.layer4Configs[_].ports[_] == STRING
    input.Body.match.srcAddressGroups[_] == STRING
    input.Body.match.srcFqdns[_] == STRING
    input.Body.match.srcIpRanges[_] == STRING
    input.Body.match.srcRegionCodes[_] == STRING
    input.Body.match.srcSecureTags[_].name == STRING
    input.Body.match.srcSecureTags[_].state == enum_FirewallPolicyRuleSecureTagState[_]
    input.Body.match.srcThreatIntelligences[_] == STRING
    input.Body.priority == INTEGER
    input.Body.ruleName == STRING
    input.Body.ruleTupleCount == INTEGER
    input.Body.securityProfileGroup == STRING
    input.Body.targetResources[_] == STRING
    input.Body.targetSecureTags[_].name == STRING
    input.Body.targetSecureTags[_].state == enum_FirewallPolicyRuleSecureTagState[_]
    input.Body.targetServiceAccounts[_] == STRING
    input.Body.tlsInspect == BOOLEAN
    input.ReqMap.firewallPolicy == STRING
    input.ReqMap.ProjectID == STRING
    input.Qs.maxPriority == INTEGER
    input.Qs.minPriority == INTEGER
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.networkFirewallPolicies.cloneRules

valid {
    input.ReqMap.firewallPolicy == STRING
    input.ReqMap.ProjectID == STRING
    input.Qs.requestId == STRING
    input.Qs.sourceFirewallPolicy == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.networkFirewallPolicies.delete

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

compute.networkFirewallPolicies.get

valid {
    input.ReqMap.firewallPolicy == STRING
    input.ReqMap.ProjectID == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.networkFirewallPolicies.getAssociation

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

compute.networkFirewallPolicies.getIamPolicy

valid {
    input.ReqMap.ProjectID == STRING
    input.ReqMap.resource == STRING
    input.Qs.optionsRequestedPolicyVersion == INTEGER
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.networkFirewallPolicies.getRule

valid {
    input.ReqMap.firewallPolicy == STRING
    input.ReqMap.ProjectID == STRING
    input.Qs.priority == INTEGER
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.networkFirewallPolicies.insert

enum_FirewallPolicyRuleDirection := [ "EGRESS", "INGRESS" ]
enum_FirewallPolicyRuleSecureTagState := [ "EFFECTIVE", "INEFFECTIVE" ]

valid {
    input.Body.associations[_].attachmentTarget == STRING
    input.Body.associations[_].displayName == STRING
    input.Body.associations[_].firewallPolicyId == STRING
    input.Body.associations[_].name == STRING
    input.Body.associations[_].shortName == STRING
    input.Body.creationTimestamp == STRING
    input.Body.description == STRING
    input.Body.displayName == STRING
    input.Body.fingerprint == STRING
    input.Body.id == STRING
    input.Body.kind == STRING
    input.Body.name == STRING
    input.Body.parent == STRING
    input.Body.region == STRING
    input.Body.ruleTupleCount == INTEGER
    input.Body.rules[_].action == STRING
    input.Body.rules[_].description == STRING
    input.Body.rules[_].direction == enum_FirewallPolicyRuleDirection[_]
    input.Body.rules[_].disabled == BOOLEAN
    input.Body.rules[_].enableLogging == BOOLEAN
    input.Body.rules[_].kind == STRING
    input.Body.rules[_].match.destAddressGroups[_] == STRING
    input.Body.rules[_].match.destFqdns[_] == STRING
    input.Body.rules[_].match.destIpRanges[_] == STRING
    input.Body.rules[_].match.destRegionCodes[_] == STRING
    input.Body.rules[_].match.destThreatIntelligences[_] == STRING
    input.Body.rules[_].match.layer4Configs[_].ipProtocol == STRING
    input.Body.rules[_].match.layer4Configs[_].ports[_] == STRING
    input.Body.rules[_].match.srcAddressGroups[_] == STRING
    input.Body.rules[_].match.srcFqdns[_] == STRING
    input.Body.rules[_].match.srcIpRanges[_] == STRING
    input.Body.rules[_].match.srcRegionCodes[_] == STRING
    input.Body.rules[_].match.srcSecureTags[_].name == STRING
    input.Body.rules[_].match.srcSecureTags[_].state == enum_FirewallPolicyRuleSecureTagState[_]
    input.Body.rules[_].match.srcThreatIntelligences[_] == STRING
    input.Body.rules[_].priority == INTEGER
    input.Body.rules[_].ruleName == STRING
    input.Body.rules[_].ruleTupleCount == INTEGER
    input.Body.rules[_].securityProfileGroup == STRING
    input.Body.rules[_].targetResources[_] == STRING
    input.Body.rules[_].targetSecureTags[_].name == STRING
    input.Body.rules[_].targetSecureTags[_].state == enum_FirewallPolicyRuleSecureTagState[_]
    input.Body.rules[_].targetServiceAccounts[_] == STRING
    input.Body.rules[_].tlsInspect == BOOLEAN
    input.Body.selfLink == STRING
    input.Body.selfLinkWithId == STRING
    input.Body.shortName == STRING
    input.ReqMap.ProjectID == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.networkFirewallPolicies.list

valid {
    input.ReqMap.ProjectID == STRING
    input.Qs.filter == STRING
    input.Qs.maxResults == INTEGER
    input.Qs.orderBy == STRING
    input.Qs.pageToken == STRING
    input.Qs.returnPartialSuccess == BOOLEAN
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.networkFirewallPolicies.patch

enum_FirewallPolicyRuleDirection := [ "EGRESS", "INGRESS" ]
enum_FirewallPolicyRuleSecureTagState := [ "EFFECTIVE", "INEFFECTIVE" ]

valid {
    input.Body.associations[_].attachmentTarget == STRING
    input.Body.associations[_].displayName == STRING
    input.Body.associations[_].firewallPolicyId == STRING
    input.Body.associations[_].name == STRING
    input.Body.associations[_].shortName == STRING
    input.Body.creationTimestamp == STRING
    input.Body.description == STRING
    input.Body.displayName == STRING
    input.Body.fingerprint == STRING
    input.Body.id == STRING
    input.Body.kind == STRING
    input.Body.name == STRING
    input.Body.parent == STRING
    input.Body.region == STRING
    input.Body.ruleTupleCount == INTEGER
    input.Body.rules[_].action == STRING
    input.Body.rules[_].description == STRING
    input.Body.rules[_].direction == enum_FirewallPolicyRuleDirection[_]
    input.Body.rules[_].disabled == BOOLEAN
    input.Body.rules[_].enableLogging == BOOLEAN
    input.Body.rules[_].kind == STRING
    input.Body.rules[_].match.destAddressGroups[_] == STRING
    input.Body.rules[_].match.destFqdns[_] == STRING
    input.Body.rules[_].match.destIpRanges[_] == STRING
    input.Body.rules[_].match.destRegionCodes[_] == STRING
    input.Body.rules[_].match.destThreatIntelligences[_] == STRING
    input.Body.rules[_].match.layer4Configs[_].ipProtocol == STRING
    input.Body.rules[_].match.layer4Configs[_].ports[_] == STRING
    input.Body.rules[_].match.srcAddressGroups[_] == STRING
    input.Body.rules[_].match.srcFqdns[_] == STRING
    input.Body.rules[_].match.srcIpRanges[_] == STRING
    input.Body.rules[_].match.srcRegionCodes[_] == STRING
    input.Body.rules[_].match.srcSecureTags[_].name == STRING
    input.Body.rules[_].match.srcSecureTags[_].state == enum_FirewallPolicyRuleSecureTagState[_]
    input.Body.rules[_].match.srcThreatIntelligences[_] == STRING
    input.Body.rules[_].priority == INTEGER
    input.Body.rules[_].ruleName == STRING
    input.Body.rules[_].ruleTupleCount == INTEGER
    input.Body.rules[_].securityProfileGroup == STRING
    input.Body.rules[_].targetResources[_] == STRING
    input.Body.rules[_].targetSecureTags[_].name == STRING
    input.Body.rules[_].targetSecureTags[_].state == enum_FirewallPolicyRuleSecureTagState[_]
    input.Body.rules[_].targetServiceAccounts[_] == STRING
    input.Body.rules[_].tlsInspect == BOOLEAN
    input.Body.selfLink == STRING
    input.Body.selfLinkWithId == STRING
    input.Body.shortName == STRING
    input.ReqMap.firewallPolicy == STRING
    input.ReqMap.ProjectID == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.networkFirewallPolicies.patchAssociation

valid {
    input.Body.attachmentTarget == STRING
    input.Body.displayName == STRING
    input.Body.firewallPolicyId == STRING
    input.Body.name == STRING
    input.Body.priority == INTEGER
    input.Body.shortName == STRING
    input.ReqMap.firewallPolicy == STRING
    input.ReqMap.ProjectID == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.networkFirewallPolicies.patchRule

enum_FirewallPolicyRuleDirection := [ "EGRESS", "INGRESS" ]
enum_FirewallPolicyRuleSecureTagState := [ "EFFECTIVE", "INEFFECTIVE" ]

valid {
    input.Body.action == STRING
    input.Body.description == STRING
    input.Body.direction == enum_FirewallPolicyRuleDirection[_]
    input.Body.disabled == BOOLEAN
    input.Body.enableLogging == BOOLEAN
    input.Body.kind == STRING
    input.Body.match.destAddressGroups[_] == STRING
    input.Body.match.destFqdns[_] == STRING
    input.Body.match.destIpRanges[_] == STRING
    input.Body.match.destRegionCodes[_] == STRING
    input.Body.match.destThreatIntelligences[_] == STRING
    input.Body.match.layer4Configs[_].ipProtocol == STRING
    input.Body.match.layer4Configs[_].ports[_] == STRING
    input.Body.match.srcAddressGroups[_] == STRING
    input.Body.match.srcFqdns[_] == STRING
    input.Body.match.srcIpRanges[_] == STRING
    input.Body.match.srcRegionCodes[_] == STRING
    input.Body.match.srcSecureTags[_].name == STRING
    input.Body.match.srcSecureTags[_].state == enum_FirewallPolicyRuleSecureTagState[_]
    input.Body.match.srcThreatIntelligences[_] == STRING
    input.Body.priority == INTEGER
    input.Body.ruleName == STRING
    input.Body.ruleTupleCount == INTEGER
    input.Body.securityProfileGroup == STRING
    input.Body.targetResources[_] == STRING
    input.Body.targetSecureTags[_].name == STRING
    input.Body.targetSecureTags[_].state == enum_FirewallPolicyRuleSecureTagState[_]
    input.Body.targetServiceAccounts[_] == STRING
    input.Body.tlsInspect == BOOLEAN
    input.ReqMap.firewallPolicy == STRING
    input.ReqMap.ProjectID == STRING
    input.Qs.priority == INTEGER
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.networkFirewallPolicies.removeAssociation

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

compute.networkFirewallPolicies.removeRule

valid {
    input.ReqMap.firewallPolicy == STRING
    input.ReqMap.ProjectID == STRING
    input.Qs.priority == INTEGER
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.networkFirewallPolicies.setIamPolicy

enum_AuditLogConfigLogType := [ "ADMIN_READ", "DATA_READ", "DATA_WRITE", "LOG_TYPE_UNSPECIFIED" ]
enum_AuthorizationLoggingOptionsPermissionType := [ "ADMIN_READ", "ADMIN_WRITE", "DATA_READ", "DATA_WRITE", "PERMISSION_TYPE_UNSPECIFIED" ]
enum_ConditionIam := [ "APPROVER", "ATTRIBUTION", "AUTHORITY", "CREDENTIALS_TYPE", "CREDS_ASSERTION", "JUSTIFICATION_TYPE", "NO_ATTR", "SECURITY_REALM" ]
enum_ConditionOp := [ "DISCHARGED", "EQUALS", "IN", "NOT_EQUALS", "NOT_IN", "NO_OP" ]
enum_ConditionSys := [ "IP", "NAME", "NO_ATTR", "REGION", "SERVICE" ]
enum_LogConfigCloudAuditOptionsLogName := [ "ADMIN_ACTIVITY", "DATA_ACCESS", "UNSPECIFIED_LOG_NAME" ]
enum_LogConfigDataAccessOptionsLogMode := [ "LOG_FAIL_CLOSED", "LOG_MODE_UNSPECIFIED" ]
enum_RuleAction := [ "ALLOW", "ALLOW_WITH_LOG", "DENY", "DENY_WITH_LOG", "LOG", "NO_ACTION" ]

valid {
    input.Body.bindings[_].bindingId == STRING
    input.Body.bindings[_].condition.description == STRING
    input.Body.bindings[_].condition.expression == STRING
    input.Body.bindings[_].condition.location == STRING
    input.Body.bindings[_].condition.title == STRING
    input.Body.bindings[_].members[_] == STRING
    input.Body.bindings[_].role == STRING
    input.Body.etag == STRING
    input.Body.policy.auditConfigs[_].auditLogConfigs[_].exemptedMembers[_] == STRING
    input.Body.policy.auditConfigs[_].auditLogConfigs[_].ignoreChildExemptions == BOOLEAN
    input.Body.policy.auditConfigs[_].auditLogConfigs[_].logType == enum_AuditLogConfigLogType[_]
    input.Body.policy.auditConfigs[_].exemptedMembers[_] == STRING
    input.Body.policy.auditConfigs[_].service == STRING
    input.Body.policy.bindings[_].bindingId == 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.rules[_].action == enum_RuleAction[_]
    input.Body.policy.rules[_].conditions[_].iam == enum_ConditionIam[_]
    input.Body.policy.rules[_].conditions[_].op == enum_ConditionOp[_]
    input.Body.policy.rules[_].conditions[_].svc == STRING
    input.Body.policy.rules[_].conditions[_].sys == enum_ConditionSys[_]
    input.Body.policy.rules[_].conditions[_].values[_] == STRING
    input.Body.policy.rules[_].description == STRING
    input.Body.policy.rules[_].ins[_] == STRING
    input.Body.policy.rules[_].logConfigs[_].cloudAudit.authorizationLoggingOptions.permissionType == enum_AuthorizationLoggingOptionsPermissionType[_]
    input.Body.policy.rules[_].logConfigs[_].cloudAudit.logName == enum_LogConfigCloudAuditOptionsLogName[_]
    input.Body.policy.rules[_].logConfigs[_].counter.customFields[_].name == STRING
    input.Body.policy.rules[_].logConfigs[_].counter.customFields[_].value == STRING
    input.Body.policy.rules[_].logConfigs[_].counter.field == STRING
    input.Body.policy.rules[_].logConfigs[_].counter.metric == STRING
    input.Body.policy.rules[_].logConfigs[_].dataAccess.logMode == enum_LogConfigDataAccessOptionsLogMode[_]
    input.Body.policy.rules[_].notIns[_] == STRING
    input.Body.policy.rules[_].permissions[_] == STRING
    input.Body.policy.version == INTEGER
    input.ReqMap.ProjectID == STRING
    input.ReqMap.resource == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.networkFirewallPolicies.testIamPermissions

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

compute.networkPlacements.get

valid {
    input.ReqMap.networkPlacement == STRING
    input.ReqMap.ProjectID == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.networkPlacements.list

valid {
    input.ReqMap.ProjectID == STRING
    input.Qs.filter == STRING
    input.Qs.maxResults == INTEGER
    input.Qs.orderBy == STRING
    input.Qs.pageToken == STRING
    input.Qs.returnPartialSuccess == BOOLEAN
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.networks.addPeering

enum_NetworkPeeringStackType := [ "IPV4_IPV6", "IPV4_ONLY" ]
enum_NetworkPeeringState := [ "ACTIVE", "INACTIVE" ]

valid {
    input.Body.autoCreateRoutes == BOOLEAN
    input.Body.name == STRING
    input.Body.networkPeering.autoCreateRoutes == BOOLEAN
    input.Body.networkPeering.exchangeSubnetRoutes == BOOLEAN
    input.Body.networkPeering.exportCustomRoutes == BOOLEAN
    input.Body.networkPeering.exportSubnetRoutesWithPublicIp == BOOLEAN
    input.Body.networkPeering.importCustomRoutes == BOOLEAN
    input.Body.networkPeering.importSubnetRoutesWithPublicIp == BOOLEAN
    input.Body.networkPeering.name == STRING
    input.Body.networkPeering.network == STRING
    input.Body.networkPeering.peerMtu == INTEGER
    input.Body.networkPeering.stackType == enum_NetworkPeeringStackType[_]
    input.Body.networkPeering.state == enum_NetworkPeeringState[_]
    input.Body.networkPeering.stateDetails == STRING
    input.Body.peerNetwork == STRING
    input.ReqMap.network == STRING
    input.ReqMap.ProjectID == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.networks.delete

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

compute.networks.get

valid {
    input.ReqMap.network == STRING
    input.ReqMap.ProjectID == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.networks.getEffectiveFirewalls

valid {
    input.ReqMap.network == STRING
    input.ReqMap.ProjectID == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.networks.insert

enum_NetworkNetworkFirewallPolicyEnforcementOrder := [ "AFTER_CLASSIC_FIREWALL", "BEFORE_CLASSIC_FIREWALL" ]
enum_NetworkPeeringStackType := [ "IPV4_IPV6", "IPV4_ONLY" ]
enum_NetworkPeeringState := [ "ACTIVE", "INACTIVE" ]
enum_NetworkRoutingConfigRoutingMode := [ "GLOBAL", "REGIONAL" ]

valid {
    input.Body.IPv4Range == STRING
    input.Body.autoCreateSubnetworks == BOOLEAN
    input.Body.creationTimestamp == STRING
    input.Body.description == STRING
    input.Body.enableUlaInternalIpv6 == BOOLEAN
    input.Body.firewallPolicy == STRING
    input.Body.gatewayIPv4 == STRING
    input.Body.id == STRING
    input.Body.internalIpv6Range == STRING
    input.Body.kind == STRING
    input.Body.mtu == INTEGER
    input.Body.name == STRING
    input.Body.networkFirewallPolicyEnforcementOrder == enum_NetworkNetworkFirewallPolicyEnforcementOrder[_]
    input.Body.peerings[_].autoCreateRoutes == BOOLEAN
    input.Body.peerings[_].exchangeSubnetRoutes == BOOLEAN
    input.Body.peerings[_].exportCustomRoutes == BOOLEAN
    input.Body.peerings[_].exportSubnetRoutesWithPublicIp == BOOLEAN
    input.Body.peerings[_].importCustomRoutes == BOOLEAN
    input.Body.peerings[_].importSubnetRoutesWithPublicIp == BOOLEAN
    input.Body.peerings[_].name == STRING
    input.Body.peerings[_].network == STRING
    input.Body.peerings[_].peerMtu == INTEGER
    input.Body.peerings[_].stackType == enum_NetworkPeeringStackType[_]
    input.Body.peerings[_].state == enum_NetworkPeeringState[_]
    input.Body.peerings[_].stateDetails == STRING
    input.Body.routingConfig.routingMode == enum_NetworkRoutingConfigRoutingMode[_]
    input.Body.selfLink == STRING
    input.Body.selfLinkWithId == STRING
    input.Body.subnetworks[_] == STRING
    input.ReqMap.ProjectID == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.networks.list

valid {
    input.ReqMap.ProjectID == STRING
    input.Qs.filter == STRING
    input.Qs.maxResults == INTEGER
    input.Qs.orderBy == STRING
    input.Qs.pageToken == STRING
    input.Qs.returnPartialSuccess == BOOLEAN
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.networks.listIpAddresses

valid {
    input.ReqMap.network == STRING
    input.ReqMap.ProjectID == STRING
    input.Qs.filter == STRING
    input.Qs.maxResults == INTEGER
    input.Qs.orderBy == STRING
    input.Qs.pageToken == STRING
    input.Qs.returnPartialSuccess == BOOLEAN
    input.Qs.types == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.networks.listIpOwners

valid {
    input.ReqMap.network == STRING
    input.ReqMap.ProjectID == STRING
    input.Qs.filter == STRING
    input.Qs.ipCidrRange == STRING
    input.Qs.maxResults == INTEGER
    input.Qs.orderBy == STRING
    input.Qs.ownerProjects == STRING
    input.Qs.ownerTypes == STRING
    input.Qs.pageToken == STRING
    input.Qs.returnPartialSuccess == BOOLEAN
    input.Qs.subnetName == STRING
    input.Qs.subnetRegion == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.networks.listPeeringRoutes

enum_DirectionParameter := [ "INCOMING", "OUTGOING" ]

valid {
    input.ReqMap.network == STRING
    input.ReqMap.ProjectID == STRING
    input.Qs.direction == enum_DirectionParameter[_]
    input.Qs.filter == STRING
    input.Qs.maxResults == INTEGER
    input.Qs.orderBy == STRING
    input.Qs.pageToken == STRING
    input.Qs.peeringName == STRING
    input.Qs.region == STRING
    input.Qs.returnPartialSuccess == BOOLEAN
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.networks.patch

enum_NetworkNetworkFirewallPolicyEnforcementOrder := [ "AFTER_CLASSIC_FIREWALL", "BEFORE_CLASSIC_FIREWALL" ]
enum_NetworkPeeringStackType := [ "IPV4_IPV6", "IPV4_ONLY" ]
enum_NetworkPeeringState := [ "ACTIVE", "INACTIVE" ]
enum_NetworkRoutingConfigRoutingMode := [ "GLOBAL", "REGIONAL" ]

valid {
    input.Body.IPv4Range == STRING
    input.Body.autoCreateSubnetworks == BOOLEAN
    input.Body.creationTimestamp == STRING
    input.Body.description == STRING
    input.Body.enableUlaInternalIpv6 == BOOLEAN
    input.Body.firewallPolicy == STRING
    input.Body.gatewayIPv4 == STRING
    input.Body.id == STRING
    input.Body.internalIpv6Range == STRING
    input.Body.kind == STRING
    input.Body.mtu == INTEGER
    input.Body.name == STRING
    input.Body.networkFirewallPolicyEnforcementOrder == enum_NetworkNetworkFirewallPolicyEnforcementOrder[_]
    input.Body.peerings[_].autoCreateRoutes == BOOLEAN
    input.Body.peerings[_].exchangeSubnetRoutes == BOOLEAN
    input.Body.peerings[_].exportCustomRoutes == BOOLEAN
    input.Body.peerings[_].exportSubnetRoutesWithPublicIp == BOOLEAN
    input.Body.peerings[_].importCustomRoutes == BOOLEAN
    input.Body.peerings[_].importSubnetRoutesWithPublicIp == BOOLEAN
    input.Body.peerings[_].name == STRING
    input.Body.peerings[_].network == STRING
    input.Body.peerings[_].peerMtu == INTEGER
    input.Body.peerings[_].stackType == enum_NetworkPeeringStackType[_]
    input.Body.peerings[_].state == enum_NetworkPeeringState[_]
    input.Body.peerings[_].stateDetails == STRING
    input.Body.routingConfig.routingMode == enum_NetworkRoutingConfigRoutingMode[_]
    input.Body.selfLink == STRING
    input.Body.selfLinkWithId == STRING
    input.Body.subnetworks[_] == STRING
    input.ReqMap.network == STRING
    input.ReqMap.ProjectID == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.networks.removePeering

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

compute.networks.switchToCustomMode

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

compute.networks.testIamPermissions

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

compute.networks.updatePeering

enum_NetworkPeeringStackType := [ "IPV4_IPV6", "IPV4_ONLY" ]
enum_NetworkPeeringState := [ "ACTIVE", "INACTIVE" ]

valid {
    input.Body.networkPeering.autoCreateRoutes == BOOLEAN
    input.Body.networkPeering.exchangeSubnetRoutes == BOOLEAN
    input.Body.networkPeering.exportCustomRoutes == BOOLEAN
    input.Body.networkPeering.exportSubnetRoutesWithPublicIp == BOOLEAN
    input.Body.networkPeering.importCustomRoutes == BOOLEAN
    input.Body.networkPeering.importSubnetRoutesWithPublicIp == BOOLEAN
    input.Body.networkPeering.name == STRING
    input.Body.networkPeering.network == STRING
    input.Body.networkPeering.peerMtu == INTEGER
    input.Body.networkPeering.stackType == enum_NetworkPeeringStackType[_]
    input.Body.networkPeering.state == enum_NetworkPeeringState[_]
    input.Body.networkPeering.stateDetails == STRING
    input.ReqMap.network == STRING
    input.ReqMap.ProjectID == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.nodeGroups.addNodes

valid {
    input.Body.additionalNodeCount == INTEGER
    input.ReqMap.nodeGroup == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.zone == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.nodeGroups.aggregatedList

valid {
    input.ReqMap.ProjectID == STRING
    input.Qs.filter == STRING
    input.Qs.includeAllScopes == BOOLEAN
    input.Qs.maxResults == INTEGER
    input.Qs.orderBy == STRING
    input.Qs.pageToken == STRING
    input.Qs.returnPartialSuccess == BOOLEAN
    input.Qs.serviceProjectNumber == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.nodeGroups.delete

valid {
    input.ReqMap.nodeGroup == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.zone == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.nodeGroups.deleteNodes

valid {
    input.Body.nodes[_] == STRING
    input.ReqMap.nodeGroup == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.zone == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.nodeGroups.get

valid {
    input.ReqMap.nodeGroup == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.zone == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.nodeGroups.getIamPolicy

valid {
    input.ReqMap.ProjectID == STRING
    input.ReqMap.resource == STRING
    input.ReqMap.zone == STRING
    input.Qs.optionsRequestedPolicyVersion == INTEGER
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.nodeGroups.insert

enum_NodeGroupAutoscalingPolicyMode := [ "MODE_UNSPECIFIED", "OFF", "ON", "ONLY_SCALE_OUT" ]
enum_NodeGroupMaintenancePolicy := [ "DEFAULT", "MAINTENANCE_POLICY_UNSPECIFIED", "MIGRATE_WITHIN_NODE_GROUP", "RESTART_IN_PLACE" ]
enum_NodeGroupStatus := [ "CREATING", "DELETING", "INVALID", "READY" ]
enum_ShareSettingsShareType := [ "LOCAL", "ORGANIZATION", "SHARE_TYPE_UNSPECIFIED", "SPECIFIC_PROJECTS" ]

valid {
    input.Body.autoscalingPolicy.maxNodes == INTEGER
    input.Body.autoscalingPolicy.minNodes == INTEGER
    input.Body.autoscalingPolicy.mode == enum_NodeGroupAutoscalingPolicyMode[_]
    input.Body.creationTimestamp == STRING
    input.Body.description == STRING
    input.Body.fingerprint == STRING
    input.Body.id == STRING
    input.Body.kind == STRING
    input.Body.locationHint == STRING
    input.Body.maintenancePolicy == enum_NodeGroupMaintenancePolicy[_]
    input.Body.maintenanceWindow.maintenanceDuration.nanos == INTEGER
    input.Body.maintenanceWindow.maintenanceDuration.seconds == STRING
    input.Body.maintenanceWindow.startTime == STRING
    input.Body.name == STRING
    input.Body.nodeTemplate == STRING
    input.Body.selfLink == STRING
    input.Body.shareSettings.projectMap.STRING.projectId == STRING
    input.Body.shareSettings.shareType == enum_ShareSettingsShareType[_]
    input.Body.size == INTEGER
    input.Body.status == enum_NodeGroupStatus[_]
    input.Body.zone == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.zone == STRING
    input.Qs.initialNodeCount == INTEGER
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.nodeGroups.list

valid {
    input.ReqMap.ProjectID == STRING
    input.ReqMap.zone == STRING
    input.Qs.filter == STRING
    input.Qs.maxResults == INTEGER
    input.Qs.orderBy == STRING
    input.Qs.pageToken == STRING
    input.Qs.returnPartialSuccess == BOOLEAN
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.nodeGroups.listNodes

valid {
    input.ReqMap.nodeGroup == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.zone == STRING
    input.Qs.filter == STRING
    input.Qs.maxResults == INTEGER
    input.Qs.orderBy == STRING
    input.Qs.pageToken == STRING
    input.Qs.returnPartialSuccess == BOOLEAN
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.nodeGroups.patch

enum_NodeGroupAutoscalingPolicyMode := [ "MODE_UNSPECIFIED", "OFF", "ON", "ONLY_SCALE_OUT" ]
enum_NodeGroupMaintenancePolicy := [ "DEFAULT", "MAINTENANCE_POLICY_UNSPECIFIED", "MIGRATE_WITHIN_NODE_GROUP", "RESTART_IN_PLACE" ]
enum_NodeGroupStatus := [ "CREATING", "DELETING", "INVALID", "READY" ]
enum_ShareSettingsShareType := [ "LOCAL", "ORGANIZATION", "SHARE_TYPE_UNSPECIFIED", "SPECIFIC_PROJECTS" ]

valid {
    input.Body.autoscalingPolicy.maxNodes == INTEGER
    input.Body.autoscalingPolicy.minNodes == INTEGER
    input.Body.autoscalingPolicy.mode == enum_NodeGroupAutoscalingPolicyMode[_]
    input.Body.creationTimestamp == STRING
    input.Body.description == STRING
    input.Body.fingerprint == STRING
    input.Body.id == STRING
    input.Body.kind == STRING
    input.Body.locationHint == STRING
    input.Body.maintenancePolicy == enum_NodeGroupMaintenancePolicy[_]
    input.Body.maintenanceWindow.maintenanceDuration.nanos == INTEGER
    input.Body.maintenanceWindow.maintenanceDuration.seconds == STRING
    input.Body.maintenanceWindow.startTime == STRING
    input.Body.name == STRING
    input.Body.nodeTemplate == STRING
    input.Body.selfLink == STRING
    input.Body.shareSettings.projectMap.STRING.projectId == STRING
    input.Body.shareSettings.shareType == enum_ShareSettingsShareType[_]
    input.Body.size == INTEGER
    input.Body.status == enum_NodeGroupStatus[_]
    input.Body.zone == STRING
    input.ReqMap.nodeGroup == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.zone == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.nodeGroups.performMaintenance

valid {
    input.Body.nodes[_] == STRING
    input.Body.startTime == STRING
    input.ReqMap.nodeGroup == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.zone == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.nodeGroups.setIamPolicy

enum_AuditLogConfigLogType := [ "ADMIN_READ", "DATA_READ", "DATA_WRITE", "LOG_TYPE_UNSPECIFIED" ]
enum_AuthorizationLoggingOptionsPermissionType := [ "ADMIN_READ", "ADMIN_WRITE", "DATA_READ", "DATA_WRITE", "PERMISSION_TYPE_UNSPECIFIED" ]
enum_ConditionIam := [ "APPROVER", "ATTRIBUTION", "AUTHORITY", "CREDENTIALS_TYPE", "CREDS_ASSERTION", "JUSTIFICATION_TYPE", "NO_ATTR", "SECURITY_REALM" ]
enum_ConditionOp := [ "DISCHARGED", "EQUALS", "IN", "NOT_EQUALS", "NOT_IN", "NO_OP" ]
enum_ConditionSys := [ "IP", "NAME", "NO_ATTR", "REGION", "SERVICE" ]
enum_LogConfigCloudAuditOptionsLogName := [ "ADMIN_ACTIVITY", "DATA_ACCESS", "UNSPECIFIED_LOG_NAME" ]
enum_LogConfigDataAccessOptionsLogMode := [ "LOG_FAIL_CLOSED", "LOG_MODE_UNSPECIFIED" ]
enum_RuleAction := [ "ALLOW", "ALLOW_WITH_LOG", "DENY", "DENY_WITH_LOG", "LOG", "NO_ACTION" ]

valid {
    input.Body.bindings[_].bindingId == STRING
    input.Body.bindings[_].condition.description == STRING
    input.Body.bindings[_].condition.expression == STRING
    input.Body.bindings[_].condition.location == STRING
    input.Body.bindings[_].condition.title == STRING
    input.Body.bindings[_].members[_] == STRING
    input.Body.bindings[_].role == STRING
    input.Body.etag == STRING
    input.Body.policy.auditConfigs[_].auditLogConfigs[_].exemptedMembers[_] == STRING
    input.Body.policy.auditConfigs[_].auditLogConfigs[_].ignoreChildExemptions == BOOLEAN
    input.Body.policy.auditConfigs[_].auditLogConfigs[_].logType == enum_AuditLogConfigLogType[_]
    input.Body.policy.auditConfigs[_].exemptedMembers[_] == STRING
    input.Body.policy.auditConfigs[_].service == STRING
    input.Body.policy.bindings[_].bindingId == 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.rules[_].action == enum_RuleAction[_]
    input.Body.policy.rules[_].conditions[_].iam == enum_ConditionIam[_]
    input.Body.policy.rules[_].conditions[_].op == enum_ConditionOp[_]
    input.Body.policy.rules[_].conditions[_].svc == STRING
    input.Body.policy.rules[_].conditions[_].sys == enum_ConditionSys[_]
    input.Body.policy.rules[_].conditions[_].values[_] == STRING
    input.Body.policy.rules[_].description == STRING
    input.Body.policy.rules[_].ins[_] == STRING
    input.Body.policy.rules[_].logConfigs[_].cloudAudit.authorizationLoggingOptions.permissionType == enum_AuthorizationLoggingOptionsPermissionType[_]
    input.Body.policy.rules[_].logConfigs[_].cloudAudit.logName == enum_LogConfigCloudAuditOptionsLogName[_]
    input.Body.policy.rules[_].logConfigs[_].counter.customFields[_].name == STRING
    input.Body.policy.rules[_].logConfigs[_].counter.customFields[_].value == STRING
    input.Body.policy.rules[_].logConfigs[_].counter.field == STRING
    input.Body.policy.rules[_].logConfigs[_].counter.metric == STRING
    input.Body.policy.rules[_].logConfigs[_].dataAccess.logMode == enum_LogConfigDataAccessOptionsLogMode[_]
    input.Body.policy.rules[_].notIns[_] == STRING
    input.Body.policy.rules[_].permissions[_] == STRING
    input.Body.policy.version == INTEGER
    input.ReqMap.ProjectID == STRING
    input.ReqMap.resource == STRING
    input.ReqMap.zone == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.nodeGroups.setNodeTemplate

valid {
    input.Body.nodeTemplate == STRING
    input.ReqMap.nodeGroup == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.zone == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.nodeGroups.simulateMaintenanceEvent

valid {
    input.Body.nodes[_] == STRING
    input.ReqMap.nodeGroup == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.zone == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.nodeGroups.testIamPermissions

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

compute.nodeTemplates.aggregatedList

valid {
    input.ReqMap.ProjectID == STRING
    input.Qs.filter == STRING
    input.Qs.includeAllScopes == BOOLEAN
    input.Qs.maxResults == INTEGER
    input.Qs.orderBy == STRING
    input.Qs.pageToken == STRING
    input.Qs.returnPartialSuccess == BOOLEAN
    input.Qs.serviceProjectNumber == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.nodeTemplates.delete

valid {
    input.ReqMap.nodeTemplate == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.nodeTemplates.get

valid {
    input.ReqMap.nodeTemplate == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.nodeTemplates.getIamPolicy

valid {
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.ReqMap.resource == STRING
    input.Qs.optionsRequestedPolicyVersion == INTEGER
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.nodeTemplates.insert

enum_NodeTemplateCpuOvercommitType := [ "CPU_OVERCOMMIT_TYPE_UNSPECIFIED", "ENABLED", "NONE" ]
enum_NodeTemplateStatus := [ "CREATING", "DELETING", "INVALID", "READY" ]
enum_ServerBindingType := [ "RESTART_NODE_ON_ANY_SERVER", "RESTART_NODE_ON_MINIMAL_SERVERS", "SERVER_BINDING_TYPE_UNSPECIFIED" ]

valid {
    input.Body.accelerators[_].acceleratorCount == INTEGER
    input.Body.accelerators[_].acceleratorType == STRING
    input.Body.cpuOvercommitType == enum_NodeTemplateCpuOvercommitType[_]
    input.Body.creationTimestamp == STRING
    input.Body.description == STRING
    input.Body.disks[_].diskCount == INTEGER
    input.Body.disks[_].diskSizeGb == INTEGER
    input.Body.disks[_].diskType == STRING
    input.Body.id == STRING
    input.Body.kind == STRING
    input.Body.name == STRING
    input.Body.nodeAffinityLabels.STRING == STRING
    input.Body.nodeType == STRING
    input.Body.nodeTypeFlexibility.cpus == STRING
    input.Body.nodeTypeFlexibility.localSsd == STRING
    input.Body.nodeTypeFlexibility.memory == STRING
    input.Body.region == STRING
    input.Body.selfLink == STRING
    input.Body.serverBinding.type == enum_ServerBindingType[_]
    input.Body.status == enum_NodeTemplateStatus[_]
    input.Body.statusMessage == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.nodeTemplates.list

valid {
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.Qs.filter == STRING
    input.Qs.maxResults == INTEGER
    input.Qs.orderBy == STRING
    input.Qs.pageToken == STRING
    input.Qs.returnPartialSuccess == BOOLEAN
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.nodeTemplates.setIamPolicy

enum_AuditLogConfigLogType := [ "ADMIN_READ", "DATA_READ", "DATA_WRITE", "LOG_TYPE_UNSPECIFIED" ]
enum_AuthorizationLoggingOptionsPermissionType := [ "ADMIN_READ", "ADMIN_WRITE", "DATA_READ", "DATA_WRITE", "PERMISSION_TYPE_UNSPECIFIED" ]
enum_ConditionIam := [ "APPROVER", "ATTRIBUTION", "AUTHORITY", "CREDENTIALS_TYPE", "CREDS_ASSERTION", "JUSTIFICATION_TYPE", "NO_ATTR", "SECURITY_REALM" ]
enum_ConditionOp := [ "DISCHARGED", "EQUALS", "IN", "NOT_EQUALS", "NOT_IN", "NO_OP" ]
enum_ConditionSys := [ "IP", "NAME", "NO_ATTR", "REGION", "SERVICE" ]
enum_LogConfigCloudAuditOptionsLogName := [ "ADMIN_ACTIVITY", "DATA_ACCESS", "UNSPECIFIED_LOG_NAME" ]
enum_LogConfigDataAccessOptionsLogMode := [ "LOG_FAIL_CLOSED", "LOG_MODE_UNSPECIFIED" ]
enum_RuleAction := [ "ALLOW", "ALLOW_WITH_LOG", "DENY", "DENY_WITH_LOG", "LOG", "NO_ACTION" ]

valid {
    input.Body.bindings[_].bindingId == STRING
    input.Body.bindings[_].condition.description == STRING
    input.Body.bindings[_].condition.expression == STRING
    input.Body.bindings[_].condition.location == STRING
    input.Body.bindings[_].condition.title == STRING
    input.Body.bindings[_].members[_] == STRING
    input.Body.bindings[_].role == STRING
    input.Body.etag == STRING
    input.Body.policy.auditConfigs[_].auditLogConfigs[_].exemptedMembers[_] == STRING
    input.Body.policy.auditConfigs[_].auditLogConfigs[_].ignoreChildExemptions == BOOLEAN
    input.Body.policy.auditConfigs[_].auditLogConfigs[_].logType == enum_AuditLogConfigLogType[_]
    input.Body.policy.auditConfigs[_].exemptedMembers[_] == STRING
    input.Body.policy.auditConfigs[_].service == STRING
    input.Body.policy.bindings[_].bindingId == 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.rules[_].action == enum_RuleAction[_]
    input.Body.policy.rules[_].conditions[_].iam == enum_ConditionIam[_]
    input.Body.policy.rules[_].conditions[_].op == enum_ConditionOp[_]
    input.Body.policy.rules[_].conditions[_].svc == STRING
    input.Body.policy.rules[_].conditions[_].sys == enum_ConditionSys[_]
    input.Body.policy.rules[_].conditions[_].values[_] == STRING
    input.Body.policy.rules[_].description == STRING
    input.Body.policy.rules[_].ins[_] == STRING
    input.Body.policy.rules[_].logConfigs[_].cloudAudit.authorizationLoggingOptions.permissionType == enum_AuthorizationLoggingOptionsPermissionType[_]
    input.Body.policy.rules[_].logConfigs[_].cloudAudit.logName == enum_LogConfigCloudAuditOptionsLogName[_]
    input.Body.policy.rules[_].logConfigs[_].counter.customFields[_].name == STRING
    input.Body.policy.rules[_].logConfigs[_].counter.customFields[_].value == STRING
    input.Body.policy.rules[_].logConfigs[_].counter.field == STRING
    input.Body.policy.rules[_].logConfigs[_].counter.metric == STRING
    input.Body.policy.rules[_].logConfigs[_].dataAccess.logMode == enum_LogConfigDataAccessOptionsLogMode[_]
    input.Body.policy.rules[_].notIns[_] == STRING
    input.Body.policy.rules[_].permissions[_] == STRING
    input.Body.policy.version == INTEGER
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.ReqMap.resource == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.nodeTemplates.testIamPermissions

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

compute.nodeTypes.aggregatedList

valid {
    input.ReqMap.ProjectID == STRING
    input.Qs.filter == STRING
    input.Qs.includeAllScopes == BOOLEAN
    input.Qs.maxResults == INTEGER
    input.Qs.orderBy == STRING
    input.Qs.pageToken == STRING
    input.Qs.returnPartialSuccess == BOOLEAN
    input.Qs.serviceProjectNumber == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.nodeTypes.get

valid {
    input.ReqMap.nodeType == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.zone == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.nodeTypes.list

valid {
    input.ReqMap.ProjectID == STRING
    input.ReqMap.zone == STRING
    input.Qs.filter == STRING
    input.Qs.maxResults == INTEGER
    input.Qs.orderBy == STRING
    input.Qs.pageToken == STRING
    input.Qs.returnPartialSuccess == BOOLEAN
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.organizationSecurityPolicies.addAssociation

valid {
    input.Body.attachmentId == STRING
    input.Body.displayName == STRING
    input.Body.name == STRING
    input.Body.securityPolicyId == STRING
    input.ReqMap.securityPolicy == STRING
    input.Qs.replaceExistingAssociation == BOOLEAN
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
}

compute.organizationSecurityPolicies.addRule

enum_SecurityPolicyRuleDirection := [ "EGRESS", "INGRESS" ]
enum_SecurityPolicyRuleMatcherVersionedExpr := [ "FIREWALL", "SRC_IPS_V1" ]
enum_SecurityPolicyRulePreconfiguredWafConfigExclusionFieldParamsOp := [ "CONTAINS", "ENDS_WITH", "EQUALS", "EQUALS_ANY", "STARTS_WITH" ]
enum_SecurityPolicyRuleRateLimitOptionsEnforceOnKey := [ "ALL", "ALL_IPS", "HTTP_COOKIE", "HTTP_HEADER", "HTTP_PATH", "IP", "REGION_CODE", "SNI", "TLS_JA3_FINGERPRINT", "USER_IP", "XFF_IP" ]
enum_SecurityPolicyRuleRateLimitOptionsEnforceOnKeyConfigEnforceOnKeyType := [ "ALL", "ALL_IPS", "HTTP_COOKIE", "HTTP_HEADER", "HTTP_PATH", "IP", "REGION_CODE", "SNI", "TLS_JA3_FINGERPRINT", "USER_IP", "XFF_IP" ]
enum_SecurityPolicyRuleRedirectOptionsType := [ "EXTERNAL_302", "GOOGLE_RECAPTCHA" ]

valid {
    input.Body.action == STRING
    input.Body.description == STRING
    input.Body.direction == enum_SecurityPolicyRuleDirection[_]
    input.Body.enableLogging == BOOLEAN
    input.Body.headerAction.requestHeadersToAdds[_].headerName == STRING
    input.Body.headerAction.requestHeadersToAdds[_].headerValue == STRING
    input.Body.kind == STRING
    input.Body.match.config.destIpRanges[_] == STRING
    input.Body.match.config.layer4Configs[_].ipProtocol == STRING
    input.Body.match.config.layer4Configs[_].ports[_] == STRING
    input.Body.match.config.srcIpRanges[_] == STRING
    input.Body.match.expr.description == STRING
    input.Body.match.expr.expression == STRING
    input.Body.match.expr.location == STRING
    input.Body.match.expr.title == STRING
    input.Body.match.exprOptions.recaptchaOptions.actionTokenSiteKeys[_] == STRING
    input.Body.match.exprOptions.recaptchaOptions.sessionTokenSiteKeys[_] == STRING
    input.Body.match.versionedExpr == enum_SecurityPolicyRuleMatcherVersionedExpr[_]
    input.Body.networkMatch.destIpRanges[_] == STRING
    input.Body.networkMatch.destPorts[_] == STRING
    input.Body.networkMatch.ipProtocols[_] == STRING
    input.Body.networkMatch.srcAsns[_] == INTEGER
    input.Body.networkMatch.srcIpRanges[_] == STRING
    input.Body.networkMatch.srcPorts[_] == STRING
    input.Body.networkMatch.srcRegionCodes[_] == STRING
    input.Body.networkMatch.userDefinedFields[_].name == STRING
    input.Body.networkMatch.userDefinedFields[_].values[_] == STRING
    input.Body.preconfiguredWafConfig.exclusions[_].requestCookiesToExclude[_].op == enum_SecurityPolicyRulePreconfiguredWafConfigExclusionFieldParamsOp[_]
    input.Body.preconfiguredWafConfig.exclusions[_].requestCookiesToExclude[_].val == STRING
    input.Body.preconfiguredWafConfig.exclusions[_].requestHeadersToExclude[_].op == enum_SecurityPolicyRulePreconfiguredWafConfigExclusionFieldParamsOp[_]
    input.Body.preconfiguredWafConfig.exclusions[_].requestHeadersToExclude[_].val == STRING
    input.Body.preconfiguredWafConfig.exclusions[_].requestQueryParamsToExclude[_].op == enum_SecurityPolicyRulePreconfiguredWafConfigExclusionFieldParamsOp[_]
    input.Body.preconfiguredWafConfig.exclusions[_].requestQueryParamsToExclude[_].val == STRING
    input.Body.preconfiguredWafConfig.exclusions[_].requestUrisToExclude[_].op == enum_SecurityPolicyRulePreconfiguredWafConfigExclusionFieldParamsOp[_]
    input.Body.preconfiguredWafConfig.exclusions[_].requestUrisToExclude[_].val == STRING
    input.Body.preconfiguredWafConfig.exclusions[_].targetRuleIds[_] == STRING
    input.Body.preconfiguredWafConfig.exclusions[_].targetRuleSet == STRING
    input.Body.preview == BOOLEAN
    input.Body.priority == INTEGER
    input.Body.rateLimitOptions.banDurationSec == INTEGER
    input.Body.rateLimitOptions.banThreshold.count == INTEGER
    input.Body.rateLimitOptions.banThreshold.intervalSec == INTEGER
    input.Body.rateLimitOptions.conformAction == STRING
    input.Body.rateLimitOptions.enforceOnKey == enum_SecurityPolicyRuleRateLimitOptionsEnforceOnKey[_]
    input.Body.rateLimitOptions.enforceOnKeyConfigs[_].enforceOnKeyName == STRING
    input.Body.rateLimitOptions.enforceOnKeyConfigs[_].enforceOnKeyType == enum_SecurityPolicyRuleRateLimitOptionsEnforceOnKeyConfigEnforceOnKeyType[_]
    input.Body.rateLimitOptions.enforceOnKeyName == STRING
    input.Body.rateLimitOptions.exceedAction == STRING
    input.Body.rateLimitOptions.exceedRedirectOptions.target == STRING
    input.Body.rateLimitOptions.exceedRedirectOptions.type == enum_SecurityPolicyRuleRedirectOptionsType[_]
    input.Body.rateLimitOptions.rateLimitThreshold.count == INTEGER
    input.Body.rateLimitOptions.rateLimitThreshold.intervalSec == INTEGER
    input.Body.redirectOptions.target == STRING
    input.Body.redirectOptions.type == enum_SecurityPolicyRuleRedirectOptionsType[_]
    input.Body.ruleNumber == STRING
    input.Body.ruleTupleCount == INTEGER
    input.Body.targetResources[_] == STRING
    input.Body.targetServiceAccounts[_] == STRING
    input.ReqMap.securityPolicy == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
}

compute.organizationSecurityPolicies.copyRules

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

compute.organizationSecurityPolicies.delete

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

compute.organizationSecurityPolicies.get

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

compute.organizationSecurityPolicies.getAssociation

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

compute.organizationSecurityPolicies.getRule

valid {
    input.ReqMap.securityPolicy == STRING
    input.Qs.priority == INTEGER
    input.ProviderMetadata.Region == STRING
}

compute.organizationSecurityPolicies.insert

enum_SecurityPolicyAdaptiveProtectionConfigLayer7DdosDefenseConfigRuleVisibility := [ "PREMIUM", "STANDARD" ]
enum_SecurityPolicyAdaptiveProtectionConfigLayer7DdosDefenseConfigThresholdConfigTrafficGranularityConfigType := [ "HTTP_HEADER_HOST", "HTTP_PATH", "UNSPECIFIED_TYPE" ]
enum_SecurityPolicyAdvancedOptionsConfigJsonParsing := [ "DISABLED", "STANDARD", "STANDARD_WITH_GRAPHQL" ]
enum_SecurityPolicyAdvancedOptionsConfigLogLevel := [ "NORMAL", "VERBOSE" ]
enum_SecurityPolicyDdosProtectionConfigDdosProtection := [ "ADVANCED", "ADVANCED_PREVIEW", "STANDARD" ]
enum_SecurityPolicyRuleDirection := [ "EGRESS", "INGRESS" ]
enum_SecurityPolicyRuleMatcherVersionedExpr := [ "FIREWALL", "SRC_IPS_V1" ]
enum_SecurityPolicyRulePreconfiguredWafConfigExclusionFieldParamsOp := [ "CONTAINS", "ENDS_WITH", "EQUALS", "EQUALS_ANY", "STARTS_WITH" ]
enum_SecurityPolicyRuleRateLimitOptionsEnforceOnKey := [ "ALL", "ALL_IPS", "HTTP_COOKIE", "HTTP_HEADER", "HTTP_PATH", "IP", "REGION_CODE", "SNI", "TLS_JA3_FINGERPRINT", "USER_IP", "XFF_IP" ]
enum_SecurityPolicyRuleRateLimitOptionsEnforceOnKeyConfigEnforceOnKeyType := [ "ALL", "ALL_IPS", "HTTP_COOKIE", "HTTP_HEADER", "HTTP_PATH", "IP", "REGION_CODE", "SNI", "TLS_JA3_FINGERPRINT", "USER_IP", "XFF_IP" ]
enum_SecurityPolicyRuleRedirectOptionsType := [ "EXTERNAL_302", "GOOGLE_RECAPTCHA" ]
enum_SecurityPolicyType := [ "CLOUD_ARMOR", "CLOUD_ARMOR_EDGE", "CLOUD_ARMOR_NETWORK", "FIREWALL" ]
enum_SecurityPolicyUserDefinedFieldBase := [ "IPV4", "IPV6", "TCP", "UDP" ]

valid {
    input.Body.adaptiveProtectionConfig.autoDeployConfig.confidenceThreshold == NUMBER
    input.Body.adaptiveProtectionConfig.autoDeployConfig.expirationSec == INTEGER
    input.Body.adaptiveProtectionConfig.autoDeployConfig.impactedBaselineThreshold == NUMBER
    input.Body.adaptiveProtectionConfig.autoDeployConfig.loadThreshold == NUMBER
    input.Body.adaptiveProtectionConfig.layer7DdosDefenseConfig.enable == BOOLEAN
    input.Body.adaptiveProtectionConfig.layer7DdosDefenseConfig.ruleVisibility == enum_SecurityPolicyAdaptiveProtectionConfigLayer7DdosDefenseConfigRuleVisibility[_]
    input.Body.adaptiveProtectionConfig.layer7DdosDefenseConfig.thresholdConfigs[_].autoDeployConfidenceThreshold == NUMBER
    input.Body.adaptiveProtectionConfig.layer7DdosDefenseConfig.thresholdConfigs[_].autoDeployExpirationSec == INTEGER
    input.Body.adaptiveProtectionConfig.layer7DdosDefenseConfig.thresholdConfigs[_].autoDeployImpactedBaselineThreshold == NUMBER
    input.Body.adaptiveProtectionConfig.layer7DdosDefenseConfig.thresholdConfigs[_].autoDeployLoadThreshold == NUMBER
    input.Body.adaptiveProtectionConfig.layer7DdosDefenseConfig.thresholdConfigs[_].detectionAbsoluteQps == NUMBER
    input.Body.adaptiveProtectionConfig.layer7DdosDefenseConfig.thresholdConfigs[_].detectionLoadThreshold == NUMBER
    input.Body.adaptiveProtectionConfig.layer7DdosDefenseConfig.thresholdConfigs[_].detectionRelativeToBaselineQps == NUMBER
    input.Body.adaptiveProtectionConfig.layer7DdosDefenseConfig.thresholdConfigs[_].name == STRING
    input.Body.adaptiveProtectionConfig.layer7DdosDefenseConfig.thresholdConfigs[_].trafficGranularityConfigs[_].enableEachUniqueValue == BOOLEAN
    input.Body.adaptiveProtectionConfig.layer7DdosDefenseConfig.thresholdConfigs[_].trafficGranularityConfigs[_].type == enum_SecurityPolicyAdaptiveProtectionConfigLayer7DdosDefenseConfigThresholdConfigTrafficGranularityConfigType[_]
    input.Body.adaptiveProtectionConfig.layer7DdosDefenseConfig.thresholdConfigs[_].trafficGranularityConfigs[_].value == STRING
    input.Body.advancedOptionsConfig.jsonCustomConfig.contentTypes[_] == STRING
    input.Body.advancedOptionsConfig.jsonParsing == enum_SecurityPolicyAdvancedOptionsConfigJsonParsing[_]
    input.Body.advancedOptionsConfig.logLevel == enum_SecurityPolicyAdvancedOptionsConfigLogLevel[_]
    input.Body.advancedOptionsConfig.userIpRequestHeaders[_] == STRING
    input.Body.associations[_].attachmentId == STRING
    input.Body.associations[_].displayName == STRING
    input.Body.associations[_].name == STRING
    input.Body.associations[_].securityPolicyId == STRING
    input.Body.creationTimestamp == STRING
    input.Body.ddosProtectionConfig.ddosProtection == enum_SecurityPolicyDdosProtectionConfigDdosProtection[_]
    input.Body.description == STRING
    input.Body.displayName == STRING
    input.Body.fingerprint == STRING
    input.Body.id == STRING
    input.Body.kind == STRING
    input.Body.labelFingerprint == STRING
    input.Body.labels.STRING == STRING
    input.Body.name == STRING
    input.Body.parent == STRING
    input.Body.recaptchaOptionsConfig.redirectSiteKey == STRING
    input.Body.region == STRING
    input.Body.ruleTupleCount == INTEGER
    input.Body.rules[_].action == STRING
    input.Body.rules[_].description == STRING
    input.Body.rules[_].direction == enum_SecurityPolicyRuleDirection[_]
    input.Body.rules[_].enableLogging == BOOLEAN
    input.Body.rules[_].headerAction.requestHeadersToAdds[_].headerName == STRING
    input.Body.rules[_].headerAction.requestHeadersToAdds[_].headerValue == STRING
    input.Body.rules[_].kind == STRING
    input.Body.rules[_].match.config.destIpRanges[_] == STRING
    input.Body.rules[_].match.config.layer4Configs[_].ipProtocol == STRING
    input.Body.rules[_].match.config.layer4Configs[_].ports[_] == STRING
    input.Body.rules[_].match.config.srcIpRanges[_] == STRING
    input.Body.rules[_].match.expr.description == STRING
    input.Body.rules[_].match.expr.expression == STRING
    input.Body.rules[_].match.expr.location == STRING
    input.Body.rules[_].match.expr.title == STRING
    input.Body.rules[_].match.exprOptions.recaptchaOptions.actionTokenSiteKeys[_] == STRING
    input.Body.rules[_].match.exprOptions.recaptchaOptions.sessionTokenSiteKeys[_] == STRING
    input.Body.rules[_].match.versionedExpr == enum_SecurityPolicyRuleMatcherVersionedExpr[_]
    input.Body.rules[_].networkMatch.destIpRanges[_] == STRING
    input.Body.rules[_].networkMatch.destPorts[_] == STRING
    input.Body.rules[_].networkMatch.ipProtocols[_] == STRING
    input.Body.rules[_].networkMatch.srcAsns[_] == INTEGER
    input.Body.rules[_].networkMatch.srcIpRanges[_] == STRING
    input.Body.rules[_].networkMatch.srcPorts[_] == STRING
    input.Body.rules[_].networkMatch.srcRegionCodes[_] == STRING
    input.Body.rules[_].networkMatch.userDefinedFields[_].name == STRING
    input.Body.rules[_].networkMatch.userDefinedFields[_].values[_] == STRING
    input.Body.rules[_].preconfiguredWafConfig.exclusions[_].requestCookiesToExclude[_].op == enum_SecurityPolicyRulePreconfiguredWafConfigExclusionFieldParamsOp[_]
    input.Body.rules[_].preconfiguredWafConfig.exclusions[_].requestCookiesToExclude[_].val == STRING
    input.Body.rules[_].preconfiguredWafConfig.exclusions[_].requestHeadersToExclude[_].op == enum_SecurityPolicyRulePreconfiguredWafConfigExclusionFieldParamsOp[_]
    input.Body.rules[_].preconfiguredWafConfig.exclusions[_].requestHeadersToExclude[_].val == STRING
    input.Body.rules[_].preconfiguredWafConfig.exclusions[_].requestQueryParamsToExclude[_].op == enum_SecurityPolicyRulePreconfiguredWafConfigExclusionFieldParamsOp[_]
    input.Body.rules[_].preconfiguredWafConfig.exclusions[_].requestQueryParamsToExclude[_].val == STRING
    input.Body.rules[_].preconfiguredWafConfig.exclusions[_].requestUrisToExclude[_].op == enum_SecurityPolicyRulePreconfiguredWafConfigExclusionFieldParamsOp[_]
    input.Body.rules[_].preconfiguredWafConfig.exclusions[_].requestUrisToExclude[_].val == STRING
    input.Body.rules[_].preconfiguredWafConfig.exclusions[_].targetRuleIds[_] == STRING
    input.Body.rules[_].preconfiguredWafConfig.exclusions[_].targetRuleSet == STRING
    input.Body.rules[_].preview == BOOLEAN
    input.Body.rules[_].priority == INTEGER
    input.Body.rules[_].rateLimitOptions.banDurationSec == INTEGER
    input.Body.rules[_].rateLimitOptions.banThreshold.count == INTEGER
    input.Body.rules[_].rateLimitOptions.banThreshold.intervalSec == INTEGER
    input.Body.rules[_].rateLimitOptions.conformAction == STRING
    input.Body.rules[_].rateLimitOptions.enforceOnKey == enum_SecurityPolicyRuleRateLimitOptionsEnforceOnKey[_]
    input.Body.rules[_].rateLimitOptions.enforceOnKeyConfigs[_].enforceOnKeyName == STRING
    input.Body.rules[_].rateLimitOptions.enforceOnKeyConfigs[_].enforceOnKeyType == enum_SecurityPolicyRuleRateLimitOptionsEnforceOnKeyConfigEnforceOnKeyType[_]
    input.Body.rules[_].rateLimitOptions.enforceOnKeyName == STRING
    input.Body.rules[_].rateLimitOptions.exceedAction == STRING
    input.Body.rules[_].rateLimitOptions.exceedRedirectOptions.target == STRING
    input.Body.rules[_].rateLimitOptions.exceedRedirectOptions.type == enum_SecurityPolicyRuleRedirectOptionsType[_]
    input.Body.rules[_].rateLimitOptions.rateLimitThreshold.count == INTEGER
    input.Body.rules[_].rateLimitOptions.rateLimitThreshold.intervalSec == INTEGER
    input.Body.rules[_].redirectOptions.target == STRING
    input.Body.rules[_].redirectOptions.type == enum_SecurityPolicyRuleRedirectOptionsType[_]
    input.Body.rules[_].ruleNumber == STRING
    input.Body.rules[_].ruleTupleCount == INTEGER
    input.Body.rules[_].targetResources[_] == STRING
    input.Body.rules[_].targetServiceAccounts[_] == STRING
    input.Body.selfLink == STRING
    input.Body.selfLinkWithId == STRING
    input.Body.type == enum_SecurityPolicyType[_]
    input.Body.userDefinedFields[_].base == enum_SecurityPolicyUserDefinedFieldBase[_]
    input.Body.userDefinedFields[_].mask == STRING
    input.Body.userDefinedFields[_].name == STRING
    input.Body.userDefinedFields[_].offset == INTEGER
    input.Body.userDefinedFields[_].size == INTEGER
    input.Qs.parentId == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
}

compute.organizationSecurityPolicies.list

valid {
    input.Qs.filter == STRING
    input.Qs.maxResults == INTEGER
    input.Qs.orderBy == STRING
    input.Qs.pageToken == STRING
    input.Qs.parentId == STRING
    input.Qs.returnPartialSuccess == BOOLEAN
    input.ProviderMetadata.Region == STRING
}

compute.organizationSecurityPolicies.listAssociations

valid {
    input.Qs.targetResource == STRING
    input.ProviderMetadata.Region == STRING
}

compute.organizationSecurityPolicies.move

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

compute.organizationSecurityPolicies.patch

enum_SecurityPolicyAdaptiveProtectionConfigLayer7DdosDefenseConfigRuleVisibility := [ "PREMIUM", "STANDARD" ]
enum_SecurityPolicyAdaptiveProtectionConfigLayer7DdosDefenseConfigThresholdConfigTrafficGranularityConfigType := [ "HTTP_HEADER_HOST", "HTTP_PATH", "UNSPECIFIED_TYPE" ]
enum_SecurityPolicyAdvancedOptionsConfigJsonParsing := [ "DISABLED", "STANDARD", "STANDARD_WITH_GRAPHQL" ]
enum_SecurityPolicyAdvancedOptionsConfigLogLevel := [ "NORMAL", "VERBOSE" ]
enum_SecurityPolicyDdosProtectionConfigDdosProtection := [ "ADVANCED", "ADVANCED_PREVIEW", "STANDARD" ]
enum_SecurityPolicyRuleDirection := [ "EGRESS", "INGRESS" ]
enum_SecurityPolicyRuleMatcherVersionedExpr := [ "FIREWALL", "SRC_IPS_V1" ]
enum_SecurityPolicyRulePreconfiguredWafConfigExclusionFieldParamsOp := [ "CONTAINS", "ENDS_WITH", "EQUALS", "EQUALS_ANY", "STARTS_WITH" ]
enum_SecurityPolicyRuleRateLimitOptionsEnforceOnKey := [ "ALL", "ALL_IPS", "HTTP_COOKIE", "HTTP_HEADER", "HTTP_PATH", "IP", "REGION_CODE", "SNI", "TLS_JA3_FINGERPRINT", "USER_IP", "XFF_IP" ]
enum_SecurityPolicyRuleRateLimitOptionsEnforceOnKeyConfigEnforceOnKeyType := [ "ALL", "ALL_IPS", "HTTP_COOKIE", "HTTP_HEADER", "HTTP_PATH", "IP", "REGION_CODE", "SNI", "TLS_JA3_FINGERPRINT", "USER_IP", "XFF_IP" ]
enum_SecurityPolicyRuleRedirectOptionsType := [ "EXTERNAL_302", "GOOGLE_RECAPTCHA" ]
enum_SecurityPolicyType := [ "CLOUD_ARMOR", "CLOUD_ARMOR_EDGE", "CLOUD_ARMOR_NETWORK", "FIREWALL" ]
enum_SecurityPolicyUserDefinedFieldBase := [ "IPV4", "IPV6", "TCP", "UDP" ]

valid {
    input.Body.adaptiveProtectionConfig.autoDeployConfig.confidenceThreshold == NUMBER
    input.Body.adaptiveProtectionConfig.autoDeployConfig.expirationSec == INTEGER
    input.Body.adaptiveProtectionConfig.autoDeployConfig.impactedBaselineThreshold == NUMBER
    input.Body.adaptiveProtectionConfig.autoDeployConfig.loadThreshold == NUMBER
    input.Body.adaptiveProtectionConfig.layer7DdosDefenseConfig.enable == BOOLEAN
    input.Body.adaptiveProtectionConfig.layer7DdosDefenseConfig.ruleVisibility == enum_SecurityPolicyAdaptiveProtectionConfigLayer7DdosDefenseConfigRuleVisibility[_]
    input.Body.adaptiveProtectionConfig.layer7DdosDefenseConfig.thresholdConfigs[_].autoDeployConfidenceThreshold == NUMBER
    input.Body.adaptiveProtectionConfig.layer7DdosDefenseConfig.thresholdConfigs[_].autoDeployExpirationSec == INTEGER
    input.Body.adaptiveProtectionConfig.layer7DdosDefenseConfig.thresholdConfigs[_].autoDeployImpactedBaselineThreshold == NUMBER
    input.Body.adaptiveProtectionConfig.layer7DdosDefenseConfig.thresholdConfigs[_].autoDeployLoadThreshold == NUMBER
    input.Body.adaptiveProtectionConfig.layer7DdosDefenseConfig.thresholdConfigs[_].detectionAbsoluteQps == NUMBER
    input.Body.adaptiveProtectionConfig.layer7DdosDefenseConfig.thresholdConfigs[_].detectionLoadThreshold == NUMBER
    input.Body.adaptiveProtectionConfig.layer7DdosDefenseConfig.thresholdConfigs[_].detectionRelativeToBaselineQps == NUMBER
    input.Body.adaptiveProtectionConfig.layer7DdosDefenseConfig.thresholdConfigs[_].name == STRING
    input.Body.adaptiveProtectionConfig.layer7DdosDefenseConfig.thresholdConfigs[_].trafficGranularityConfigs[_].enableEachUniqueValue == BOOLEAN
    input.Body.adaptiveProtectionConfig.layer7DdosDefenseConfig.thresholdConfigs[_].trafficGranularityConfigs[_].type == enum_SecurityPolicyAdaptiveProtectionConfigLayer7DdosDefenseConfigThresholdConfigTrafficGranularityConfigType[_]
    input.Body.adaptiveProtectionConfig.layer7DdosDefenseConfig.thresholdConfigs[_].trafficGranularityConfigs[_].value == STRING
    input.Body.advancedOptionsConfig.jsonCustomConfig.contentTypes[_] == STRING
    input.Body.advancedOptionsConfig.jsonParsing == enum_SecurityPolicyAdvancedOptionsConfigJsonParsing[_]
    input.Body.advancedOptionsConfig.logLevel == enum_SecurityPolicyAdvancedOptionsConfigLogLevel[_]
    input.Body.advancedOptionsConfig.userIpRequestHeaders[_] == STRING
    input.Body.associations[_].attachmentId == STRING
    input.Body.associations[_].displayName == STRING
    input.Body.associations[_].name == STRING
    input.Body.associations[_].securityPolicyId == STRING
    input.Body.creationTimestamp == STRING
    input.Body.ddosProtectionConfig.ddosProtection == enum_SecurityPolicyDdosProtectionConfigDdosProtection[_]
    input.Body.description == STRING
    input.Body.displayName == STRING
    input.Body.fingerprint == STRING
    input.Body.id == STRING
    input.Body.kind == STRING
    input.Body.labelFingerprint == STRING
    input.Body.labels.STRING == STRING
    input.Body.name == STRING
    input.Body.parent == STRING
    input.Body.recaptchaOptionsConfig.redirectSiteKey == STRING
    input.Body.region == STRING
    input.Body.ruleTupleCount == INTEGER
    input.Body.rules[_].action == STRING
    input.Body.rules[_].description == STRING
    input.Body.rules[_].direction == enum_SecurityPolicyRuleDirection[_]
    input.Body.rules[_].enableLogging == BOOLEAN
    input.Body.rules[_].headerAction.requestHeadersToAdds[_].headerName == STRING
    input.Body.rules[_].headerAction.requestHeadersToAdds[_].headerValue == STRING
    input.Body.rules[_].kind == STRING
    input.Body.rules[_].match.config.destIpRanges[_] == STRING
    input.Body.rules[_].match.config.layer4Configs[_].ipProtocol == STRING
    input.Body.rules[_].match.config.layer4Configs[_].ports[_] == STRING
    input.Body.rules[_].match.config.srcIpRanges[_] == STRING
    input.Body.rules[_].match.expr.description == STRING
    input.Body.rules[_].match.expr.expression == STRING
    input.Body.rules[_].match.expr.location == STRING
    input.Body.rules[_].match.expr.title == STRING
    input.Body.rules[_].match.exprOptions.recaptchaOptions.actionTokenSiteKeys[_] == STRING
    input.Body.rules[_].match.exprOptions.recaptchaOptions.sessionTokenSiteKeys[_] == STRING
    input.Body.rules[_].match.versionedExpr == enum_SecurityPolicyRuleMatcherVersionedExpr[_]
    input.Body.rules[_].networkMatch.destIpRanges[_] == STRING
    input.Body.rules[_].networkMatch.destPorts[_] == STRING
    input.Body.rules[_].networkMatch.ipProtocols[_] == STRING
    input.Body.rules[_].networkMatch.srcAsns[_] == INTEGER
    input.Body.rules[_].networkMatch.srcIpRanges[_] == STRING
    input.Body.rules[_].networkMatch.srcPorts[_] == STRING
    input.Body.rules[_].networkMatch.srcRegionCodes[_] == STRING
    input.Body.rules[_].networkMatch.userDefinedFields[_].name == STRING
    input.Body.rules[_].networkMatch.userDefinedFields[_].values[_] == STRING
    input.Body.rules[_].preconfiguredWafConfig.exclusions[_].requestCookiesToExclude[_].op == enum_SecurityPolicyRulePreconfiguredWafConfigExclusionFieldParamsOp[_]
    input.Body.rules[_].preconfiguredWafConfig.exclusions[_].requestCookiesToExclude[_].val == STRING
    input.Body.rules[_].preconfiguredWafConfig.exclusions[_].requestHeadersToExclude[_].op == enum_SecurityPolicyRulePreconfiguredWafConfigExclusionFieldParamsOp[_]
    input.Body.rules[_].preconfiguredWafConfig.exclusions[_].requestHeadersToExclude[_].val == STRING
    input.Body.rules[_].preconfiguredWafConfig.exclusions[_].requestQueryParamsToExclude[_].op == enum_SecurityPolicyRulePreconfiguredWafConfigExclusionFieldParamsOp[_]
    input.Body.rules[_].preconfiguredWafConfig.exclusions[_].requestQueryParamsToExclude[_].val == STRING
    input.Body.rules[_].preconfiguredWafConfig.exclusions[_].requestUrisToExclude[_].op == enum_SecurityPolicyRulePreconfiguredWafConfigExclusionFieldParamsOp[_]
    input.Body.rules[_].preconfiguredWafConfig.exclusions[_].requestUrisToExclude[_].val == STRING
    input.Body.rules[_].preconfiguredWafConfig.exclusions[_].targetRuleIds[_] == STRING
    input.Body.rules[_].preconfiguredWafConfig.exclusions[_].targetRuleSet == STRING
    input.Body.rules[_].preview == BOOLEAN
    input.Body.rules[_].priority == INTEGER
    input.Body.rules[_].rateLimitOptions.banDurationSec == INTEGER
    input.Body.rules[_].rateLimitOptions.banThreshold.count == INTEGER
    input.Body.rules[_].rateLimitOptions.banThreshold.intervalSec == INTEGER
    input.Body.rules[_].rateLimitOptions.conformAction == STRING
    input.Body.rules[_].rateLimitOptions.enforceOnKey == enum_SecurityPolicyRuleRateLimitOptionsEnforceOnKey[_]
    input.Body.rules[_].rateLimitOptions.enforceOnKeyConfigs[_].enforceOnKeyName == STRING
    input.Body.rules[_].rateLimitOptions.enforceOnKeyConfigs[_].enforceOnKeyType == enum_SecurityPolicyRuleRateLimitOptionsEnforceOnKeyConfigEnforceOnKeyType[_]
    input.Body.rules[_].rateLimitOptions.enforceOnKeyName == STRING
    input.Body.rules[_].rateLimitOptions.exceedAction == STRING
    input.Body.rules[_].rateLimitOptions.exceedRedirectOptions.target == STRING
    input.Body.rules[_].rateLimitOptions.exceedRedirectOptions.type == enum_SecurityPolicyRuleRedirectOptionsType[_]
    input.Body.rules[_].rateLimitOptions.rateLimitThreshold.count == INTEGER
    input.Body.rules[_].rateLimitOptions.rateLimitThreshold.intervalSec == INTEGER
    input.Body.rules[_].redirectOptions.target == STRING
    input.Body.rules[_].redirectOptions.type == enum_SecurityPolicyRuleRedirectOptionsType[_]
    input.Body.rules[_].ruleNumber == STRING
    input.Body.rules[_].ruleTupleCount == INTEGER
    input.Body.rules[_].targetResources[_] == STRING
    input.Body.rules[_].targetServiceAccounts[_] == STRING
    input.Body.selfLink == STRING
    input.Body.selfLinkWithId == STRING
    input.Body.type == enum_SecurityPolicyType[_]
    input.Body.userDefinedFields[_].base == enum_SecurityPolicyUserDefinedFieldBase[_]
    input.Body.userDefinedFields[_].mask == STRING
    input.Body.userDefinedFields[_].name == STRING
    input.Body.userDefinedFields[_].offset == INTEGER
    input.Body.userDefinedFields[_].size == INTEGER
    input.ReqMap.securityPolicy == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
}

compute.organizationSecurityPolicies.patchRule

enum_SecurityPolicyRuleDirection := [ "EGRESS", "INGRESS" ]
enum_SecurityPolicyRuleMatcherVersionedExpr := [ "FIREWALL", "SRC_IPS_V1" ]
enum_SecurityPolicyRulePreconfiguredWafConfigExclusionFieldParamsOp := [ "CONTAINS", "ENDS_WITH", "EQUALS", "EQUALS_ANY", "STARTS_WITH" ]
enum_SecurityPolicyRuleRateLimitOptionsEnforceOnKey := [ "ALL", "ALL_IPS", "HTTP_COOKIE", "HTTP_HEADER", "HTTP_PATH", "IP", "REGION_CODE", "SNI", "TLS_JA3_FINGERPRINT", "USER_IP", "XFF_IP" ]
enum_SecurityPolicyRuleRateLimitOptionsEnforceOnKeyConfigEnforceOnKeyType := [ "ALL", "ALL_IPS", "HTTP_COOKIE", "HTTP_HEADER", "HTTP_PATH", "IP", "REGION_CODE", "SNI", "TLS_JA3_FINGERPRINT", "USER_IP", "XFF_IP" ]
enum_SecurityPolicyRuleRedirectOptionsType := [ "EXTERNAL_302", "GOOGLE_RECAPTCHA" ]

valid {
    input.Body.action == STRING
    input.Body.description == STRING
    input.Body.direction == enum_SecurityPolicyRuleDirection[_]
    input.Body.enableLogging == BOOLEAN
    input.Body.headerAction.requestHeadersToAdds[_].headerName == STRING
    input.Body.headerAction.requestHeadersToAdds[_].headerValue == STRING
    input.Body.kind == STRING
    input.Body.match.config.destIpRanges[_] == STRING
    input.Body.match.config.layer4Configs[_].ipProtocol == STRING
    input.Body.match.config.layer4Configs[_].ports[_] == STRING
    input.Body.match.config.srcIpRanges[_] == STRING
    input.Body.match.expr.description == STRING
    input.Body.match.expr.expression == STRING
    input.Body.match.expr.location == STRING
    input.Body.match.expr.title == STRING
    input.Body.match.exprOptions.recaptchaOptions.actionTokenSiteKeys[_] == STRING
    input.Body.match.exprOptions.recaptchaOptions.sessionTokenSiteKeys[_] == STRING
    input.Body.match.versionedExpr == enum_SecurityPolicyRuleMatcherVersionedExpr[_]
    input.Body.networkMatch.destIpRanges[_] == STRING
    input.Body.networkMatch.destPorts[_] == STRING
    input.Body.networkMatch.ipProtocols[_] == STRING
    input.Body.networkMatch.srcAsns[_] == INTEGER
    input.Body.networkMatch.srcIpRanges[_] == STRING
    input.Body.networkMatch.srcPorts[_] == STRING
    input.Body.networkMatch.srcRegionCodes[_] == STRING
    input.Body.networkMatch.userDefinedFields[_].name == STRING
    input.Body.networkMatch.userDefinedFields[_].values[_] == STRING
    input.Body.preconfiguredWafConfig.exclusions[_].requestCookiesToExclude[_].op == enum_SecurityPolicyRulePreconfiguredWafConfigExclusionFieldParamsOp[_]
    input.Body.preconfiguredWafConfig.exclusions[_].requestCookiesToExclude[_].val == STRING
    input.Body.preconfiguredWafConfig.exclusions[_].requestHeadersToExclude[_].op == enum_SecurityPolicyRulePreconfiguredWafConfigExclusionFieldParamsOp[_]
    input.Body.preconfiguredWafConfig.exclusions[_].requestHeadersToExclude[_].val == STRING
    input.Body.preconfiguredWafConfig.exclusions[_].requestQueryParamsToExclude[_].op == enum_SecurityPolicyRulePreconfiguredWafConfigExclusionFieldParamsOp[_]
    input.Body.preconfiguredWafConfig.exclusions[_].requestQueryParamsToExclude[_].val == STRING
    input.Body.preconfiguredWafConfig.exclusions[_].requestUrisToExclude[_].op == enum_SecurityPolicyRulePreconfiguredWafConfigExclusionFieldParamsOp[_]
    input.Body.preconfiguredWafConfig.exclusions[_].requestUrisToExclude[_].val == STRING
    input.Body.preconfiguredWafConfig.exclusions[_].targetRuleIds[_] == STRING
    input.Body.preconfiguredWafConfig.exclusions[_].targetRuleSet == STRING
    input.Body.preview == BOOLEAN
    input.Body.priority == INTEGER
    input.Body.rateLimitOptions.banDurationSec == INTEGER
    input.Body.rateLimitOptions.banThreshold.count == INTEGER
    input.Body.rateLimitOptions.banThreshold.intervalSec == INTEGER
    input.Body.rateLimitOptions.conformAction == STRING
    input.Body.rateLimitOptions.enforceOnKey == enum_SecurityPolicyRuleRateLimitOptionsEnforceOnKey[_]
    input.Body.rateLimitOptions.enforceOnKeyConfigs[_].enforceOnKeyName == STRING
    input.Body.rateLimitOptions.enforceOnKeyConfigs[_].enforceOnKeyType == enum_SecurityPolicyRuleRateLimitOptionsEnforceOnKeyConfigEnforceOnKeyType[_]
    input.Body.rateLimitOptions.enforceOnKeyName == STRING
    input.Body.rateLimitOptions.exceedAction == STRING
    input.Body.rateLimitOptions.exceedRedirectOptions.target == STRING
    input.Body.rateLimitOptions.exceedRedirectOptions.type == enum_SecurityPolicyRuleRedirectOptionsType[_]
    input.Body.rateLimitOptions.rateLimitThreshold.count == INTEGER
    input.Body.rateLimitOptions.rateLimitThreshold.intervalSec == INTEGER
    input.Body.redirectOptions.target == STRING
    input.Body.redirectOptions.type == enum_SecurityPolicyRuleRedirectOptionsType[_]
    input.Body.ruleNumber == STRING
    input.Body.ruleTupleCount == INTEGER
    input.Body.targetResources[_] == STRING
    input.Body.targetServiceAccounts[_] == STRING
    input.ReqMap.securityPolicy == STRING
    input.Qs.priority == INTEGER
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
}

compute.organizationSecurityPolicies.removeAssociation

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

compute.organizationSecurityPolicies.removeRule

valid {
    input.ReqMap.securityPolicy == STRING
    input.Qs.priority == INTEGER
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
}

compute.packetMirrorings.aggregatedList

valid {
    input.ReqMap.ProjectID == STRING
    input.Qs.filter == STRING
    input.Qs.includeAllScopes == BOOLEAN
    input.Qs.maxResults == INTEGER
    input.Qs.orderBy == STRING
    input.Qs.pageToken == STRING
    input.Qs.returnPartialSuccess == BOOLEAN
    input.Qs.serviceProjectNumber == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.packetMirrorings.delete

valid {
    input.ReqMap.packetMirroring == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.packetMirrorings.get

valid {
    input.ReqMap.packetMirroring == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.packetMirrorings.insert

enum_PacketMirroringEnable := [ "FALSE", "TRUE" ]
enum_PacketMirroringFilterDirection := [ "BOTH", "EGRESS", "INGRESS" ]

valid {
    input.Body.collectorIlb.canonicalUrl == STRING
    input.Body.collectorIlb.url == STRING
    input.Body.creationTimestamp == STRING
    input.Body.description == STRING
    input.Body.enable == enum_PacketMirroringEnable[_]
    input.Body.filter.IPProtocols[_] == STRING
    input.Body.filter.cidrRanges[_] == STRING
    input.Body.filter.direction == enum_PacketMirroringFilterDirection[_]
    input.Body.id == STRING
    input.Body.kind == STRING
    input.Body.mirroredResources.instances[_].canonicalUrl == STRING
    input.Body.mirroredResources.instances[_].url == STRING
    input.Body.mirroredResources.subnetworks[_].canonicalUrl == STRING
    input.Body.mirroredResources.subnetworks[_].url == STRING
    input.Body.mirroredResources.tags[_] == STRING
    input.Body.name == STRING
    input.Body.network.canonicalUrl == STRING
    input.Body.network.url == STRING
    input.Body.priority == INTEGER
    input.Body.region == STRING
    input.Body.selfLink == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.packetMirrorings.list

valid {
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.Qs.filter == STRING
    input.Qs.maxResults == INTEGER
    input.Qs.orderBy == STRING
    input.Qs.pageToken == STRING
    input.Qs.returnPartialSuccess == BOOLEAN
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.packetMirrorings.patch

enum_PacketMirroringEnable := [ "FALSE", "TRUE" ]
enum_PacketMirroringFilterDirection := [ "BOTH", "EGRESS", "INGRESS" ]

valid {
    input.Body.collectorIlb.canonicalUrl == STRING
    input.Body.collectorIlb.url == STRING
    input.Body.creationTimestamp == STRING
    input.Body.description == STRING
    input.Body.enable == enum_PacketMirroringEnable[_]
    input.Body.filter.IPProtocols[_] == STRING
    input.Body.filter.cidrRanges[_] == STRING
    input.Body.filter.direction == enum_PacketMirroringFilterDirection[_]
    input.Body.id == STRING
    input.Body.kind == STRING
    input.Body.mirroredResources.instances[_].canonicalUrl == STRING
    input.Body.mirroredResources.instances[_].url == STRING
    input.Body.mirroredResources.subnetworks[_].canonicalUrl == STRING
    input.Body.mirroredResources.subnetworks[_].url == STRING
    input.Body.mirroredResources.tags[_] == STRING
    input.Body.name == STRING
    input.Body.network.canonicalUrl == STRING
    input.Body.network.url == STRING
    input.Body.priority == INTEGER
    input.Body.region == STRING
    input.Body.selfLink == STRING
    input.ReqMap.packetMirroring == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.packetMirrorings.testIamPermissions

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

compute.projects.disableXpnHost

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

compute.projects.disableXpnResource

enum_XpnResourceIdType := [ "PROJECT", "XPN_RESOURCE_TYPE_UNSPECIFIED" ]

valid {
    input.Body.xpnResource.id == STRING
    input.Body.xpnResource.type == enum_XpnResourceIdType[_]
    input.ReqMap.ProjectID == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.projects.enableXpnHost

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

compute.projects.enableXpnResource

enum_XpnResourceIdType := [ "PROJECT", "XPN_RESOURCE_TYPE_UNSPECIFIED" ]

valid {
    input.Body.xpnResource.id == STRING
    input.Body.xpnResource.type == enum_XpnResourceIdType[_]
    input.ReqMap.ProjectID == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.projects.get

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

compute.projects.getXpnHost

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

compute.projects.getXpnResources

valid {
    input.ReqMap.ProjectID == STRING
    input.Qs.filter == STRING
    input.Qs.maxResults == INTEGER
    input.Qs.orderBy == STRING
    input.Qs.pageToken == STRING
    input.Qs.returnPartialSuccess == BOOLEAN
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.projects.listXpnHosts

valid {
    input.Body.organization == STRING
    input.ReqMap.ProjectID == STRING
    input.Qs.filter == STRING
    input.Qs.maxResults == INTEGER
    input.Qs.orderBy == STRING
    input.Qs.pageToken == STRING
    input.Qs.returnPartialSuccess == BOOLEAN
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.projects.moveDisk

valid {
    input.Body.destinationZone == STRING
    input.Body.targetDisk == STRING
    input.ReqMap.ProjectID == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.projects.moveInstance

valid {
    input.Body.destinationZone == STRING
    input.Body.targetInstance == STRING
    input.ReqMap.ProjectID == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.projects.setCloudArmorTier

enum_ProjectsSetCloudArmorTierRequestCloudArmorTier := [ "CA_ENTERPRISE_ANNUAL", "CA_ENTERPRISE_PAYGO", "CA_STANDARD" ]

valid {
    input.Body.cloudArmorTier == enum_ProjectsSetCloudArmorTierRequestCloudArmorTier[_]
    input.ReqMap.ProjectID == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.projects.setCommonInstanceMetadata

valid {
    input.Body.fingerprint == STRING
    input.Body.items[_].key == STRING
    input.Body.items[_].value == STRING
    input.Body.kind == STRING
    input.ReqMap.ProjectID == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.projects.setDefaultNetworkTier

enum_ProjectsSetDefaultNetworkTierRequestNetworkTier := [ "FIXED_STANDARD", "PREMIUM", "STANDARD", "STANDARD_OVERRIDES_FIXED_STANDARD" ]

valid {
    input.Body.networkTier == enum_ProjectsSetDefaultNetworkTierRequestNetworkTier[_]
    input.ReqMap.ProjectID == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.projects.setDefaultServiceAccount

valid {
    input.Body.email == STRING
    input.ReqMap.ProjectID == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.projects.setManagedProtectionTier

enum_ProjectsSetManagedProtectionTierRequestManagedProtectionTier := [ "CAMP_PLUS_ANNUAL", "CAMP_PLUS_PAYGO", "CA_STANDARD" ]

valid {
    input.Body.managedProtectionTier == enum_ProjectsSetManagedProtectionTierRequestManagedProtectionTier[_]
    input.ReqMap.ProjectID == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.projects.setUsageExportBucket

valid {
    input.Body.bucketName == STRING
    input.Body.reportNamePrefix == STRING
    input.ReqMap.ProjectID == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.publicAdvertisedPrefixes.announce

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

compute.publicAdvertisedPrefixes.delete

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

compute.publicAdvertisedPrefixes.get

valid {
    input.ReqMap.ProjectID == STRING
    input.ReqMap.publicAdvertisedPrefix == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.publicAdvertisedPrefixes.insert

enum_PublicAdvertisedPrefixByoipApiVersion := [ "V1", "V2" ]
enum_PublicAdvertisedPrefixPdpScope := [ "GLOBAL", "GLOBAL_AND_REGIONAL", "REGIONAL" ]
enum_PublicAdvertisedPrefixStatus := [ "ANNOUNCED_TO_INTERNET", "INITIAL", "PREFIX_CONFIGURATION_COMPLETE", "PREFIX_CONFIGURATION_IN_PROGRESS", "PREFIX_REMOVAL_IN_PROGRESS", "PTR_CONFIGURED", "READY_TO_ANNOUNCE", "REVERSE_DNS_LOOKUP_FAILED", "VALIDATED" ]

valid {
    input.Body.byoipApiVersion == enum_PublicAdvertisedPrefixByoipApiVersion[_]
    input.Body.creationTimestamp == STRING
    input.Body.description == STRING
    input.Body.dnsVerificationIp == STRING
    input.Body.fingerprint == STRING
    input.Body.id == STRING
    input.Body.ipCidrRange == STRING
    input.Body.kind == STRING
    input.Body.name == STRING
    input.Body.pdpScope == enum_PublicAdvertisedPrefixPdpScope[_]
    input.Body.publicDelegatedPrefixs[_].ipRange == STRING
    input.Body.publicDelegatedPrefixs[_].name == STRING
    input.Body.publicDelegatedPrefixs[_].project == STRING
    input.Body.publicDelegatedPrefixs[_].region == STRING
    input.Body.publicDelegatedPrefixs[_].status == STRING
    input.Body.selfLink == STRING
    input.Body.sharedSecret == STRING
    input.Body.status == enum_PublicAdvertisedPrefixStatus[_]
    input.ReqMap.ProjectID == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.publicAdvertisedPrefixes.list

valid {
    input.ReqMap.ProjectID == STRING
    input.Qs.filter == STRING
    input.Qs.maxResults == INTEGER
    input.Qs.orderBy == STRING
    input.Qs.pageToken == STRING
    input.Qs.returnPartialSuccess == BOOLEAN
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.publicAdvertisedPrefixes.patch

enum_PublicAdvertisedPrefixByoipApiVersion := [ "V1", "V2" ]
enum_PublicAdvertisedPrefixPdpScope := [ "GLOBAL", "GLOBAL_AND_REGIONAL", "REGIONAL" ]
enum_PublicAdvertisedPrefixStatus := [ "ANNOUNCED_TO_INTERNET", "INITIAL", "PREFIX_CONFIGURATION_COMPLETE", "PREFIX_CONFIGURATION_IN_PROGRESS", "PREFIX_REMOVAL_IN_PROGRESS", "PTR_CONFIGURED", "READY_TO_ANNOUNCE", "REVERSE_DNS_LOOKUP_FAILED", "VALIDATED" ]

valid {
    input.Body.byoipApiVersion == enum_PublicAdvertisedPrefixByoipApiVersion[_]
    input.Body.creationTimestamp == STRING
    input.Body.description == STRING
    input.Body.dnsVerificationIp == STRING
    input.Body.fingerprint == STRING
    input.Body.id == STRING
    input.Body.ipCidrRange == STRING
    input.Body.kind == STRING
    input.Body.name == STRING
    input.Body.pdpScope == enum_PublicAdvertisedPrefixPdpScope[_]
    input.Body.publicDelegatedPrefixs[_].ipRange == STRING
    input.Body.publicDelegatedPrefixs[_].name == STRING
    input.Body.publicDelegatedPrefixs[_].project == STRING
    input.Body.publicDelegatedPrefixs[_].region == STRING
    input.Body.publicDelegatedPrefixs[_].status == STRING
    input.Body.selfLink == STRING
    input.Body.sharedSecret == STRING
    input.Body.status == enum_PublicAdvertisedPrefixStatus[_]
    input.ReqMap.ProjectID == STRING
    input.ReqMap.publicAdvertisedPrefix == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.publicAdvertisedPrefixes.withdraw

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

compute.publicDelegatedPrefixes.aggregatedList

valid {
    input.ReqMap.ProjectID == STRING
    input.Qs.filter == STRING
    input.Qs.includeAllScopes == BOOLEAN
    input.Qs.maxResults == INTEGER
    input.Qs.orderBy == STRING
    input.Qs.pageToken == STRING
    input.Qs.returnPartialSuccess == BOOLEAN
    input.Qs.serviceProjectNumber == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.publicDelegatedPrefixes.announce

valid {
    input.ReqMap.ProjectID == STRING
    input.ReqMap.publicDelegatedPrefix == STRING
    input.ReqMap.region == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.publicDelegatedPrefixes.delete

valid {
    input.ReqMap.ProjectID == STRING
    input.ReqMap.publicDelegatedPrefix == STRING
    input.ReqMap.region == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.publicDelegatedPrefixes.get

valid {
    input.ReqMap.ProjectID == STRING
    input.ReqMap.publicDelegatedPrefix == STRING
    input.ReqMap.region == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.publicDelegatedPrefixes.insert

enum_PublicDelegatedPrefixByoipApiVersion := [ "V1", "V2" ]
enum_PublicDelegatedPrefixPublicDelegatedSubPrefixStatus := [ "ACTIVE", "INACTIVE" ]
enum_PublicDelegatedPrefixStatus := [ "ANNOUNCED", "ANNOUNCED_TO_GOOGLE", "ANNOUNCED_TO_INTERNET", "DELETING", "INITIALIZING", "READY_TO_ANNOUNCE" ]

valid {
    input.Body.byoipApiVersion == enum_PublicDelegatedPrefixByoipApiVersion[_]
    input.Body.creationTimestamp == STRING
    input.Body.description == STRING
    input.Body.fingerprint == STRING
    input.Body.id == STRING
    input.Body.ipCidrRange == STRING
    input.Body.isLiveMigration == BOOLEAN
    input.Body.kind == STRING
    input.Body.name == STRING
    input.Body.parentPrefix == STRING
    input.Body.publicDelegatedSubPrefixs[_].delegateeProject == STRING
    input.Body.publicDelegatedSubPrefixs[_].description == STRING
    input.Body.publicDelegatedSubPrefixs[_].ipCidrRange == STRING
    input.Body.publicDelegatedSubPrefixs[_].isAddress == BOOLEAN
    input.Body.publicDelegatedSubPrefixs[_].name == STRING
    input.Body.publicDelegatedSubPrefixs[_].region == STRING
    input.Body.publicDelegatedSubPrefixs[_].status == enum_PublicDelegatedPrefixPublicDelegatedSubPrefixStatus[_]
    input.Body.region == STRING
    input.Body.selfLink == STRING
    input.Body.status == enum_PublicDelegatedPrefixStatus[_]
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.publicDelegatedPrefixes.list

valid {
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.Qs.filter == STRING
    input.Qs.maxResults == INTEGER
    input.Qs.orderBy == STRING
    input.Qs.pageToken == STRING
    input.Qs.returnPartialSuccess == BOOLEAN
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.publicDelegatedPrefixes.patch

enum_PublicDelegatedPrefixByoipApiVersion := [ "V1", "V2" ]
enum_PublicDelegatedPrefixPublicDelegatedSubPrefixStatus := [ "ACTIVE", "INACTIVE" ]
enum_PublicDelegatedPrefixStatus := [ "ANNOUNCED", "ANNOUNCED_TO_GOOGLE", "ANNOUNCED_TO_INTERNET", "DELETING", "INITIALIZING", "READY_TO_ANNOUNCE" ]

valid {
    input.Body.byoipApiVersion == enum_PublicDelegatedPrefixByoipApiVersion[_]
    input.Body.creationTimestamp == STRING
    input.Body.description == STRING
    input.Body.fingerprint == STRING
    input.Body.id == STRING
    input.Body.ipCidrRange == STRING
    input.Body.isLiveMigration == BOOLEAN
    input.Body.kind == STRING
    input.Body.name == STRING
    input.Body.parentPrefix == STRING
    input.Body.publicDelegatedSubPrefixs[_].delegateeProject == STRING
    input.Body.publicDelegatedSubPrefixs[_].description == STRING
    input.Body.publicDelegatedSubPrefixs[_].ipCidrRange == STRING
    input.Body.publicDelegatedSubPrefixs[_].isAddress == BOOLEAN
    input.Body.publicDelegatedSubPrefixs[_].name == STRING
    input.Body.publicDelegatedSubPrefixs[_].region == STRING
    input.Body.publicDelegatedSubPrefixs[_].status == enum_PublicDelegatedPrefixPublicDelegatedSubPrefixStatus[_]
    input.Body.region == STRING
    input.Body.selfLink == STRING
    input.Body.status == enum_PublicDelegatedPrefixStatus[_]
    input.ReqMap.ProjectID == STRING
    input.ReqMap.publicDelegatedPrefix == STRING
    input.ReqMap.region == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.publicDelegatedPrefixes.withdraw

valid {
    input.ReqMap.ProjectID == STRING
    input.ReqMap.publicDelegatedPrefix == STRING
    input.ReqMap.region == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.regionAutoscalers.delete

valid {
    input.ReqMap.autoscaler == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.regionAutoscalers.get

valid {
    input.ReqMap.autoscaler == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.regionAutoscalers.insert

enum_AutoscalerStatus := [ "ACTIVE", "DELETING", "ERROR", "PENDING" ]
enum_AutoscalerStatusDetailsType := [ "ALL_INSTANCES_UNHEALTHY", "BACKEND_SERVICE_DOES_NOT_EXIST", "CAPPED_AT_MAX_NUM_REPLICAS", "CUSTOM_METRIC_DATA_POINTS_TOO_SPARSE", "CUSTOM_METRIC_INVALID", "MIN_EQUALS_MAX", "MISSING_CUSTOM_METRIC_DATA_POINTS", "MISSING_LOAD_BALANCING_DATA_POINTS", "MODE_OFF", "MODE_ONLY_SCALE_OUT", "MODE_ONLY_UP", "MORE_THAN_ONE_BACKEND_SERVICE", "NOT_ENOUGH_QUOTA_AVAILABLE", "REGION_RESOURCE_STOCKOUT", "SCALING_TARGET_DOES_NOT_EXIST", "SCHEDULED_INSTANCES_GREATER_THAN_AUTOSCALER_MAX", "SCHEDULED_INSTANCES_LESS_THAN_AUTOSCALER_MIN", "UNKNOWN", "UNSUPPORTED_MAX_RATE_LOAD_BALANCING_CONFIGURATION", "ZONE_RESOURCE_STOCKOUT" ]
enum_AutoscalingPolicyCpuUtilizationPredictiveMethod := [ "NONE", "OPTIMIZE_AVAILABILITY" ]
enum_AutoscalingPolicyCustomMetricUtilizationUtilizationTargetType := [ "DELTA_PER_MINUTE", "DELTA_PER_SECOND", "GAUGE" ]
enum_AutoscalingPolicyMode := [ "OFF", "ON", "ONLY_SCALE_OUT", "ONLY_UP" ]
enum_ScalingScheduleStatusState := [ "ACTIVE", "DISABLED", "OBSOLETE", "READY" ]

valid {
    input.Body.autoscalingPolicy.coolDownPeriodSec == INTEGER
    input.Body.autoscalingPolicy.cpuUtilization.predictiveMethod == enum_AutoscalingPolicyCpuUtilizationPredictiveMethod[_]
    input.Body.autoscalingPolicy.cpuUtilization.utilizationTarget == NUMBER
    input.Body.autoscalingPolicy.customMetricUtilizations[_].filter == STRING
    input.Body.autoscalingPolicy.customMetricUtilizations[_].metric == STRING
    input.Body.autoscalingPolicy.customMetricUtilizations[_].singleInstanceAssignment == NUMBER
    input.Body.autoscalingPolicy.customMetricUtilizations[_].utilizationTarget == NUMBER
    input.Body.autoscalingPolicy.customMetricUtilizations[_].utilizationTargetType == enum_AutoscalingPolicyCustomMetricUtilizationUtilizationTargetType[_]
    input.Body.autoscalingPolicy.loadBalancingUtilization.utilizationTarget == NUMBER
    input.Body.autoscalingPolicy.maxNumReplicas == INTEGER
    input.Body.autoscalingPolicy.minNumReplicas == INTEGER
    input.Body.autoscalingPolicy.mode == enum_AutoscalingPolicyMode[_]
    input.Body.autoscalingPolicy.scaleInControl.maxScaledInReplicas.calculated == INTEGER
    input.Body.autoscalingPolicy.scaleInControl.maxScaledInReplicas.fixed == INTEGER
    input.Body.autoscalingPolicy.scaleInControl.maxScaledInReplicas.percent == INTEGER
    input.Body.autoscalingPolicy.scaleInControl.timeWindowSec == INTEGER
    input.Body.autoscalingPolicy.scalingSchedules.STRING.description == STRING
    input.Body.autoscalingPolicy.scalingSchedules.STRING.disabled == BOOLEAN
    input.Body.autoscalingPolicy.scalingSchedules.STRING.durationSec == INTEGER
    input.Body.autoscalingPolicy.scalingSchedules.STRING.minRequiredReplicas == INTEGER
    input.Body.autoscalingPolicy.scalingSchedules.STRING.schedule == STRING
    input.Body.autoscalingPolicy.scalingSchedules.STRING.timeZone == STRING
    input.Body.creationTimestamp == STRING
    input.Body.description == STRING
    input.Body.id == STRING
    input.Body.kind == STRING
    input.Body.name == STRING
    input.Body.recommendedSize == INTEGER
    input.Body.region == STRING
    input.Body.scalingScheduleStatus.STRING.lastStartTime == STRING
    input.Body.scalingScheduleStatus.STRING.nextStartTime == STRING
    input.Body.scalingScheduleStatus.STRING.state == enum_ScalingScheduleStatusState[_]
    input.Body.selfLink == STRING
    input.Body.status == enum_AutoscalerStatus[_]
    input.Body.statusDetails[_].message == STRING
    input.Body.statusDetails[_].type == enum_AutoscalerStatusDetailsType[_]
    input.Body.target == STRING
    input.Body.zone == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.regionAutoscalers.list

valid {
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.Qs.filter == STRING
    input.Qs.maxResults == INTEGER
    input.Qs.orderBy == STRING
    input.Qs.pageToken == STRING
    input.Qs.returnPartialSuccess == BOOLEAN
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.regionAutoscalers.patch

enum_AutoscalerStatus := [ "ACTIVE", "DELETING", "ERROR", "PENDING" ]
enum_AutoscalerStatusDetailsType := [ "ALL_INSTANCES_UNHEALTHY", "BACKEND_SERVICE_DOES_NOT_EXIST", "CAPPED_AT_MAX_NUM_REPLICAS", "CUSTOM_METRIC_DATA_POINTS_TOO_SPARSE", "CUSTOM_METRIC_INVALID", "MIN_EQUALS_MAX", "MISSING_CUSTOM_METRIC_DATA_POINTS", "MISSING_LOAD_BALANCING_DATA_POINTS", "MODE_OFF", "MODE_ONLY_SCALE_OUT", "MODE_ONLY_UP", "MORE_THAN_ONE_BACKEND_SERVICE", "NOT_ENOUGH_QUOTA_AVAILABLE", "REGION_RESOURCE_STOCKOUT", "SCALING_TARGET_DOES_NOT_EXIST", "SCHEDULED_INSTANCES_GREATER_THAN_AUTOSCALER_MAX", "SCHEDULED_INSTANCES_LESS_THAN_AUTOSCALER_MIN", "UNKNOWN", "UNSUPPORTED_MAX_RATE_LOAD_BALANCING_CONFIGURATION", "ZONE_RESOURCE_STOCKOUT" ]
enum_AutoscalingPolicyCpuUtilizationPredictiveMethod := [ "NONE", "OPTIMIZE_AVAILABILITY" ]
enum_AutoscalingPolicyCustomMetricUtilizationUtilizationTargetType := [ "DELTA_PER_MINUTE", "DELTA_PER_SECOND", "GAUGE" ]
enum_AutoscalingPolicyMode := [ "OFF", "ON", "ONLY_SCALE_OUT", "ONLY_UP" ]
enum_ScalingScheduleStatusState := [ "ACTIVE", "DISABLED", "OBSOLETE", "READY" ]

valid {
    input.Body.autoscalingPolicy.coolDownPeriodSec == INTEGER
    input.Body.autoscalingPolicy.cpuUtilization.predictiveMethod == enum_AutoscalingPolicyCpuUtilizationPredictiveMethod[_]
    input.Body.autoscalingPolicy.cpuUtilization.utilizationTarget == NUMBER
    input.Body.autoscalingPolicy.customMetricUtilizations[_].filter == STRING
    input.Body.autoscalingPolicy.customMetricUtilizations[_].metric == STRING
    input.Body.autoscalingPolicy.customMetricUtilizations[_].singleInstanceAssignment == NUMBER
    input.Body.autoscalingPolicy.customMetricUtilizations[_].utilizationTarget == NUMBER
    input.Body.autoscalingPolicy.customMetricUtilizations[_].utilizationTargetType == enum_AutoscalingPolicyCustomMetricUtilizationUtilizationTargetType[_]
    input.Body.autoscalingPolicy.loadBalancingUtilization.utilizationTarget == NUMBER
    input.Body.autoscalingPolicy.maxNumReplicas == INTEGER
    input.Body.autoscalingPolicy.minNumReplicas == INTEGER
    input.Body.autoscalingPolicy.mode == enum_AutoscalingPolicyMode[_]
    input.Body.autoscalingPolicy.scaleInControl.maxScaledInReplicas.calculated == INTEGER
    input.Body.autoscalingPolicy.scaleInControl.maxScaledInReplicas.fixed == INTEGER
    input.Body.autoscalingPolicy.scaleInControl.maxScaledInReplicas.percent == INTEGER
    input.Body.autoscalingPolicy.scaleInControl.timeWindowSec == INTEGER
    input.Body.autoscalingPolicy.scalingSchedules.STRING.description == STRING
    input.Body.autoscalingPolicy.scalingSchedules.STRING.disabled == BOOLEAN
    input.Body.autoscalingPolicy.scalingSchedules.STRING.durationSec == INTEGER
    input.Body.autoscalingPolicy.scalingSchedules.STRING.minRequiredReplicas == INTEGER
    input.Body.autoscalingPolicy.scalingSchedules.STRING.schedule == STRING
    input.Body.autoscalingPolicy.scalingSchedules.STRING.timeZone == STRING
    input.Body.creationTimestamp == STRING
    input.Body.description == STRING
    input.Body.id == STRING
    input.Body.kind == STRING
    input.Body.name == STRING
    input.Body.recommendedSize == INTEGER
    input.Body.region == STRING
    input.Body.scalingScheduleStatus.STRING.lastStartTime == STRING
    input.Body.scalingScheduleStatus.STRING.nextStartTime == STRING
    input.Body.scalingScheduleStatus.STRING.state == enum_ScalingScheduleStatusState[_]
    input.Body.selfLink == STRING
    input.Body.status == enum_AutoscalerStatus[_]
    input.Body.statusDetails[_].message == STRING
    input.Body.statusDetails[_].type == enum_AutoscalerStatusDetailsType[_]
    input.Body.target == STRING
    input.Body.zone == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.Qs.autoscaler == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.regionAutoscalers.testIamPermissions

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

compute.regionAutoscalers.update

enum_AutoscalerStatus := [ "ACTIVE", "DELETING", "ERROR", "PENDING" ]
enum_AutoscalerStatusDetailsType := [ "ALL_INSTANCES_UNHEALTHY", "BACKEND_SERVICE_DOES_NOT_EXIST", "CAPPED_AT_MAX_NUM_REPLICAS", "CUSTOM_METRIC_DATA_POINTS_TOO_SPARSE", "CUSTOM_METRIC_INVALID", "MIN_EQUALS_MAX", "MISSING_CUSTOM_METRIC_DATA_POINTS", "MISSING_LOAD_BALANCING_DATA_POINTS", "MODE_OFF", "MODE_ONLY_SCALE_OUT", "MODE_ONLY_UP", "MORE_THAN_ONE_BACKEND_SERVICE", "NOT_ENOUGH_QUOTA_AVAILABLE", "REGION_RESOURCE_STOCKOUT", "SCALING_TARGET_DOES_NOT_EXIST", "SCHEDULED_INSTANCES_GREATER_THAN_AUTOSCALER_MAX", "SCHEDULED_INSTANCES_LESS_THAN_AUTOSCALER_MIN", "UNKNOWN", "UNSUPPORTED_MAX_RATE_LOAD_BALANCING_CONFIGURATION", "ZONE_RESOURCE_STOCKOUT" ]
enum_AutoscalingPolicyCpuUtilizationPredictiveMethod := [ "NONE", "OPTIMIZE_AVAILABILITY" ]
enum_AutoscalingPolicyCustomMetricUtilizationUtilizationTargetType := [ "DELTA_PER_MINUTE", "DELTA_PER_SECOND", "GAUGE" ]
enum_AutoscalingPolicyMode := [ "OFF", "ON", "ONLY_SCALE_OUT", "ONLY_UP" ]
enum_ScalingScheduleStatusState := [ "ACTIVE", "DISABLED", "OBSOLETE", "READY" ]

valid {
    input.Body.autoscalingPolicy.coolDownPeriodSec == INTEGER
    input.Body.autoscalingPolicy.cpuUtilization.predictiveMethod == enum_AutoscalingPolicyCpuUtilizationPredictiveMethod[_]
    input.Body.autoscalingPolicy.cpuUtilization.utilizationTarget == NUMBER
    input.Body.autoscalingPolicy.customMetricUtilizations[_].filter == STRING
    input.Body.autoscalingPolicy.customMetricUtilizations[_].metric == STRING
    input.Body.autoscalingPolicy.customMetricUtilizations[_].singleInstanceAssignment == NUMBER
    input.Body.autoscalingPolicy.customMetricUtilizations[_].utilizationTarget == NUMBER
    input.Body.autoscalingPolicy.customMetricUtilizations[_].utilizationTargetType == enum_AutoscalingPolicyCustomMetricUtilizationUtilizationTargetType[_]
    input.Body.autoscalingPolicy.loadBalancingUtilization.utilizationTarget == NUMBER
    input.Body.autoscalingPolicy.maxNumReplicas == INTEGER
    input.Body.autoscalingPolicy.minNumReplicas == INTEGER
    input.Body.autoscalingPolicy.mode == enum_AutoscalingPolicyMode[_]
    input.Body.autoscalingPolicy.scaleInControl.maxScaledInReplicas.calculated == INTEGER
    input.Body.autoscalingPolicy.scaleInControl.maxScaledInReplicas.fixed == INTEGER
    input.Body.autoscalingPolicy.scaleInControl.maxScaledInReplicas.percent == INTEGER
    input.Body.autoscalingPolicy.scaleInControl.timeWindowSec == INTEGER
    input.Body.autoscalingPolicy.scalingSchedules.STRING.description == STRING
    input.Body.autoscalingPolicy.scalingSchedules.STRING.disabled == BOOLEAN
    input.Body.autoscalingPolicy.scalingSchedules.STRING.durationSec == INTEGER
    input.Body.autoscalingPolicy.scalingSchedules.STRING.minRequiredReplicas == INTEGER
    input.Body.autoscalingPolicy.scalingSchedules.STRING.schedule == STRING
    input.Body.autoscalingPolicy.scalingSchedules.STRING.timeZone == STRING
    input.Body.creationTimestamp == STRING
    input.Body.description == STRING
    input.Body.id == STRING
    input.Body.kind == STRING
    input.Body.name == STRING
    input.Body.recommendedSize == INTEGER
    input.Body.region == STRING
    input.Body.scalingScheduleStatus.STRING.lastStartTime == STRING
    input.Body.scalingScheduleStatus.STRING.nextStartTime == STRING
    input.Body.scalingScheduleStatus.STRING.state == enum_ScalingScheduleStatusState[_]
    input.Body.selfLink == STRING
    input.Body.status == enum_AutoscalerStatus[_]
    input.Body.statusDetails[_].message == STRING
    input.Body.statusDetails[_].type == enum_AutoscalerStatusDetailsType[_]
    input.Body.target == STRING
    input.Body.zone == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.Qs.autoscaler == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.regionBackendServices.delete

valid {
    input.ReqMap.backendService == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.regionBackendServices.get

valid {
    input.ReqMap.backendService == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.regionBackendServices.getHealth

valid {
    input.Body.group == STRING
    input.ReqMap.backendService == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.regionBackendServices.getIamPolicy

valid {
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.ReqMap.resource == STRING
    input.Qs.optionsRequestedPolicyVersion == INTEGER
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.regionBackendServices.insert

enum_BackendBalancingMode := [ "CONNECTION", "RATE", "UTILIZATION" ]
enum_BackendPreference := [ "DEFAULT", "PREFERENCE_UNSPECIFIED", "PREFERRED" ]
enum_BackendServiceCdnPolicyCacheMode := [ "CACHE_ALL_STATIC", "FORCE_CACHE_ALL", "INVALID_CACHE_MODE", "USE_ORIGIN_HEADERS" ]
enum_BackendServiceCompressionMode := [ "AUTOMATIC", "DISABLED" ]
enum_BackendServiceConnectionTrackingPolicyConnectionPersistenceOnUnhealthyBackends := [ "ALWAYS_PERSIST", "DEFAULT_FOR_PROTOCOL", "NEVER_PERSIST" ]
enum_BackendServiceConnectionTrackingPolicyTrackingMode := [ "INVALID_TRACKING_MODE", "PER_CONNECTION", "PER_SESSION" ]
enum_BackendServiceLoadBalancingScheme := [ "EXTERNAL", "EXTERNAL_MANAGED", "INTERNAL", "INTERNAL_MANAGED", "INTERNAL_SELF_MANAGED", "INVALID_LOAD_BALANCING_SCHEME" ]
enum_BackendServiceLocalityLbPolicy := [ "INVALID_LB_POLICY", "LEAST_REQUEST", "MAGLEV", "ORIGINAL_DESTINATION", "RANDOM", "RING_HASH", "ROUND_ROBIN", "WEIGHTED_MAGLEV" ]
enum_BackendServiceLocalityLoadBalancingPolicyConfigPolicyName := [ "INVALID_LB_POLICY", "LEAST_REQUEST", "MAGLEV", "ORIGINAL_DESTINATION", "RANDOM", "RING_HASH", "ROUND_ROBIN", "WEIGHTED_MAGLEV" ]
enum_BackendServiceLogConfigOptionalMode := [ "CUSTOM", "EXCLUDE_ALL_OPTIONAL", "INCLUDE_ALL_OPTIONAL" ]
enum_BackendServiceProtocol := [ "GRPC", "HTTP", "HTTP2", "HTTPS", "SSL", "TCP", "UDP", "UNSPECIFIED" ]
enum_BackendServiceSessionAffinity := [ "CLIENT_IP", "CLIENT_IP_NO_DESTINATION", "CLIENT_IP_PORT_PROTO", "CLIENT_IP_PROTO", "GENERATED_COOKIE", "HEADER_FIELD", "HTTP_COOKIE", "NONE" ]
enum_SubsettingPolicy := [ "CONSISTENT_HASH_SUBSETTING", "NONE" ]

valid {
    input.Body.affinityCookieTtlSec == INTEGER
    input.Body.backends[_].balancingMode == enum_BackendBalancingMode[_]
    input.Body.backends[_].capacityScaler == NUMBER
    input.Body.backends[_].description == STRING
    input.Body.backends[_].failover == BOOLEAN
    input.Body.backends[_].group == STRING
    input.Body.backends[_].maxConnections == INTEGER
    input.Body.backends[_].maxConnectionsPerEndpoint == INTEGER
    input.Body.backends[_].maxConnectionsPerInstance == INTEGER
    input.Body.backends[_].maxRate == INTEGER
    input.Body.backends[_].maxRatePerEndpoint == NUMBER
    input.Body.backends[_].maxRatePerInstance == NUMBER
    input.Body.backends[_].maxUtilization == NUMBER
    input.Body.backends[_].preference == enum_BackendPreference[_]
    input.Body.cdnPolicy.bypassCacheOnRequestHeaders[_].headerName == STRING
    input.Body.cdnPolicy.cacheKeyPolicy.includeHost == BOOLEAN
    input.Body.cdnPolicy.cacheKeyPolicy.includeHttpHeaders[_] == STRING
    input.Body.cdnPolicy.cacheKeyPolicy.includeNamedCookies[_] == STRING
    input.Body.cdnPolicy.cacheKeyPolicy.includeProtocol == BOOLEAN
    input.Body.cdnPolicy.cacheKeyPolicy.includeQueryString == BOOLEAN
    input.Body.cdnPolicy.cacheKeyPolicy.queryStringBlacklist[_] == STRING
    input.Body.cdnPolicy.cacheKeyPolicy.queryStringWhitelist[_] == STRING
    input.Body.cdnPolicy.cacheMode == enum_BackendServiceCdnPolicyCacheMode[_]
    input.Body.cdnPolicy.clientTtl == INTEGER
    input.Body.cdnPolicy.defaultTtl == INTEGER
    input.Body.cdnPolicy.maxTtl == INTEGER
    input.Body.cdnPolicy.negativeCaching == BOOLEAN
    input.Body.cdnPolicy.negativeCachingPolicy[_].code == INTEGER
    input.Body.cdnPolicy.negativeCachingPolicy[_].ttl == INTEGER
    input.Body.cdnPolicy.requestCoalescing == BOOLEAN
    input.Body.cdnPolicy.serveWhileStale == INTEGER
    input.Body.cdnPolicy.signedUrlCacheMaxAgeSec == STRING
    input.Body.cdnPolicy.signedUrlKeyNames[_] == STRING
    input.Body.circuitBreakers.maxConnections == INTEGER
    input.Body.circuitBreakers.maxPendingRequests == INTEGER
    input.Body.circuitBreakers.maxRequests == INTEGER
    input.Body.circuitBreakers.maxRequestsPerConnection == INTEGER
    input.Body.circuitBreakers.maxRetries == INTEGER
    input.Body.compressionMode == enum_BackendServiceCompressionMode[_]
    input.Body.connectionDraining.drainingTimeoutSec == INTEGER
    input.Body.connectionTrackingPolicy.connectionPersistenceOnUnhealthyBackends == enum_BackendServiceConnectionTrackingPolicyConnectionPersistenceOnUnhealthyBackends[_]
    input.Body.connectionTrackingPolicy.enableStrongAffinity == BOOLEAN
    input.Body.connectionTrackingPolicy.idleTimeoutSec == INTEGER
    input.Body.connectionTrackingPolicy.trackingMode == enum_BackendServiceConnectionTrackingPolicyTrackingMode[_]
    input.Body.consistentHash.httpCookie.name == STRING
    input.Body.consistentHash.httpCookie.path == STRING
    input.Body.consistentHash.httpCookie.ttl.nanos == INTEGER
    input.Body.consistentHash.httpCookie.ttl.seconds == STRING
    input.Body.consistentHash.httpHeaderName == STRING
    input.Body.consistentHash.minimumRingSize == STRING
    input.Body.creationTimestamp == STRING
    input.Body.customRequestHeaders[_] == STRING
    input.Body.customResponseHeaders[_] == STRING
    input.Body.description == STRING
    input.Body.edgeSecurityPolicy == STRING
    input.Body.enableCDN == BOOLEAN
    input.Body.failoverPolicy.disableConnectionDrainOnFailover == BOOLEAN
    input.Body.failoverPolicy.dropTrafficIfUnhealthy == BOOLEAN
    input.Body.failoverPolicy.failoverRatio == NUMBER
    input.Body.fingerprint == STRING
    input.Body.healthChecks[_] == STRING
    input.Body.iap.enabled == BOOLEAN
    input.Body.iap.oauth2ClientId == STRING
    input.Body.iap.oauth2ClientSecret == STRING
    input.Body.iap.oauth2ClientSecretSha256 == STRING
    input.Body.id == STRING
    input.Body.kind == STRING
    input.Body.loadBalancingScheme == enum_BackendServiceLoadBalancingScheme[_]
    input.Body.localityLbPolicies[_].customPolicy.data == STRING
    input.Body.localityLbPolicies[_].customPolicy.name == STRING
    input.Body.localityLbPolicies[_].policy.name == enum_BackendServiceLocalityLoadBalancingPolicyConfigPolicyName[_]
    input.Body.localityLbPolicy == enum_BackendServiceLocalityLbPolicy[_]
    input.Body.logConfig.enable == BOOLEAN
    input.Body.logConfig.optionalFields[_] == STRING
    input.Body.logConfig.optionalMode == enum_BackendServiceLogConfigOptionalMode[_]
    input.Body.logConfig.sampleRate == NUMBER
    input.Body.maxStreamDuration.nanos == INTEGER
    input.Body.maxStreamDuration.seconds == STRING
    input.Body.metadatas.STRING == STRING
    input.Body.name == STRING
    input.Body.network == STRING
    input.Body.outlierDetection.baseEjectionTime.nanos == INTEGER
    input.Body.outlierDetection.baseEjectionTime.seconds == STRING
    input.Body.outlierDetection.consecutiveErrors == INTEGER
    input.Body.outlierDetection.consecutiveGatewayFailure == INTEGER
    input.Body.outlierDetection.enforcingConsecutiveErrors == INTEGER
    input.Body.outlierDetection.enforcingConsecutiveGatewayFailure == INTEGER
    input.Body.outlierDetection.enforcingSuccessRate == INTEGER
    input.Body.outlierDetection.interval.nanos == INTEGER
    input.Body.outlierDetection.interval.seconds == STRING
    input.Body.outlierDetection.maxEjectionPercent == INTEGER
    input.Body.outlierDetection.successRateMinimumHosts == INTEGER
    input.Body.outlierDetection.successRateRequestVolume == INTEGER
    input.Body.outlierDetection.successRateStdevFactor == INTEGER
    input.Body.port == INTEGER
    input.Body.portName == STRING
    input.Body.protocol == enum_BackendServiceProtocol[_]
    input.Body.region == STRING
    input.Body.securityPolicy == STRING
    input.Body.securitySettings.awsV4Authentication.accessKey == STRING
    input.Body.securitySettings.awsV4Authentication.accessKeyId == STRING
    input.Body.securitySettings.awsV4Authentication.accessKeyVersion == STRING
    input.Body.securitySettings.awsV4Authentication.originRegion == STRING
    input.Body.securitySettings.clientTlsPolicy == STRING
    input.Body.securitySettings.subjectAltNames[_] == STRING
    input.Body.selfLink == STRING
    input.Body.serviceBindings[_] == STRING
    input.Body.serviceLbPolicy == STRING
    input.Body.sessionAffinity == enum_BackendServiceSessionAffinity[_]
    input.Body.subsetting.policy == enum_SubsettingPolicy[_]
    input.Body.timeoutSec == INTEGER
    input.Body.usedBy[_].reference == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.regionBackendServices.list

valid {
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.Qs.filter == STRING
    input.Qs.maxResults == INTEGER
    input.Qs.orderBy == STRING
    input.Qs.pageToken == STRING
    input.Qs.returnPartialSuccess == BOOLEAN
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.regionBackendServices.listUsable

valid {
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.Qs.filter == STRING
    input.Qs.maxResults == INTEGER
    input.Qs.orderBy == STRING
    input.Qs.pageToken == STRING
    input.Qs.returnPartialSuccess == BOOLEAN
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.regionBackendServices.patch

enum_BackendBalancingMode := [ "CONNECTION", "RATE", "UTILIZATION" ]
enum_BackendPreference := [ "DEFAULT", "PREFERENCE_UNSPECIFIED", "PREFERRED" ]
enum_BackendServiceCdnPolicyCacheMode := [ "CACHE_ALL_STATIC", "FORCE_CACHE_ALL", "INVALID_CACHE_MODE", "USE_ORIGIN_HEADERS" ]
enum_BackendServiceCompressionMode := [ "AUTOMATIC", "DISABLED" ]
enum_BackendServiceConnectionTrackingPolicyConnectionPersistenceOnUnhealthyBackends := [ "ALWAYS_PERSIST", "DEFAULT_FOR_PROTOCOL", "NEVER_PERSIST" ]
enum_BackendServiceConnectionTrackingPolicyTrackingMode := [ "INVALID_TRACKING_MODE", "PER_CONNECTION", "PER_SESSION" ]
enum_BackendServiceLoadBalancingScheme := [ "EXTERNAL", "EXTERNAL_MANAGED", "INTERNAL", "INTERNAL_MANAGED", "INTERNAL_SELF_MANAGED", "INVALID_LOAD_BALANCING_SCHEME" ]
enum_BackendServiceLocalityLbPolicy := [ "INVALID_LB_POLICY", "LEAST_REQUEST", "MAGLEV", "ORIGINAL_DESTINATION", "RANDOM", "RING_HASH", "ROUND_ROBIN", "WEIGHTED_MAGLEV" ]
enum_BackendServiceLocalityLoadBalancingPolicyConfigPolicyName := [ "INVALID_LB_POLICY", "LEAST_REQUEST", "MAGLEV", "ORIGINAL_DESTINATION", "RANDOM", "RING_HASH", "ROUND_ROBIN", "WEIGHTED_MAGLEV" ]
enum_BackendServiceLogConfigOptionalMode := [ "CUSTOM", "EXCLUDE_ALL_OPTIONAL", "INCLUDE_ALL_OPTIONAL" ]
enum_BackendServiceProtocol := [ "GRPC", "HTTP", "HTTP2", "HTTPS", "SSL", "TCP", "UDP", "UNSPECIFIED" ]
enum_BackendServiceSessionAffinity := [ "CLIENT_IP", "CLIENT_IP_NO_DESTINATION", "CLIENT_IP_PORT_PROTO", "CLIENT_IP_PROTO", "GENERATED_COOKIE", "HEADER_FIELD", "HTTP_COOKIE", "NONE" ]
enum_SubsettingPolicy := [ "CONSISTENT_HASH_SUBSETTING", "NONE" ]

valid {
    input.Body.affinityCookieTtlSec == INTEGER
    input.Body.backends[_].balancingMode == enum_BackendBalancingMode[_]
    input.Body.backends[_].capacityScaler == NUMBER
    input.Body.backends[_].description == STRING
    input.Body.backends[_].failover == BOOLEAN
    input.Body.backends[_].group == STRING
    input.Body.backends[_].maxConnections == INTEGER
    input.Body.backends[_].maxConnectionsPerEndpoint == INTEGER
    input.Body.backends[_].maxConnectionsPerInstance == INTEGER
    input.Body.backends[_].maxRate == INTEGER
    input.Body.backends[_].maxRatePerEndpoint == NUMBER
    input.Body.backends[_].maxRatePerInstance == NUMBER
    input.Body.backends[_].maxUtilization == NUMBER
    input.Body.backends[_].preference == enum_BackendPreference[_]
    input.Body.cdnPolicy.bypassCacheOnRequestHeaders[_].headerName == STRING
    input.Body.cdnPolicy.cacheKeyPolicy.includeHost == BOOLEAN
    input.Body.cdnPolicy.cacheKeyPolicy.includeHttpHeaders[_] == STRING
    input.Body.cdnPolicy.cacheKeyPolicy.includeNamedCookies[_] == STRING
    input.Body.cdnPolicy.cacheKeyPolicy.includeProtocol == BOOLEAN
    input.Body.cdnPolicy.cacheKeyPolicy.includeQueryString == BOOLEAN
    input.Body.cdnPolicy.cacheKeyPolicy.queryStringBlacklist[_] == STRING
    input.Body.cdnPolicy.cacheKeyPolicy.queryStringWhitelist[_] == STRING
    input.Body.cdnPolicy.cacheMode == enum_BackendServiceCdnPolicyCacheMode[_]
    input.Body.cdnPolicy.clientTtl == INTEGER
    input.Body.cdnPolicy.defaultTtl == INTEGER
    input.Body.cdnPolicy.maxTtl == INTEGER
    input.Body.cdnPolicy.negativeCaching == BOOLEAN
    input.Body.cdnPolicy.negativeCachingPolicy[_].code == INTEGER
    input.Body.cdnPolicy.negativeCachingPolicy[_].ttl == INTEGER
    input.Body.cdnPolicy.requestCoalescing == BOOLEAN
    input.Body.cdnPolicy.serveWhileStale == INTEGER
    input.Body.cdnPolicy.signedUrlCacheMaxAgeSec == STRING
    input.Body.cdnPolicy.signedUrlKeyNames[_] == STRING
    input.Body.circuitBreakers.maxConnections == INTEGER
    input.Body.circuitBreakers.maxPendingRequests == INTEGER
    input.Body.circuitBreakers.maxRequests == INTEGER
    input.Body.circuitBreakers.maxRequestsPerConnection == INTEGER
    input.Body.circuitBreakers.maxRetries == INTEGER
    input.Body.compressionMode == enum_BackendServiceCompressionMode[_]
    input.Body.connectionDraining.drainingTimeoutSec == INTEGER
    input.Body.connectionTrackingPolicy.connectionPersistenceOnUnhealthyBackends == enum_BackendServiceConnectionTrackingPolicyConnectionPersistenceOnUnhealthyBackends[_]
    input.Body.connectionTrackingPolicy.enableStrongAffinity == BOOLEAN
    input.Body.connectionTrackingPolicy.idleTimeoutSec == INTEGER
    input.Body.connectionTrackingPolicy.trackingMode == enum_BackendServiceConnectionTrackingPolicyTrackingMode[_]
    input.Body.consistentHash.httpCookie.name == STRING
    input.Body.consistentHash.httpCookie.path == STRING
    input.Body.consistentHash.httpCookie.ttl.nanos == INTEGER
    input.Body.consistentHash.httpCookie.ttl.seconds == STRING
    input.Body.consistentHash.httpHeaderName == STRING
    input.Body.consistentHash.minimumRingSize == STRING
    input.Body.creationTimestamp == STRING
    input.Body.customRequestHeaders[_] == STRING
    input.Body.customResponseHeaders[_] == STRING
    input.Body.description == STRING
    input.Body.edgeSecurityPolicy == STRING
    input.Body.enableCDN == BOOLEAN
    input.Body.failoverPolicy.disableConnectionDrainOnFailover == BOOLEAN
    input.Body.failoverPolicy.dropTrafficIfUnhealthy == BOOLEAN
    input.Body.failoverPolicy.failoverRatio == NUMBER
    input.Body.fingerprint == STRING
    input.Body.healthChecks[_] == STRING
    input.Body.iap.enabled == BOOLEAN
    input.Body.iap.oauth2ClientId == STRING
    input.Body.iap.oauth2ClientSecret == STRING
    input.Body.iap.oauth2ClientSecretSha256 == STRING
    input.Body.id == STRING
    input.Body.kind == STRING
    input.Body.loadBalancingScheme == enum_BackendServiceLoadBalancingScheme[_]
    input.Body.localityLbPolicies[_].customPolicy.data == STRING
    input.Body.localityLbPolicies[_].customPolicy.name == STRING
    input.Body.localityLbPolicies[_].policy.name == enum_BackendServiceLocalityLoadBalancingPolicyConfigPolicyName[_]
    input.Body.localityLbPolicy == enum_BackendServiceLocalityLbPolicy[_]
    input.Body.logConfig.enable == BOOLEAN
    input.Body.logConfig.optionalFields[_] == STRING
    input.Body.logConfig.optionalMode == enum_BackendServiceLogConfigOptionalMode[_]
    input.Body.logConfig.sampleRate == NUMBER
    input.Body.maxStreamDuration.nanos == INTEGER
    input.Body.maxStreamDuration.seconds == STRING
    input.Body.metadatas.STRING == STRING
    input.Body.name == STRING
    input.Body.network == STRING
    input.Body.outlierDetection.baseEjectionTime.nanos == INTEGER
    input.Body.outlierDetection.baseEjectionTime.seconds == STRING
    input.Body.outlierDetection.consecutiveErrors == INTEGER
    input.Body.outlierDetection.consecutiveGatewayFailure == INTEGER
    input.Body.outlierDetection.enforcingConsecutiveErrors == INTEGER
    input.Body.outlierDetection.enforcingConsecutiveGatewayFailure == INTEGER
    input.Body.outlierDetection.enforcingSuccessRate == INTEGER
    input.Body.outlierDetection.interval.nanos == INTEGER
    input.Body.outlierDetection.interval.seconds == STRING
    input.Body.outlierDetection.maxEjectionPercent == INTEGER
    input.Body.outlierDetection.successRateMinimumHosts == INTEGER
    input.Body.outlierDetection.successRateRequestVolume == INTEGER
    input.Body.outlierDetection.successRateStdevFactor == INTEGER
    input.Body.port == INTEGER
    input.Body.portName == STRING
    input.Body.protocol == enum_BackendServiceProtocol[_]
    input.Body.region == STRING
    input.Body.securityPolicy == STRING
    input.Body.securitySettings.awsV4Authentication.accessKey == STRING
    input.Body.securitySettings.awsV4Authentication.accessKeyId == STRING
    input.Body.securitySettings.awsV4Authentication.accessKeyVersion == STRING
    input.Body.securitySettings.awsV4Authentication.originRegion == STRING
    input.Body.securitySettings.clientTlsPolicy == STRING
    input.Body.securitySettings.subjectAltNames[_] == STRING
    input.Body.selfLink == STRING
    input.Body.serviceBindings[_] == STRING
    input.Body.serviceLbPolicy == STRING
    input.Body.sessionAffinity == enum_BackendServiceSessionAffinity[_]
    input.Body.subsetting.policy == enum_SubsettingPolicy[_]
    input.Body.timeoutSec == INTEGER
    input.Body.usedBy[_].reference == STRING
    input.ReqMap.backendService == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.regionBackendServices.setIamPolicy

enum_AuditLogConfigLogType := [ "ADMIN_READ", "DATA_READ", "DATA_WRITE", "LOG_TYPE_UNSPECIFIED" ]
enum_AuthorizationLoggingOptionsPermissionType := [ "ADMIN_READ", "ADMIN_WRITE", "DATA_READ", "DATA_WRITE", "PERMISSION_TYPE_UNSPECIFIED" ]
enum_ConditionIam := [ "APPROVER", "ATTRIBUTION", "AUTHORITY", "CREDENTIALS_TYPE", "CREDS_ASSERTION", "JUSTIFICATION_TYPE", "NO_ATTR", "SECURITY_REALM" ]
enum_ConditionOp := [ "DISCHARGED", "EQUALS", "IN", "NOT_EQUALS", "NOT_IN", "NO_OP" ]
enum_ConditionSys := [ "IP", "NAME", "NO_ATTR", "REGION", "SERVICE" ]
enum_LogConfigCloudAuditOptionsLogName := [ "ADMIN_ACTIVITY", "DATA_ACCESS", "UNSPECIFIED_LOG_NAME" ]
enum_LogConfigDataAccessOptionsLogMode := [ "LOG_FAIL_CLOSED", "LOG_MODE_UNSPECIFIED" ]
enum_RuleAction := [ "ALLOW", "ALLOW_WITH_LOG", "DENY", "DENY_WITH_LOG", "LOG", "NO_ACTION" ]

valid {
    input.Body.bindings[_].bindingId == STRING
    input.Body.bindings[_].condition.description == STRING
    input.Body.bindings[_].condition.expression == STRING
    input.Body.bindings[_].condition.location == STRING
    input.Body.bindings[_].condition.title == STRING
    input.Body.bindings[_].members[_] == STRING
    input.Body.bindings[_].role == STRING
    input.Body.etag == STRING
    input.Body.policy.auditConfigs[_].auditLogConfigs[_].exemptedMembers[_] == STRING
    input.Body.policy.auditConfigs[_].auditLogConfigs[_].ignoreChildExemptions == BOOLEAN
    input.Body.policy.auditConfigs[_].auditLogConfigs[_].logType == enum_AuditLogConfigLogType[_]
    input.Body.policy.auditConfigs[_].exemptedMembers[_] == STRING
    input.Body.policy.auditConfigs[_].service == STRING
    input.Body.policy.bindings[_].bindingId == 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.rules[_].action == enum_RuleAction[_]
    input.Body.policy.rules[_].conditions[_].iam == enum_ConditionIam[_]
    input.Body.policy.rules[_].conditions[_].op == enum_ConditionOp[_]
    input.Body.policy.rules[_].conditions[_].svc == STRING
    input.Body.policy.rules[_].conditions[_].sys == enum_ConditionSys[_]
    input.Body.policy.rules[_].conditions[_].values[_] == STRING
    input.Body.policy.rules[_].description == STRING
    input.Body.policy.rules[_].ins[_] == STRING
    input.Body.policy.rules[_].logConfigs[_].cloudAudit.authorizationLoggingOptions.permissionType == enum_AuthorizationLoggingOptionsPermissionType[_]
    input.Body.policy.rules[_].logConfigs[_].cloudAudit.logName == enum_LogConfigCloudAuditOptionsLogName[_]
    input.Body.policy.rules[_].logConfigs[_].counter.customFields[_].name == STRING
    input.Body.policy.rules[_].logConfigs[_].counter.customFields[_].value == STRING
    input.Body.policy.rules[_].logConfigs[_].counter.field == STRING
    input.Body.policy.rules[_].logConfigs[_].counter.metric == STRING
    input.Body.policy.rules[_].logConfigs[_].dataAccess.logMode == enum_LogConfigDataAccessOptionsLogMode[_]
    input.Body.policy.rules[_].notIns[_] == STRING
    input.Body.policy.rules[_].permissions[_] == STRING
    input.Body.policy.version == INTEGER
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.ReqMap.resource == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.regionBackendServices.setSecurityPolicy

valid {
    input.Body.securityPolicy == STRING
    input.ReqMap.backendService == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.regionBackendServices.testIamPermissions

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

compute.regionBackendServices.update

enum_BackendBalancingMode := [ "CONNECTION", "RATE", "UTILIZATION" ]
enum_BackendPreference := [ "DEFAULT", "PREFERENCE_UNSPECIFIED", "PREFERRED" ]
enum_BackendServiceCdnPolicyCacheMode := [ "CACHE_ALL_STATIC", "FORCE_CACHE_ALL", "INVALID_CACHE_MODE", "USE_ORIGIN_HEADERS" ]
enum_BackendServiceCompressionMode := [ "AUTOMATIC", "DISABLED" ]
enum_BackendServiceConnectionTrackingPolicyConnectionPersistenceOnUnhealthyBackends := [ "ALWAYS_PERSIST", "DEFAULT_FOR_PROTOCOL", "NEVER_PERSIST" ]
enum_BackendServiceConnectionTrackingPolicyTrackingMode := [ "INVALID_TRACKING_MODE", "PER_CONNECTION", "PER_SESSION" ]
enum_BackendServiceLoadBalancingScheme := [ "EXTERNAL", "EXTERNAL_MANAGED", "INTERNAL", "INTERNAL_MANAGED", "INTERNAL_SELF_MANAGED", "INVALID_LOAD_BALANCING_SCHEME" ]
enum_BackendServiceLocalityLbPolicy := [ "INVALID_LB_POLICY", "LEAST_REQUEST", "MAGLEV", "ORIGINAL_DESTINATION", "RANDOM", "RING_HASH", "ROUND_ROBIN", "WEIGHTED_MAGLEV" ]
enum_BackendServiceLocalityLoadBalancingPolicyConfigPolicyName := [ "INVALID_LB_POLICY", "LEAST_REQUEST", "MAGLEV", "ORIGINAL_DESTINATION", "RANDOM", "RING_HASH", "ROUND_ROBIN", "WEIGHTED_MAGLEV" ]
enum_BackendServiceLogConfigOptionalMode := [ "CUSTOM", "EXCLUDE_ALL_OPTIONAL", "INCLUDE_ALL_OPTIONAL" ]
enum_BackendServiceProtocol := [ "GRPC", "HTTP", "HTTP2", "HTTPS", "SSL", "TCP", "UDP", "UNSPECIFIED" ]
enum_BackendServiceSessionAffinity := [ "CLIENT_IP", "CLIENT_IP_NO_DESTINATION", "CLIENT_IP_PORT_PROTO", "CLIENT_IP_PROTO", "GENERATED_COOKIE", "HEADER_FIELD", "HTTP_COOKIE", "NONE" ]
enum_SubsettingPolicy := [ "CONSISTENT_HASH_SUBSETTING", "NONE" ]

valid {
    input.Body.affinityCookieTtlSec == INTEGER
    input.Body.backends[_].balancingMode == enum_BackendBalancingMode[_]
    input.Body.backends[_].capacityScaler == NUMBER
    input.Body.backends[_].description == STRING
    input.Body.backends[_].failover == BOOLEAN
    input.Body.backends[_].group == STRING
    input.Body.backends[_].maxConnections == INTEGER
    input.Body.backends[_].maxConnectionsPerEndpoint == INTEGER
    input.Body.backends[_].maxConnectionsPerInstance == INTEGER
    input.Body.backends[_].maxRate == INTEGER
    input.Body.backends[_].maxRatePerEndpoint == NUMBER
    input.Body.backends[_].maxRatePerInstance == NUMBER
    input.Body.backends[_].maxUtilization == NUMBER
    input.Body.backends[_].preference == enum_BackendPreference[_]
    input.Body.cdnPolicy.bypassCacheOnRequestHeaders[_].headerName == STRING
    input.Body.cdnPolicy.cacheKeyPolicy.includeHost == BOOLEAN
    input.Body.cdnPolicy.cacheKeyPolicy.includeHttpHeaders[_] == STRING
    input.Body.cdnPolicy.cacheKeyPolicy.includeNamedCookies[_] == STRING
    input.Body.cdnPolicy.cacheKeyPolicy.includeProtocol == BOOLEAN
    input.Body.cdnPolicy.cacheKeyPolicy.includeQueryString == BOOLEAN
    input.Body.cdnPolicy.cacheKeyPolicy.queryStringBlacklist[_] == STRING
    input.Body.cdnPolicy.cacheKeyPolicy.queryStringWhitelist[_] == STRING
    input.Body.cdnPolicy.cacheMode == enum_BackendServiceCdnPolicyCacheMode[_]
    input.Body.cdnPolicy.clientTtl == INTEGER
    input.Body.cdnPolicy.defaultTtl == INTEGER
    input.Body.cdnPolicy.maxTtl == INTEGER
    input.Body.cdnPolicy.negativeCaching == BOOLEAN
    input.Body.cdnPolicy.negativeCachingPolicy[_].code == INTEGER
    input.Body.cdnPolicy.negativeCachingPolicy[_].ttl == INTEGER
    input.Body.cdnPolicy.requestCoalescing == BOOLEAN
    input.Body.cdnPolicy.serveWhileStale == INTEGER
    input.Body.cdnPolicy.signedUrlCacheMaxAgeSec == STRING
    input.Body.cdnPolicy.signedUrlKeyNames[_] == STRING
    input.Body.circuitBreakers.maxConnections == INTEGER
    input.Body.circuitBreakers.maxPendingRequests == INTEGER
    input.Body.circuitBreakers.maxRequests == INTEGER
    input.Body.circuitBreakers.maxRequestsPerConnection == INTEGER
    input.Body.circuitBreakers.maxRetries == INTEGER
    input.Body.compressionMode == enum_BackendServiceCompressionMode[_]
    input.Body.connectionDraining.drainingTimeoutSec == INTEGER
    input.Body.connectionTrackingPolicy.connectionPersistenceOnUnhealthyBackends == enum_BackendServiceConnectionTrackingPolicyConnectionPersistenceOnUnhealthyBackends[_]
    input.Body.connectionTrackingPolicy.enableStrongAffinity == BOOLEAN
    input.Body.connectionTrackingPolicy.idleTimeoutSec == INTEGER
    input.Body.connectionTrackingPolicy.trackingMode == enum_BackendServiceConnectionTrackingPolicyTrackingMode[_]
    input.Body.consistentHash.httpCookie.name == STRING
    input.Body.consistentHash.httpCookie.path == STRING
    input.Body.consistentHash.httpCookie.ttl.nanos == INTEGER
    input.Body.consistentHash.httpCookie.ttl.seconds == STRING
    input.Body.consistentHash.httpHeaderName == STRING
    input.Body.consistentHash.minimumRingSize == STRING
    input.Body.creationTimestamp == STRING
    input.Body.customRequestHeaders[_] == STRING
    input.Body.customResponseHeaders[_] == STRING
    input.Body.description == STRING
    input.Body.edgeSecurityPolicy == STRING
    input.Body.enableCDN == BOOLEAN
    input.Body.failoverPolicy.disableConnectionDrainOnFailover == BOOLEAN
    input.Body.failoverPolicy.dropTrafficIfUnhealthy == BOOLEAN
    input.Body.failoverPolicy.failoverRatio == NUMBER
    input.Body.fingerprint == STRING
    input.Body.healthChecks[_] == STRING
    input.Body.iap.enabled == BOOLEAN
    input.Body.iap.oauth2ClientId == STRING
    input.Body.iap.oauth2ClientSecret == STRING
    input.Body.iap.oauth2ClientSecretSha256 == STRING
    input.Body.id == STRING
    input.Body.kind == STRING
    input.Body.loadBalancingScheme == enum_BackendServiceLoadBalancingScheme[_]
    input.Body.localityLbPolicies[_].customPolicy.data == STRING
    input.Body.localityLbPolicies[_].customPolicy.name == STRING
    input.Body.localityLbPolicies[_].policy.name == enum_BackendServiceLocalityLoadBalancingPolicyConfigPolicyName[_]
    input.Body.localityLbPolicy == enum_BackendServiceLocalityLbPolicy[_]
    input.Body.logConfig.enable == BOOLEAN
    input.Body.logConfig.optionalFields[_] == STRING
    input.Body.logConfig.optionalMode == enum_BackendServiceLogConfigOptionalMode[_]
    input.Body.logConfig.sampleRate == NUMBER
    input.Body.maxStreamDuration.nanos == INTEGER
    input.Body.maxStreamDuration.seconds == STRING
    input.Body.metadatas.STRING == STRING
    input.Body.name == STRING
    input.Body.network == STRING
    input.Body.outlierDetection.baseEjectionTime.nanos == INTEGER
    input.Body.outlierDetection.baseEjectionTime.seconds == STRING
    input.Body.outlierDetection.consecutiveErrors == INTEGER
    input.Body.outlierDetection.consecutiveGatewayFailure == INTEGER
    input.Body.outlierDetection.enforcingConsecutiveErrors == INTEGER
    input.Body.outlierDetection.enforcingConsecutiveGatewayFailure == INTEGER
    input.Body.outlierDetection.enforcingSuccessRate == INTEGER
    input.Body.outlierDetection.interval.nanos == INTEGER
    input.Body.outlierDetection.interval.seconds == STRING
    input.Body.outlierDetection.maxEjectionPercent == INTEGER
    input.Body.outlierDetection.successRateMinimumHosts == INTEGER
    input.Body.outlierDetection.successRateRequestVolume == INTEGER
    input.Body.outlierDetection.successRateStdevFactor == INTEGER
    input.Body.port == INTEGER
    input.Body.portName == STRING
    input.Body.protocol == enum_BackendServiceProtocol[_]
    input.Body.region == STRING
    input.Body.securityPolicy == STRING
    input.Body.securitySettings.awsV4Authentication.accessKey == STRING
    input.Body.securitySettings.awsV4Authentication.accessKeyId == STRING
    input.Body.securitySettings.awsV4Authentication.accessKeyVersion == STRING
    input.Body.securitySettings.awsV4Authentication.originRegion == STRING
    input.Body.securitySettings.clientTlsPolicy == STRING
    input.Body.securitySettings.subjectAltNames[_] == STRING
    input.Body.selfLink == STRING
    input.Body.serviceBindings[_] == STRING
    input.Body.serviceLbPolicy == STRING
    input.Body.sessionAffinity == enum_BackendServiceSessionAffinity[_]
    input.Body.subsetting.policy == enum_SubsettingPolicy[_]
    input.Body.timeoutSec == INTEGER
    input.Body.usedBy[_].reference == STRING
    input.ReqMap.backendService == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.regionCommitments.aggregatedList

valid {
    input.ReqMap.ProjectID == STRING
    input.Qs.filter == STRING
    input.Qs.includeAllScopes == BOOLEAN
    input.Qs.maxResults == INTEGER
    input.Qs.orderBy == STRING
    input.Qs.pageToken == STRING
    input.Qs.returnPartialSuccess == BOOLEAN
    input.Qs.serviceProjectNumber == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.regionCommitments.calculateCancellationFee

valid {
    input.ReqMap.commitment == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.regionCommitments.cancel

valid {
    input.ReqMap.commitment == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.regionCommitments.get

valid {
    input.ReqMap.commitment == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.regionCommitments.insert

enum_AllocationAggregateReservationVmFamily := [ "VM_FAMILY_CLOUD_TPU_LITE_DEVICE_CT5L", "VM_FAMILY_CLOUD_TPU_LITE_POD_SLICE_CT5LP", "VM_FAMILY_CLOUD_TPU_POD_SLICE_CT4P" ]
enum_AllocationAggregateReservationWorkloadType := [ "BATCH", "SERVING", "UNSPECIFIED" ]
enum_AllocationSpecificSKUAllocationAllocatedInstancePropertiesReservedDiskInterface := [ "NVME", "SCSI" ]
enum_CommitmentCategory := [ "CATEGORY_UNSPECIFIED", "LICENSE", "MACHINE" ]
enum_CommitmentPlan := [ "INVALID", "THIRTY_SIX_MONTH", "TWELVE_MONTH" ]
enum_CommitmentStatus := [ "ACTIVE", "CANCELLED", "CREATING", "EXPIRED", "NOT_YET_ACTIVE" ]
enum_CommitmentType := [ "ACCELERATOR_OPTIMIZED", "ACCELERATOR_OPTIMIZED_A3", "COMPUTE_OPTIMIZED", "COMPUTE_OPTIMIZED_C2D", "COMPUTE_OPTIMIZED_C3", "COMPUTE_OPTIMIZED_C3D", "COMPUTE_OPTIMIZED_H3", "GENERAL_PURPOSE", "GENERAL_PURPOSE_E2", "GENERAL_PURPOSE_N2", "GENERAL_PURPOSE_N2D", "GENERAL_PURPOSE_N4", "GENERAL_PURPOSE_T2D", "GRAPHICS_OPTIMIZED", "MEMORY_OPTIMIZED", "MEMORY_OPTIMIZED_M3", "STORAGE_OPTIMIZED_Z3", "TYPE_UNSPECIFIED" ]
enum_ReservationStatus := [ "CREATING", "DELETING", "INVALID", "READY", "UPDATING" ]
enum_ResourceCommitmentType := [ "ACCELERATOR", "LOCAL_SSD", "MEMORY", "UNSPECIFIED", "VCPU" ]
enum_ShareSettingsShareType := [ "LOCAL", "ORGANIZATION", "SHARE_TYPE_UNSPECIFIED", "SPECIFIC_PROJECTS" ]

valid {
    input.Body.autoRenew == BOOLEAN
    input.Body.category == enum_CommitmentCategory[_]
    input.Body.creationTimestamp == STRING
    input.Body.description == STRING
    input.Body.endTimestamp == STRING
    input.Body.existingReservations[_] == STRING
    input.Body.id == STRING
    input.Body.kind == STRING
    input.Body.licenseResource.amount == STRING
    input.Body.licenseResource.coresPerLicense == STRING
    input.Body.licenseResource.license == STRING
    input.Body.mergeSourceCommitments[_] == STRING
    input.Body.name == STRING
    input.Body.plan == enum_CommitmentPlan[_]
    input.Body.region == STRING
    input.Body.reservations[_].aggregateReservation.inUseResources[_].accelerator.acceleratorCount == INTEGER
    input.Body.reservations[_].aggregateReservation.inUseResources[_].accelerator.acceleratorType == STRING
    input.Body.reservations[_].aggregateReservation.reservedResources[_].accelerator.acceleratorCount == INTEGER
    input.Body.reservations[_].aggregateReservation.reservedResources[_].accelerator.acceleratorType == STRING
    input.Body.reservations[_].aggregateReservation.vmFamily == enum_AllocationAggregateReservationVmFamily[_]
    input.Body.reservations[_].aggregateReservation.workloadType == enum_AllocationAggregateReservationWorkloadType[_]
    input.Body.reservations[_].commitment == STRING
    input.Body.reservations[_].creationTimestamp == STRING
    input.Body.reservations[_].description == STRING
    input.Body.reservations[_].id == STRING
    input.Body.reservations[_].kind == STRING
    input.Body.reservations[_].name == STRING
    input.Body.reservations[_].resourcePolicies.STRING == STRING
    input.Body.reservations[_].resourceStatus.specificSkuAllocation.sourceInstanceTemplateId == STRING
    input.Body.reservations[_].satisfiesPzs == BOOLEAN
    input.Body.reservations[_].selfLink == STRING
    input.Body.reservations[_].shareSettings.projectMap.STRING.projectId == STRING
    input.Body.reservations[_].shareSettings.shareType == enum_ShareSettingsShareType[_]
    input.Body.reservations[_].specificReservation.assuredCount == STRING
    input.Body.reservations[_].specificReservation.count == STRING
    input.Body.reservations[_].specificReservation.inUseCount == STRING
    input.Body.reservations[_].specificReservation.instanceProperties.guestAccelerators[_].acceleratorCount == INTEGER
    input.Body.reservations[_].specificReservation.instanceProperties.guestAccelerators[_].acceleratorType == STRING
    input.Body.reservations[_].specificReservation.instanceProperties.localSsds[_].diskSizeGb == STRING
    input.Body.reservations[_].specificReservation.instanceProperties.localSsds[_].interface == enum_AllocationSpecificSKUAllocationAllocatedInstancePropertiesReservedDiskInterface[_]
    input.Body.reservations[_].specificReservation.instanceProperties.locationHint == STRING
    input.Body.reservations[_].specificReservation.instanceProperties.machineType == STRING
    input.Body.reservations[_].specificReservation.instanceProperties.minCpuPlatform == STRING
    input.Body.reservations[_].specificReservation.sourceInstanceTemplate == STRING
    input.Body.reservations[_].specificReservationRequired == BOOLEAN
    input.Body.reservations[_].status == enum_ReservationStatus[_]
    input.Body.reservations[_].zone == STRING
    input.Body.resources[_].acceleratorType == STRING
    input.Body.resources[_].amount == STRING
    input.Body.resources[_].type == enum_ResourceCommitmentType[_]
    input.Body.selfLink == STRING
    input.Body.splitSourceCommitment == STRING
    input.Body.startTimestamp == STRING
    input.Body.status == enum_CommitmentStatus[_]
    input.Body.statusMessage == STRING
    input.Body.type == enum_CommitmentType[_]
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.regionCommitments.list

valid {
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.Qs.filter == STRING
    input.Qs.maxResults == INTEGER
    input.Qs.orderBy == STRING
    input.Qs.pageToken == STRING
    input.Qs.returnPartialSuccess == BOOLEAN
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.regionCommitments.testIamPermissions

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

compute.regionCommitments.update

enum_AllocationAggregateReservationVmFamily := [ "VM_FAMILY_CLOUD_TPU_LITE_DEVICE_CT5L", "VM_FAMILY_CLOUD_TPU_LITE_POD_SLICE_CT5LP", "VM_FAMILY_CLOUD_TPU_POD_SLICE_CT4P" ]
enum_AllocationAggregateReservationWorkloadType := [ "BATCH", "SERVING", "UNSPECIFIED" ]
enum_AllocationSpecificSKUAllocationAllocatedInstancePropertiesReservedDiskInterface := [ "NVME", "SCSI" ]
enum_CommitmentCategory := [ "CATEGORY_UNSPECIFIED", "LICENSE", "MACHINE" ]
enum_CommitmentPlan := [ "INVALID", "THIRTY_SIX_MONTH", "TWELVE_MONTH" ]
enum_CommitmentStatus := [ "ACTIVE", "CANCELLED", "CREATING", "EXPIRED", "NOT_YET_ACTIVE" ]
enum_CommitmentType := [ "ACCELERATOR_OPTIMIZED", "ACCELERATOR_OPTIMIZED_A3", "COMPUTE_OPTIMIZED", "COMPUTE_OPTIMIZED_C2D", "COMPUTE_OPTIMIZED_C3", "COMPUTE_OPTIMIZED_C3D", "COMPUTE_OPTIMIZED_H3", "GENERAL_PURPOSE", "GENERAL_PURPOSE_E2", "GENERAL_PURPOSE_N2", "GENERAL_PURPOSE_N2D", "GENERAL_PURPOSE_N4", "GENERAL_PURPOSE_T2D", "GRAPHICS_OPTIMIZED", "MEMORY_OPTIMIZED", "MEMORY_OPTIMIZED_M3", "STORAGE_OPTIMIZED_Z3", "TYPE_UNSPECIFIED" ]
enum_ReservationStatus := [ "CREATING", "DELETING", "INVALID", "READY", "UPDATING" ]
enum_ResourceCommitmentType := [ "ACCELERATOR", "LOCAL_SSD", "MEMORY", "UNSPECIFIED", "VCPU" ]
enum_ShareSettingsShareType := [ "LOCAL", "ORGANIZATION", "SHARE_TYPE_UNSPECIFIED", "SPECIFIC_PROJECTS" ]

valid {
    input.Body.autoRenew == BOOLEAN
    input.Body.category == enum_CommitmentCategory[_]
    input.Body.creationTimestamp == STRING
    input.Body.description == STRING
    input.Body.endTimestamp == STRING
    input.Body.existingReservations[_] == STRING
    input.Body.id == STRING
    input.Body.kind == STRING
    input.Body.licenseResource.amount == STRING
    input.Body.licenseResource.coresPerLicense == STRING
    input.Body.licenseResource.license == STRING
    input.Body.mergeSourceCommitments[_] == STRING
    input.Body.name == STRING
    input.Body.plan == enum_CommitmentPlan[_]
    input.Body.region == STRING
    input.Body.reservations[_].aggregateReservation.inUseResources[_].accelerator.acceleratorCount == INTEGER
    input.Body.reservations[_].aggregateReservation.inUseResources[_].accelerator.acceleratorType == STRING
    input.Body.reservations[_].aggregateReservation.reservedResources[_].accelerator.acceleratorCount == INTEGER
    input.Body.reservations[_].aggregateReservation.reservedResources[_].accelerator.acceleratorType == STRING
    input.Body.reservations[_].aggregateReservation.vmFamily == enum_AllocationAggregateReservationVmFamily[_]
    input.Body.reservations[_].aggregateReservation.workloadType == enum_AllocationAggregateReservationWorkloadType[_]
    input.Body.reservations[_].commitment == STRING
    input.Body.reservations[_].creationTimestamp == STRING
    input.Body.reservations[_].description == STRING
    input.Body.reservations[_].id == STRING
    input.Body.reservations[_].kind == STRING
    input.Body.reservations[_].name == STRING
    input.Body.reservations[_].resourcePolicies.STRING == STRING
    input.Body.reservations[_].resourceStatus.specificSkuAllocation.sourceInstanceTemplateId == STRING
    input.Body.reservations[_].satisfiesPzs == BOOLEAN
    input.Body.reservations[_].selfLink == STRING
    input.Body.reservations[_].shareSettings.projectMap.STRING.projectId == STRING
    input.Body.reservations[_].shareSettings.shareType == enum_ShareSettingsShareType[_]
    input.Body.reservations[_].specificReservation.assuredCount == STRING
    input.Body.reservations[_].specificReservation.count == STRING
    input.Body.reservations[_].specificReservation.inUseCount == STRING
    input.Body.reservations[_].specificReservation.instanceProperties.guestAccelerators[_].acceleratorCount == INTEGER
    input.Body.reservations[_].specificReservation.instanceProperties.guestAccelerators[_].acceleratorType == STRING
    input.Body.reservations[_].specificReservation.instanceProperties.localSsds[_].diskSizeGb == STRING
    input.Body.reservations[_].specificReservation.instanceProperties.localSsds[_].interface == enum_AllocationSpecificSKUAllocationAllocatedInstancePropertiesReservedDiskInterface[_]
    input.Body.reservations[_].specificReservation.instanceProperties.locationHint == STRING
    input.Body.reservations[_].specificReservation.instanceProperties.machineType == STRING
    input.Body.reservations[_].specificReservation.instanceProperties.minCpuPlatform == STRING
    input.Body.reservations[_].specificReservation.sourceInstanceTemplate == STRING
    input.Body.reservations[_].specificReservationRequired == BOOLEAN
    input.Body.reservations[_].status == enum_ReservationStatus[_]
    input.Body.reservations[_].zone == STRING
    input.Body.resources[_].acceleratorType == STRING
    input.Body.resources[_].amount == STRING
    input.Body.resources[_].type == enum_ResourceCommitmentType[_]
    input.Body.selfLink == STRING
    input.Body.splitSourceCommitment == STRING
    input.Body.startTimestamp == STRING
    input.Body.status == enum_CommitmentStatus[_]
    input.Body.statusMessage == STRING
    input.Body.type == enum_CommitmentType[_]
    input.ReqMap.commitment == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.Qs.paths == STRING
    input.Qs.requestId == STRING
    input.Qs.updateMask == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.regionCommitments.updateReservations

enum_AllocationAggregateReservationVmFamily := [ "VM_FAMILY_CLOUD_TPU_LITE_DEVICE_CT5L", "VM_FAMILY_CLOUD_TPU_LITE_POD_SLICE_CT5LP", "VM_FAMILY_CLOUD_TPU_POD_SLICE_CT4P" ]
enum_AllocationAggregateReservationWorkloadType := [ "BATCH", "SERVING", "UNSPECIFIED" ]
enum_AllocationSpecificSKUAllocationAllocatedInstancePropertiesReservedDiskInterface := [ "NVME", "SCSI" ]
enum_AllocationSpecificSKUAllocationReservedInstancePropertiesMaintenanceInterval := [ "AS_NEEDED", "PERIODIC", "RECURRENT" ]
enum_ReservationStatus := [ "CREATING", "DELETING", "INVALID", "READY", "UPDATING" ]
enum_ShareSettingsShareType := [ "LOCAL", "ORGANIZATION", "SHARE_TYPE_UNSPECIFIED", "SPECIFIC_PROJECTS" ]

valid {
    input.Body.reservations[_].aggregateReservation.inUseResources[_].accelerator.acceleratorCount == INTEGER
    input.Body.reservations[_].aggregateReservation.inUseResources[_].accelerator.acceleratorType == STRING
    input.Body.reservations[_].aggregateReservation.reservedResources[_].accelerator.acceleratorCount == INTEGER
    input.Body.reservations[_].aggregateReservation.reservedResources[_].accelerator.acceleratorType == STRING
    input.Body.reservations[_].aggregateReservation.vmFamily == enum_AllocationAggregateReservationVmFamily[_]
    input.Body.reservations[_].aggregateReservation.workloadType == enum_AllocationAggregateReservationWorkloadType[_]
    input.Body.reservations[_].commitment == STRING
    input.Body.reservations[_].creationTimestamp == STRING
    input.Body.reservations[_].deleteAfterDuration.nanos == INTEGER
    input.Body.reservations[_].deleteAfterDuration.seconds == STRING
    input.Body.reservations[_].deleteAtTime == STRING
    input.Body.reservations[_].description == STRING
    input.Body.reservations[_].id == STRING
    input.Body.reservations[_].kind == STRING
    input.Body.reservations[_].name == STRING
    input.Body.reservations[_].resourcePolicies.STRING == STRING
    input.Body.reservations[_].resourceStatus.specificSkuAllocation.sourceInstanceTemplateId == STRING
    input.Body.reservations[_].satisfiesPzs == BOOLEAN
    input.Body.reservations[_].selfLink == STRING
    input.Body.reservations[_].shareSettings.projectMap.STRING.projectId == STRING
    input.Body.reservations[_].shareSettings.projects[_] == STRING
    input.Body.reservations[_].shareSettings.shareType == enum_ShareSettingsShareType[_]
    input.Body.reservations[_].specificReservation.assuredCount == STRING
    input.Body.reservations[_].specificReservation.count == STRING
    input.Body.reservations[_].specificReservation.inUseCount == STRING
    input.Body.reservations[_].specificReservation.instanceProperties.guestAccelerators[_].acceleratorCount == INTEGER
    input.Body.reservations[_].specificReservation.instanceProperties.guestAccelerators[_].acceleratorType == STRING
    input.Body.reservations[_].specificReservation.instanceProperties.localSsds[_].diskSizeGb == STRING
    input.Body.reservations[_].specificReservation.instanceProperties.localSsds[_].interface == enum_AllocationSpecificSKUAllocationAllocatedInstancePropertiesReservedDiskInterface[_]
    input.Body.reservations[_].specificReservation.instanceProperties.locationHint == STRING
    input.Body.reservations[_].specificReservation.instanceProperties.machineType == STRING
    input.Body.reservations[_].specificReservation.instanceProperties.maintenanceFreezeDurationHours == INTEGER
    input.Body.reservations[_].specificReservation.instanceProperties.maintenanceInterval == enum_AllocationSpecificSKUAllocationReservedInstancePropertiesMaintenanceInterval[_]
    input.Body.reservations[_].specificReservation.instanceProperties.minCpuPlatform == STRING
    input.Body.reservations[_].specificReservation.sourceInstanceTemplate == STRING
    input.Body.reservations[_].specificReservationRequired == BOOLEAN
    input.Body.reservations[_].status == enum_ReservationStatus[_]
    input.Body.reservations[_].zone == STRING
    input.ReqMap.commitment == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.regionDiskSettings.get

valid {
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.regionDiskSettings.patch

valid {
    input.Body.accessLocation.locations.STRING.region == STRING
    input.Body.defaultResourcePolicies.STRING.excludedDiskTypes[_] == STRING
    input.Body.defaultResourcePolicies.STRING.resourcePolicy == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.Qs.requestId == STRING
    input.Qs.updateMask == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.regionDiskTypes.get

valid {
    input.ReqMap.diskType == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.regionDiskTypes.list

valid {
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.Qs.filter == STRING
    input.Qs.maxResults == INTEGER
    input.Qs.orderBy == STRING
    input.Qs.pageToken == STRING
    input.Qs.returnPartialSuccess == BOOLEAN
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.regionDisks.addResourcePolicies

valid {
    input.Body.resourcePolicies[_] == STRING
    input.ReqMap.disk == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.regionDisks.bulkInsert

valid {
    input.Body.sourceConsistencyGroupPolicy == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.regionDisks.createSnapshot

enum_GuestOsFeatureType := [ "FEATURE_TYPE_UNSPECIFIED", "GVNIC", "IDPF", "MULTI_IP_SUBNET", "SECURE_BOOT", "SEV_CAPABLE", "SEV_LIVE_MIGRATABLE", "SEV_LIVE_MIGRATABLE_V2", "SEV_SNP_CAPABLE", "UEFI_COMPATIBLE", "VIRTIO_SCSI_MULTIQUEUE", "WINDOWS" ]
enum_SnapshotArchitecture := [ "ARCHITECTURE_UNSPECIFIED", "ARM64", "X86_64" ]
enum_SnapshotSnapshotType := [ "ARCHIVE", "STANDARD" ]
enum_SnapshotStatus := [ "CREATING", "DELETING", "FAILED", "READY", "UPLOADING" ]
enum_SnapshotStorageBytesStatus := [ "UPDATING", "UP_TO_DATE" ]

valid {
    input.Body.architecture == enum_SnapshotArchitecture[_]
    input.Body.autoCreated == BOOLEAN
    input.Body.chainName == STRING
    input.Body.creationSizeBytes == STRING
    input.Body.creationTimestamp == STRING
    input.Body.description == STRING
    input.Body.diskSizeGb == STRING
    input.Body.downloadBytes == STRING
    input.Body.enableConfidentialCompute == BOOLEAN
    input.Body.guestOsFeatures[_].type == enum_GuestOsFeatureType[_]
    input.Body.id == STRING
    input.Body.kind == STRING
    input.Body.labelFingerprint == STRING
    input.Body.labels.STRING == STRING
    input.Body.licenseCodes[_] == STRING
    input.Body.licenses[_] == STRING
    input.Body.locationHint == STRING
    input.Body.name == STRING
    input.Body.satisfiesPzs == BOOLEAN
    input.Body.selfLink == STRING
    input.Body.snapshotEncryptionKey.kmsKeyName == STRING
    input.Body.snapshotEncryptionKey.kmsKeyServiceAccount == STRING
    input.Body.snapshotEncryptionKey.rawKey == STRING
    input.Body.snapshotEncryptionKey.rsaEncryptedKey == STRING
    input.Body.snapshotEncryptionKey.sha256 == STRING
    input.Body.snapshotType == enum_SnapshotSnapshotType[_]
    input.Body.sourceDisk == STRING
    input.Body.sourceDiskEncryptionKey.kmsKeyName == STRING
    input.Body.sourceDiskEncryptionKey.kmsKeyServiceAccount == STRING
    input.Body.sourceDiskEncryptionKey.rawKey == STRING
    input.Body.sourceDiskEncryptionKey.rsaEncryptedKey == STRING
    input.Body.sourceDiskEncryptionKey.sha256 == STRING
    input.Body.sourceDiskForRecoveryCheckpoint == STRING
    input.Body.sourceDiskId == STRING
    input.Body.sourceInstantSnapshot == STRING
    input.Body.sourceInstantSnapshotEncryptionKey.kmsKeyName == STRING
    input.Body.sourceInstantSnapshotEncryptionKey.kmsKeyServiceAccount == STRING
    input.Body.sourceInstantSnapshotEncryptionKey.rawKey == STRING
    input.Body.sourceInstantSnapshotEncryptionKey.rsaEncryptedKey == STRING
    input.Body.sourceInstantSnapshotEncryptionKey.sha256 == STRING
    input.Body.sourceInstantSnapshotId == STRING
    input.Body.sourceSnapshotSchedulePolicy == STRING
    input.Body.sourceSnapshotSchedulePolicyId == STRING
    input.Body.status == enum_SnapshotStatus[_]
    input.Body.storageBytes == STRING
    input.Body.storageBytesStatus == enum_SnapshotStorageBytesStatus[_]
    input.Body.storageLocations[_] == STRING
    input.ReqMap.disk == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.regionDisks.delete

valid {
    input.ReqMap.disk == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.regionDisks.get

valid {
    input.ReqMap.disk == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.regionDisks.getIamPolicy

valid {
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.ReqMap.resource == STRING
    input.Qs.optionsRequestedPolicyVersion == INTEGER
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.regionDisks.insert

enum_DiskArchitecture := [ "ARCHITECTURE_UNSPECIFIED", "ARM64", "X86_64" ]
enum_DiskResourceStatusAsyncReplicationStatusState := [ "ACTIVE", "CREATED", "STARTING", "STATE_UNSPECIFIED", "STOPPED", "STOPPING" ]
enum_DiskStatus := [ "CREATING", "DELETING", "FAILED", "READY", "RESTORING", "UNAVAILABLE" ]
enum_GuestOsFeatureType := [ "FEATURE_TYPE_UNSPECIFIED", "GVNIC", "IDPF", "MULTI_IP_SUBNET", "SECURE_BOOT", "SEV_CAPABLE", "SEV_LIVE_MIGRATABLE", "SEV_LIVE_MIGRATABLE_V2", "SEV_SNP_CAPABLE", "UEFI_COMPATIBLE", "VIRTIO_SCSI_MULTIQUEUE", "WINDOWS" ]

valid {
    input.Body.architecture == enum_DiskArchitecture[_]
    input.Body.asyncPrimaryDisk.consistencyGroupPolicy == STRING
    input.Body.asyncPrimaryDisk.consistencyGroupPolicyId == STRING
    input.Body.asyncPrimaryDisk.disk == STRING
    input.Body.asyncPrimaryDisk.diskId == STRING
    input.Body.asyncSecondaryDisks.STRING.asyncReplicationDisk.consistencyGroupPolicy == STRING
    input.Body.asyncSecondaryDisks.STRING.asyncReplicationDisk.consistencyGroupPolicyId == STRING
    input.Body.asyncSecondaryDisks.STRING.asyncReplicationDisk.disk == STRING
    input.Body.asyncSecondaryDisks.STRING.asyncReplicationDisk.diskId == STRING
    input.Body.creationTimestamp == STRING
    input.Body.description == STRING
    input.Body.diskEncryptionKey.kmsKeyName == STRING
    input.Body.diskEncryptionKey.kmsKeyServiceAccount == STRING
    input.Body.diskEncryptionKey.rawKey == STRING
    input.Body.diskEncryptionKey.rsaEncryptedKey == STRING
    input.Body.diskEncryptionKey.sha256 == STRING
    input.Body.enableConfidentialCompute == BOOLEAN
    input.Body.guestOsFeatures[_].type == enum_GuestOsFeatureType[_]
    input.Body.id == STRING
    input.Body.kind == STRING
    input.Body.labelFingerprint == STRING
    input.Body.labels.STRING == STRING
    input.Body.lastAttachTimestamp == STRING
    input.Body.lastDetachTimestamp == STRING
    input.Body.licenseCodes[_] == STRING
    input.Body.licenses[_] == STRING
    input.Body.locationHint == STRING
    input.Body.name == STRING
    input.Body.options == STRING
    input.Body.params.resourceManagerTags.STRING == STRING
    input.Body.physicalBlockSizeBytes == STRING
    input.Body.provisionedIops == STRING
    input.Body.provisionedThroughput == STRING
    input.Body.region == STRING
    input.Body.replicaZones[_] == STRING
    input.Body.resourcePolicies[_] == STRING
    input.Body.resourceStatus.asyncPrimaryDisk.state == enum_DiskResourceStatusAsyncReplicationStatusState[_]
    input.Body.resourceStatus.asyncSecondaryDisks.STRING.state == enum_DiskResourceStatusAsyncReplicationStatusState[_]
    input.Body.satisfiesPzs == BOOLEAN
    input.Body.selfLink == STRING
    input.Body.sizeGb == STRING
    input.Body.sourceConsistencyGroupPolicy == STRING
    input.Body.sourceConsistencyGroupPolicyId == STRING
    input.Body.sourceDisk == STRING
    input.Body.sourceDiskId == STRING
    input.Body.sourceImage == STRING
    input.Body.sourceImageEncryptionKey.kmsKeyName == STRING
    input.Body.sourceImageEncryptionKey.kmsKeyServiceAccount == STRING
    input.Body.sourceImageEncryptionKey.rawKey == STRING
    input.Body.sourceImageEncryptionKey.rsaEncryptedKey == STRING
    input.Body.sourceImageEncryptionKey.sha256 == STRING
    input.Body.sourceImageId == STRING
    input.Body.sourceInstantSnapshot == STRING
    input.Body.sourceInstantSnapshotId == STRING
    input.Body.sourceSnapshot == STRING
    input.Body.sourceSnapshotEncryptionKey.kmsKeyName == STRING
    input.Body.sourceSnapshotEncryptionKey.kmsKeyServiceAccount == STRING
    input.Body.sourceSnapshotEncryptionKey.rawKey == STRING
    input.Body.sourceSnapshotEncryptionKey.rsaEncryptedKey == STRING
    input.Body.sourceSnapshotEncryptionKey.sha256 == STRING
    input.Body.sourceSnapshotId == STRING
    input.Body.sourceStorageObject == STRING
    input.Body.status == enum_DiskStatus[_]
    input.Body.storagePool == STRING
    input.Body.type == STRING
    input.Body.users[_] == STRING
    input.Body.zone == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.Qs.requestId == STRING
    input.Qs.sourceImage == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.regionDisks.list

valid {
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.Qs.filter == STRING
    input.Qs.maxResults == INTEGER
    input.Qs.orderBy == STRING
    input.Qs.pageToken == STRING
    input.Qs.returnPartialSuccess == BOOLEAN
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.regionDisks.removeResourcePolicies

valid {
    input.Body.resourcePolicies[_] == STRING
    input.ReqMap.disk == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.regionDisks.resize

valid {
    input.Body.sizeGb == STRING
    input.ReqMap.disk == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.regionDisks.setIamPolicy

enum_AuditLogConfigLogType := [ "ADMIN_READ", "DATA_READ", "DATA_WRITE", "LOG_TYPE_UNSPECIFIED" ]
enum_AuthorizationLoggingOptionsPermissionType := [ "ADMIN_READ", "ADMIN_WRITE", "DATA_READ", "DATA_WRITE", "PERMISSION_TYPE_UNSPECIFIED" ]
enum_ConditionIam := [ "APPROVER", "ATTRIBUTION", "AUTHORITY", "CREDENTIALS_TYPE", "CREDS_ASSERTION", "JUSTIFICATION_TYPE", "NO_ATTR", "SECURITY_REALM" ]
enum_ConditionOp := [ "DISCHARGED", "EQUALS", "IN", "NOT_EQUALS", "NOT_IN", "NO_OP" ]
enum_ConditionSys := [ "IP", "NAME", "NO_ATTR", "REGION", "SERVICE" ]
enum_LogConfigCloudAuditOptionsLogName := [ "ADMIN_ACTIVITY", "DATA_ACCESS", "UNSPECIFIED_LOG_NAME" ]
enum_LogConfigDataAccessOptionsLogMode := [ "LOG_FAIL_CLOSED", "LOG_MODE_UNSPECIFIED" ]
enum_RuleAction := [ "ALLOW", "ALLOW_WITH_LOG", "DENY", "DENY_WITH_LOG", "LOG", "NO_ACTION" ]

valid {
    input.Body.bindings[_].bindingId == STRING
    input.Body.bindings[_].condition.description == STRING
    input.Body.bindings[_].condition.expression == STRING
    input.Body.bindings[_].condition.location == STRING
    input.Body.bindings[_].condition.title == STRING
    input.Body.bindings[_].members[_] == STRING
    input.Body.bindings[_].role == STRING
    input.Body.etag == STRING
    input.Body.policy.auditConfigs[_].auditLogConfigs[_].exemptedMembers[_] == STRING
    input.Body.policy.auditConfigs[_].auditLogConfigs[_].ignoreChildExemptions == BOOLEAN
    input.Body.policy.auditConfigs[_].auditLogConfigs[_].logType == enum_AuditLogConfigLogType[_]
    input.Body.policy.auditConfigs[_].exemptedMembers[_] == STRING
    input.Body.policy.auditConfigs[_].service == STRING
    input.Body.policy.bindings[_].bindingId == 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.rules[_].action == enum_RuleAction[_]
    input.Body.policy.rules[_].conditions[_].iam == enum_ConditionIam[_]
    input.Body.policy.rules[_].conditions[_].op == enum_ConditionOp[_]
    input.Body.policy.rules[_].conditions[_].svc == STRING
    input.Body.policy.rules[_].conditions[_].sys == enum_ConditionSys[_]
    input.Body.policy.rules[_].conditions[_].values[_] == STRING
    input.Body.policy.rules[_].description == STRING
    input.Body.policy.rules[_].ins[_] == STRING
    input.Body.policy.rules[_].logConfigs[_].cloudAudit.authorizationLoggingOptions.permissionType == enum_AuthorizationLoggingOptionsPermissionType[_]
    input.Body.policy.rules[_].logConfigs[_].cloudAudit.logName == enum_LogConfigCloudAuditOptionsLogName[_]
    input.Body.policy.rules[_].logConfigs[_].counter.customFields[_].name == STRING
    input.Body.policy.rules[_].logConfigs[_].counter.customFields[_].value == STRING
    input.Body.policy.rules[_].logConfigs[_].counter.field == STRING
    input.Body.policy.rules[_].logConfigs[_].counter.metric == STRING
    input.Body.policy.rules[_].logConfigs[_].dataAccess.logMode == enum_LogConfigDataAccessOptionsLogMode[_]
    input.Body.policy.rules[_].notIns[_] == STRING
    input.Body.policy.rules[_].permissions[_] == STRING
    input.Body.policy.version == INTEGER
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.ReqMap.resource == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.regionDisks.setLabels

valid {
    input.Body.labelFingerprint == STRING
    input.Body.labels.STRING == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.ReqMap.resource == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.regionDisks.startAsyncReplication

valid {
    input.Body.asyncSecondaryDisk == STRING
    input.ReqMap.disk == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.regionDisks.stopAsyncReplication

valid {
    input.ReqMap.disk == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.regionDisks.stopGroupAsyncReplication

valid {
    input.Body.resourcePolicy == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.regionDisks.testIamPermissions

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

compute.regionDisks.update

enum_DiskArchitecture := [ "ARCHITECTURE_UNSPECIFIED", "ARM64", "X86_64" ]
enum_DiskResourceStatusAsyncReplicationStatusState := [ "ACTIVE", "CREATED", "STARTING", "STATE_UNSPECIFIED", "STOPPED", "STOPPING" ]
enum_DiskStatus := [ "CREATING", "DELETING", "FAILED", "READY", "RESTORING", "UNAVAILABLE" ]
enum_GuestOsFeatureType := [ "FEATURE_TYPE_UNSPECIFIED", "GVNIC", "IDPF", "MULTI_IP_SUBNET", "SECURE_BOOT", "SEV_CAPABLE", "SEV_LIVE_MIGRATABLE", "SEV_LIVE_MIGRATABLE_V2", "SEV_SNP_CAPABLE", "UEFI_COMPATIBLE", "VIRTIO_SCSI_MULTIQUEUE", "WINDOWS" ]

valid {
    input.Body.architecture == enum_DiskArchitecture[_]
    input.Body.asyncPrimaryDisk.consistencyGroupPolicy == STRING
    input.Body.asyncPrimaryDisk.consistencyGroupPolicyId == STRING
    input.Body.asyncPrimaryDisk.disk == STRING
    input.Body.asyncPrimaryDisk.diskId == STRING
    input.Body.asyncSecondaryDisks.STRING.asyncReplicationDisk.consistencyGroupPolicy == STRING
    input.Body.asyncSecondaryDisks.STRING.asyncReplicationDisk.consistencyGroupPolicyId == STRING
    input.Body.asyncSecondaryDisks.STRING.asyncReplicationDisk.disk == STRING
    input.Body.asyncSecondaryDisks.STRING.asyncReplicationDisk.diskId == STRING
    input.Body.creationTimestamp == STRING
    input.Body.description == STRING
    input.Body.diskEncryptionKey.kmsKeyName == STRING
    input.Body.diskEncryptionKey.kmsKeyServiceAccount == STRING
    input.Body.diskEncryptionKey.rawKey == STRING
    input.Body.diskEncryptionKey.rsaEncryptedKey == STRING
    input.Body.diskEncryptionKey.sha256 == STRING
    input.Body.enableConfidentialCompute == BOOLEAN
    input.Body.guestOsFeatures[_].type == enum_GuestOsFeatureType[_]
    input.Body.id == STRING
    input.Body.kind == STRING
    input.Body.labelFingerprint == STRING
    input.Body.labels.STRING == STRING
    input.Body.lastAttachTimestamp == STRING
    input.Body.lastDetachTimestamp == STRING
    input.Body.licenseCodes[_] == STRING
    input.Body.licenses[_] == STRING
    input.Body.locationHint == STRING
    input.Body.name == STRING
    input.Body.options == STRING
    input.Body.params.resourceManagerTags.STRING == STRING
    input.Body.physicalBlockSizeBytes == STRING
    input.Body.provisionedIops == STRING
    input.Body.provisionedThroughput == STRING
    input.Body.region == STRING
    input.Body.replicaZones[_] == STRING
    input.Body.resourcePolicies[_] == STRING
    input.Body.resourceStatus.asyncPrimaryDisk.state == enum_DiskResourceStatusAsyncReplicationStatusState[_]
    input.Body.resourceStatus.asyncSecondaryDisks.STRING.state == enum_DiskResourceStatusAsyncReplicationStatusState[_]
    input.Body.satisfiesPzs == BOOLEAN
    input.Body.selfLink == STRING
    input.Body.sizeGb == STRING
    input.Body.sourceConsistencyGroupPolicy == STRING
    input.Body.sourceConsistencyGroupPolicyId == STRING
    input.Body.sourceDisk == STRING
    input.Body.sourceDiskId == STRING
    input.Body.sourceImage == STRING
    input.Body.sourceImageEncryptionKey.kmsKeyName == STRING
    input.Body.sourceImageEncryptionKey.kmsKeyServiceAccount == STRING
    input.Body.sourceImageEncryptionKey.rawKey == STRING
    input.Body.sourceImageEncryptionKey.rsaEncryptedKey == STRING
    input.Body.sourceImageEncryptionKey.sha256 == STRING
    input.Body.sourceImageId == STRING
    input.Body.sourceInstantSnapshot == STRING
    input.Body.sourceInstantSnapshotId == STRING
    input.Body.sourceSnapshot == STRING
    input.Body.sourceSnapshotEncryptionKey.kmsKeyName == STRING
    input.Body.sourceSnapshotEncryptionKey.kmsKeyServiceAccount == STRING
    input.Body.sourceSnapshotEncryptionKey.rawKey == STRING
    input.Body.sourceSnapshotEncryptionKey.rsaEncryptedKey == STRING
    input.Body.sourceSnapshotEncryptionKey.sha256 == STRING
    input.Body.sourceSnapshotId == STRING
    input.Body.sourceStorageObject == STRING
    input.Body.status == enum_DiskStatus[_]
    input.Body.storagePool == STRING
    input.Body.type == STRING
    input.Body.users[_] == STRING
    input.Body.zone == STRING
    input.ReqMap.disk == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.Qs.paths == STRING
    input.Qs.requestId == STRING
    input.Qs.updateMask == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.regionHealthCheckServices.aggregatedList

valid {
    input.ReqMap.ProjectID == STRING
    input.Qs.filter == STRING
    input.Qs.includeAllScopes == BOOLEAN
    input.Qs.maxResults == INTEGER
    input.Qs.orderBy == STRING
    input.Qs.pageToken == STRING
    input.Qs.returnPartialSuccess == BOOLEAN
    input.Qs.serviceProjectNumber == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.regionHealthCheckServices.delete

valid {
    input.ReqMap.healthCheckService == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.regionHealthCheckServices.get

valid {
    input.ReqMap.healthCheckService == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.regionHealthCheckServices.insert

enum_HealthCheckServiceHealthStatusAggregationPolicy := [ "AND", "NO_AGGREGATION" ]

valid {
    input.Body.creationTimestamp == STRING
    input.Body.description == STRING
    input.Body.fingerprint == STRING
    input.Body.healthChecks[_] == STRING
    input.Body.healthStatusAggregationPolicy == enum_HealthCheckServiceHealthStatusAggregationPolicy[_]
    input.Body.id == STRING
    input.Body.kind == STRING
    input.Body.name == STRING
    input.Body.networkEndpointGroups[_] == STRING
    input.Body.notificationEndpoints[_] == STRING
    input.Body.region == STRING
    input.Body.selfLink == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.regionHealthCheckServices.list

valid {
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.Qs.filter == STRING
    input.Qs.maxResults == INTEGER
    input.Qs.orderBy == STRING
    input.Qs.pageToken == STRING
    input.Qs.returnPartialSuccess == BOOLEAN
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.regionHealthCheckServices.patch

enum_HealthCheckServiceHealthStatusAggregationPolicy := [ "AND", "NO_AGGREGATION" ]

valid {
    input.Body.creationTimestamp == STRING
    input.Body.description == STRING
    input.Body.fingerprint == STRING
    input.Body.healthChecks[_] == STRING
    input.Body.healthStatusAggregationPolicy == enum_HealthCheckServiceHealthStatusAggregationPolicy[_]
    input.Body.id == STRING
    input.Body.kind == STRING
    input.Body.name == STRING
    input.Body.networkEndpointGroups[_] == STRING
    input.Body.notificationEndpoints[_] == STRING
    input.Body.region == STRING
    input.Body.selfLink == STRING
    input.ReqMap.healthCheckService == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.regionHealthCheckServices.testIamPermissions

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

compute.regionHealthChecks.delete

valid {
    input.ReqMap.healthCheck == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.regionHealthChecks.get

valid {
    input.ReqMap.healthCheck == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.regionHealthChecks.insert

enum_GRPCHealthCheckPortSpecification := [ "USE_FIXED_PORT", "USE_NAMED_PORT", "USE_SERVING_PORT" ]
enum_HTTP2HealthCheckPortSpecification := [ "USE_FIXED_PORT", "USE_NAMED_PORT", "USE_SERVING_PORT" ]
enum_HTTP2HealthCheckProxyHeader := [ "NONE", "PROXY_V1" ]
enum_HTTPHealthCheckPortSpecification := [ "USE_FIXED_PORT", "USE_NAMED_PORT", "USE_SERVING_PORT" ]
enum_HTTPHealthCheckProxyHeader := [ "NONE", "PROXY_V1" ]
enum_HTTPSHealthCheckPortSpecification := [ "USE_FIXED_PORT", "USE_NAMED_PORT", "USE_SERVING_PORT" ]
enum_HTTPSHealthCheckProxyHeader := [ "NONE", "PROXY_V1" ]
enum_HealthCheckType := [ "GRPC", "HTTP", "HTTP2", "HTTPS", "INVALID", "SSL", "TCP" ]
enum_SSLHealthCheckPortSpecification := [ "USE_FIXED_PORT", "USE_NAMED_PORT", "USE_SERVING_PORT" ]
enum_SSLHealthCheckProxyHeader := [ "NONE", "PROXY_V1" ]
enum_TCPHealthCheckPortSpecification := [ "USE_FIXED_PORT", "USE_NAMED_PORT", "USE_SERVING_PORT" ]
enum_TCPHealthCheckProxyHeader := [ "NONE", "PROXY_V1" ]

valid {
    input.Body.checkIntervalSec == INTEGER
    input.Body.creationTimestamp == STRING
    input.Body.description == STRING
    input.Body.grpcHealthCheck.grpcServiceName == STRING
    input.Body.grpcHealthCheck.port == INTEGER
    input.Body.grpcHealthCheck.portName == STRING
    input.Body.grpcHealthCheck.portSpecification == enum_GRPCHealthCheckPortSpecification[_]
    input.Body.healthyThreshold == INTEGER
    input.Body.http2HealthCheck.host == STRING
    input.Body.http2HealthCheck.port == INTEGER
    input.Body.http2HealthCheck.portName == STRING
    input.Body.http2HealthCheck.portSpecification == enum_HTTP2HealthCheckPortSpecification[_]
    input.Body.http2HealthCheck.proxyHeader == enum_HTTP2HealthCheckProxyHeader[_]
    input.Body.http2HealthCheck.requestPath == STRING
    input.Body.http2HealthCheck.response == STRING
    input.Body.httpHealthCheck.host == STRING
    input.Body.httpHealthCheck.port == INTEGER
    input.Body.httpHealthCheck.portName == STRING
    input.Body.httpHealthCheck.portSpecification == enum_HTTPHealthCheckPortSpecification[_]
    input.Body.httpHealthCheck.proxyHeader == enum_HTTPHealthCheckProxyHeader[_]
    input.Body.httpHealthCheck.requestPath == STRING
    input.Body.httpHealthCheck.response == STRING
    input.Body.httpsHealthCheck.host == STRING
    input.Body.httpsHealthCheck.port == INTEGER
    input.Body.httpsHealthCheck.portName == STRING
    input.Body.httpsHealthCheck.portSpecification == enum_HTTPSHealthCheckPortSpecification[_]
    input.Body.httpsHealthCheck.proxyHeader == enum_HTTPSHealthCheckProxyHeader[_]
    input.Body.httpsHealthCheck.requestPath == STRING
    input.Body.httpsHealthCheck.response == STRING
    input.Body.id == STRING
    input.Body.kind == STRING
    input.Body.logConfig.enable == BOOLEAN
    input.Body.name == STRING
    input.Body.region == STRING
    input.Body.selfLink == STRING
    input.Body.sslHealthCheck.port == INTEGER
    input.Body.sslHealthCheck.portName == STRING
    input.Body.sslHealthCheck.portSpecification == enum_SSLHealthCheckPortSpecification[_]
    input.Body.sslHealthCheck.proxyHeader == enum_SSLHealthCheckProxyHeader[_]
    input.Body.sslHealthCheck.request == STRING
    input.Body.sslHealthCheck.response == STRING
    input.Body.tcpHealthCheck.port == INTEGER
    input.Body.tcpHealthCheck.portName == STRING
    input.Body.tcpHealthCheck.portSpecification == enum_TCPHealthCheckPortSpecification[_]
    input.Body.tcpHealthCheck.proxyHeader == enum_TCPHealthCheckProxyHeader[_]
    input.Body.tcpHealthCheck.request == STRING
    input.Body.tcpHealthCheck.response == STRING
    input.Body.timeoutSec == INTEGER
    input.Body.type == enum_HealthCheckType[_]
    input.Body.unhealthyThreshold == INTEGER
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.regionHealthChecks.list

valid {
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.Qs.filter == STRING
    input.Qs.maxResults == INTEGER
    input.Qs.orderBy == STRING
    input.Qs.pageToken == STRING
    input.Qs.returnPartialSuccess == BOOLEAN
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.regionHealthChecks.patch

enum_GRPCHealthCheckPortSpecification := [ "USE_FIXED_PORT", "USE_NAMED_PORT", "USE_SERVING_PORT" ]
enum_HTTP2HealthCheckPortSpecification := [ "USE_FIXED_PORT", "USE_NAMED_PORT", "USE_SERVING_PORT" ]
enum_HTTP2HealthCheckProxyHeader := [ "NONE", "PROXY_V1" ]
enum_HTTPHealthCheckPortSpecification := [ "USE_FIXED_PORT", "USE_NAMED_PORT", "USE_SERVING_PORT" ]
enum_HTTPHealthCheckProxyHeader := [ "NONE", "PROXY_V1" ]
enum_HTTPSHealthCheckPortSpecification := [ "USE_FIXED_PORT", "USE_NAMED_PORT", "USE_SERVING_PORT" ]
enum_HTTPSHealthCheckProxyHeader := [ "NONE", "PROXY_V1" ]
enum_HealthCheckType := [ "GRPC", "HTTP", "HTTP2", "HTTPS", "INVALID", "SSL", "TCP" ]
enum_SSLHealthCheckPortSpecification := [ "USE_FIXED_PORT", "USE_NAMED_PORT", "USE_SERVING_PORT" ]
enum_SSLHealthCheckProxyHeader := [ "NONE", "PROXY_V1" ]
enum_TCPHealthCheckPortSpecification := [ "USE_FIXED_PORT", "USE_NAMED_PORT", "USE_SERVING_PORT" ]
enum_TCPHealthCheckProxyHeader := [ "NONE", "PROXY_V1" ]

valid {
    input.Body.checkIntervalSec == INTEGER
    input.Body.creationTimestamp == STRING
    input.Body.description == STRING
    input.Body.grpcHealthCheck.grpcServiceName == STRING
    input.Body.grpcHealthCheck.port == INTEGER
    input.Body.grpcHealthCheck.portName == STRING
    input.Body.grpcHealthCheck.portSpecification == enum_GRPCHealthCheckPortSpecification[_]
    input.Body.healthyThreshold == INTEGER
    input.Body.http2HealthCheck.host == STRING
    input.Body.http2HealthCheck.port == INTEGER
    input.Body.http2HealthCheck.portName == STRING
    input.Body.http2HealthCheck.portSpecification == enum_HTTP2HealthCheckPortSpecification[_]
    input.Body.http2HealthCheck.proxyHeader == enum_HTTP2HealthCheckProxyHeader[_]
    input.Body.http2HealthCheck.requestPath == STRING
    input.Body.http2HealthCheck.response == STRING
    input.Body.httpHealthCheck.host == STRING
    input.Body.httpHealthCheck.port == INTEGER
    input.Body.httpHealthCheck.portName == STRING
    input.Body.httpHealthCheck.portSpecification == enum_HTTPHealthCheckPortSpecification[_]
    input.Body.httpHealthCheck.proxyHeader == enum_HTTPHealthCheckProxyHeader[_]
    input.Body.httpHealthCheck.requestPath == STRING
    input.Body.httpHealthCheck.response == STRING
    input.Body.httpsHealthCheck.host == STRING
    input.Body.httpsHealthCheck.port == INTEGER
    input.Body.httpsHealthCheck.portName == STRING
    input.Body.httpsHealthCheck.portSpecification == enum_HTTPSHealthCheckPortSpecification[_]
    input.Body.httpsHealthCheck.proxyHeader == enum_HTTPSHealthCheckProxyHeader[_]
    input.Body.httpsHealthCheck.requestPath == STRING
    input.Body.httpsHealthCheck.response == STRING
    input.Body.id == STRING
    input.Body.kind == STRING
    input.Body.logConfig.enable == BOOLEAN
    input.Body.name == STRING
    input.Body.region == STRING
    input.Body.selfLink == STRING
    input.Body.sslHealthCheck.port == INTEGER
    input.Body.sslHealthCheck.portName == STRING
    input.Body.sslHealthCheck.portSpecification == enum_SSLHealthCheckPortSpecification[_]
    input.Body.sslHealthCheck.proxyHeader == enum_SSLHealthCheckProxyHeader[_]
    input.Body.sslHealthCheck.request == STRING
    input.Body.sslHealthCheck.response == STRING
    input.Body.tcpHealthCheck.port == INTEGER
    input.Body.tcpHealthCheck.portName == STRING
    input.Body.tcpHealthCheck.portSpecification == enum_TCPHealthCheckPortSpecification[_]
    input.Body.tcpHealthCheck.proxyHeader == enum_TCPHealthCheckProxyHeader[_]
    input.Body.tcpHealthCheck.request == STRING
    input.Body.tcpHealthCheck.response == STRING
    input.Body.timeoutSec == INTEGER
    input.Body.type == enum_HealthCheckType[_]
    input.Body.unhealthyThreshold == INTEGER
    input.ReqMap.healthCheck == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.regionHealthChecks.testIamPermissions

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

compute.regionHealthChecks.update

enum_GRPCHealthCheckPortSpecification := [ "USE_FIXED_PORT", "USE_NAMED_PORT", "USE_SERVING_PORT" ]
enum_HTTP2HealthCheckPortSpecification := [ "USE_FIXED_PORT", "USE_NAMED_PORT", "USE_SERVING_PORT" ]
enum_HTTP2HealthCheckProxyHeader := [ "NONE", "PROXY_V1" ]
enum_HTTPHealthCheckPortSpecification := [ "USE_FIXED_PORT", "USE_NAMED_PORT", "USE_SERVING_PORT" ]
enum_HTTPHealthCheckProxyHeader := [ "NONE", "PROXY_V1" ]
enum_HTTPSHealthCheckPortSpecification := [ "USE_FIXED_PORT", "USE_NAMED_PORT", "USE_SERVING_PORT" ]
enum_HTTPSHealthCheckProxyHeader := [ "NONE", "PROXY_V1" ]
enum_HealthCheckType := [ "GRPC", "HTTP", "HTTP2", "HTTPS", "INVALID", "SSL", "TCP" ]
enum_SSLHealthCheckPortSpecification := [ "USE_FIXED_PORT", "USE_NAMED_PORT", "USE_SERVING_PORT" ]
enum_SSLHealthCheckProxyHeader := [ "NONE", "PROXY_V1" ]
enum_TCPHealthCheckPortSpecification := [ "USE_FIXED_PORT", "USE_NAMED_PORT", "USE_SERVING_PORT" ]
enum_TCPHealthCheckProxyHeader := [ "NONE", "PROXY_V1" ]

valid {
    input.Body.checkIntervalSec == INTEGER
    input.Body.creationTimestamp == STRING
    input.Body.description == STRING
    input.Body.grpcHealthCheck.grpcServiceName == STRING
    input.Body.grpcHealthCheck.port == INTEGER
    input.Body.grpcHealthCheck.portName == STRING
    input.Body.grpcHealthCheck.portSpecification == enum_GRPCHealthCheckPortSpecification[_]
    input.Body.healthyThreshold == INTEGER
    input.Body.http2HealthCheck.host == STRING
    input.Body.http2HealthCheck.port == INTEGER
    input.Body.http2HealthCheck.portName == STRING
    input.Body.http2HealthCheck.portSpecification == enum_HTTP2HealthCheckPortSpecification[_]
    input.Body.http2HealthCheck.proxyHeader == enum_HTTP2HealthCheckProxyHeader[_]
    input.Body.http2HealthCheck.requestPath == STRING
    input.Body.http2HealthCheck.response == STRING
    input.Body.httpHealthCheck.host == STRING
    input.Body.httpHealthCheck.port == INTEGER
    input.Body.httpHealthCheck.portName == STRING
    input.Body.httpHealthCheck.portSpecification == enum_HTTPHealthCheckPortSpecification[_]
    input.Body.httpHealthCheck.proxyHeader == enum_HTTPHealthCheckProxyHeader[_]
    input.Body.httpHealthCheck.requestPath == STRING
    input.Body.httpHealthCheck.response == STRING
    input.Body.httpsHealthCheck.host == STRING
    input.Body.httpsHealthCheck.port == INTEGER
    input.Body.httpsHealthCheck.portName == STRING
    input.Body.httpsHealthCheck.portSpecification == enum_HTTPSHealthCheckPortSpecification[_]
    input.Body.httpsHealthCheck.proxyHeader == enum_HTTPSHealthCheckProxyHeader[_]
    input.Body.httpsHealthCheck.requestPath == STRING
    input.Body.httpsHealthCheck.response == STRING
    input.Body.id == STRING
    input.Body.kind == STRING
    input.Body.logConfig.enable == BOOLEAN
    input.Body.name == STRING
    input.Body.region == STRING
    input.Body.selfLink == STRING
    input.Body.sslHealthCheck.port == INTEGER
    input.Body.sslHealthCheck.portName == STRING
    input.Body.sslHealthCheck.portSpecification == enum_SSLHealthCheckPortSpecification[_]
    input.Body.sslHealthCheck.proxyHeader == enum_SSLHealthCheckProxyHeader[_]
    input.Body.sslHealthCheck.request == STRING
    input.Body.sslHealthCheck.response == STRING
    input.Body.tcpHealthCheck.port == INTEGER
    input.Body.tcpHealthCheck.portName == STRING
    input.Body.tcpHealthCheck.portSpecification == enum_TCPHealthCheckPortSpecification[_]
    input.Body.tcpHealthCheck.proxyHeader == enum_TCPHealthCheckProxyHeader[_]
    input.Body.tcpHealthCheck.request == STRING
    input.Body.tcpHealthCheck.response == STRING
    input.Body.timeoutSec == INTEGER
    input.Body.type == enum_HealthCheckType[_]
    input.Body.unhealthyThreshold == INTEGER
    input.ReqMap.healthCheck == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.regionInstanceGroupManagers.abandonInstances

valid {
    input.Body.instances[_] == STRING
    input.ReqMap.instanceGroupManager == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.regionInstanceGroupManagers.applyUpdatesToInstances

enum_RegionInstanceGroupManagersApplyUpdatesRequestMinimalAction := [ "NONE", "REFRESH", "REPLACE", "RESTART" ]
enum_RegionInstanceGroupManagersApplyUpdatesRequestMostDisruptiveAllowedAction := [ "NONE", "REFRESH", "REPLACE", "RESTART" ]

valid {
    input.Body.allInstances == BOOLEAN
    input.Body.instances[_] == STRING
    input.Body.minimalAction == enum_RegionInstanceGroupManagersApplyUpdatesRequestMinimalAction[_]
    input.Body.mostDisruptiveAllowedAction == enum_RegionInstanceGroupManagersApplyUpdatesRequestMostDisruptiveAllowedAction[_]
    input.ReqMap.instanceGroupManager == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.regionInstanceGroupManagers.createInstances

enum_PerInstanceConfigStatus := [ "APPLYING", "DELETING", "EFFECTIVE", "NONE", "UNAPPLIED", "UNAPPLIED_DELETION" ]
enum_PreservedStatePreservedDiskAutoDelete := [ "NEVER", "ON_PERMANENT_INSTANCE_DELETION" ]
enum_PreservedStatePreservedDiskMode := [ "READ_ONLY", "READ_WRITE" ]
enum_PreservedStatePreservedNetworkIpAutoDelete := [ "NEVER", "ON_PERMANENT_INSTANCE_DELETION" ]

valid {
    input.Body.instances[_].fingerprint == STRING
    input.Body.instances[_].name == STRING
    input.Body.instances[_].preservedState.disks.STRING.autoDelete == enum_PreservedStatePreservedDiskAutoDelete[_]
    input.Body.instances[_].preservedState.disks.STRING.mode == enum_PreservedStatePreservedDiskMode[_]
    input.Body.instances[_].preservedState.disks.STRING.source == STRING
    input.Body.instances[_].preservedState.externalIPs.STRING.autoDelete == enum_PreservedStatePreservedNetworkIpAutoDelete[_]
    input.Body.instances[_].preservedState.externalIPs.STRING.ipAddress.address == STRING
    input.Body.instances[_].preservedState.externalIPs.STRING.ipAddress.literal == STRING
    input.Body.instances[_].preservedState.internalIPs.STRING.autoDelete == enum_PreservedStatePreservedNetworkIpAutoDelete[_]
    input.Body.instances[_].preservedState.internalIPs.STRING.ipAddress.address == STRING
    input.Body.instances[_].preservedState.internalIPs.STRING.ipAddress.literal == STRING
    input.Body.instances[_].preservedState.metadata.STRING == STRING
    input.Body.instances[_].status == enum_PerInstanceConfigStatus[_]
    input.ReqMap.instanceGroupManager == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.regionInstanceGroupManagers.delete

valid {
    input.ReqMap.instanceGroupManager == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.regionInstanceGroupManagers.deleteInstances

valid {
    input.Body.instances[_] == STRING
    input.Body.skipInstancesOnValidationError == BOOLEAN
    input.ReqMap.instanceGroupManager == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.regionInstanceGroupManagers.deletePerInstanceConfigs

valid {
    input.Body.names[_] == STRING
    input.ReqMap.instanceGroupManager == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.regionInstanceGroupManagers.get

valid {
    input.ReqMap.instanceGroupManager == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.regionInstanceGroupManagers.insert

enum_DistributionPolicyTargetShape := [ "ANY", "ANY_SINGLE_ZONE", "BALANCED", "EVEN" ]
enum_InstanceGroupManagerInstanceLifecyclePolicyDefaultActionOnFailure := [ "DO_NOTHING", "REPAIR" ]
enum_InstanceGroupManagerInstanceLifecyclePolicyForceUpdateOnRepair := [ "NO", "YES" ]
enum_InstanceGroupManagerListManagedInstancesResults := [ "PAGELESS", "PAGINATED" ]
enum_InstanceGroupManagerUpdatePolicyInstanceRedistributionType := [ "NONE", "PROACTIVE" ]
enum_InstanceGroupManagerUpdatePolicyMinimalAction := [ "NONE", "REFRESH", "REPLACE", "RESTART" ]
enum_InstanceGroupManagerUpdatePolicyMostDisruptiveAllowedAction := [ "NONE", "REFRESH", "REPLACE", "RESTART" ]
enum_InstanceGroupManagerUpdatePolicyReplacementMethod := [ "RECREATE", "SUBSTITUTE" ]
enum_InstanceGroupManagerUpdatePolicyType := [ "OPPORTUNISTIC", "PROACTIVE" ]
enum_StatefulPolicyPreservedStateDiskDeviceAutoDelete := [ "NEVER", "ON_PERMANENT_INSTANCE_DELETION" ]
enum_StatefulPolicyPreservedStateNetworkIpAutoDelete := [ "NEVER", "ON_PERMANENT_INSTANCE_DELETION" ]

valid {
    input.Body.allInstancesConfig.properties.labels.STRING == STRING
    input.Body.allInstancesConfig.properties.metadata.STRING == STRING
    input.Body.autoHealingPolicies[_].healthCheck == STRING
    input.Body.autoHealingPolicies[_].initialDelaySec == INTEGER
    input.Body.baseInstanceName == STRING
    input.Body.creationTimestamp == STRING
    input.Body.currentActions.abandoning == INTEGER
    input.Body.currentActions.creating == INTEGER
    input.Body.currentActions.creatingWithoutRetries == INTEGER
    input.Body.currentActions.deleting == INTEGER
    input.Body.currentActions.none == INTEGER
    input.Body.currentActions.recreating == INTEGER
    input.Body.currentActions.refreshing == INTEGER
    input.Body.currentActions.restarting == INTEGER
    input.Body.currentActions.resuming == INTEGER
    input.Body.currentActions.starting == INTEGER
    input.Body.currentActions.stopping == INTEGER
    input.Body.currentActions.suspending == INTEGER
    input.Body.currentActions.verifying == INTEGER
    input.Body.description == STRING
    input.Body.distributionPolicy.targetShape == enum_DistributionPolicyTargetShape[_]
    input.Body.distributionPolicy.zones[_].zone == STRING
    input.Body.fingerprint == STRING
    input.Body.id == STRING
    input.Body.instanceGroup == STRING
    input.Body.instanceLifecyclePolicy.defaultActionOnFailure == enum_InstanceGroupManagerInstanceLifecyclePolicyDefaultActionOnFailure[_]
    input.Body.instanceLifecyclePolicy.forceUpdateOnRepair == enum_InstanceGroupManagerInstanceLifecyclePolicyForceUpdateOnRepair[_]
    input.Body.instanceTemplate == STRING
    input.Body.kind == STRING
    input.Body.listManagedInstancesResults == enum_InstanceGroupManagerListManagedInstancesResults[_]
    input.Body.name == STRING
    input.Body.namedPorts[_].name == STRING
    input.Body.namedPorts[_].port == INTEGER
    input.Body.region == STRING
    input.Body.selfLink == STRING
    input.Body.statefulPolicy.preservedState.disks.STRING.autoDelete == enum_StatefulPolicyPreservedStateDiskDeviceAutoDelete[_]
    input.Body.statefulPolicy.preservedState.externalIPs.STRING.autoDelete == enum_StatefulPolicyPreservedStateNetworkIpAutoDelete[_]
    input.Body.statefulPolicy.preservedState.internalIPs.STRING.autoDelete == enum_StatefulPolicyPreservedStateNetworkIpAutoDelete[_]
    input.Body.status.allInstancesConfig.currentRevision == STRING
    input.Body.status.allInstancesConfig.effective == BOOLEAN
    input.Body.status.autoscaler == STRING
    input.Body.status.isStable == BOOLEAN
    input.Body.status.stateful.hasStatefulConfig == BOOLEAN
    input.Body.status.stateful.perInstanceConfigs.allEffective == BOOLEAN
    input.Body.status.versionTarget.isReached == BOOLEAN
    input.Body.targetPools[_] == STRING
    input.Body.targetSize == INTEGER
    input.Body.updatePolicy.instanceRedistributionType == enum_InstanceGroupManagerUpdatePolicyInstanceRedistributionType[_]
    input.Body.updatePolicy.maxSurge.calculated == INTEGER
    input.Body.updatePolicy.maxSurge.fixed == INTEGER
    input.Body.updatePolicy.maxSurge.percent == INTEGER
    input.Body.updatePolicy.maxUnavailable.calculated == INTEGER
    input.Body.updatePolicy.maxUnavailable.fixed == INTEGER
    input.Body.updatePolicy.maxUnavailable.percent == INTEGER
    input.Body.updatePolicy.minimalAction == enum_InstanceGroupManagerUpdatePolicyMinimalAction[_]
    input.Body.updatePolicy.mostDisruptiveAllowedAction == enum_InstanceGroupManagerUpdatePolicyMostDisruptiveAllowedAction[_]
    input.Body.updatePolicy.replacementMethod == enum_InstanceGroupManagerUpdatePolicyReplacementMethod[_]
    input.Body.updatePolicy.type == enum_InstanceGroupManagerUpdatePolicyType[_]
    input.Body.versions[_].instanceTemplate == STRING
    input.Body.versions[_].name == STRING
    input.Body.versions[_].targetSize.calculated == INTEGER
    input.Body.versions[_].targetSize.fixed == INTEGER
    input.Body.versions[_].targetSize.percent == INTEGER
    input.Body.zone == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.regionInstanceGroupManagers.list

valid {
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.Qs.filter == STRING
    input.Qs.maxResults == INTEGER
    input.Qs.orderBy == STRING
    input.Qs.pageToken == STRING
    input.Qs.returnPartialSuccess == BOOLEAN
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.regionInstanceGroupManagers.listErrors

valid {
    input.ReqMap.instanceGroupManager == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.Qs.filter == STRING
    input.Qs.maxResults == INTEGER
    input.Qs.orderBy == STRING
    input.Qs.pageToken == STRING
    input.Qs.returnPartialSuccess == BOOLEAN
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.regionInstanceGroupManagers.listManagedInstances

valid {
    input.ReqMap.instanceGroupManager == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.Qs.filter == STRING
    input.Qs.maxResults == INTEGER
    input.Qs.orderBy == STRING
    input.Qs.pageToken == STRING
    input.Qs.returnPartialSuccess == BOOLEAN
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.regionInstanceGroupManagers.listPerInstanceConfigs

valid {
    input.ReqMap.instanceGroupManager == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.Qs.filter == STRING
    input.Qs.maxResults == INTEGER
    input.Qs.orderBy == STRING
    input.Qs.pageToken == STRING
    input.Qs.returnPartialSuccess == BOOLEAN
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.regionInstanceGroupManagers.patch

enum_DistributionPolicyTargetShape := [ "ANY", "ANY_SINGLE_ZONE", "BALANCED", "EVEN" ]
enum_InstanceGroupManagerInstanceLifecyclePolicyDefaultActionOnFailure := [ "DO_NOTHING", "REPAIR" ]
enum_InstanceGroupManagerInstanceLifecyclePolicyForceUpdateOnRepair := [ "NO", "YES" ]
enum_InstanceGroupManagerListManagedInstancesResults := [ "PAGELESS", "PAGINATED" ]
enum_InstanceGroupManagerUpdatePolicyInstanceRedistributionType := [ "NONE", "PROACTIVE" ]
enum_InstanceGroupManagerUpdatePolicyMinimalAction := [ "NONE", "REFRESH", "REPLACE", "RESTART" ]
enum_InstanceGroupManagerUpdatePolicyMostDisruptiveAllowedAction := [ "NONE", "REFRESH", "REPLACE", "RESTART" ]
enum_InstanceGroupManagerUpdatePolicyReplacementMethod := [ "RECREATE", "SUBSTITUTE" ]
enum_InstanceGroupManagerUpdatePolicyType := [ "OPPORTUNISTIC", "PROACTIVE" ]
enum_StatefulPolicyPreservedStateDiskDeviceAutoDelete := [ "NEVER", "ON_PERMANENT_INSTANCE_DELETION" ]
enum_StatefulPolicyPreservedStateNetworkIpAutoDelete := [ "NEVER", "ON_PERMANENT_INSTANCE_DELETION" ]

valid {
    input.Body.allInstancesConfig.properties.labels.STRING == STRING
    input.Body.allInstancesConfig.properties.metadata.STRING == STRING
    input.Body.autoHealingPolicies[_].healthCheck == STRING
    input.Body.autoHealingPolicies[_].initialDelaySec == INTEGER
    input.Body.baseInstanceName == STRING
    input.Body.creationTimestamp == STRING
    input.Body.currentActions.abandoning == INTEGER
    input.Body.currentActions.creating == INTEGER
    input.Body.currentActions.creatingWithoutRetries == INTEGER
    input.Body.currentActions.deleting == INTEGER
    input.Body.currentActions.none == INTEGER
    input.Body.currentActions.recreating == INTEGER
    input.Body.currentActions.refreshing == INTEGER
    input.Body.currentActions.restarting == INTEGER
    input.Body.currentActions.resuming == INTEGER
    input.Body.currentActions.starting == INTEGER
    input.Body.currentActions.stopping == INTEGER
    input.Body.currentActions.suspending == INTEGER
    input.Body.currentActions.verifying == INTEGER
    input.Body.description == STRING
    input.Body.distributionPolicy.targetShape == enum_DistributionPolicyTargetShape[_]
    input.Body.distributionPolicy.zones[_].zone == STRING
    input.Body.fingerprint == STRING
    input.Body.id == STRING
    input.Body.instanceGroup == STRING
    input.Body.instanceLifecyclePolicy.defaultActionOnFailure == enum_InstanceGroupManagerInstanceLifecyclePolicyDefaultActionOnFailure[_]
    input.Body.instanceLifecyclePolicy.forceUpdateOnRepair == enum_InstanceGroupManagerInstanceLifecyclePolicyForceUpdateOnRepair[_]
    input.Body.instanceTemplate == STRING
    input.Body.kind == STRING
    input.Body.listManagedInstancesResults == enum_InstanceGroupManagerListManagedInstancesResults[_]
    input.Body.name == STRING
    input.Body.namedPorts[_].name == STRING
    input.Body.namedPorts[_].port == INTEGER
    input.Body.region == STRING
    input.Body.selfLink == STRING
    input.Body.statefulPolicy.preservedState.disks.STRING.autoDelete == enum_StatefulPolicyPreservedStateDiskDeviceAutoDelete[_]
    input.Body.statefulPolicy.preservedState.externalIPs.STRING.autoDelete == enum_StatefulPolicyPreservedStateNetworkIpAutoDelete[_]
    input.Body.statefulPolicy.preservedState.internalIPs.STRING.autoDelete == enum_StatefulPolicyPreservedStateNetworkIpAutoDelete[_]
    input.Body.status.allInstancesConfig.currentRevision == STRING
    input.Body.status.allInstancesConfig.effective == BOOLEAN
    input.Body.status.autoscaler == STRING
    input.Body.status.isStable == BOOLEAN
    input.Body.status.stateful.hasStatefulConfig == BOOLEAN
    input.Body.status.stateful.perInstanceConfigs.allEffective == BOOLEAN
    input.Body.status.versionTarget.isReached == BOOLEAN
    input.Body.targetPools[_] == STRING
    input.Body.targetSize == INTEGER
    input.Body.updatePolicy.instanceRedistributionType == enum_InstanceGroupManagerUpdatePolicyInstanceRedistributionType[_]
    input.Body.updatePolicy.maxSurge.calculated == INTEGER
    input.Body.updatePolicy.maxSurge.fixed == INTEGER
    input.Body.updatePolicy.maxSurge.percent == INTEGER
    input.Body.updatePolicy.maxUnavailable.calculated == INTEGER
    input.Body.updatePolicy.maxUnavailable.fixed == INTEGER
    input.Body.updatePolicy.maxUnavailable.percent == INTEGER
    input.Body.updatePolicy.minimalAction == enum_InstanceGroupManagerUpdatePolicyMinimalAction[_]
    input.Body.updatePolicy.mostDisruptiveAllowedAction == enum_InstanceGroupManagerUpdatePolicyMostDisruptiveAllowedAction[_]
    input.Body.updatePolicy.replacementMethod == enum_InstanceGroupManagerUpdatePolicyReplacementMethod[_]
    input.Body.updatePolicy.type == enum_InstanceGroupManagerUpdatePolicyType[_]
    input.Body.versions[_].instanceTemplate == STRING
    input.Body.versions[_].name == STRING
    input.Body.versions[_].targetSize.calculated == INTEGER
    input.Body.versions[_].targetSize.fixed == INTEGER
    input.Body.versions[_].targetSize.percent == INTEGER
    input.Body.zone == STRING
    input.ReqMap.instanceGroupManager == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.regionInstanceGroupManagers.patchPerInstanceConfigs

enum_PerInstanceConfigStatus := [ "APPLYING", "DELETING", "EFFECTIVE", "NONE", "UNAPPLIED", "UNAPPLIED_DELETION" ]
enum_PreservedStatePreservedDiskAutoDelete := [ "NEVER", "ON_PERMANENT_INSTANCE_DELETION" ]
enum_PreservedStatePreservedDiskMode := [ "READ_ONLY", "READ_WRITE" ]
enum_PreservedStatePreservedNetworkIpAutoDelete := [ "NEVER", "ON_PERMANENT_INSTANCE_DELETION" ]

valid {
    input.Body.perInstanceConfigs[_].fingerprint == STRING
    input.Body.perInstanceConfigs[_].name == STRING
    input.Body.perInstanceConfigs[_].preservedState.disks.STRING.autoDelete == enum_PreservedStatePreservedDiskAutoDelete[_]
    input.Body.perInstanceConfigs[_].preservedState.disks.STRING.mode == enum_PreservedStatePreservedDiskMode[_]
    input.Body.perInstanceConfigs[_].preservedState.disks.STRING.source == STRING
    input.Body.perInstanceConfigs[_].preservedState.externalIPs.STRING.autoDelete == enum_PreservedStatePreservedNetworkIpAutoDelete[_]
    input.Body.perInstanceConfigs[_].preservedState.externalIPs.STRING.ipAddress.address == STRING
    input.Body.perInstanceConfigs[_].preservedState.externalIPs.STRING.ipAddress.literal == STRING
    input.Body.perInstanceConfigs[_].preservedState.internalIPs.STRING.autoDelete == enum_PreservedStatePreservedNetworkIpAutoDelete[_]
    input.Body.perInstanceConfigs[_].preservedState.internalIPs.STRING.ipAddress.address == STRING
    input.Body.perInstanceConfigs[_].preservedState.internalIPs.STRING.ipAddress.literal == STRING
    input.Body.perInstanceConfigs[_].preservedState.metadata.STRING == STRING
    input.Body.perInstanceConfigs[_].status == enum_PerInstanceConfigStatus[_]
    input.ReqMap.instanceGroupManager == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.regionInstanceGroupManagers.recreateInstances

valid {
    input.Body.instances[_] == STRING
    input.ReqMap.instanceGroupManager == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.regionInstanceGroupManagers.resize

valid {
    input.ReqMap.instanceGroupManager == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.Qs.requestId == STRING
    input.Qs.size == INTEGER
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.regionInstanceGroupManagers.resizeAdvanced

valid {
    input.Body.noCreationRetries == BOOLEAN
    input.Body.targetSize == INTEGER
    input.ReqMap.instanceGroupManager == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.regionInstanceGroupManagers.resumeInstances

valid {
    input.Body.instances[_] == STRING
    input.ReqMap.instanceGroupManager == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.regionInstanceGroupManagers.setAutoHealingPolicies

valid {
    input.Body.autoHealingPolicies[_].healthCheck == STRING
    input.Body.autoHealingPolicies[_].initialDelaySec == INTEGER
    input.ReqMap.instanceGroupManager == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.regionInstanceGroupManagers.setInstanceTemplate

valid {
    input.Body.instanceTemplate == STRING
    input.ReqMap.instanceGroupManager == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.regionInstanceGroupManagers.setTargetPools

valid {
    input.Body.fingerprint == STRING
    input.Body.targetPools[_] == STRING
    input.ReqMap.instanceGroupManager == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.regionInstanceGroupManagers.startInstances

valid {
    input.Body.instances[_] == STRING
    input.ReqMap.instanceGroupManager == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.regionInstanceGroupManagers.stopInstances

valid {
    input.Body.forceStop == BOOLEAN
    input.Body.instances[_] == STRING
    input.ReqMap.instanceGroupManager == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.regionInstanceGroupManagers.suspendInstances

valid {
    input.Body.forceSuspend == BOOLEAN
    input.Body.instances[_] == STRING
    input.ReqMap.instanceGroupManager == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.regionInstanceGroupManagers.testIamPermissions

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

compute.regionInstanceGroupManagers.update

enum_DistributionPolicyTargetShape := [ "ANY", "ANY_SINGLE_ZONE", "BALANCED", "EVEN" ]
enum_InstanceGroupManagerFailoverAction := [ "NO_FAILOVER", "UNKNOWN" ]
enum_InstanceGroupManagerInstanceLifecyclePolicyDefaultActionOnFailure := [ "DELETE", "DO_NOTHING", "REPAIR" ]
enum_InstanceGroupManagerInstanceLifecyclePolicyForceUpdateOnRepair := [ "NO", "YES" ]
enum_InstanceGroupManagerListManagedInstancesResults := [ "PAGELESS", "PAGINATED" ]
enum_InstanceGroupManagerStandbyPolicyMode := [ "MANUAL", "SCALE_OUT_POOL" ]
enum_InstanceGroupManagerUpdatePolicyInstanceRedistributionType := [ "NONE", "PROACTIVE" ]
enum_InstanceGroupManagerUpdatePolicyMinimalAction := [ "NONE", "REFRESH", "REPLACE", "RESTART" ]
enum_InstanceGroupManagerUpdatePolicyMostDisruptiveAllowedAction := [ "NONE", "REFRESH", "REPLACE", "RESTART" ]
enum_InstanceGroupManagerUpdatePolicyReplacementMethod := [ "RECREATE", "SUBSTITUTE" ]
enum_InstanceGroupManagerUpdatePolicyType := [ "OPPORTUNISTIC", "PROACTIVE" ]
enum_StatefulPolicyPreservedStateDiskDeviceAutoDelete := [ "NEVER", "ON_PERMANENT_INSTANCE_DELETION" ]
enum_StatefulPolicyPreservedStateNetworkIpAutoDelete := [ "NEVER", "ON_PERMANENT_INSTANCE_DELETION" ]

valid {
    input.Body.allInstancesConfig.properties.labels.STRING == STRING
    input.Body.allInstancesConfig.properties.metadata.STRING == STRING
    input.Body.autoHealingPolicies[_].healthCheck == STRING
    input.Body.autoHealingPolicies[_].initialDelaySec == INTEGER
    input.Body.baseInstanceName == STRING
    input.Body.creationTimestamp == STRING
    input.Body.currentActions.abandoning == INTEGER
    input.Body.currentActions.creating == INTEGER
    input.Body.currentActions.creatingWithoutRetries == INTEGER
    input.Body.currentActions.deleting == INTEGER
    input.Body.currentActions.none == INTEGER
    input.Body.currentActions.recreating == INTEGER
    input.Body.currentActions.refreshing == INTEGER
    input.Body.currentActions.restarting == INTEGER
    input.Body.currentActions.resuming == INTEGER
    input.Body.currentActions.starting == INTEGER
    input.Body.currentActions.stopping == INTEGER
    input.Body.currentActions.suspending == INTEGER
    input.Body.currentActions.verifying == INTEGER
    input.Body.description == STRING
    input.Body.distributionPolicy.targetShape == enum_DistributionPolicyTargetShape[_]
    input.Body.distributionPolicy.zones[_].zone == STRING
    input.Body.failoverAction == enum_InstanceGroupManagerFailoverAction[_]
    input.Body.fingerprint == STRING
    input.Body.id == STRING
    input.Body.instanceFlexibilityPolicy.instanceSelectionLists.STRING.machineTypes[_] == STRING
    input.Body.instanceFlexibilityPolicy.instanceSelectionLists.STRING.rank == INTEGER
    input.Body.instanceFlexibilityPolicy.instanceSelections.STRING.machineTypes[_] == STRING
    input.Body.instanceFlexibilityPolicy.instanceSelections.STRING.rank == INTEGER
    input.Body.instanceGroup == STRING
    input.Body.instanceLifecyclePolicy.defaultActionOnFailure == enum_InstanceGroupManagerInstanceLifecyclePolicyDefaultActionOnFailure[_]
    input.Body.instanceLifecyclePolicy.forceUpdateOnRepair == enum_InstanceGroupManagerInstanceLifecyclePolicyForceUpdateOnRepair[_]
    input.Body.instanceTemplate == STRING
    input.Body.kind == STRING
    input.Body.listManagedInstancesResults == enum_InstanceGroupManagerListManagedInstancesResults[_]
    input.Body.name == STRING
    input.Body.namedPorts[_].name == STRING
    input.Body.namedPorts[_].port == INTEGER
    input.Body.params.resourceManagerTags.STRING == STRING
    input.Body.region == STRING
    input.Body.selfLink == STRING
    input.Body.serviceAccount == STRING
    input.Body.standbyPolicy.initialDelaySec == INTEGER
    input.Body.standbyPolicy.mode == enum_InstanceGroupManagerStandbyPolicyMode[_]
    input.Body.statefulPolicy.preservedState.disks.STRING.autoDelete == enum_StatefulPolicyPreservedStateDiskDeviceAutoDelete[_]
    input.Body.statefulPolicy.preservedState.externalIPs.STRING.autoDelete == enum_StatefulPolicyPreservedStateNetworkIpAutoDelete[_]
    input.Body.statefulPolicy.preservedState.internalIPs.STRING.autoDelete == enum_StatefulPolicyPreservedStateNetworkIpAutoDelete[_]
    input.Body.status.allInstancesConfig.currentRevision == STRING
    input.Body.status.allInstancesConfig.effective == BOOLEAN
    input.Body.status.autoscaler == STRING
    input.Body.status.isStable == BOOLEAN
    input.Body.status.stateful.hasStatefulConfig == BOOLEAN
    input.Body.status.stateful.isStateful == BOOLEAN
    input.Body.status.stateful.perInstanceConfigs.allEffective == BOOLEAN
    input.Body.status.versionTarget.isReached == BOOLEAN
    input.Body.targetPools[_] == STRING
    input.Body.targetSize == INTEGER
    input.Body.targetStoppedSize == INTEGER
    input.Body.targetSuspendedSize == INTEGER
    input.Body.updatePolicy.instanceRedistributionType == enum_InstanceGroupManagerUpdatePolicyInstanceRedistributionType[_]
    input.Body.updatePolicy.maxSurge.calculated == INTEGER
    input.Body.updatePolicy.maxSurge.fixed == INTEGER
    input.Body.updatePolicy.maxSurge.percent == INTEGER
    input.Body.updatePolicy.maxUnavailable.calculated == INTEGER
    input.Body.updatePolicy.maxUnavailable.fixed == INTEGER
    input.Body.updatePolicy.maxUnavailable.percent == INTEGER
    input.Body.updatePolicy.minReadySec == INTEGER
    input.Body.updatePolicy.minimalAction == enum_InstanceGroupManagerUpdatePolicyMinimalAction[_]
    input.Body.updatePolicy.mostDisruptiveAllowedAction == enum_InstanceGroupManagerUpdatePolicyMostDisruptiveAllowedAction[_]
    input.Body.updatePolicy.replacementMethod == enum_InstanceGroupManagerUpdatePolicyReplacementMethod[_]
    input.Body.updatePolicy.type == enum_InstanceGroupManagerUpdatePolicyType[_]
    input.Body.versions[_].instanceTemplate == STRING
    input.Body.versions[_].name == STRING
    input.Body.versions[_].targetSize.calculated == INTEGER
    input.Body.versions[_].targetSize.fixed == INTEGER
    input.Body.versions[_].targetSize.percent == INTEGER
    input.Body.zone == STRING
    input.ReqMap.instanceGroupManager == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.regionInstanceGroupManagers.updatePerInstanceConfigs

enum_PerInstanceConfigStatus := [ "APPLYING", "DELETING", "EFFECTIVE", "NONE", "UNAPPLIED", "UNAPPLIED_DELETION" ]
enum_PreservedStatePreservedDiskAutoDelete := [ "NEVER", "ON_PERMANENT_INSTANCE_DELETION" ]
enum_PreservedStatePreservedDiskMode := [ "READ_ONLY", "READ_WRITE" ]
enum_PreservedStatePreservedNetworkIpAutoDelete := [ "NEVER", "ON_PERMANENT_INSTANCE_DELETION" ]

valid {
    input.Body.perInstanceConfigs[_].fingerprint == STRING
    input.Body.perInstanceConfigs[_].name == STRING
    input.Body.perInstanceConfigs[_].preservedState.disks.STRING.autoDelete == enum_PreservedStatePreservedDiskAutoDelete[_]
    input.Body.perInstanceConfigs[_].preservedState.disks.STRING.mode == enum_PreservedStatePreservedDiskMode[_]
    input.Body.perInstanceConfigs[_].preservedState.disks.STRING.source == STRING
    input.Body.perInstanceConfigs[_].preservedState.externalIPs.STRING.autoDelete == enum_PreservedStatePreservedNetworkIpAutoDelete[_]
    input.Body.perInstanceConfigs[_].preservedState.externalIPs.STRING.ipAddress.address == STRING
    input.Body.perInstanceConfigs[_].preservedState.externalIPs.STRING.ipAddress.literal == STRING
    input.Body.perInstanceConfigs[_].preservedState.internalIPs.STRING.autoDelete == enum_PreservedStatePreservedNetworkIpAutoDelete[_]
    input.Body.perInstanceConfigs[_].preservedState.internalIPs.STRING.ipAddress.address == STRING
    input.Body.perInstanceConfigs[_].preservedState.internalIPs.STRING.ipAddress.literal == STRING
    input.Body.perInstanceConfigs[_].preservedState.metadata.STRING == STRING
    input.Body.perInstanceConfigs[_].status == enum_PerInstanceConfigStatus[_]
    input.ReqMap.instanceGroupManager == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.regionInstanceGroups.get

valid {
    input.ReqMap.instanceGroup == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.regionInstanceGroups.list

valid {
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.Qs.filter == STRING
    input.Qs.maxResults == INTEGER
    input.Qs.orderBy == STRING
    input.Qs.pageToken == STRING
    input.Qs.returnPartialSuccess == BOOLEAN
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.regionInstanceGroups.listInstances

enum_RegionInstanceGroupsListInstancesRequestInstanceState := [ "ALL", "RUNNING" ]

valid {
    input.Body.instanceState == enum_RegionInstanceGroupsListInstancesRequestInstanceState[_]
    input.Body.portName == STRING
    input.ReqMap.instanceGroup == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.Qs.filter == STRING
    input.Qs.maxResults == INTEGER
    input.Qs.orderBy == STRING
    input.Qs.pageToken == STRING
    input.Qs.returnPartialSuccess == BOOLEAN
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.regionInstanceGroups.setNamedPorts

valid {
    input.Body.fingerprint == STRING
    input.Body.namedPorts[_].name == STRING
    input.Body.namedPorts[_].port == INTEGER
    input.ReqMap.instanceGroup == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.regionInstanceGroups.testIamPermissions

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

compute.regionInstanceTemplates.delete

valid {
    input.ReqMap.instanceTemplate == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.regionInstanceTemplates.get

valid {
    input.ReqMap.instanceTemplate == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.regionInstanceTemplates.insert

enum_AccessConfigNetworkTier := [ "FIXED_STANDARD", "PREMIUM", "STANDARD", "STANDARD_OVERRIDES_FIXED_STANDARD" ]
enum_AccessConfigType := [ "DIRECT_IPV6", "ONE_TO_ONE_NAT" ]
enum_AttachedDiskArchitecture := [ "ARCHITECTURE_UNSPECIFIED", "ARM64", "X86_64" ]
enum_AttachedDiskInitializeParamsArchitecture := [ "ARCHITECTURE_UNSPECIFIED", "ARM64", "X86_64" ]
enum_AttachedDiskInitializeParamsOnUpdateAction := [ "RECREATE_DISK", "RECREATE_DISK_IF_SOURCE_CHANGED", "USE_EXISTING_DISK" ]
enum_AttachedDiskInterface := [ "NVME", "SCSI" ]
enum_AttachedDiskMode := [ "READ_ONLY", "READ_WRITE" ]
enum_AttachedDiskSavedState := [ "DISK_SAVED_STATE_UNSPECIFIED", "PRESERVED" ]
enum_AttachedDiskType := [ "PERSISTENT", "SCRATCH" ]
enum_DiskInstantiationConfigInstantiateFrom := [ "ATTACH_READ_ONLY", "BLANK", "CUSTOM_IMAGE", "DEFAULT", "DO_NOT_INCLUDE", "SOURCE_IMAGE", "SOURCE_IMAGE_FAMILY" ]
enum_FileContentBufferFileType := [ "BIN", "UNDEFINED", "X509" ]
enum_GuestOsFeatureType := [ "FEATURE_TYPE_UNSPECIFIED", "GVNIC", "IDPF", "MULTI_IP_SUBNET", "SECURE_BOOT", "SEV_CAPABLE", "SEV_LIVE_MIGRATABLE", "SEV_LIVE_MIGRATABLE_V2", "SEV_SNP_CAPABLE", "UEFI_COMPATIBLE", "VIRTIO_SCSI_MULTIQUEUE", "WINDOWS" ]
enum_InstancePropertiesKeyRevocationActionType := [ "KEY_REVOCATION_ACTION_TYPE_UNSPECIFIED", "NONE", "STOP" ]
enum_InstancePropertiesPrivateIpv6GoogleAccess := [ "ENABLE_BIDIRECTIONAL_ACCESS_TO_GOOGLE", "ENABLE_OUTBOUND_VM_ACCESS_TO_GOOGLE", "INHERIT_FROM_SUBNETWORK" ]
enum_NetworkInterfaceIpv6AccessType := [ "EXTERNAL", "INTERNAL" ]
enum_NetworkInterfaceNicType := [ "GVNIC", "UNSPECIFIED_NIC_TYPE", "VIRTIO_NET" ]
enum_NetworkInterfaceStackType := [ "IPV4_IPV6", "IPV4_ONLY" ]
enum_NetworkPerformanceConfigTotalEgressBandwidthTier := [ "DEFAULT", "TIER_1" ]
enum_ReservationAffinityConsumeReservationType := [ "ANY_RESERVATION", "NO_RESERVATION", "SPECIFIC_RESERVATION", "UNSPECIFIED" ]
enum_SchedulingInstanceTerminationAction := [ "DELETE", "INSTANCE_TERMINATION_ACTION_UNSPECIFIED", "STOP" ]
enum_SchedulingNodeAffinityOperator := [ "IN", "NOT_IN", "OPERATOR_UNSPECIFIED" ]
enum_SchedulingOnHostMaintenance := [ "MIGRATE", "TERMINATE" ]
enum_SchedulingProvisioningModel := [ "SPOT", "STANDARD" ]

valid {
    input.Body.creationTimestamp == STRING
    input.Body.description == STRING
    input.Body.id == STRING
    input.Body.kind == STRING
    input.Body.name == STRING
    input.Body.properties.advancedMachineFeatures.enableNestedVirtualization == BOOLEAN
    input.Body.properties.advancedMachineFeatures.enableUefiNetworking == BOOLEAN
    input.Body.properties.advancedMachineFeatures.threadsPerCore == INTEGER
    input.Body.properties.advancedMachineFeatures.visibleCoreCount == INTEGER
    input.Body.properties.canIpForward == BOOLEAN
    input.Body.properties.confidentialInstanceConfig.enableConfidentialCompute == BOOLEAN
    input.Body.properties.description == STRING
    input.Body.properties.disks[_].architecture == enum_AttachedDiskArchitecture[_]
    input.Body.properties.disks[_].autoDelete == BOOLEAN
    input.Body.properties.disks[_].boot == BOOLEAN
    input.Body.properties.disks[_].deviceName == STRING
    input.Body.properties.disks[_].diskEncryptionKey.kmsKeyName == STRING
    input.Body.properties.disks[_].diskEncryptionKey.kmsKeyServiceAccount == STRING
    input.Body.properties.disks[_].diskEncryptionKey.rawKey == STRING
    input.Body.properties.disks[_].diskEncryptionKey.rsaEncryptedKey == STRING
    input.Body.properties.disks[_].diskEncryptionKey.sha256 == STRING
    input.Body.properties.disks[_].diskSizeGb == STRING
    input.Body.properties.disks[_].forceAttach == BOOLEAN
    input.Body.properties.disks[_].guestOsFeatures[_].type == enum_GuestOsFeatureType[_]
    input.Body.properties.disks[_].index == INTEGER
    input.Body.properties.disks[_].initializeParams.architecture == enum_AttachedDiskInitializeParamsArchitecture[_]
    input.Body.properties.disks[_].initializeParams.description == STRING
    input.Body.properties.disks[_].initializeParams.diskName == STRING
    input.Body.properties.disks[_].initializeParams.diskSizeGb == STRING
    input.Body.properties.disks[_].initializeParams.diskType == STRING
    input.Body.properties.disks[_].initializeParams.enableConfidentialCompute == BOOLEAN
    input.Body.properties.disks[_].initializeParams.labels.STRING == STRING
    input.Body.properties.disks[_].initializeParams.licenses[_] == STRING
    input.Body.properties.disks[_].initializeParams.onUpdateAction == enum_AttachedDiskInitializeParamsOnUpdateAction[_]
    input.Body.properties.disks[_].initializeParams.provisionedIops == STRING
    input.Body.properties.disks[_].initializeParams.provisionedThroughput == STRING
    input.Body.properties.disks[_].initializeParams.replicaZones[_] == STRING
    input.Body.properties.disks[_].initializeParams.resourceManagerTags.STRING == STRING
    input.Body.properties.disks[_].initializeParams.resourcePolicies[_] == STRING
    input.Body.properties.disks[_].initializeParams.sourceImage == STRING
    input.Body.properties.disks[_].initializeParams.sourceImageEncryptionKey.kmsKeyName == STRING
    input.Body.properties.disks[_].initializeParams.sourceImageEncryptionKey.kmsKeyServiceAccount == STRING
    input.Body.properties.disks[_].initializeParams.sourceImageEncryptionKey.rawKey == STRING
    input.Body.properties.disks[_].initializeParams.sourceImageEncryptionKey.rsaEncryptedKey == STRING
    input.Body.properties.disks[_].initializeParams.sourceImageEncryptionKey.sha256 == STRING
    input.Body.properties.disks[_].initializeParams.sourceSnapshot == STRING
    input.Body.properties.disks[_].initializeParams.sourceSnapshotEncryptionKey.kmsKeyName == STRING
    input.Body.properties.disks[_].initializeParams.sourceSnapshotEncryptionKey.kmsKeyServiceAccount == STRING
    input.Body.properties.disks[_].initializeParams.sourceSnapshotEncryptionKey.rawKey == STRING
    input.Body.properties.disks[_].initializeParams.sourceSnapshotEncryptionKey.rsaEncryptedKey == STRING
    input.Body.properties.disks[_].initializeParams.sourceSnapshotEncryptionKey.sha256 == STRING
    input.Body.properties.disks[_].initializeParams.storagePool == STRING
    input.Body.properties.disks[_].interface == enum_AttachedDiskInterface[_]
    input.Body.properties.disks[_].kind == STRING
    input.Body.properties.disks[_].licenses[_] == STRING
    input.Body.properties.disks[_].mode == enum_AttachedDiskMode[_]
    input.Body.properties.disks[_].savedState == enum_AttachedDiskSavedState[_]
    input.Body.properties.disks[_].shieldedInstanceInitialState.dbs[_].content == STRING
    input.Body.properties.disks[_].shieldedInstanceInitialState.dbs[_].fileType == enum_FileContentBufferFileType[_]
    input.Body.properties.disks[_].shieldedInstanceInitialState.dbxs[_].content == STRING
    input.Body.properties.disks[_].shieldedInstanceInitialState.dbxs[_].fileType == enum_FileContentBufferFileType[_]
    input.Body.properties.disks[_].shieldedInstanceInitialState.keks[_].content == STRING
    input.Body.properties.disks[_].shieldedInstanceInitialState.keks[_].fileType == enum_FileContentBufferFileType[_]
    input.Body.properties.disks[_].shieldedInstanceInitialState.pk.content == STRING
    input.Body.properties.disks[_].shieldedInstanceInitialState.pk.fileType == enum_FileContentBufferFileType[_]
    input.Body.properties.disks[_].source == STRING
    input.Body.properties.disks[_].type == enum_AttachedDiskType[_]
    input.Body.properties.guestAccelerators[_].acceleratorCount == INTEGER
    input.Body.properties.guestAccelerators[_].acceleratorType == STRING
    input.Body.properties.keyRevocationActionType == enum_InstancePropertiesKeyRevocationActionType[_]
    input.Body.properties.labels.STRING == STRING
    input.Body.properties.machineType == STRING
    input.Body.properties.metadata.fingerprint == STRING
    input.Body.properties.metadata.items[_].key == STRING
    input.Body.properties.metadata.items[_].value == STRING
    input.Body.properties.metadata.kind == STRING
    input.Body.properties.minCpuPlatform == STRING
    input.Body.properties.networkInterfaces[_].accessConfigs[_].externalIpv6 == STRING
    input.Body.properties.networkInterfaces[_].accessConfigs[_].externalIpv6PrefixLength == INTEGER
    input.Body.properties.networkInterfaces[_].accessConfigs[_].kind == STRING
    input.Body.properties.networkInterfaces[_].accessConfigs[_].name == STRING
    input.Body.properties.networkInterfaces[_].accessConfigs[_].natIP == STRING
    input.Body.properties.networkInterfaces[_].accessConfigs[_].networkTier == enum_AccessConfigNetworkTier[_]
    input.Body.properties.networkInterfaces[_].accessConfigs[_].publicPtrDomainName == STRING
    input.Body.properties.networkInterfaces[_].accessConfigs[_].securityPolicy == STRING
    input.Body.properties.networkInterfaces[_].accessConfigs[_].setPublicPtr == BOOLEAN
    input.Body.properties.networkInterfaces[_].accessConfigs[_].type == enum_AccessConfigType[_]
    input.Body.properties.networkInterfaces[_].aliasIpRanges[_].ipCidrRange == STRING
    input.Body.properties.networkInterfaces[_].aliasIpRanges[_].subnetworkRangeName == STRING
    input.Body.properties.networkInterfaces[_].fingerprint == STRING
    input.Body.properties.networkInterfaces[_].internalIpv6PrefixLength == INTEGER
    input.Body.properties.networkInterfaces[_].ipv6AccessConfigs[_].externalIpv6 == STRING
    input.Body.properties.networkInterfaces[_].ipv6AccessConfigs[_].externalIpv6PrefixLength == INTEGER
    input.Body.properties.networkInterfaces[_].ipv6AccessConfigs[_].kind == STRING
    input.Body.properties.networkInterfaces[_].ipv6AccessConfigs[_].name == STRING
    input.Body.properties.networkInterfaces[_].ipv6AccessConfigs[_].natIP == STRING
    input.Body.properties.networkInterfaces[_].ipv6AccessConfigs[_].networkTier == enum_AccessConfigNetworkTier[_]
    input.Body.properties.networkInterfaces[_].ipv6AccessConfigs[_].publicPtrDomainName == STRING
    input.Body.properties.networkInterfaces[_].ipv6AccessConfigs[_].securityPolicy == STRING
    input.Body.properties.networkInterfaces[_].ipv6AccessConfigs[_].setPublicPtr == BOOLEAN
    input.Body.properties.networkInterfaces[_].ipv6AccessConfigs[_].type == enum_AccessConfigType[_]
    input.Body.properties.networkInterfaces[_].ipv6AccessType == enum_NetworkInterfaceIpv6AccessType[_]
    input.Body.properties.networkInterfaces[_].ipv6Address == STRING
    input.Body.properties.networkInterfaces[_].kind == STRING
    input.Body.properties.networkInterfaces[_].name == STRING
    input.Body.properties.networkInterfaces[_].network == STRING
    input.Body.properties.networkInterfaces[_].networkAttachment == STRING
    input.Body.properties.networkInterfaces[_].networkIP == STRING
    input.Body.properties.networkInterfaces[_].nicType == enum_NetworkInterfaceNicType[_]
    input.Body.properties.networkInterfaces[_].queueCount == INTEGER
    input.Body.properties.networkInterfaces[_].stackType == enum_NetworkInterfaceStackType[_]
    input.Body.properties.networkInterfaces[_].subnetwork == STRING
    input.Body.properties.networkPerformanceConfig.totalEgressBandwidthTier == enum_NetworkPerformanceConfigTotalEgressBandwidthTier[_]
    input.Body.properties.privateIpv6GoogleAccess == enum_InstancePropertiesPrivateIpv6GoogleAccess[_]
    input.Body.properties.reservationAffinity.consumeReservationType == enum_ReservationAffinityConsumeReservationType[_]
    input.Body.properties.reservationAffinity.key == STRING
    input.Body.properties.reservationAffinity.values[_] == STRING
    input.Body.properties.resourceManagerTags.STRING == STRING
    input.Body.properties.resourcePolicies[_] == STRING
    input.Body.properties.scheduling.automaticRestart == BOOLEAN
    input.Body.properties.scheduling.instanceTerminationAction == enum_SchedulingInstanceTerminationAction[_]
    input.Body.properties.scheduling.localSsdRecoveryTimeout.nanos == INTEGER
    input.Body.properties.scheduling.localSsdRecoveryTimeout.seconds == STRING
    input.Body.properties.scheduling.locationHint == STRING
    input.Body.properties.scheduling.minNodeCpus == INTEGER
    input.Body.properties.scheduling.nodeAffinities[_].key == STRING
    input.Body.properties.scheduling.nodeAffinities[_].operator == enum_SchedulingNodeAffinityOperator[_]
    input.Body.properties.scheduling.nodeAffinities[_].values[_] == STRING
    input.Body.properties.scheduling.onHostMaintenance == enum_SchedulingOnHostMaintenance[_]
    input.Body.properties.scheduling.preemptible == BOOLEAN
    input.Body.properties.scheduling.provisioningModel == enum_SchedulingProvisioningModel[_]
    input.Body.properties.serviceAccounts[_].email == STRING
    input.Body.properties.serviceAccounts[_].scopes[_] == STRING
    input.Body.properties.shieldedInstanceConfig.enableIntegrityMonitoring == BOOLEAN
    input.Body.properties.shieldedInstanceConfig.enableSecureBoot == BOOLEAN
    input.Body.properties.shieldedInstanceConfig.enableVtpm == BOOLEAN
    input.Body.properties.tags.fingerprint == STRING
    input.Body.properties.tags.items[_] == STRING
    input.Body.region == STRING
    input.Body.selfLink == STRING
    input.Body.sourceInstance == STRING
    input.Body.sourceInstanceParams.diskConfigs[_].autoDelete == BOOLEAN
    input.Body.sourceInstanceParams.diskConfigs[_].customImage == STRING
    input.Body.sourceInstanceParams.diskConfigs[_].deviceName == STRING
    input.Body.sourceInstanceParams.diskConfigs[_].instantiateFrom == enum_DiskInstantiationConfigInstantiateFrom[_]
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.regionInstanceTemplates.list

valid {
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.Qs.filter == STRING
    input.Qs.maxResults == INTEGER
    input.Qs.orderBy == STRING
    input.Qs.pageToken == STRING
    input.Qs.returnPartialSuccess == BOOLEAN
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.regionInstances.bulkInsert

enum_AccessConfigNetworkTier := [ "FIXED_STANDARD", "PREMIUM", "STANDARD", "STANDARD_OVERRIDES_FIXED_STANDARD" ]
enum_AccessConfigType := [ "DIRECT_IPV6", "ONE_TO_ONE_NAT" ]
enum_AttachedDiskArchitecture := [ "ARCHITECTURE_UNSPECIFIED", "ARM64", "X86_64" ]
enum_AttachedDiskInitializeParamsArchitecture := [ "ARCHITECTURE_UNSPECIFIED", "ARM64", "X86_64" ]
enum_AttachedDiskInitializeParamsOnUpdateAction := [ "RECREATE_DISK", "RECREATE_DISK_IF_SOURCE_CHANGED", "USE_EXISTING_DISK" ]
enum_AttachedDiskInterface := [ "NVME", "SCSI" ]
enum_AttachedDiskMode := [ "READ_ONLY", "READ_WRITE" ]
enum_AttachedDiskSavedState := [ "DISK_SAVED_STATE_UNSPECIFIED", "PRESERVED" ]
enum_AttachedDiskType := [ "PERSISTENT", "SCRATCH" ]
enum_FileContentBufferFileType := [ "BIN", "UNDEFINED", "X509" ]
enum_GuestOsFeatureType := [ "FEATURE_TYPE_UNSPECIFIED", "GVNIC", "IDPF", "MULTI_IP_SUBNET", "SECURE_BOOT", "SEV_CAPABLE", "SEV_LIVE_MIGRATABLE", "SEV_LIVE_MIGRATABLE_V2", "SEV_SNP_CAPABLE", "UEFI_COMPATIBLE", "VIRTIO_SCSI_MULTIQUEUE", "WINDOWS" ]
enum_InstancePropertiesKeyRevocationActionType := [ "KEY_REVOCATION_ACTION_TYPE_UNSPECIFIED", "NONE", "STOP" ]
enum_InstancePropertiesPrivateIpv6GoogleAccess := [ "ENABLE_BIDIRECTIONAL_ACCESS_TO_GOOGLE", "ENABLE_OUTBOUND_VM_ACCESS_TO_GOOGLE", "INHERIT_FROM_SUBNETWORK" ]
enum_LocationPolicyLocationPreference := [ "ALLOW", "DENY", "PREFERENCE_UNSPECIFIED" ]
enum_LocationPolicyTargetShape := [ "ANY", "ANY_SINGLE_ZONE", "BALANCED" ]
enum_NetworkInterfaceIpv6AccessType := [ "EXTERNAL", "INTERNAL" ]
enum_NetworkInterfaceNicType := [ "GVNIC", "UNSPECIFIED_NIC_TYPE", "VIRTIO_NET" ]
enum_NetworkInterfaceStackType := [ "IPV4_IPV6", "IPV4_ONLY" ]
enum_NetworkPerformanceConfigTotalEgressBandwidthTier := [ "DEFAULT", "TIER_1" ]
enum_ReservationAffinityConsumeReservationType := [ "ANY_RESERVATION", "NO_RESERVATION", "SPECIFIC_RESERVATION", "UNSPECIFIED" ]
enum_SchedulingInstanceTerminationAction := [ "DELETE", "INSTANCE_TERMINATION_ACTION_UNSPECIFIED", "STOP" ]
enum_SchedulingNodeAffinityOperator := [ "IN", "NOT_IN", "OPERATOR_UNSPECIFIED" ]
enum_SchedulingOnHostMaintenance := [ "MIGRATE", "TERMINATE" ]
enum_SchedulingProvisioningModel := [ "SPOT", "STANDARD" ]

valid {
    input.Body.count == STRING
    input.Body.instanceProperties.advancedMachineFeatures.enableNestedVirtualization == BOOLEAN
    input.Body.instanceProperties.advancedMachineFeatures.enableUefiNetworking == BOOLEAN
    input.Body.instanceProperties.advancedMachineFeatures.threadsPerCore == INTEGER
    input.Body.instanceProperties.advancedMachineFeatures.visibleCoreCount == INTEGER
    input.Body.instanceProperties.canIpForward == BOOLEAN
    input.Body.instanceProperties.confidentialInstanceConfig.enableConfidentialCompute == BOOLEAN
    input.Body.instanceProperties.description == STRING
    input.Body.instanceProperties.disks[_].architecture == enum_AttachedDiskArchitecture[_]
    input.Body.instanceProperties.disks[_].autoDelete == BOOLEAN
    input.Body.instanceProperties.disks[_].boot == BOOLEAN
    input.Body.instanceProperties.disks[_].deviceName == STRING
    input.Body.instanceProperties.disks[_].diskEncryptionKey.kmsKeyName == STRING
    input.Body.instanceProperties.disks[_].diskEncryptionKey.kmsKeyServiceAccount == STRING
    input.Body.instanceProperties.disks[_].diskEncryptionKey.rawKey == STRING
    input.Body.instanceProperties.disks[_].diskEncryptionKey.rsaEncryptedKey == STRING
    input.Body.instanceProperties.disks[_].diskEncryptionKey.sha256 == STRING
    input.Body.instanceProperties.disks[_].diskSizeGb == STRING
    input.Body.instanceProperties.disks[_].forceAttach == BOOLEAN
    input.Body.instanceProperties.disks[_].guestOsFeatures[_].type == enum_GuestOsFeatureType[_]
    input.Body.instanceProperties.disks[_].index == INTEGER
    input.Body.instanceProperties.disks[_].initializeParams.architecture == enum_AttachedDiskInitializeParamsArchitecture[_]
    input.Body.instanceProperties.disks[_].initializeParams.description == STRING
    input.Body.instanceProperties.disks[_].initializeParams.diskName == STRING
    input.Body.instanceProperties.disks[_].initializeParams.diskSizeGb == STRING
    input.Body.instanceProperties.disks[_].initializeParams.diskType == STRING
    input.Body.instanceProperties.disks[_].initializeParams.enableConfidentialCompute == BOOLEAN
    input.Body.instanceProperties.disks[_].initializeParams.labels.STRING == STRING
    input.Body.instanceProperties.disks[_].initializeParams.licenses[_] == STRING
    input.Body.instanceProperties.disks[_].initializeParams.onUpdateAction == enum_AttachedDiskInitializeParamsOnUpdateAction[_]
    input.Body.instanceProperties.disks[_].initializeParams.provisionedIops == STRING
    input.Body.instanceProperties.disks[_].initializeParams.provisionedThroughput == STRING
    input.Body.instanceProperties.disks[_].initializeParams.replicaZones[_] == STRING
    input.Body.instanceProperties.disks[_].initializeParams.resourceManagerTags.STRING == STRING
    input.Body.instanceProperties.disks[_].initializeParams.resourcePolicies[_] == STRING
    input.Body.instanceProperties.disks[_].initializeParams.sourceImage == STRING
    input.Body.instanceProperties.disks[_].initializeParams.sourceImageEncryptionKey.kmsKeyName == STRING
    input.Body.instanceProperties.disks[_].initializeParams.sourceImageEncryptionKey.kmsKeyServiceAccount == STRING
    input.Body.instanceProperties.disks[_].initializeParams.sourceImageEncryptionKey.rawKey == STRING
    input.Body.instanceProperties.disks[_].initializeParams.sourceImageEncryptionKey.rsaEncryptedKey == STRING
    input.Body.instanceProperties.disks[_].initializeParams.sourceImageEncryptionKey.sha256 == STRING
    input.Body.instanceProperties.disks[_].initializeParams.sourceSnapshot == STRING
    input.Body.instanceProperties.disks[_].initializeParams.sourceSnapshotEncryptionKey.kmsKeyName == STRING
    input.Body.instanceProperties.disks[_].initializeParams.sourceSnapshotEncryptionKey.kmsKeyServiceAccount == STRING
    input.Body.instanceProperties.disks[_].initializeParams.sourceSnapshotEncryptionKey.rawKey == STRING
    input.Body.instanceProperties.disks[_].initializeParams.sourceSnapshotEncryptionKey.rsaEncryptedKey == STRING
    input.Body.instanceProperties.disks[_].initializeParams.sourceSnapshotEncryptionKey.sha256 == STRING
    input.Body.instanceProperties.disks[_].initializeParams.storagePool == STRING
    input.Body.instanceProperties.disks[_].interface == enum_AttachedDiskInterface[_]
    input.Body.instanceProperties.disks[_].kind == STRING
    input.Body.instanceProperties.disks[_].licenses[_] == STRING
    input.Body.instanceProperties.disks[_].mode == enum_AttachedDiskMode[_]
    input.Body.instanceProperties.disks[_].savedState == enum_AttachedDiskSavedState[_]
    input.Body.instanceProperties.disks[_].shieldedInstanceInitialState.dbs[_].content == STRING
    input.Body.instanceProperties.disks[_].shieldedInstanceInitialState.dbs[_].fileType == enum_FileContentBufferFileType[_]
    input.Body.instanceProperties.disks[_].shieldedInstanceInitialState.dbxs[_].content == STRING
    input.Body.instanceProperties.disks[_].shieldedInstanceInitialState.dbxs[_].fileType == enum_FileContentBufferFileType[_]
    input.Body.instanceProperties.disks[_].shieldedInstanceInitialState.keks[_].content == STRING
    input.Body.instanceProperties.disks[_].shieldedInstanceInitialState.keks[_].fileType == enum_FileContentBufferFileType[_]
    input.Body.instanceProperties.disks[_].shieldedInstanceInitialState.pk.content == STRING
    input.Body.instanceProperties.disks[_].shieldedInstanceInitialState.pk.fileType == enum_FileContentBufferFileType[_]
    input.Body.instanceProperties.disks[_].source == STRING
    input.Body.instanceProperties.disks[_].type == enum_AttachedDiskType[_]
    input.Body.instanceProperties.guestAccelerators[_].acceleratorCount == INTEGER
    input.Body.instanceProperties.guestAccelerators[_].acceleratorType == STRING
    input.Body.instanceProperties.keyRevocationActionType == enum_InstancePropertiesKeyRevocationActionType[_]
    input.Body.instanceProperties.labels.STRING == STRING
    input.Body.instanceProperties.machineType == STRING
    input.Body.instanceProperties.metadata.fingerprint == STRING
    input.Body.instanceProperties.metadata.items[_].key == STRING
    input.Body.instanceProperties.metadata.items[_].value == STRING
    input.Body.instanceProperties.metadata.kind == STRING
    input.Body.instanceProperties.minCpuPlatform == STRING
    input.Body.instanceProperties.networkInterfaces[_].accessConfigs[_].externalIpv6 == STRING
    input.Body.instanceProperties.networkInterfaces[_].accessConfigs[_].externalIpv6PrefixLength == INTEGER
    input.Body.instanceProperties.networkInterfaces[_].accessConfigs[_].kind == STRING
    input.Body.instanceProperties.networkInterfaces[_].accessConfigs[_].name == STRING
    input.Body.instanceProperties.networkInterfaces[_].accessConfigs[_].natIP == STRING
    input.Body.instanceProperties.networkInterfaces[_].accessConfigs[_].networkTier == enum_AccessConfigNetworkTier[_]
    input.Body.instanceProperties.networkInterfaces[_].accessConfigs[_].publicPtrDomainName == STRING
    input.Body.instanceProperties.networkInterfaces[_].accessConfigs[_].securityPolicy == STRING
    input.Body.instanceProperties.networkInterfaces[_].accessConfigs[_].setPublicPtr == BOOLEAN
    input.Body.instanceProperties.networkInterfaces[_].accessConfigs[_].type == enum_AccessConfigType[_]
    input.Body.instanceProperties.networkInterfaces[_].aliasIpRanges[_].ipCidrRange == STRING
    input.Body.instanceProperties.networkInterfaces[_].aliasIpRanges[_].subnetworkRangeName == STRING
    input.Body.instanceProperties.networkInterfaces[_].fingerprint == STRING
    input.Body.instanceProperties.networkInterfaces[_].internalIpv6PrefixLength == INTEGER
    input.Body.instanceProperties.networkInterfaces[_].ipv6AccessConfigs[_].externalIpv6 == STRING
    input.Body.instanceProperties.networkInterfaces[_].ipv6AccessConfigs[_].externalIpv6PrefixLength == INTEGER
    input.Body.instanceProperties.networkInterfaces[_].ipv6AccessConfigs[_].kind == STRING
    input.Body.instanceProperties.networkInterfaces[_].ipv6AccessConfigs[_].name == STRING
    input.Body.instanceProperties.networkInterfaces[_].ipv6AccessConfigs[_].natIP == STRING
    input.Body.instanceProperties.networkInterfaces[_].ipv6AccessConfigs[_].networkTier == enum_AccessConfigNetworkTier[_]
    input.Body.instanceProperties.networkInterfaces[_].ipv6AccessConfigs[_].publicPtrDomainName == STRING
    input.Body.instanceProperties.networkInterfaces[_].ipv6AccessConfigs[_].securityPolicy == STRING
    input.Body.instanceProperties.networkInterfaces[_].ipv6AccessConfigs[_].setPublicPtr == BOOLEAN
    input.Body.instanceProperties.networkInterfaces[_].ipv6AccessConfigs[_].type == enum_AccessConfigType[_]
    input.Body.instanceProperties.networkInterfaces[_].ipv6AccessType == enum_NetworkInterfaceIpv6AccessType[_]
    input.Body.instanceProperties.networkInterfaces[_].ipv6Address == STRING
    input.Body.instanceProperties.networkInterfaces[_].kind == STRING
    input.Body.instanceProperties.networkInterfaces[_].name == STRING
    input.Body.instanceProperties.networkInterfaces[_].network == STRING
    input.Body.instanceProperties.networkInterfaces[_].networkAttachment == STRING
    input.Body.instanceProperties.networkInterfaces[_].networkIP == STRING
    input.Body.instanceProperties.networkInterfaces[_].nicType == enum_NetworkInterfaceNicType[_]
    input.Body.instanceProperties.networkInterfaces[_].queueCount == INTEGER
    input.Body.instanceProperties.networkInterfaces[_].stackType == enum_NetworkInterfaceStackType[_]
    input.Body.instanceProperties.networkInterfaces[_].subnetwork == STRING
    input.Body.instanceProperties.networkPerformanceConfig.totalEgressBandwidthTier == enum_NetworkPerformanceConfigTotalEgressBandwidthTier[_]
    input.Body.instanceProperties.privateIpv6GoogleAccess == enum_InstancePropertiesPrivateIpv6GoogleAccess[_]
    input.Body.instanceProperties.reservationAffinity.consumeReservationType == enum_ReservationAffinityConsumeReservationType[_]
    input.Body.instanceProperties.reservationAffinity.key == STRING
    input.Body.instanceProperties.reservationAffinity.values[_] == STRING
    input.Body.instanceProperties.resourceManagerTags.STRING == STRING
    input.Body.instanceProperties.resourcePolicies[_] == STRING
    input.Body.instanceProperties.scheduling.automaticRestart == BOOLEAN
    input.Body.instanceProperties.scheduling.instanceTerminationAction == enum_SchedulingInstanceTerminationAction[_]
    input.Body.instanceProperties.scheduling.localSsdRecoveryTimeout.nanos == INTEGER
    input.Body.instanceProperties.scheduling.localSsdRecoveryTimeout.seconds == STRING
    input.Body.instanceProperties.scheduling.locationHint == STRING
    input.Body.instanceProperties.scheduling.minNodeCpus == INTEGER
    input.Body.instanceProperties.scheduling.nodeAffinities[_].key == STRING
    input.Body.instanceProperties.scheduling.nodeAffinities[_].operator == enum_SchedulingNodeAffinityOperator[_]
    input.Body.instanceProperties.scheduling.nodeAffinities[_].values[_] == STRING
    input.Body.instanceProperties.scheduling.onHostMaintenance == enum_SchedulingOnHostMaintenance[_]
    input.Body.instanceProperties.scheduling.preemptible == BOOLEAN
    input.Body.instanceProperties.scheduling.provisioningModel == enum_SchedulingProvisioningModel[_]
    input.Body.instanceProperties.serviceAccounts[_].email == STRING
    input.Body.instanceProperties.serviceAccounts[_].scopes[_] == STRING
    input.Body.instanceProperties.shieldedInstanceConfig.enableIntegrityMonitoring == BOOLEAN
    input.Body.instanceProperties.shieldedInstanceConfig.enableSecureBoot == BOOLEAN
    input.Body.instanceProperties.shieldedInstanceConfig.enableVtpm == BOOLEAN
    input.Body.instanceProperties.tags.fingerprint == STRING
    input.Body.instanceProperties.tags.items[_] == STRING
    input.Body.locationPolicy.locations.STRING.constraints.maxCount == INTEGER
    input.Body.locationPolicy.locations.STRING.preference == enum_LocationPolicyLocationPreference[_]
    input.Body.locationPolicy.targetShape == enum_LocationPolicyTargetShape[_]
    input.Body.minCount == STRING
    input.Body.namePattern == STRING
    input.Body.perInstanceProperties.STRING.hostname == STRING
    input.Body.perInstanceProperties.STRING.name == STRING
    input.Body.sourceInstanceTemplate == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.regionInstantSnapshots.delete

valid {
    input.ReqMap.instantSnapshot == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.regionInstantSnapshots.get

valid {
    input.ReqMap.instantSnapshot == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.regionInstantSnapshots.getIamPolicy

valid {
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.ReqMap.resource == STRING
    input.Qs.optionsRequestedPolicyVersion == INTEGER
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.regionInstantSnapshots.insert

enum_InstantSnapshotArchitecture := [ "ARCHITECTURE_UNSPECIFIED", "ARM64", "X86_64" ]
enum_InstantSnapshotStatus := [ "CREATING", "DELETING", "FAILED", "READY", "UNAVAILABLE" ]

valid {
    input.Body.architecture == enum_InstantSnapshotArchitecture[_]
    input.Body.creationTimestamp == STRING
    input.Body.description == STRING
    input.Body.diskSizeGb == STRING
    input.Body.id == STRING
    input.Body.kind == STRING
    input.Body.labelFingerprint == STRING
    input.Body.labels.STRING == STRING
    input.Body.name == STRING
    input.Body.region == STRING
    input.Body.resourceStatus.storageSizeBytes == STRING
    input.Body.satisfiesPzs == BOOLEAN
    input.Body.selfLink == STRING
    input.Body.selfLinkWithId == STRING
    input.Body.sourceDisk == STRING
    input.Body.sourceDiskId == STRING
    input.Body.status == enum_InstantSnapshotStatus[_]
    input.Body.zone == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.regionInstantSnapshots.list

valid {
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.Qs.filter == STRING
    input.Qs.maxResults == INTEGER
    input.Qs.orderBy == STRING
    input.Qs.pageToken == STRING
    input.Qs.returnPartialSuccess == BOOLEAN
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.regionInstantSnapshots.setIamPolicy

enum_AuditLogConfigLogType := [ "ADMIN_READ", "DATA_READ", "DATA_WRITE", "LOG_TYPE_UNSPECIFIED" ]
enum_AuthorizationLoggingOptionsPermissionType := [ "ADMIN_READ", "ADMIN_WRITE", "DATA_READ", "DATA_WRITE", "PERMISSION_TYPE_UNSPECIFIED" ]
enum_ConditionIam := [ "APPROVER", "ATTRIBUTION", "AUTHORITY", "CREDENTIALS_TYPE", "CREDS_ASSERTION", "JUSTIFICATION_TYPE", "NO_ATTR", "SECURITY_REALM" ]
enum_ConditionOp := [ "DISCHARGED", "EQUALS", "IN", "NOT_EQUALS", "NOT_IN", "NO_OP" ]
enum_ConditionSys := [ "IP", "NAME", "NO_ATTR", "REGION", "SERVICE" ]
enum_LogConfigCloudAuditOptionsLogName := [ "ADMIN_ACTIVITY", "DATA_ACCESS", "UNSPECIFIED_LOG_NAME" ]
enum_LogConfigDataAccessOptionsLogMode := [ "LOG_FAIL_CLOSED", "LOG_MODE_UNSPECIFIED" ]
enum_RuleAction := [ "ALLOW", "ALLOW_WITH_LOG", "DENY", "DENY_WITH_LOG", "LOG", "NO_ACTION" ]

valid {
    input.Body.bindings[_].bindingId == STRING
    input.Body.bindings[_].condition.description == STRING
    input.Body.bindings[_].condition.expression == STRING
    input.Body.bindings[_].condition.location == STRING
    input.Body.bindings[_].condition.title == STRING
    input.Body.bindings[_].members[_] == STRING
    input.Body.bindings[_].role == STRING
    input.Body.etag == STRING
    input.Body.policy.auditConfigs[_].auditLogConfigs[_].exemptedMembers[_] == STRING
    input.Body.policy.auditConfigs[_].auditLogConfigs[_].ignoreChildExemptions == BOOLEAN
    input.Body.policy.auditConfigs[_].auditLogConfigs[_].logType == enum_AuditLogConfigLogType[_]
    input.Body.policy.auditConfigs[_].exemptedMembers[_] == STRING
    input.Body.policy.auditConfigs[_].service == STRING
    input.Body.policy.bindings[_].bindingId == 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.rules[_].action == enum_RuleAction[_]
    input.Body.policy.rules[_].conditions[_].iam == enum_ConditionIam[_]
    input.Body.policy.rules[_].conditions[_].op == enum_ConditionOp[_]
    input.Body.policy.rules[_].conditions[_].svc == STRING
    input.Body.policy.rules[_].conditions[_].sys == enum_ConditionSys[_]
    input.Body.policy.rules[_].conditions[_].values[_] == STRING
    input.Body.policy.rules[_].description == STRING
    input.Body.policy.rules[_].ins[_] == STRING
    input.Body.policy.rules[_].logConfigs[_].cloudAudit.authorizationLoggingOptions.permissionType == enum_AuthorizationLoggingOptionsPermissionType[_]
    input.Body.policy.rules[_].logConfigs[_].cloudAudit.logName == enum_LogConfigCloudAuditOptionsLogName[_]
    input.Body.policy.rules[_].logConfigs[_].counter.customFields[_].name == STRING
    input.Body.policy.rules[_].logConfigs[_].counter.customFields[_].value == STRING
    input.Body.policy.rules[_].logConfigs[_].counter.field == STRING
    input.Body.policy.rules[_].logConfigs[_].counter.metric == STRING
    input.Body.policy.rules[_].logConfigs[_].dataAccess.logMode == enum_LogConfigDataAccessOptionsLogMode[_]
    input.Body.policy.rules[_].notIns[_] == STRING
    input.Body.policy.rules[_].permissions[_] == STRING
    input.Body.policy.version == INTEGER
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.ReqMap.resource == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.regionInstantSnapshots.setLabels

valid {
    input.Body.labelFingerprint == STRING
    input.Body.labels.STRING == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.ReqMap.resource == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.regionInstantSnapshots.testIamPermissions

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

compute.regionNetworkEndpointGroups.attachNetworkEndpoints

valid {
    input.Body.networkEndpoints[_].annotations.STRING == STRING
    input.Body.networkEndpoints[_].fqdn == STRING
    input.Body.networkEndpoints[_].instance == STRING
    input.Body.networkEndpoints[_].ipAddress == STRING
    input.Body.networkEndpoints[_].port == INTEGER
    input.ReqMap.networkEndpointGroup == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.regionNetworkEndpointGroups.delete

valid {
    input.ReqMap.networkEndpointGroup == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.regionNetworkEndpointGroups.detachNetworkEndpoints

valid {
    input.Body.networkEndpoints[_].annotations.STRING == STRING
    input.Body.networkEndpoints[_].fqdn == STRING
    input.Body.networkEndpoints[_].instance == STRING
    input.Body.networkEndpoints[_].ipAddress == STRING
    input.Body.networkEndpoints[_].port == INTEGER
    input.ReqMap.networkEndpointGroup == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.regionNetworkEndpointGroups.get

valid {
    input.ReqMap.networkEndpointGroup == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.regionNetworkEndpointGroups.insert

enum_NetworkEndpointGroupNetworkEndpointType := [ "GCE_VM_IP", "GCE_VM_IP_PORT", "INTERNET_FQDN_PORT", "INTERNET_IP_PORT", "NON_GCP_PRIVATE_IP_PORT", "PRIVATE_SERVICE_CONNECT", "SERVERLESS" ]
enum_NetworkEndpointGroupPscDataPscConnectionStatus := [ "ACCEPTED", "CLOSED", "NEEDS_ATTENTION", "PENDING", "REJECTED", "STATUS_UNSPECIFIED" ]

valid {
    input.Body.annotations.STRING == STRING
    input.Body.appEngine.service == STRING
    input.Body.appEngine.urlMask == STRING
    input.Body.appEngine.version == STRING
    input.Body.cloudFunction.function == STRING
    input.Body.cloudFunction.urlMask == STRING
    input.Body.cloudRun.service == STRING
    input.Body.cloudRun.tag == STRING
    input.Body.cloudRun.urlMask == STRING
    input.Body.creationTimestamp == STRING
    input.Body.defaultPort == INTEGER
    input.Body.description == STRING
    input.Body.id == STRING
    input.Body.kind == STRING
    input.Body.name == STRING
    input.Body.network == STRING
    input.Body.networkEndpointType == enum_NetworkEndpointGroupNetworkEndpointType[_]
    input.Body.pscData.consumerPscAddress == STRING
    input.Body.pscData.pscConnectionId == STRING
    input.Body.pscData.pscConnectionStatus == enum_NetworkEndpointGroupPscDataPscConnectionStatus[_]
    input.Body.pscTargetService == STRING
    input.Body.region == STRING
    input.Body.selfLink == STRING
    input.Body.size == INTEGER
    input.Body.subnetwork == STRING
    input.Body.zone == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.regionNetworkEndpointGroups.list

valid {
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.Qs.filter == STRING
    input.Qs.maxResults == INTEGER
    input.Qs.orderBy == STRING
    input.Qs.pageToken == STRING
    input.Qs.returnPartialSuccess == BOOLEAN
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.regionNetworkEndpointGroups.listNetworkEndpoints

valid {
    input.ReqMap.networkEndpointGroup == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.Qs.filter == STRING
    input.Qs.maxResults == INTEGER
    input.Qs.orderBy == STRING
    input.Qs.pageToken == STRING
    input.Qs.returnPartialSuccess == BOOLEAN
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.regionNetworkFirewallPolicies.addAssociation

valid {
    input.Body.attachmentTarget == STRING
    input.Body.displayName == STRING
    input.Body.firewallPolicyId == STRING
    input.Body.name == STRING
    input.Body.shortName == STRING
    input.ReqMap.firewallPolicy == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.Qs.replaceExistingAssociation == BOOLEAN
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.regionNetworkFirewallPolicies.addRule

enum_FirewallPolicyRuleDirection := [ "EGRESS", "INGRESS" ]
enum_FirewallPolicyRuleSecureTagState := [ "EFFECTIVE", "INEFFECTIVE" ]

valid {
    input.Body.action == STRING
    input.Body.description == STRING
    input.Body.direction == enum_FirewallPolicyRuleDirection[_]
    input.Body.disabled == BOOLEAN
    input.Body.enableLogging == BOOLEAN
    input.Body.kind == STRING
    input.Body.match.destAddressGroups[_] == STRING
    input.Body.match.destFqdns[_] == STRING
    input.Body.match.destIpRanges[_] == STRING
    input.Body.match.destRegionCodes[_] == STRING
    input.Body.match.destThreatIntelligences[_] == STRING
    input.Body.match.layer4Configs[_].ipProtocol == STRING
    input.Body.match.layer4Configs[_].ports[_] == STRING
    input.Body.match.srcAddressGroups[_] == STRING
    input.Body.match.srcFqdns[_] == STRING
    input.Body.match.srcIpRanges[_] == STRING
    input.Body.match.srcRegionCodes[_] == STRING
    input.Body.match.srcSecureTags[_].name == STRING
    input.Body.match.srcSecureTags[_].state == enum_FirewallPolicyRuleSecureTagState[_]
    input.Body.match.srcThreatIntelligences[_] == STRING
    input.Body.priority == INTEGER
    input.Body.ruleName == STRING
    input.Body.ruleTupleCount == INTEGER
    input.Body.securityProfileGroup == STRING
    input.Body.targetResources[_] == STRING
    input.Body.targetSecureTags[_].name == STRING
    input.Body.targetSecureTags[_].state == enum_FirewallPolicyRuleSecureTagState[_]
    input.Body.targetServiceAccounts[_] == STRING
    input.Body.tlsInspect == BOOLEAN
    input.ReqMap.firewallPolicy == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.Qs.maxPriority == INTEGER
    input.Qs.minPriority == INTEGER
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.regionNetworkFirewallPolicies.cloneRules

valid {
    input.ReqMap.firewallPolicy == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.Qs.requestId == STRING
    input.Qs.sourceFirewallPolicy == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.regionNetworkFirewallPolicies.delete

valid {
    input.ReqMap.firewallPolicy == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.regionNetworkFirewallPolicies.get

valid {
    input.ReqMap.firewallPolicy == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.regionNetworkFirewallPolicies.getAssociation

valid {
    input.ReqMap.firewallPolicy == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.Qs.name == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.regionNetworkFirewallPolicies.getEffectiveFirewalls

valid {
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.Qs.network == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.regionNetworkFirewallPolicies.getIamPolicy

valid {
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.ReqMap.resource == STRING
    input.Qs.optionsRequestedPolicyVersion == INTEGER
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.regionNetworkFirewallPolicies.getRule

valid {
    input.ReqMap.firewallPolicy == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.Qs.priority == INTEGER
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.regionNetworkFirewallPolicies.insert

enum_FirewallPolicyRuleDirection := [ "EGRESS", "INGRESS" ]
enum_FirewallPolicyRuleSecureTagState := [ "EFFECTIVE", "INEFFECTIVE" ]

valid {
    input.Body.associations[_].attachmentTarget == STRING
    input.Body.associations[_].displayName == STRING
    input.Body.associations[_].firewallPolicyId == STRING
    input.Body.associations[_].name == STRING
    input.Body.associations[_].shortName == STRING
    input.Body.creationTimestamp == STRING
    input.Body.description == STRING
    input.Body.displayName == STRING
    input.Body.fingerprint == STRING
    input.Body.id == STRING
    input.Body.kind == STRING
    input.Body.name == STRING
    input.Body.parent == STRING
    input.Body.region == STRING
    input.Body.ruleTupleCount == INTEGER
    input.Body.rules[_].action == STRING
    input.Body.rules[_].description == STRING
    input.Body.rules[_].direction == enum_FirewallPolicyRuleDirection[_]
    input.Body.rules[_].disabled == BOOLEAN
    input.Body.rules[_].enableLogging == BOOLEAN
    input.Body.rules[_].kind == STRING
    input.Body.rules[_].match.destAddressGroups[_] == STRING
    input.Body.rules[_].match.destFqdns[_] == STRING
    input.Body.rules[_].match.destIpRanges[_] == STRING
    input.Body.rules[_].match.destRegionCodes[_] == STRING
    input.Body.rules[_].match.destThreatIntelligences[_] == STRING
    input.Body.rules[_].match.layer4Configs[_].ipProtocol == STRING
    input.Body.rules[_].match.layer4Configs[_].ports[_] == STRING
    input.Body.rules[_].match.srcAddressGroups[_] == STRING
    input.Body.rules[_].match.srcFqdns[_] == STRING
    input.Body.rules[_].match.srcIpRanges[_] == STRING
    input.Body.rules[_].match.srcRegionCodes[_] == STRING
    input.Body.rules[_].match.srcSecureTags[_].name == STRING
    input.Body.rules[_].match.srcSecureTags[_].state == enum_FirewallPolicyRuleSecureTagState[_]
    input.Body.rules[_].match.srcThreatIntelligences[_] == STRING
    input.Body.rules[_].priority == INTEGER
    input.Body.rules[_].ruleName == STRING
    input.Body.rules[_].ruleTupleCount == INTEGER
    input.Body.rules[_].securityProfileGroup == STRING
    input.Body.rules[_].targetResources[_] == STRING
    input.Body.rules[_].targetSecureTags[_].name == STRING
    input.Body.rules[_].targetSecureTags[_].state == enum_FirewallPolicyRuleSecureTagState[_]
    input.Body.rules[_].targetServiceAccounts[_] == STRING
    input.Body.rules[_].tlsInspect == BOOLEAN
    input.Body.selfLink == STRING
    input.Body.selfLinkWithId == STRING
    input.Body.shortName == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.regionNetworkFirewallPolicies.list

valid {
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.Qs.filter == STRING
    input.Qs.maxResults == INTEGER
    input.Qs.orderBy == STRING
    input.Qs.pageToken == STRING
    input.Qs.returnPartialSuccess == BOOLEAN
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.regionNetworkFirewallPolicies.patch

enum_FirewallPolicyRuleDirection := [ "EGRESS", "INGRESS" ]
enum_FirewallPolicyRuleSecureTagState := [ "EFFECTIVE", "INEFFECTIVE" ]

valid {
    input.Body.associations[_].attachmentTarget == STRING
    input.Body.associations[_].displayName == STRING
    input.Body.associations[_].firewallPolicyId == STRING
    input.Body.associations[_].name == STRING
    input.Body.associations[_].shortName == STRING
    input.Body.creationTimestamp == STRING
    input.Body.description == STRING
    input.Body.displayName == STRING
    input.Body.fingerprint == STRING
    input.Body.id == STRING
    input.Body.kind == STRING
    input.Body.name == STRING
    input.Body.parent == STRING
    input.Body.region == STRING
    input.Body.ruleTupleCount == INTEGER
    input.Body.rules[_].action == STRING
    input.Body.rules[_].description == STRING
    input.Body.rules[_].direction == enum_FirewallPolicyRuleDirection[_]
    input.Body.rules[_].disabled == BOOLEAN
    input.Body.rules[_].enableLogging == BOOLEAN
    input.Body.rules[_].kind == STRING
    input.Body.rules[_].match.destAddressGroups[_] == STRING
    input.Body.rules[_].match.destFqdns[_] == STRING
    input.Body.rules[_].match.destIpRanges[_] == STRING
    input.Body.rules[_].match.destRegionCodes[_] == STRING
    input.Body.rules[_].match.destThreatIntelligences[_] == STRING
    input.Body.rules[_].match.layer4Configs[_].ipProtocol == STRING
    input.Body.rules[_].match.layer4Configs[_].ports[_] == STRING
    input.Body.rules[_].match.srcAddressGroups[_] == STRING
    input.Body.rules[_].match.srcFqdns[_] == STRING
    input.Body.rules[_].match.srcIpRanges[_] == STRING
    input.Body.rules[_].match.srcRegionCodes[_] == STRING
    input.Body.rules[_].match.srcSecureTags[_].name == STRING
    input.Body.rules[_].match.srcSecureTags[_].state == enum_FirewallPolicyRuleSecureTagState[_]
    input.Body.rules[_].match.srcThreatIntelligences[_] == STRING
    input.Body.rules[_].priority == INTEGER
    input.Body.rules[_].ruleName == STRING
    input.Body.rules[_].ruleTupleCount == INTEGER
    input.Body.rules[_].securityProfileGroup == STRING
    input.Body.rules[_].targetResources[_] == STRING
    input.Body.rules[_].targetSecureTags[_].name == STRING
    input.Body.rules[_].targetSecureTags[_].state == enum_FirewallPolicyRuleSecureTagState[_]
    input.Body.rules[_].targetServiceAccounts[_] == STRING
    input.Body.rules[_].tlsInspect == BOOLEAN
    input.Body.selfLink == STRING
    input.Body.selfLinkWithId == STRING
    input.Body.shortName == STRING
    input.ReqMap.firewallPolicy == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.regionNetworkFirewallPolicies.patchAssociation

valid {
    input.Body.attachmentTarget == STRING
    input.Body.displayName == STRING
    input.Body.firewallPolicyId == STRING
    input.Body.name == STRING
    input.Body.priority == INTEGER
    input.Body.shortName == STRING
    input.ReqMap.firewallPolicy == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.regionNetworkFirewallPolicies.patchRule

enum_FirewallPolicyRuleDirection := [ "EGRESS", "INGRESS" ]
enum_FirewallPolicyRuleSecureTagState := [ "EFFECTIVE", "INEFFECTIVE" ]

valid {
    input.Body.action == STRING
    input.Body.description == STRING
    input.Body.direction == enum_FirewallPolicyRuleDirection[_]
    input.Body.disabled == BOOLEAN
    input.Body.enableLogging == BOOLEAN
    input.Body.kind == STRING
    input.Body.match.destAddressGroups[_] == STRING
    input.Body.match.destFqdns[_] == STRING
    input.Body.match.destIpRanges[_] == STRING
    input.Body.match.destRegionCodes[_] == STRING
    input.Body.match.destThreatIntelligences[_] == STRING
    input.Body.match.layer4Configs[_].ipProtocol == STRING
    input.Body.match.layer4Configs[_].ports[_] == STRING
    input.Body.match.srcAddressGroups[_] == STRING
    input.Body.match.srcFqdns[_] == STRING
    input.Body.match.srcIpRanges[_] == STRING
    input.Body.match.srcRegionCodes[_] == STRING
    input.Body.match.srcSecureTags[_].name == STRING
    input.Body.match.srcSecureTags[_].state == enum_FirewallPolicyRuleSecureTagState[_]
    input.Body.match.srcThreatIntelligences[_] == STRING
    input.Body.priority == INTEGER
    input.Body.ruleName == STRING
    input.Body.ruleTupleCount == INTEGER
    input.Body.securityProfileGroup == STRING
    input.Body.targetResources[_] == STRING
    input.Body.targetSecureTags[_].name == STRING
    input.Body.targetSecureTags[_].state == enum_FirewallPolicyRuleSecureTagState[_]
    input.Body.targetServiceAccounts[_] == STRING
    input.Body.tlsInspect == BOOLEAN
    input.ReqMap.firewallPolicy == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.Qs.priority == INTEGER
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.regionNetworkFirewallPolicies.removeAssociation

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

compute.regionNetworkFirewallPolicies.removeRule

valid {
    input.ReqMap.firewallPolicy == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.Qs.priority == INTEGER
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.regionNetworkFirewallPolicies.setIamPolicy

enum_AuditLogConfigLogType := [ "ADMIN_READ", "DATA_READ", "DATA_WRITE", "LOG_TYPE_UNSPECIFIED" ]
enum_AuthorizationLoggingOptionsPermissionType := [ "ADMIN_READ", "ADMIN_WRITE", "DATA_READ", "DATA_WRITE", "PERMISSION_TYPE_UNSPECIFIED" ]
enum_ConditionIam := [ "APPROVER", "ATTRIBUTION", "AUTHORITY", "CREDENTIALS_TYPE", "CREDS_ASSERTION", "JUSTIFICATION_TYPE", "NO_ATTR", "SECURITY_REALM" ]
enum_ConditionOp := [ "DISCHARGED", "EQUALS", "IN", "NOT_EQUALS", "NOT_IN", "NO_OP" ]
enum_ConditionSys := [ "IP", "NAME", "NO_ATTR", "REGION", "SERVICE" ]
enum_LogConfigCloudAuditOptionsLogName := [ "ADMIN_ACTIVITY", "DATA_ACCESS", "UNSPECIFIED_LOG_NAME" ]
enum_LogConfigDataAccessOptionsLogMode := [ "LOG_FAIL_CLOSED", "LOG_MODE_UNSPECIFIED" ]
enum_RuleAction := [ "ALLOW", "ALLOW_WITH_LOG", "DENY", "DENY_WITH_LOG", "LOG", "NO_ACTION" ]

valid {
    input.Body.bindings[_].bindingId == STRING
    input.Body.bindings[_].condition.description == STRING
    input.Body.bindings[_].condition.expression == STRING
    input.Body.bindings[_].condition.location == STRING
    input.Body.bindings[_].condition.title == STRING
    input.Body.bindings[_].members[_] == STRING
    input.Body.bindings[_].role == STRING
    input.Body.etag == STRING
    input.Body.policy.auditConfigs[_].auditLogConfigs[_].exemptedMembers[_] == STRING
    input.Body.policy.auditConfigs[_].auditLogConfigs[_].ignoreChildExemptions == BOOLEAN
    input.Body.policy.auditConfigs[_].auditLogConfigs[_].logType == enum_AuditLogConfigLogType[_]
    input.Body.policy.auditConfigs[_].exemptedMembers[_] == STRING
    input.Body.policy.auditConfigs[_].service == STRING
    input.Body.policy.bindings[_].bindingId == 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.rules[_].action == enum_RuleAction[_]
    input.Body.policy.rules[_].conditions[_].iam == enum_ConditionIam[_]
    input.Body.policy.rules[_].conditions[_].op == enum_ConditionOp[_]
    input.Body.policy.rules[_].conditions[_].svc == STRING
    input.Body.policy.rules[_].conditions[_].sys == enum_ConditionSys[_]
    input.Body.policy.rules[_].conditions[_].values[_] == STRING
    input.Body.policy.rules[_].description == STRING
    input.Body.policy.rules[_].ins[_] == STRING
    input.Body.policy.rules[_].logConfigs[_].cloudAudit.authorizationLoggingOptions.permissionType == enum_AuthorizationLoggingOptionsPermissionType[_]
    input.Body.policy.rules[_].logConfigs[_].cloudAudit.logName == enum_LogConfigCloudAuditOptionsLogName[_]
    input.Body.policy.rules[_].logConfigs[_].counter.customFields[_].name == STRING
    input.Body.policy.rules[_].logConfigs[_].counter.customFields[_].value == STRING
    input.Body.policy.rules[_].logConfigs[_].counter.field == STRING
    input.Body.policy.rules[_].logConfigs[_].counter.metric == STRING
    input.Body.policy.rules[_].logConfigs[_].dataAccess.logMode == enum_LogConfigDataAccessOptionsLogMode[_]
    input.Body.policy.rules[_].notIns[_] == STRING
    input.Body.policy.rules[_].permissions[_] == STRING
    input.Body.policy.version == INTEGER
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.ReqMap.resource == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.regionNetworkFirewallPolicies.testIamPermissions

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

compute.regionNotificationEndpoints.aggregatedList

valid {
    input.ReqMap.ProjectID == STRING
    input.Qs.filter == STRING
    input.Qs.includeAllScopes == BOOLEAN
    input.Qs.maxResults == INTEGER
    input.Qs.orderBy == STRING
    input.Qs.pageToken == STRING
    input.Qs.returnPartialSuccess == BOOLEAN
    input.Qs.serviceProjectNumber == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.regionNotificationEndpoints.delete

valid {
    input.ReqMap.notificationEndpoint == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.regionNotificationEndpoints.get

valid {
    input.ReqMap.notificationEndpoint == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.regionNotificationEndpoints.insert

valid {
    input.Body.creationTimestamp == STRING
    input.Body.description == STRING
    input.Body.grpcSettings.authority == STRING
    input.Body.grpcSettings.endpoint == STRING
    input.Body.grpcSettings.payloadName == STRING
    input.Body.grpcSettings.resendInterval.nanos == INTEGER
    input.Body.grpcSettings.resendInterval.seconds == STRING
    input.Body.grpcSettings.retryDurationSec == INTEGER
    input.Body.id == STRING
    input.Body.kind == STRING
    input.Body.name == STRING
    input.Body.region == STRING
    input.Body.selfLink == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.regionNotificationEndpoints.list

valid {
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.Qs.filter == STRING
    input.Qs.maxResults == INTEGER
    input.Qs.orderBy == STRING
    input.Qs.pageToken == STRING
    input.Qs.returnPartialSuccess == BOOLEAN
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.regionNotificationEndpoints.testIamPermissions

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

compute.regionOperations.delete

valid {
    input.ReqMap.operation == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.regionOperations.get

valid {
    input.ReqMap.operation == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.regionOperations.list

valid {
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.Qs.filter == STRING
    input.Qs.maxResults == INTEGER
    input.Qs.orderBy == STRING
    input.Qs.pageToken == STRING
    input.Qs.returnPartialSuccess == BOOLEAN
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.regionOperations.wait

valid {
    input.ReqMap.operation == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.regionSecurityPolicies.addRule

enum_SecurityPolicyRuleMatcherVersionedExpr := [ "SRC_IPS_V1" ]
enum_SecurityPolicyRulePreconfiguredWafConfigExclusionFieldParamsOp := [ "CONTAINS", "ENDS_WITH", "EQUALS", "EQUALS_ANY", "STARTS_WITH" ]
enum_SecurityPolicyRuleRateLimitOptionsEnforceOnKey := [ "ALL", "HTTP_COOKIE", "HTTP_HEADER", "HTTP_PATH", "IP", "REGION_CODE", "SNI", "TLS_JA3_FINGERPRINT", "USER_IP", "XFF_IP" ]
enum_SecurityPolicyRuleRateLimitOptionsEnforceOnKeyConfigEnforceOnKeyType := [ "ALL", "HTTP_COOKIE", "HTTP_HEADER", "HTTP_PATH", "IP", "REGION_CODE", "SNI", "TLS_JA3_FINGERPRINT", "USER_IP", "XFF_IP" ]
enum_SecurityPolicyRuleRedirectOptionsType := [ "EXTERNAL_302", "GOOGLE_RECAPTCHA" ]

valid {
    input.Body.action == STRING
    input.Body.description == STRING
    input.Body.headerAction.requestHeadersToAdds[_].headerName == STRING
    input.Body.headerAction.requestHeadersToAdds[_].headerValue == STRING
    input.Body.kind == STRING
    input.Body.match.config.srcIpRanges[_] == STRING
    input.Body.match.expr.description == STRING
    input.Body.match.expr.expression == STRING
    input.Body.match.expr.location == STRING
    input.Body.match.expr.title == STRING
    input.Body.match.exprOptions.recaptchaOptions.actionTokenSiteKeys[_] == STRING
    input.Body.match.exprOptions.recaptchaOptions.sessionTokenSiteKeys[_] == STRING
    input.Body.match.versionedExpr == enum_SecurityPolicyRuleMatcherVersionedExpr[_]
    input.Body.networkMatch.destIpRanges[_] == STRING
    input.Body.networkMatch.destPorts[_] == STRING
    input.Body.networkMatch.ipProtocols[_] == STRING
    input.Body.networkMatch.srcAsns[_] == INTEGER
    input.Body.networkMatch.srcIpRanges[_] == STRING
    input.Body.networkMatch.srcPorts[_] == STRING
    input.Body.networkMatch.srcRegionCodes[_] == STRING
    input.Body.networkMatch.userDefinedFields[_].name == STRING
    input.Body.networkMatch.userDefinedFields[_].values[_] == STRING
    input.Body.preconfiguredWafConfig.exclusions[_].requestCookiesToExclude[_].op == enum_SecurityPolicyRulePreconfiguredWafConfigExclusionFieldParamsOp[_]
    input.Body.preconfiguredWafConfig.exclusions[_].requestCookiesToExclude[_].val == STRING
    input.Body.preconfiguredWafConfig.exclusions[_].requestHeadersToExclude[_].op == enum_SecurityPolicyRulePreconfiguredWafConfigExclusionFieldParamsOp[_]
    input.Body.preconfiguredWafConfig.exclusions[_].requestHeadersToExclude[_].val == STRING
    input.Body.preconfiguredWafConfig.exclusions[_].requestQueryParamsToExclude[_].op == enum_SecurityPolicyRulePreconfiguredWafConfigExclusionFieldParamsOp[_]
    input.Body.preconfiguredWafConfig.exclusions[_].requestQueryParamsToExclude[_].val == STRING
    input.Body.preconfiguredWafConfig.exclusions[_].requestUrisToExclude[_].op == enum_SecurityPolicyRulePreconfiguredWafConfigExclusionFieldParamsOp[_]
    input.Body.preconfiguredWafConfig.exclusions[_].requestUrisToExclude[_].val == STRING
    input.Body.preconfiguredWafConfig.exclusions[_].targetRuleIds[_] == STRING
    input.Body.preconfiguredWafConfig.exclusions[_].targetRuleSet == STRING
    input.Body.preview == BOOLEAN
    input.Body.priority == INTEGER
    input.Body.rateLimitOptions.banDurationSec == INTEGER
    input.Body.rateLimitOptions.banThreshold.count == INTEGER
    input.Body.rateLimitOptions.banThreshold.intervalSec == INTEGER
    input.Body.rateLimitOptions.conformAction == STRING
    input.Body.rateLimitOptions.enforceOnKey == enum_SecurityPolicyRuleRateLimitOptionsEnforceOnKey[_]
    input.Body.rateLimitOptions.enforceOnKeyConfigs[_].enforceOnKeyName == STRING
    input.Body.rateLimitOptions.enforceOnKeyConfigs[_].enforceOnKeyType == enum_SecurityPolicyRuleRateLimitOptionsEnforceOnKeyConfigEnforceOnKeyType[_]
    input.Body.rateLimitOptions.enforceOnKeyName == STRING
    input.Body.rateLimitOptions.exceedAction == STRING
    input.Body.rateLimitOptions.exceedRedirectOptions.target == STRING
    input.Body.rateLimitOptions.exceedRedirectOptions.type == enum_SecurityPolicyRuleRedirectOptionsType[_]
    input.Body.rateLimitOptions.rateLimitThreshold.count == INTEGER
    input.Body.rateLimitOptions.rateLimitThreshold.intervalSec == INTEGER
    input.Body.redirectOptions.target == STRING
    input.Body.redirectOptions.type == enum_SecurityPolicyRuleRedirectOptionsType[_]
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.ReqMap.securityPolicy == STRING
    input.Qs.validateOnly == BOOLEAN
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.regionSecurityPolicies.delete

valid {
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.ReqMap.securityPolicy == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.regionSecurityPolicies.get

valid {
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.ReqMap.securityPolicy == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.regionSecurityPolicies.getRule

valid {
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.ReqMap.securityPolicy == STRING
    input.Qs.priority == INTEGER
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.regionSecurityPolicies.insert

enum_SecurityPolicyAdaptiveProtectionConfigLayer7DdosDefenseConfigRuleVisibility := [ "PREMIUM", "STANDARD" ]
enum_SecurityPolicyAdvancedOptionsConfigJsonParsing := [ "DISABLED", "STANDARD", "STANDARD_WITH_GRAPHQL" ]
enum_SecurityPolicyAdvancedOptionsConfigLogLevel := [ "NORMAL", "VERBOSE" ]
enum_SecurityPolicyDdosProtectionConfigDdosProtection := [ "ADVANCED", "STANDARD" ]
enum_SecurityPolicyRuleMatcherVersionedExpr := [ "SRC_IPS_V1" ]
enum_SecurityPolicyRulePreconfiguredWafConfigExclusionFieldParamsOp := [ "CONTAINS", "ENDS_WITH", "EQUALS", "EQUALS_ANY", "STARTS_WITH" ]
enum_SecurityPolicyRuleRateLimitOptionsEnforceOnKey := [ "ALL", "HTTP_COOKIE", "HTTP_HEADER", "HTTP_PATH", "IP", "REGION_CODE", "SNI", "TLS_JA3_FINGERPRINT", "USER_IP", "XFF_IP" ]
enum_SecurityPolicyRuleRateLimitOptionsEnforceOnKeyConfigEnforceOnKeyType := [ "ALL", "HTTP_COOKIE", "HTTP_HEADER", "HTTP_PATH", "IP", "REGION_CODE", "SNI", "TLS_JA3_FINGERPRINT", "USER_IP", "XFF_IP" ]
enum_SecurityPolicyRuleRedirectOptionsType := [ "EXTERNAL_302", "GOOGLE_RECAPTCHA" ]
enum_SecurityPolicyType := [ "CLOUD_ARMOR", "CLOUD_ARMOR_EDGE", "CLOUD_ARMOR_NETWORK" ]
enum_SecurityPolicyUserDefinedFieldBase := [ "IPV4", "IPV6", "TCP", "UDP" ]

valid {
    input.Body.adaptiveProtectionConfig.layer7DdosDefenseConfig.enable == BOOLEAN
    input.Body.adaptiveProtectionConfig.layer7DdosDefenseConfig.ruleVisibility == enum_SecurityPolicyAdaptiveProtectionConfigLayer7DdosDefenseConfigRuleVisibility[_]
    input.Body.adaptiveProtectionConfig.layer7DdosDefenseConfig.thresholdConfigs[_].autoDeployConfidenceThreshold == NUMBER
    input.Body.adaptiveProtectionConfig.layer7DdosDefenseConfig.thresholdConfigs[_].autoDeployExpirationSec == INTEGER
    input.Body.adaptiveProtectionConfig.layer7DdosDefenseConfig.thresholdConfigs[_].autoDeployImpactedBaselineThreshold == NUMBER
    input.Body.adaptiveProtectionConfig.layer7DdosDefenseConfig.thresholdConfigs[_].autoDeployLoadThreshold == NUMBER
    input.Body.adaptiveProtectionConfig.layer7DdosDefenseConfig.thresholdConfigs[_].name == STRING
    input.Body.advancedOptionsConfig.jsonCustomConfig.contentTypes[_] == STRING
    input.Body.advancedOptionsConfig.jsonParsing == enum_SecurityPolicyAdvancedOptionsConfigJsonParsing[_]
    input.Body.advancedOptionsConfig.logLevel == enum_SecurityPolicyAdvancedOptionsConfigLogLevel[_]
    input.Body.advancedOptionsConfig.userIpRequestHeaders[_] == STRING
    input.Body.creationTimestamp == STRING
    input.Body.ddosProtectionConfig.ddosProtection == enum_SecurityPolicyDdosProtectionConfigDdosProtection[_]
    input.Body.description == STRING
    input.Body.fingerprint == STRING
    input.Body.id == STRING
    input.Body.kind == STRING
    input.Body.labelFingerprint == STRING
    input.Body.labels.STRING == STRING
    input.Body.name == STRING
    input.Body.recaptchaOptionsConfig.redirectSiteKey == STRING
    input.Body.region == STRING
    input.Body.rules[_].action == STRING
    input.Body.rules[_].description == STRING
    input.Body.rules[_].headerAction.requestHeadersToAdds[_].headerName == STRING
    input.Body.rules[_].headerAction.requestHeadersToAdds[_].headerValue == STRING
    input.Body.rules[_].kind == STRING
    input.Body.rules[_].match.config.srcIpRanges[_] == STRING
    input.Body.rules[_].match.expr.description == STRING
    input.Body.rules[_].match.expr.expression == STRING
    input.Body.rules[_].match.expr.location == STRING
    input.Body.rules[_].match.expr.title == STRING
    input.Body.rules[_].match.exprOptions.recaptchaOptions.actionTokenSiteKeys[_] == STRING
    input.Body.rules[_].match.exprOptions.recaptchaOptions.sessionTokenSiteKeys[_] == STRING
    input.Body.rules[_].match.versionedExpr == enum_SecurityPolicyRuleMatcherVersionedExpr[_]
    input.Body.rules[_].networkMatch.destIpRanges[_] == STRING
    input.Body.rules[_].networkMatch.destPorts[_] == STRING
    input.Body.rules[_].networkMatch.ipProtocols[_] == STRING
    input.Body.rules[_].networkMatch.srcAsns[_] == INTEGER
    input.Body.rules[_].networkMatch.srcIpRanges[_] == STRING
    input.Body.rules[_].networkMatch.srcPorts[_] == STRING
    input.Body.rules[_].networkMatch.srcRegionCodes[_] == STRING
    input.Body.rules[_].networkMatch.userDefinedFields[_].name == STRING
    input.Body.rules[_].networkMatch.userDefinedFields[_].values[_] == STRING
    input.Body.rules[_].preconfiguredWafConfig.exclusions[_].requestCookiesToExclude[_].op == enum_SecurityPolicyRulePreconfiguredWafConfigExclusionFieldParamsOp[_]
    input.Body.rules[_].preconfiguredWafConfig.exclusions[_].requestCookiesToExclude[_].val == STRING
    input.Body.rules[_].preconfiguredWafConfig.exclusions[_].requestHeadersToExclude[_].op == enum_SecurityPolicyRulePreconfiguredWafConfigExclusionFieldParamsOp[_]
    input.Body.rules[_].preconfiguredWafConfig.exclusions[_].requestHeadersToExclude[_].val == STRING
    input.Body.rules[_].preconfiguredWafConfig.exclusions[_].requestQueryParamsToExclude[_].op == enum_SecurityPolicyRulePreconfiguredWafConfigExclusionFieldParamsOp[_]
    input.Body.rules[_].preconfiguredWafConfig.exclusions[_].requestQueryParamsToExclude[_].val == STRING
    input.Body.rules[_].preconfiguredWafConfig.exclusions[_].requestUrisToExclude[_].op == enum_SecurityPolicyRulePreconfiguredWafConfigExclusionFieldParamsOp[_]
    input.Body.rules[_].preconfiguredWafConfig.exclusions[_].requestUrisToExclude[_].val == STRING
    input.Body.rules[_].preconfiguredWafConfig.exclusions[_].targetRuleIds[_] == STRING
    input.Body.rules[_].preconfiguredWafConfig.exclusions[_].targetRuleSet == STRING
    input.Body.rules[_].preview == BOOLEAN
    input.Body.rules[_].priority == INTEGER
    input.Body.rules[_].rateLimitOptions.banDurationSec == INTEGER
    input.Body.rules[_].rateLimitOptions.banThreshold.count == INTEGER
    input.Body.rules[_].rateLimitOptions.banThreshold.intervalSec == INTEGER
    input.Body.rules[_].rateLimitOptions.conformAction == STRING
    input.Body.rules[_].rateLimitOptions.enforceOnKey == enum_SecurityPolicyRuleRateLimitOptionsEnforceOnKey[_]
    input.Body.rules[_].rateLimitOptions.enforceOnKeyConfigs[_].enforceOnKeyName == STRING
    input.Body.rules[_].rateLimitOptions.enforceOnKeyConfigs[_].enforceOnKeyType == enum_SecurityPolicyRuleRateLimitOptionsEnforceOnKeyConfigEnforceOnKeyType[_]
    input.Body.rules[_].rateLimitOptions.enforceOnKeyName == STRING
    input.Body.rules[_].rateLimitOptions.exceedAction == STRING
    input.Body.rules[_].rateLimitOptions.exceedRedirectOptions.target == STRING
    input.Body.rules[_].rateLimitOptions.exceedRedirectOptions.type == enum_SecurityPolicyRuleRedirectOptionsType[_]
    input.Body.rules[_].rateLimitOptions.rateLimitThreshold.count == INTEGER
    input.Body.rules[_].rateLimitOptions.rateLimitThreshold.intervalSec == INTEGER
    input.Body.rules[_].redirectOptions.target == STRING
    input.Body.rules[_].redirectOptions.type == enum_SecurityPolicyRuleRedirectOptionsType[_]
    input.Body.selfLink == STRING
    input.Body.type == enum_SecurityPolicyType[_]
    input.Body.userDefinedFields[_].base == enum_SecurityPolicyUserDefinedFieldBase[_]
    input.Body.userDefinedFields[_].mask == STRING
    input.Body.userDefinedFields[_].name == STRING
    input.Body.userDefinedFields[_].offset == INTEGER
    input.Body.userDefinedFields[_].size == INTEGER
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.Qs.requestId == STRING
    input.Qs.validateOnly == BOOLEAN
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.regionSecurityPolicies.list

valid {
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.Qs.filter == STRING
    input.Qs.maxResults == INTEGER
    input.Qs.orderBy == STRING
    input.Qs.pageToken == STRING
    input.Qs.returnPartialSuccess == BOOLEAN
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.regionSecurityPolicies.patch

enum_SecurityPolicyAdaptiveProtectionConfigLayer7DdosDefenseConfigRuleVisibility := [ "PREMIUM", "STANDARD" ]
enum_SecurityPolicyAdvancedOptionsConfigJsonParsing := [ "DISABLED", "STANDARD", "STANDARD_WITH_GRAPHQL" ]
enum_SecurityPolicyAdvancedOptionsConfigLogLevel := [ "NORMAL", "VERBOSE" ]
enum_SecurityPolicyDdosProtectionConfigDdosProtection := [ "ADVANCED", "STANDARD" ]
enum_SecurityPolicyRuleMatcherVersionedExpr := [ "SRC_IPS_V1" ]
enum_SecurityPolicyRulePreconfiguredWafConfigExclusionFieldParamsOp := [ "CONTAINS", "ENDS_WITH", "EQUALS", "EQUALS_ANY", "STARTS_WITH" ]
enum_SecurityPolicyRuleRateLimitOptionsEnforceOnKey := [ "ALL", "HTTP_COOKIE", "HTTP_HEADER", "HTTP_PATH", "IP", "REGION_CODE", "SNI", "TLS_JA3_FINGERPRINT", "USER_IP", "XFF_IP" ]
enum_SecurityPolicyRuleRateLimitOptionsEnforceOnKeyConfigEnforceOnKeyType := [ "ALL", "HTTP_COOKIE", "HTTP_HEADER", "HTTP_PATH", "IP", "REGION_CODE", "SNI", "TLS_JA3_FINGERPRINT", "USER_IP", "XFF_IP" ]
enum_SecurityPolicyRuleRedirectOptionsType := [ "EXTERNAL_302", "GOOGLE_RECAPTCHA" ]
enum_SecurityPolicyType := [ "CLOUD_ARMOR", "CLOUD_ARMOR_EDGE", "CLOUD_ARMOR_NETWORK" ]
enum_SecurityPolicyUserDefinedFieldBase := [ "IPV4", "IPV6", "TCP", "UDP" ]

valid {
    input.Body.adaptiveProtectionConfig.layer7DdosDefenseConfig.enable == BOOLEAN
    input.Body.adaptiveProtectionConfig.layer7DdosDefenseConfig.ruleVisibility == enum_SecurityPolicyAdaptiveProtectionConfigLayer7DdosDefenseConfigRuleVisibility[_]
    input.Body.adaptiveProtectionConfig.layer7DdosDefenseConfig.thresholdConfigs[_].autoDeployConfidenceThreshold == NUMBER
    input.Body.adaptiveProtectionConfig.layer7DdosDefenseConfig.thresholdConfigs[_].autoDeployExpirationSec == INTEGER
    input.Body.adaptiveProtectionConfig.layer7DdosDefenseConfig.thresholdConfigs[_].autoDeployImpactedBaselineThreshold == NUMBER
    input.Body.adaptiveProtectionConfig.layer7DdosDefenseConfig.thresholdConfigs[_].autoDeployLoadThreshold == NUMBER
    input.Body.adaptiveProtectionConfig.layer7DdosDefenseConfig.thresholdConfigs[_].name == STRING
    input.Body.advancedOptionsConfig.jsonCustomConfig.contentTypes[_] == STRING
    input.Body.advancedOptionsConfig.jsonParsing == enum_SecurityPolicyAdvancedOptionsConfigJsonParsing[_]
    input.Body.advancedOptionsConfig.logLevel == enum_SecurityPolicyAdvancedOptionsConfigLogLevel[_]
    input.Body.advancedOptionsConfig.userIpRequestHeaders[_] == STRING
    input.Body.creationTimestamp == STRING
    input.Body.ddosProtectionConfig.ddosProtection == enum_SecurityPolicyDdosProtectionConfigDdosProtection[_]
    input.Body.description == STRING
    input.Body.fingerprint == STRING
    input.Body.id == STRING
    input.Body.kind == STRING
    input.Body.labelFingerprint == STRING
    input.Body.labels.STRING == STRING
    input.Body.name == STRING
    input.Body.recaptchaOptionsConfig.redirectSiteKey == STRING
    input.Body.region == STRING
    input.Body.rules[_].action == STRING
    input.Body.rules[_].description == STRING
    input.Body.rules[_].headerAction.requestHeadersToAdds[_].headerName == STRING
    input.Body.rules[_].headerAction.requestHeadersToAdds[_].headerValue == STRING
    input.Body.rules[_].kind == STRING
    input.Body.rules[_].match.config.srcIpRanges[_] == STRING
    input.Body.rules[_].match.expr.description == STRING
    input.Body.rules[_].match.expr.expression == STRING
    input.Body.rules[_].match.expr.location == STRING
    input.Body.rules[_].match.expr.title == STRING
    input.Body.rules[_].match.exprOptions.recaptchaOptions.actionTokenSiteKeys[_] == STRING
    input.Body.rules[_].match.exprOptions.recaptchaOptions.sessionTokenSiteKeys[_] == STRING
    input.Body.rules[_].match.versionedExpr == enum_SecurityPolicyRuleMatcherVersionedExpr[_]
    input.Body.rules[_].networkMatch.destIpRanges[_] == STRING
    input.Body.rules[_].networkMatch.destPorts[_] == STRING
    input.Body.rules[_].networkMatch.ipProtocols[_] == STRING
    input.Body.rules[_].networkMatch.srcAsns[_] == INTEGER
    input.Body.rules[_].networkMatch.srcIpRanges[_] == STRING
    input.Body.rules[_].networkMatch.srcPorts[_] == STRING
    input.Body.rules[_].networkMatch.srcRegionCodes[_] == STRING
    input.Body.rules[_].networkMatch.userDefinedFields[_].name == STRING
    input.Body.rules[_].networkMatch.userDefinedFields[_].values[_] == STRING
    input.Body.rules[_].preconfiguredWafConfig.exclusions[_].requestCookiesToExclude[_].op == enum_SecurityPolicyRulePreconfiguredWafConfigExclusionFieldParamsOp[_]
    input.Body.rules[_].preconfiguredWafConfig.exclusions[_].requestCookiesToExclude[_].val == STRING
    input.Body.rules[_].preconfiguredWafConfig.exclusions[_].requestHeadersToExclude[_].op == enum_SecurityPolicyRulePreconfiguredWafConfigExclusionFieldParamsOp[_]
    input.Body.rules[_].preconfiguredWafConfig.exclusions[_].requestHeadersToExclude[_].val == STRING
    input.Body.rules[_].preconfiguredWafConfig.exclusions[_].requestQueryParamsToExclude[_].op == enum_SecurityPolicyRulePreconfiguredWafConfigExclusionFieldParamsOp[_]
    input.Body.rules[_].preconfiguredWafConfig.exclusions[_].requestQueryParamsToExclude[_].val == STRING
    input.Body.rules[_].preconfiguredWafConfig.exclusions[_].requestUrisToExclude[_].op == enum_SecurityPolicyRulePreconfiguredWafConfigExclusionFieldParamsOp[_]
    input.Body.rules[_].preconfiguredWafConfig.exclusions[_].requestUrisToExclude[_].val == STRING
    input.Body.rules[_].preconfiguredWafConfig.exclusions[_].targetRuleIds[_] == STRING
    input.Body.rules[_].preconfiguredWafConfig.exclusions[_].targetRuleSet == STRING
    input.Body.rules[_].preview == BOOLEAN
    input.Body.rules[_].priority == INTEGER
    input.Body.rules[_].rateLimitOptions.banDurationSec == INTEGER
    input.Body.rules[_].rateLimitOptions.banThreshold.count == INTEGER
    input.Body.rules[_].rateLimitOptions.banThreshold.intervalSec == INTEGER
    input.Body.rules[_].rateLimitOptions.conformAction == STRING
    input.Body.rules[_].rateLimitOptions.enforceOnKey == enum_SecurityPolicyRuleRateLimitOptionsEnforceOnKey[_]
    input.Body.rules[_].rateLimitOptions.enforceOnKeyConfigs[_].enforceOnKeyName == STRING
    input.Body.rules[_].rateLimitOptions.enforceOnKeyConfigs[_].enforceOnKeyType == enum_SecurityPolicyRuleRateLimitOptionsEnforceOnKeyConfigEnforceOnKeyType[_]
    input.Body.rules[_].rateLimitOptions.enforceOnKeyName == STRING
    input.Body.rules[_].rateLimitOptions.exceedAction == STRING
    input.Body.rules[_].rateLimitOptions.exceedRedirectOptions.target == STRING
    input.Body.rules[_].rateLimitOptions.exceedRedirectOptions.type == enum_SecurityPolicyRuleRedirectOptionsType[_]
    input.Body.rules[_].rateLimitOptions.rateLimitThreshold.count == INTEGER
    input.Body.rules[_].rateLimitOptions.rateLimitThreshold.intervalSec == INTEGER
    input.Body.rules[_].redirectOptions.target == STRING
    input.Body.rules[_].redirectOptions.type == enum_SecurityPolicyRuleRedirectOptionsType[_]
    input.Body.selfLink == STRING
    input.Body.type == enum_SecurityPolicyType[_]
    input.Body.userDefinedFields[_].base == enum_SecurityPolicyUserDefinedFieldBase[_]
    input.Body.userDefinedFields[_].mask == STRING
    input.Body.userDefinedFields[_].name == STRING
    input.Body.userDefinedFields[_].offset == INTEGER
    input.Body.userDefinedFields[_].size == INTEGER
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.ReqMap.securityPolicy == STRING
    input.Qs.requestId == STRING
    input.Qs.updateMask == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.regionSecurityPolicies.patchRule

enum_SecurityPolicyRuleMatcherVersionedExpr := [ "SRC_IPS_V1" ]
enum_SecurityPolicyRulePreconfiguredWafConfigExclusionFieldParamsOp := [ "CONTAINS", "ENDS_WITH", "EQUALS", "EQUALS_ANY", "STARTS_WITH" ]
enum_SecurityPolicyRuleRateLimitOptionsEnforceOnKey := [ "ALL", "HTTP_COOKIE", "HTTP_HEADER", "HTTP_PATH", "IP", "REGION_CODE", "SNI", "TLS_JA3_FINGERPRINT", "USER_IP", "XFF_IP" ]
enum_SecurityPolicyRuleRateLimitOptionsEnforceOnKeyConfigEnforceOnKeyType := [ "ALL", "HTTP_COOKIE", "HTTP_HEADER", "HTTP_PATH", "IP", "REGION_CODE", "SNI", "TLS_JA3_FINGERPRINT", "USER_IP", "XFF_IP" ]
enum_SecurityPolicyRuleRedirectOptionsType := [ "EXTERNAL_302", "GOOGLE_RECAPTCHA" ]

valid {
    input.Body.action == STRING
    input.Body.description == STRING
    input.Body.headerAction.requestHeadersToAdds[_].headerName == STRING
    input.Body.headerAction.requestHeadersToAdds[_].headerValue == STRING
    input.Body.kind == STRING
    input.Body.match.config.srcIpRanges[_] == STRING
    input.Body.match.expr.description == STRING
    input.Body.match.expr.expression == STRING
    input.Body.match.expr.location == STRING
    input.Body.match.expr.title == STRING
    input.Body.match.exprOptions.recaptchaOptions.actionTokenSiteKeys[_] == STRING
    input.Body.match.exprOptions.recaptchaOptions.sessionTokenSiteKeys[_] == STRING
    input.Body.match.versionedExpr == enum_SecurityPolicyRuleMatcherVersionedExpr[_]
    input.Body.networkMatch.destIpRanges[_] == STRING
    input.Body.networkMatch.destPorts[_] == STRING
    input.Body.networkMatch.ipProtocols[_] == STRING
    input.Body.networkMatch.srcAsns[_] == INTEGER
    input.Body.networkMatch.srcIpRanges[_] == STRING
    input.Body.networkMatch.srcPorts[_] == STRING
    input.Body.networkMatch.srcRegionCodes[_] == STRING
    input.Body.networkMatch.userDefinedFields[_].name == STRING
    input.Body.networkMatch.userDefinedFields[_].values[_] == STRING
    input.Body.preconfiguredWafConfig.exclusions[_].requestCookiesToExclude[_].op == enum_SecurityPolicyRulePreconfiguredWafConfigExclusionFieldParamsOp[_]
    input.Body.preconfiguredWafConfig.exclusions[_].requestCookiesToExclude[_].val == STRING
    input.Body.preconfiguredWafConfig.exclusions[_].requestHeadersToExclude[_].op == enum_SecurityPolicyRulePreconfiguredWafConfigExclusionFieldParamsOp[_]
    input.Body.preconfiguredWafConfig.exclusions[_].requestHeadersToExclude[_].val == STRING
    input.Body.preconfiguredWafConfig.exclusions[_].requestQueryParamsToExclude[_].op == enum_SecurityPolicyRulePreconfiguredWafConfigExclusionFieldParamsOp[_]
    input.Body.preconfiguredWafConfig.exclusions[_].requestQueryParamsToExclude[_].val == STRING
    input.Body.preconfiguredWafConfig.exclusions[_].requestUrisToExclude[_].op == enum_SecurityPolicyRulePreconfiguredWafConfigExclusionFieldParamsOp[_]
    input.Body.preconfiguredWafConfig.exclusions[_].requestUrisToExclude[_].val == STRING
    input.Body.preconfiguredWafConfig.exclusions[_].targetRuleIds[_] == STRING
    input.Body.preconfiguredWafConfig.exclusions[_].targetRuleSet == STRING
    input.Body.preview == BOOLEAN
    input.Body.priority == INTEGER
    input.Body.rateLimitOptions.banDurationSec == INTEGER
    input.Body.rateLimitOptions.banThreshold.count == INTEGER
    input.Body.rateLimitOptions.banThreshold.intervalSec == INTEGER
    input.Body.rateLimitOptions.conformAction == STRING
    input.Body.rateLimitOptions.enforceOnKey == enum_SecurityPolicyRuleRateLimitOptionsEnforceOnKey[_]
    input.Body.rateLimitOptions.enforceOnKeyConfigs[_].enforceOnKeyName == STRING
    input.Body.rateLimitOptions.enforceOnKeyConfigs[_].enforceOnKeyType == enum_SecurityPolicyRuleRateLimitOptionsEnforceOnKeyConfigEnforceOnKeyType[_]
    input.Body.rateLimitOptions.enforceOnKeyName == STRING
    input.Body.rateLimitOptions.exceedAction == STRING
    input.Body.rateLimitOptions.exceedRedirectOptions.target == STRING
    input.Body.rateLimitOptions.exceedRedirectOptions.type == enum_SecurityPolicyRuleRedirectOptionsType[_]
    input.Body.rateLimitOptions.rateLimitThreshold.count == INTEGER
    input.Body.rateLimitOptions.rateLimitThreshold.intervalSec == INTEGER
    input.Body.redirectOptions.target == STRING
    input.Body.redirectOptions.type == enum_SecurityPolicyRuleRedirectOptionsType[_]
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.ReqMap.securityPolicy == STRING
    input.Qs.priority == INTEGER
    input.Qs.updateMask == STRING
    input.Qs.validateOnly == BOOLEAN
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.regionSecurityPolicies.removeRule

valid {
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.ReqMap.securityPolicy == STRING
    input.Qs.priority == INTEGER
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.regionSnapshotSettings.get

valid {
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.regionSnapshotSettings.patch

enum_SnapshotSettingsStorageLocationSettingsPolicy := [ "LOCAL_REGION", "NEAREST_MULTI_REGION", "SPECIFIC_LOCATIONS", "STORAGE_LOCATION_POLICY_UNSPECIFIED" ]

valid {
    input.Body.accessLocation.locations.STRING.region == STRING
    input.Body.storageLocation.locations.STRING.name == STRING
    input.Body.storageLocation.policy == enum_SnapshotSettingsStorageLocationSettingsPolicy[_]
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.Qs.requestId == STRING
    input.Qs.updateMask == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.regionSnapshots.delete

valid {
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.ReqMap.snapshot == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.regionSnapshots.get

valid {
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.ReqMap.snapshot == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.regionSnapshots.getIamPolicy

valid {
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.ReqMap.resource == STRING
    input.Qs.optionsRequestedPolicyVersion == INTEGER
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.regionSnapshots.insert

enum_GuestOsFeatureType := [ "BARE_METAL_LINUX_COMPATIBLE", "FEATURE_TYPE_UNSPECIFIED", "GVNIC", "IDPF", "MULTI_IP_SUBNET", "SECURE_BOOT", "SEV_CAPABLE", "SEV_LIVE_MIGRATABLE", "SEV_LIVE_MIGRATABLE_V2", "SEV_SNP_CAPABLE", "TDX_CAPABLE", "UEFI_COMPATIBLE", "VIRTIO_SCSI_MULTIQUEUE", "WINDOWS" ]
enum_SnapshotArchitecture := [ "ARCHITECTURE_UNSPECIFIED", "ARM64", "X86_64" ]
enum_SnapshotSnapshotType := [ "ARCHIVE", "STANDARD" ]
enum_SnapshotStatus := [ "CREATING", "DELETING", "FAILED", "READY", "UPLOADING" ]
enum_SnapshotStorageBytesStatus := [ "UPDATING", "UP_TO_DATE" ]

valid {
    input.Body.architecture == enum_SnapshotArchitecture[_]
    input.Body.autoCreated == BOOLEAN
    input.Body.chainName == STRING
    input.Body.creationSizeBytes == STRING
    input.Body.creationTimestamp == STRING
    input.Body.description == STRING
    input.Body.diskSizeGb == STRING
    input.Body.downloadBytes == STRING
    input.Body.enableConfidentialCompute == BOOLEAN
    input.Body.guestFlush == BOOLEAN
    input.Body.guestOsFeatures[_].type == enum_GuestOsFeatureType[_]
    input.Body.id == STRING
    input.Body.kind == STRING
    input.Body.labelFingerprint == STRING
    input.Body.labels.STRING == STRING
    input.Body.licenseCodes[_] == STRING
    input.Body.licenses[_] == STRING
    input.Body.locationHint == STRING
    input.Body.maxRetentionDays == INTEGER
    input.Body.name == STRING
    input.Body.region == STRING
    input.Body.resourceStatus.scheduledDeletionTime == STRING
    input.Body.satisfiesPzs == BOOLEAN
    input.Body.selfLink == STRING
    input.Body.selfLinkWithId == STRING
    input.Body.snapshotEncryptionKey.kmsKeyName == STRING
    input.Body.snapshotEncryptionKey.kmsKeyServiceAccount == STRING
    input.Body.snapshotEncryptionKey.rawKey == STRING
    input.Body.snapshotEncryptionKey.rsaEncryptedKey == STRING
    input.Body.snapshotEncryptionKey.sha256 == STRING
    input.Body.snapshotType == enum_SnapshotSnapshotType[_]
    input.Body.sourceDisk == STRING
    input.Body.sourceDiskEncryptionKey.kmsKeyName == STRING
    input.Body.sourceDiskEncryptionKey.kmsKeyServiceAccount == STRING
    input.Body.sourceDiskEncryptionKey.rawKey == STRING
    input.Body.sourceDiskEncryptionKey.rsaEncryptedKey == STRING
    input.Body.sourceDiskEncryptionKey.sha256 == STRING
    input.Body.sourceDiskForRecoveryCheckpoint == STRING
    input.Body.sourceDiskId == STRING
    input.Body.sourceInstantSnapshot == STRING
    input.Body.sourceInstantSnapshotEncryptionKey.kmsKeyName == STRING
    input.Body.sourceInstantSnapshotEncryptionKey.kmsKeyServiceAccount == STRING
    input.Body.sourceInstantSnapshotEncryptionKey.rawKey == STRING
    input.Body.sourceInstantSnapshotEncryptionKey.rsaEncryptedKey == STRING
    input.Body.sourceInstantSnapshotEncryptionKey.sha256 == STRING
    input.Body.sourceInstantSnapshotId == STRING
    input.Body.sourceSnapshotSchedulePolicy == STRING
    input.Body.sourceSnapshotSchedulePolicyId == STRING
    input.Body.status == enum_SnapshotStatus[_]
    input.Body.storageBytes == STRING
    input.Body.storageBytesStatus == enum_SnapshotStorageBytesStatus[_]
    input.Body.storageLocations[_] == STRING
    input.Body.userLicenses[_] == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.regionSnapshots.list

valid {
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.Qs.filter == STRING
    input.Qs.maxResults == INTEGER
    input.Qs.orderBy == STRING
    input.Qs.pageToken == STRING
    input.Qs.returnPartialSuccess == BOOLEAN
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.regionSnapshots.setIamPolicy

enum_AuditLogConfigLogType := [ "ADMIN_READ", "DATA_READ", "DATA_WRITE", "LOG_TYPE_UNSPECIFIED" ]
enum_AuthorizationLoggingOptionsPermissionType := [ "ADMIN_READ", "ADMIN_WRITE", "DATA_READ", "DATA_WRITE", "PERMISSION_TYPE_UNSPECIFIED" ]
enum_ConditionIam := [ "APPROVER", "ATTRIBUTION", "AUTHORITY", "CREDENTIALS_TYPE", "CREDS_ASSERTION", "JUSTIFICATION_TYPE", "NO_ATTR", "SECURITY_REALM" ]
enum_ConditionOp := [ "DISCHARGED", "EQUALS", "IN", "NOT_EQUALS", "NOT_IN", "NO_OP" ]
enum_ConditionSys := [ "IP", "NAME", "NO_ATTR", "REGION", "SERVICE" ]
enum_LogConfigCloudAuditOptionsLogName := [ "ADMIN_ACTIVITY", "DATA_ACCESS", "UNSPECIFIED_LOG_NAME" ]
enum_LogConfigDataAccessOptionsLogMode := [ "LOG_FAIL_CLOSED", "LOG_MODE_UNSPECIFIED" ]
enum_RuleAction := [ "ALLOW", "ALLOW_WITH_LOG", "DENY", "DENY_WITH_LOG", "LOG", "NO_ACTION" ]

valid {
    input.Body.bindings[_].bindingId == STRING
    input.Body.bindings[_].condition.description == STRING
    input.Body.bindings[_].condition.expression == STRING
    input.Body.bindings[_].condition.location == STRING
    input.Body.bindings[_].condition.title == STRING
    input.Body.bindings[_].members[_] == STRING
    input.Body.bindings[_].role == STRING
    input.Body.etag == STRING
    input.Body.policy.auditConfigs[_].auditLogConfigs[_].exemptedMembers[_] == STRING
    input.Body.policy.auditConfigs[_].auditLogConfigs[_].ignoreChildExemptions == BOOLEAN
    input.Body.policy.auditConfigs[_].auditLogConfigs[_].logType == enum_AuditLogConfigLogType[_]
    input.Body.policy.auditConfigs[_].exemptedMembers[_] == STRING
    input.Body.policy.auditConfigs[_].service == STRING
    input.Body.policy.bindings[_].bindingId == 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.rules[_].action == enum_RuleAction[_]
    input.Body.policy.rules[_].conditions[_].iam == enum_ConditionIam[_]
    input.Body.policy.rules[_].conditions[_].op == enum_ConditionOp[_]
    input.Body.policy.rules[_].conditions[_].svc == STRING
    input.Body.policy.rules[_].conditions[_].sys == enum_ConditionSys[_]
    input.Body.policy.rules[_].conditions[_].values[_] == STRING
    input.Body.policy.rules[_].description == STRING
    input.Body.policy.rules[_].ins[_] == STRING
    input.Body.policy.rules[_].logConfigs[_].cloudAudit.authorizationLoggingOptions.permissionType == enum_AuthorizationLoggingOptionsPermissionType[_]
    input.Body.policy.rules[_].logConfigs[_].cloudAudit.logName == enum_LogConfigCloudAuditOptionsLogName[_]
    input.Body.policy.rules[_].logConfigs[_].counter.customFields[_].name == STRING
    input.Body.policy.rules[_].logConfigs[_].counter.customFields[_].value == STRING
    input.Body.policy.rules[_].logConfigs[_].counter.field == STRING
    input.Body.policy.rules[_].logConfigs[_].counter.metric == STRING
    input.Body.policy.rules[_].logConfigs[_].dataAccess.logMode == enum_LogConfigDataAccessOptionsLogMode[_]
    input.Body.policy.rules[_].notIns[_] == STRING
    input.Body.policy.rules[_].permissions[_] == STRING
    input.Body.policy.version == INTEGER
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.ReqMap.resource == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.regionSnapshots.setLabels

valid {
    input.Body.labelFingerprint == STRING
    input.Body.labels.STRING == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.ReqMap.resource == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.regionSnapshots.testIamPermissions

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

compute.regionSslCertificates.delete

valid {
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.ReqMap.sslCertificate == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.regionSslCertificates.get

valid {
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.ReqMap.sslCertificate == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.regionSslCertificates.insert

enum_SslCertificateManagedSslCertificateDomainStatus := [ "ACTIVE", "DOMAIN_STATUS_UNSPECIFIED", "FAILED_CAA_CHECKING", "FAILED_CAA_FORBIDDEN", "FAILED_NOT_VISIBLE", "FAILED_RATE_LIMITED", "PROVISIONING" ]
enum_SslCertificateManagedSslCertificateStatus := [ "ACTIVE", "MANAGED_CERTIFICATE_STATUS_UNSPECIFIED", "PROVISIONING", "PROVISIONING_FAILED", "PROVISIONING_FAILED_PERMANENTLY", "RENEWAL_FAILED" ]
enum_SslCertificateType := [ "MANAGED", "SELF_MANAGED", "TYPE_UNSPECIFIED" ]

valid {
    input.Body.certificate == STRING
    input.Body.creationTimestamp == STRING
    input.Body.description == STRING
    input.Body.expireTime == STRING
    input.Body.id == STRING
    input.Body.kind == STRING
    input.Body.managed.domainStatus.STRING == enum_SslCertificateManagedSslCertificateDomainStatus[_]
    input.Body.managed.domains[_] == STRING
    input.Body.managed.status == enum_SslCertificateManagedSslCertificateStatus[_]
    input.Body.name == STRING
    input.Body.privateKey == STRING
    input.Body.region == STRING
    input.Body.selfLink == STRING
    input.Body.selfManaged.certificate == STRING
    input.Body.selfManaged.privateKey == STRING
    input.Body.subjectAlternativeNames[_] == STRING
    input.Body.type == enum_SslCertificateType[_]
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.regionSslCertificates.list

valid {
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.Qs.filter == STRING
    input.Qs.maxResults == INTEGER
    input.Qs.orderBy == STRING
    input.Qs.pageToken == STRING
    input.Qs.returnPartialSuccess == BOOLEAN
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.regionSslCertificates.testIamPermissions

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

compute.regionSslPolicies.delete

valid {
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.ReqMap.sslPolicy == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.regionSslPolicies.get

valid {
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.ReqMap.sslPolicy == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.regionSslPolicies.insert

enum_SslPolicyMinTlsVersion := [ "TLS_1_0", "TLS_1_1", "TLS_1_2" ]
enum_SslPolicyProfile := [ "COMPATIBLE", "CUSTOM", "MODERN", "RESTRICTED" ]
enum_SslPolicyWarningsCode := [ "CLEANUP_FAILED", "DEPRECATED_RESOURCE_USED", "DEPRECATED_TYPE_USED", "DISK_SIZE_LARGER_THAN_IMAGE_SIZE", "EXPERIMENTAL_TYPE_USED", "EXTERNAL_API_WARNING", "FIELD_VALUE_OVERRIDEN", "INJECTED_KERNELS_DEPRECATED", "INVALID_HEALTH_CHECK_FOR_DYNAMIC_WIEGHTED_LB", "LARGE_DEPLOYMENT_WARNING", "LIST_OVERHEAD_QUOTA_EXCEED", "MISSING_TYPE_DEPENDENCY", "NEXT_HOP_ADDRESS_NOT_ASSIGNED", "NEXT_HOP_CANNOT_IP_FORWARD", "NEXT_HOP_INSTANCE_HAS_NO_IPV6_INTERFACE", "NEXT_HOP_INSTANCE_NOT_FOUND", "NEXT_HOP_INSTANCE_NOT_ON_NETWORK", "NEXT_HOP_NOT_RUNNING", "NOT_CRITICAL_ERROR", "NO_RESULTS_ON_PAGE", "PARTIAL_SUCCESS", "REQUIRED_TOS_AGREEMENT", "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING", "RESOURCE_NOT_DELETED", "SCHEMA_VALIDATION_IGNORED", "SINGLE_INSTANCE_PROPERTY_TEMPLATE", "UNDECLARED_PROPERTIES", "UNREACHABLE" ]

valid {
    input.Body.creationTimestamp == STRING
    input.Body.customFeatures[_] == STRING
    input.Body.description == STRING
    input.Body.enabledFeatures[_] == STRING
    input.Body.fingerprint == STRING
    input.Body.id == STRING
    input.Body.kind == STRING
    input.Body.minTlsVersion == enum_SslPolicyMinTlsVersion[_]
    input.Body.name == STRING
    input.Body.profile == enum_SslPolicyProfile[_]
    input.Body.region == STRING
    input.Body.selfLink == STRING
    input.Body.warnings[_].code == enum_SslPolicyWarningsCode[_]
    input.Body.warnings[_].data[_].key == STRING
    input.Body.warnings[_].data[_].value == STRING
    input.Body.warnings[_].message == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.regionSslPolicies.list

valid {
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.Qs.filter == STRING
    input.Qs.maxResults == INTEGER
    input.Qs.orderBy == STRING
    input.Qs.pageToken == STRING
    input.Qs.returnPartialSuccess == BOOLEAN
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.regionSslPolicies.listAvailableFeatures

valid {
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.Qs.filter == STRING
    input.Qs.maxResults == INTEGER
    input.Qs.orderBy == STRING
    input.Qs.pageToken == STRING
    input.Qs.returnPartialSuccess == BOOLEAN
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.regionSslPolicies.patch

enum_SslPolicyMinTlsVersion := [ "TLS_1_0", "TLS_1_1", "TLS_1_2" ]
enum_SslPolicyProfile := [ "COMPATIBLE", "CUSTOM", "MODERN", "RESTRICTED" ]
enum_SslPolicyWarningsCode := [ "CLEANUP_FAILED", "DEPRECATED_RESOURCE_USED", "DEPRECATED_TYPE_USED", "DISK_SIZE_LARGER_THAN_IMAGE_SIZE", "EXPERIMENTAL_TYPE_USED", "EXTERNAL_API_WARNING", "FIELD_VALUE_OVERRIDEN", "INJECTED_KERNELS_DEPRECATED", "INVALID_HEALTH_CHECK_FOR_DYNAMIC_WIEGHTED_LB", "LARGE_DEPLOYMENT_WARNING", "LIST_OVERHEAD_QUOTA_EXCEED", "MISSING_TYPE_DEPENDENCY", "NEXT_HOP_ADDRESS_NOT_ASSIGNED", "NEXT_HOP_CANNOT_IP_FORWARD", "NEXT_HOP_INSTANCE_HAS_NO_IPV6_INTERFACE", "NEXT_HOP_INSTANCE_NOT_FOUND", "NEXT_HOP_INSTANCE_NOT_ON_NETWORK", "NEXT_HOP_NOT_RUNNING", "NOT_CRITICAL_ERROR", "NO_RESULTS_ON_PAGE", "PARTIAL_SUCCESS", "REQUIRED_TOS_AGREEMENT", "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING", "RESOURCE_NOT_DELETED", "SCHEMA_VALIDATION_IGNORED", "SINGLE_INSTANCE_PROPERTY_TEMPLATE", "UNDECLARED_PROPERTIES", "UNREACHABLE" ]

valid {
    input.Body.creationTimestamp == STRING
    input.Body.customFeatures[_] == STRING
    input.Body.description == STRING
    input.Body.enabledFeatures[_] == STRING
    input.Body.fingerprint == STRING
    input.Body.id == STRING
    input.Body.kind == STRING
    input.Body.minTlsVersion == enum_SslPolicyMinTlsVersion[_]
    input.Body.name == STRING
    input.Body.profile == enum_SslPolicyProfile[_]
    input.Body.region == STRING
    input.Body.selfLink == STRING
    input.Body.warnings[_].code == enum_SslPolicyWarningsCode[_]
    input.Body.warnings[_].data[_].key == STRING
    input.Body.warnings[_].data[_].value == STRING
    input.Body.warnings[_].message == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.ReqMap.sslPolicy == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.regionSslPolicies.testIamPermissions

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

compute.regionTargetHttpProxies.delete

valid {
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.ReqMap.targetHttpProxy == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.regionTargetHttpProxies.get

valid {
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.ReqMap.targetHttpProxy == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.regionTargetHttpProxies.insert

valid {
    input.Body.creationTimestamp == STRING
    input.Body.description == STRING
    input.Body.fingerprint == STRING
    input.Body.httpKeepAliveTimeoutSec == INTEGER
    input.Body.id == STRING
    input.Body.kind == STRING
    input.Body.name == STRING
    input.Body.proxyBind == BOOLEAN
    input.Body.region == STRING
    input.Body.selfLink == STRING
    input.Body.urlMap == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.regionTargetHttpProxies.list

valid {
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.Qs.filter == STRING
    input.Qs.maxResults == INTEGER
    input.Qs.orderBy == STRING
    input.Qs.pageToken == STRING
    input.Qs.returnPartialSuccess == BOOLEAN
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.regionTargetHttpProxies.setUrlMap

valid {
    input.Body.urlMap == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.ReqMap.targetHttpProxy == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.regionTargetHttpProxies.testIamPermissions

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

compute.regionTargetHttpsProxies.delete

valid {
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.ReqMap.targetHttpsProxy == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.regionTargetHttpsProxies.get

valid {
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.ReqMap.targetHttpsProxy == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.regionTargetHttpsProxies.insert

enum_TargetHttpsProxyQuicOverride := [ "DISABLE", "ENABLE", "NONE" ]

valid {
    input.Body.authorizationPolicy == STRING
    input.Body.certificateMap == STRING
    input.Body.creationTimestamp == STRING
    input.Body.description == STRING
    input.Body.fingerprint == STRING
    input.Body.httpKeepAliveTimeoutSec == INTEGER
    input.Body.id == STRING
    input.Body.kind == STRING
    input.Body.name == STRING
    input.Body.proxyBind == BOOLEAN
    input.Body.quicOverride == enum_TargetHttpsProxyQuicOverride[_]
    input.Body.region == STRING
    input.Body.selfLink == STRING
    input.Body.serverTlsPolicy == STRING
    input.Body.sslCertificates[_] == STRING
    input.Body.sslPolicy == STRING
    input.Body.urlMap == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.regionTargetHttpsProxies.list

valid {
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.Qs.filter == STRING
    input.Qs.maxResults == INTEGER
    input.Qs.orderBy == STRING
    input.Qs.pageToken == STRING
    input.Qs.returnPartialSuccess == BOOLEAN
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.regionTargetHttpsProxies.patch

enum_TargetHttpsProxyQuicOverride := [ "DISABLE", "ENABLE", "NONE" ]

valid {
    input.Body.authorizationPolicy == STRING
    input.Body.certificateMap == STRING
    input.Body.creationTimestamp == STRING
    input.Body.description == STRING
    input.Body.fingerprint == STRING
    input.Body.httpKeepAliveTimeoutSec == INTEGER
    input.Body.id == STRING
    input.Body.kind == STRING
    input.Body.name == STRING
    input.Body.proxyBind == BOOLEAN
    input.Body.quicOverride == enum_TargetHttpsProxyQuicOverride[_]
    input.Body.region == STRING
    input.Body.selfLink == STRING
    input.Body.serverTlsPolicy == STRING
    input.Body.sslCertificates[_] == STRING
    input.Body.sslPolicy == STRING
    input.Body.urlMap == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.ReqMap.targetHttpsProxy == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.regionTargetHttpsProxies.setSslCertificates

valid {
    input.Body.sslCertificates[_] == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.ReqMap.targetHttpsProxy == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.regionTargetHttpsProxies.setUrlMap

valid {
    input.Body.urlMap == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.ReqMap.targetHttpsProxy == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.regionTargetHttpsProxies.testIamPermissions

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

compute.regionTargetTcpProxies.delete

valid {
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.ReqMap.targetTcpProxy == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.regionTargetTcpProxies.get

valid {
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.ReqMap.targetTcpProxy == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.regionTargetTcpProxies.insert

enum_TargetTcpProxyProxyHeader := [ "NONE", "PROXY_V1" ]

valid {
    input.Body.creationTimestamp == STRING
    input.Body.description == STRING
    input.Body.id == STRING
    input.Body.kind == STRING
    input.Body.name == STRING
    input.Body.proxyBind == BOOLEAN
    input.Body.proxyHeader == enum_TargetTcpProxyProxyHeader[_]
    input.Body.region == STRING
    input.Body.selfLink == STRING
    input.Body.service == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.regionTargetTcpProxies.list

valid {
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.Qs.filter == STRING
    input.Qs.maxResults == INTEGER
    input.Qs.orderBy == STRING
    input.Qs.pageToken == STRING
    input.Qs.returnPartialSuccess == BOOLEAN
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.regionTargetTcpProxies.testIamPermissions

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

compute.regionUrlMaps.delete

valid {
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.ReqMap.urlMap == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.regionUrlMaps.get

valid {
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.ReqMap.urlMap == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.regionUrlMaps.insert

enum_HttpRedirectActionRedirectResponseCode := [ "FOUND", "MOVED_PERMANENTLY_DEFAULT", "PERMANENT_REDIRECT", "SEE_OTHER", "TEMPORARY_REDIRECT" ]
enum_MetadataFilterFilterMatchCriteria := [ "MATCH_ALL", "MATCH_ANY", "NOT_SET" ]

valid {
    input.Body.creationTimestamp == STRING
    input.Body.defaultRouteAction.corsPolicy.allowCredentials == BOOLEAN
    input.Body.defaultRouteAction.corsPolicy.allowHeaders[_] == STRING
    input.Body.defaultRouteAction.corsPolicy.allowMethods[_] == STRING
    input.Body.defaultRouteAction.corsPolicy.allowOriginRegexes[_] == STRING
    input.Body.defaultRouteAction.corsPolicy.allowOrigins[_] == STRING
    input.Body.defaultRouteAction.corsPolicy.disabled == BOOLEAN
    input.Body.defaultRouteAction.corsPolicy.exposeHeaders[_] == STRING
    input.Body.defaultRouteAction.corsPolicy.maxAge == INTEGER
    input.Body.defaultRouteAction.faultInjectionPolicy.abort.httpStatus == INTEGER
    input.Body.defaultRouteAction.faultInjectionPolicy.abort.percentage == NUMBER
    input.Body.defaultRouteAction.faultInjectionPolicy.delay.fixedDelay.nanos == INTEGER
    input.Body.defaultRouteAction.faultInjectionPolicy.delay.fixedDelay.seconds == STRING
    input.Body.defaultRouteAction.faultInjectionPolicy.delay.percentage == NUMBER
    input.Body.defaultRouteAction.maxStreamDuration.nanos == INTEGER
    input.Body.defaultRouteAction.maxStreamDuration.seconds == STRING
    input.Body.defaultRouteAction.requestMirrorPolicy.backendService == STRING
    input.Body.defaultRouteAction.retryPolicy.numRetries == INTEGER
    input.Body.defaultRouteAction.retryPolicy.perTryTimeout.nanos == INTEGER
    input.Body.defaultRouteAction.retryPolicy.perTryTimeout.seconds == STRING
    input.Body.defaultRouteAction.retryPolicy.retryConditions[_] == STRING
    input.Body.defaultRouteAction.timeout.nanos == INTEGER
    input.Body.defaultRouteAction.timeout.seconds == STRING
    input.Body.defaultRouteAction.urlRewrite.hostRewrite == STRING
    input.Body.defaultRouteAction.urlRewrite.pathPrefixRewrite == STRING
    input.Body.defaultRouteAction.urlRewrite.pathTemplateRewrite == STRING
    input.Body.defaultRouteAction.weightedBackendServices[_].backendService == STRING
    input.Body.defaultRouteAction.weightedBackendServices[_].headerAction.requestHeadersToAdd[_].headerName == STRING
    input.Body.defaultRouteAction.weightedBackendServices[_].headerAction.requestHeadersToAdd[_].headerValue == STRING
    input.Body.defaultRouteAction.weightedBackendServices[_].headerAction.requestHeadersToAdd[_].replace == BOOLEAN
    input.Body.defaultRouteAction.weightedBackendServices[_].headerAction.requestHeadersToRemove[_] == STRING
    input.Body.defaultRouteAction.weightedBackendServices[_].headerAction.responseHeadersToAdd[_].headerName == STRING
    input.Body.defaultRouteAction.weightedBackendServices[_].headerAction.responseHeadersToAdd[_].headerValue == STRING
    input.Body.defaultRouteAction.weightedBackendServices[_].headerAction.responseHeadersToAdd[_].replace == BOOLEAN
    input.Body.defaultRouteAction.weightedBackendServices[_].headerAction.responseHeadersToRemove[_] == STRING
    input.Body.defaultRouteAction.weightedBackendServices[_].weight == INTEGER
    input.Body.defaultService == STRING
    input.Body.defaultUrlRedirect.hostRedirect == STRING
    input.Body.defaultUrlRedirect.httpsRedirect == BOOLEAN
    input.Body.defaultUrlRedirect.pathRedirect == STRING
    input.Body.defaultUrlRedirect.prefixRedirect == STRING
    input.Body.defaultUrlRedirect.redirectResponseCode == enum_HttpRedirectActionRedirectResponseCode[_]
    input.Body.defaultUrlRedirect.stripQuery == BOOLEAN
    input.Body.description == STRING
    input.Body.fingerprint == STRING
    input.Body.headerAction.requestHeadersToAdd[_].headerName == STRING
    input.Body.headerAction.requestHeadersToAdd[_].headerValue == STRING
    input.Body.headerAction.requestHeadersToAdd[_].replace == BOOLEAN
    input.Body.headerAction.requestHeadersToRemove[_] == STRING
    input.Body.headerAction.responseHeadersToAdd[_].headerName == STRING
    input.Body.headerAction.responseHeadersToAdd[_].headerValue == STRING
    input.Body.headerAction.responseHeadersToAdd[_].replace == BOOLEAN
    input.Body.headerAction.responseHeadersToRemove[_] == STRING
    input.Body.hostRules[_].description == STRING
    input.Body.hostRules[_].hosts[_] == STRING
    input.Body.hostRules[_].pathMatcher == STRING
    input.Body.id == STRING
    input.Body.kind == STRING
    input.Body.name == STRING
    input.Body.pathMatchers[_].defaultRouteAction.corsPolicy.allowCredentials == BOOLEAN
    input.Body.pathMatchers[_].defaultRouteAction.corsPolicy.allowHeaders[_] == STRING
    input.Body.pathMatchers[_].defaultRouteAction.corsPolicy.allowMethods[_] == STRING
    input.Body.pathMatchers[_].defaultRouteAction.corsPolicy.allowOriginRegexes[_] == STRING
    input.Body.pathMatchers[_].defaultRouteAction.corsPolicy.allowOrigins[_] == STRING
    input.Body.pathMatchers[_].defaultRouteAction.corsPolicy.disabled == BOOLEAN
    input.Body.pathMatchers[_].defaultRouteAction.corsPolicy.exposeHeaders[_] == STRING
    input.Body.pathMatchers[_].defaultRouteAction.corsPolicy.maxAge == INTEGER
    input.Body.pathMatchers[_].defaultRouteAction.faultInjectionPolicy.abort.httpStatus == INTEGER
    input.Body.pathMatchers[_].defaultRouteAction.faultInjectionPolicy.abort.percentage == NUMBER
    input.Body.pathMatchers[_].defaultRouteAction.faultInjectionPolicy.delay.fixedDelay.nanos == INTEGER
    input.Body.pathMatchers[_].defaultRouteAction.faultInjectionPolicy.delay.fixedDelay.seconds == STRING
    input.Body.pathMatchers[_].defaultRouteAction.faultInjectionPolicy.delay.percentage == NUMBER
    input.Body.pathMatchers[_].defaultRouteAction.maxStreamDuration.nanos == INTEGER
    input.Body.pathMatchers[_].defaultRouteAction.maxStreamDuration.seconds == STRING
    input.Body.pathMatchers[_].defaultRouteAction.requestMirrorPolicy.backendService == STRING
    input.Body.pathMatchers[_].defaultRouteAction.retryPolicy.numRetries == INTEGER
    input.Body.pathMatchers[_].defaultRouteAction.retryPolicy.perTryTimeout.nanos == INTEGER
    input.Body.pathMatchers[_].defaultRouteAction.retryPolicy.perTryTimeout.seconds == STRING
    input.Body.pathMatchers[_].defaultRouteAction.retryPolicy.retryConditions[_] == STRING
    input.Body.pathMatchers[_].defaultRouteAction.timeout.nanos == INTEGER
    input.Body.pathMatchers[_].defaultRouteAction.timeout.seconds == STRING
    input.Body.pathMatchers[_].defaultRouteAction.urlRewrite.hostRewrite == STRING
    input.Body.pathMatchers[_].defaultRouteAction.urlRewrite.pathPrefixRewrite == STRING
    input.Body.pathMatchers[_].defaultRouteAction.urlRewrite.pathTemplateRewrite == STRING
    input.Body.pathMatchers[_].defaultRouteAction.weightedBackendServices[_].backendService == STRING
    input.Body.pathMatchers[_].defaultRouteAction.weightedBackendServices[_].headerAction.requestHeadersToAdd[_].headerName == STRING
    input.Body.pathMatchers[_].defaultRouteAction.weightedBackendServices[_].headerAction.requestHeadersToAdd[_].headerValue == STRING
    input.Body.pathMatchers[_].defaultRouteAction.weightedBackendServices[_].headerAction.requestHeadersToAdd[_].replace == BOOLEAN
    input.Body.pathMatchers[_].defaultRouteAction.weightedBackendServices[_].headerAction.requestHeadersToRemove[_] == STRING
    input.Body.pathMatchers[_].defaultRouteAction.weightedBackendServices[_].headerAction.responseHeadersToAdd[_].headerName == STRING
    input.Body.pathMatchers[_].defaultRouteAction.weightedBackendServices[_].headerAction.responseHeadersToAdd[_].headerValue == STRING
    input.Body.pathMatchers[_].defaultRouteAction.weightedBackendServices[_].headerAction.responseHeadersToAdd[_].replace == BOOLEAN
    input.Body.pathMatchers[_].defaultRouteAction.weightedBackendServices[_].headerAction.responseHeadersToRemove[_] == STRING
    input.Body.pathMatchers[_].defaultRouteAction.weightedBackendServices[_].weight == INTEGER
    input.Body.pathMatchers[_].defaultService == STRING
    input.Body.pathMatchers[_].defaultUrlRedirect.hostRedirect == STRING
    input.Body.pathMatchers[_].defaultUrlRedirect.httpsRedirect == BOOLEAN
    input.Body.pathMatchers[_].defaultUrlRedirect.pathRedirect == STRING
    input.Body.pathMatchers[_].defaultUrlRedirect.prefixRedirect == STRING
    input.Body.pathMatchers[_].defaultUrlRedirect.redirectResponseCode == enum_HttpRedirectActionRedirectResponseCode[_]
    input.Body.pathMatchers[_].defaultUrlRedirect.stripQuery == BOOLEAN
    input.Body.pathMatchers[_].description == STRING
    input.Body.pathMatchers[_].headerAction.requestHeadersToAdd[_].headerName == STRING
    input.Body.pathMatchers[_].headerAction.requestHeadersToAdd[_].headerValue == STRING
    input.Body.pathMatchers[_].headerAction.requestHeadersToAdd[_].replace == BOOLEAN
    input.Body.pathMatchers[_].headerAction.requestHeadersToRemove[_] == STRING
    input.Body.pathMatchers[_].headerAction.responseHeadersToAdd[_].headerName == STRING
    input.Body.pathMatchers[_].headerAction.responseHeadersToAdd[_].headerValue == STRING
    input.Body.pathMatchers[_].headerAction.responseHeadersToAdd[_].replace == BOOLEAN
    input.Body.pathMatchers[_].headerAction.responseHeadersToRemove[_] == STRING
    input.Body.pathMatchers[_].name == STRING
    input.Body.pathMatchers[_].pathRules[_].paths[_] == STRING
    input.Body.pathMatchers[_].pathRules[_].routeAction.corsPolicy.allowCredentials == BOOLEAN
    input.Body.pathMatchers[_].pathRules[_].routeAction.corsPolicy.allowHeaders[_] == STRING
    input.Body.pathMatchers[_].pathRules[_].routeAction.corsPolicy.allowMethods[_] == STRING
    input.Body.pathMatchers[_].pathRules[_].routeAction.corsPolicy.allowOriginRegexes[_] == STRING
    input.Body.pathMatchers[_].pathRules[_].routeAction.corsPolicy.allowOrigins[_] == STRING
    input.Body.pathMatchers[_].pathRules[_].routeAction.corsPolicy.disabled == BOOLEAN
    input.Body.pathMatchers[_].pathRules[_].routeAction.corsPolicy.exposeHeaders[_] == STRING
    input.Body.pathMatchers[_].pathRules[_].routeAction.corsPolicy.maxAge == INTEGER
    input.Body.pathMatchers[_].pathRules[_].routeAction.faultInjectionPolicy.abort.httpStatus == INTEGER
    input.Body.pathMatchers[_].pathRules[_].routeAction.faultInjectionPolicy.abort.percentage == NUMBER
    input.Body.pathMatchers[_].pathRules[_].routeAction.faultInjectionPolicy.delay.fixedDelay.nanos == INTEGER
    input.Body.pathMatchers[_].pathRules[_].routeAction.faultInjectionPolicy.delay.fixedDelay.seconds == STRING
    input.Body.pathMatchers[_].pathRules[_].routeAction.faultInjectionPolicy.delay.percentage == NUMBER
    input.Body.pathMatchers[_].pathRules[_].routeAction.maxStreamDuration.nanos == INTEGER
    input.Body.pathMatchers[_].pathRules[_].routeAction.maxStreamDuration.seconds == STRING
    input.Body.pathMatchers[_].pathRules[_].routeAction.requestMirrorPolicy.backendService == STRING
    input.Body.pathMatchers[_].pathRules[_].routeAction.retryPolicy.numRetries == INTEGER
    input.Body.pathMatchers[_].pathRules[_].routeAction.retryPolicy.perTryTimeout.nanos == INTEGER
    input.Body.pathMatchers[_].pathRules[_].routeAction.retryPolicy.perTryTimeout.seconds == STRING
    input.Body.pathMatchers[_].pathRules[_].routeAction.retryPolicy.retryConditions[_] == STRING
    input.Body.pathMatchers[_].pathRules[_].routeAction.timeout.nanos == INTEGER
    input.Body.pathMatchers[_].pathRules[_].routeAction.timeout.seconds == STRING
    input.Body.pathMatchers[_].pathRules[_].routeAction.urlRewrite.hostRewrite == STRING
    input.Body.pathMatchers[_].pathRules[_].routeAction.urlRewrite.pathPrefixRewrite == STRING
    input.Body.pathMatchers[_].pathRules[_].routeAction.urlRewrite.pathTemplateRewrite == STRING
    input.Body.pathMatchers[_].pathRules[_].routeAction.weightedBackendServices[_].backendService == STRING
    input.Body.pathMatchers[_].pathRules[_].routeAction.weightedBackendServices[_].headerAction.requestHeadersToAdd[_].headerName == STRING
    input.Body.pathMatchers[_].pathRules[_].routeAction.weightedBackendServices[_].headerAction.requestHeadersToAdd[_].headerValue == STRING
    input.Body.pathMatchers[_].pathRules[_].routeAction.weightedBackendServices[_].headerAction.requestHeadersToAdd[_].replace == BOOLEAN
    input.Body.pathMatchers[_].pathRules[_].routeAction.weightedBackendServices[_].headerAction.requestHeadersToRemove[_] == STRING
    input.Body.pathMatchers[_].pathRules[_].routeAction.weightedBackendServices[_].headerAction.responseHeadersToAdd[_].headerName == STRING
    input.Body.pathMatchers[_].pathRules[_].routeAction.weightedBackendServices[_].headerAction.responseHeadersToAdd[_].headerValue == STRING
    input.Body.pathMatchers[_].pathRules[_].routeAction.weightedBackendServices[_].headerAction.responseHeadersToAdd[_].replace == BOOLEAN
    input.Body.pathMatchers[_].pathRules[_].routeAction.weightedBackendServices[_].headerAction.responseHeadersToRemove[_] == STRING
    input.Body.pathMatchers[_].pathRules[_].routeAction.weightedBackendServices[_].weight == INTEGER
    input.Body.pathMatchers[_].pathRules[_].service == STRING
    input.Body.pathMatchers[_].pathRules[_].urlRedirect.hostRedirect == STRING
    input.Body.pathMatchers[_].pathRules[_].urlRedirect.httpsRedirect == BOOLEAN
    input.Body.pathMatchers[_].pathRules[_].urlRedirect.pathRedirect == STRING
    input.Body.pathMatchers[_].pathRules[_].urlRedirect.prefixRedirect == STRING
    input.Body.pathMatchers[_].pathRules[_].urlRedirect.redirectResponseCode == enum_HttpRedirectActionRedirectResponseCode[_]
    input.Body.pathMatchers[_].pathRules[_].urlRedirect.stripQuery == BOOLEAN
    input.Body.pathMatchers[_].routeRules[_].description == STRING
    input.Body.pathMatchers[_].routeRules[_].headerAction.requestHeadersToAdd[_].headerName == STRING
    input.Body.pathMatchers[_].routeRules[_].headerAction.requestHeadersToAdd[_].headerValue == STRING
    input.Body.pathMatchers[_].routeRules[_].headerAction.requestHeadersToAdd[_].replace == BOOLEAN
    input.Body.pathMatchers[_].routeRules[_].headerAction.requestHeadersToRemove[_] == STRING
    input.Body.pathMatchers[_].routeRules[_].headerAction.responseHeadersToAdd[_].headerName == STRING
    input.Body.pathMatchers[_].routeRules[_].headerAction.responseHeadersToAdd[_].headerValue == STRING
    input.Body.pathMatchers[_].routeRules[_].headerAction.responseHeadersToAdd[_].replace == BOOLEAN
    input.Body.pathMatchers[_].routeRules[_].headerAction.responseHeadersToRemove[_] == STRING
    input.Body.pathMatchers[_].routeRules[_].matchRules[_].fullPathMatch == STRING
    input.Body.pathMatchers[_].routeRules[_].matchRules[_].headerMatches[_].exactMatch == STRING
    input.Body.pathMatchers[_].routeRules[_].matchRules[_].headerMatches[_].headerName == STRING
    input.Body.pathMatchers[_].routeRules[_].matchRules[_].headerMatches[_].invertMatch == BOOLEAN
    input.Body.pathMatchers[_].routeRules[_].matchRules[_].headerMatches[_].prefixMatch == STRING
    input.Body.pathMatchers[_].routeRules[_].matchRules[_].headerMatches[_].presentMatch == BOOLEAN
    input.Body.pathMatchers[_].routeRules[_].matchRules[_].headerMatches[_].rangeMatch.rangeEnd == STRING
    input.Body.pathMatchers[_].routeRules[_].matchRules[_].headerMatches[_].rangeMatch.rangeStart == STRING
    input.Body.pathMatchers[_].routeRules[_].matchRules[_].headerMatches[_].regexMatch == STRING
    input.Body.pathMatchers[_].routeRules[_].matchRules[_].headerMatches[_].suffixMatch == STRING
    input.Body.pathMatchers[_].routeRules[_].matchRules[_].ignoreCase == BOOLEAN
    input.Body.pathMatchers[_].routeRules[_].matchRules[_].metadataFilters[_].filterLabels[_].name == STRING
    input.Body.pathMatchers[_].routeRules[_].matchRules[_].metadataFilters[_].filterLabels[_].value == STRING
    input.Body.pathMatchers[_].routeRules[_].matchRules[_].metadataFilters[_].filterMatchCriteria == enum_MetadataFilterFilterMatchCriteria[_]
    input.Body.pathMatchers[_].routeRules[_].matchRules[_].pathTemplateMatch == STRING
    input.Body.pathMatchers[_].routeRules[_].matchRules[_].prefixMatch == STRING
    input.Body.pathMatchers[_].routeRules[_].matchRules[_].queryParameterMatches[_].exactMatch == STRING
    input.Body.pathMatchers[_].routeRules[_].matchRules[_].queryParameterMatches[_].name == STRING
    input.Body.pathMatchers[_].routeRules[_].matchRules[_].queryParameterMatches[_].presentMatch == BOOLEAN
    input.Body.pathMatchers[_].routeRules[_].matchRules[_].queryParameterMatches[_].regexMatch == STRING
    input.Body.pathMatchers[_].routeRules[_].matchRules[_].regexMatch == STRING
    input.Body.pathMatchers[_].routeRules[_].priority == INTEGER
    input.Body.pathMatchers[_].routeRules[_].routeAction.corsPolicy.allowCredentials == BOOLEAN
    input.Body.pathMatchers[_].routeRules[_].routeAction.corsPolicy.allowHeaders[_] == STRING
    input.Body.pathMatchers[_].routeRules[_].routeAction.corsPolicy.allowMethods[_] == STRING
    input.Body.pathMatchers[_].routeRules[_].routeAction.corsPolicy.allowOriginRegexes[_] == STRING
    input.Body.pathMatchers[_].routeRules[_].routeAction.corsPolicy.allowOrigins[_] == STRING
    input.Body.pathMatchers[_].routeRules[_].routeAction.corsPolicy.disabled == BOOLEAN
    input.Body.pathMatchers[_].routeRules[_].routeAction.corsPolicy.exposeHeaders[_] == STRING
    input.Body.pathMatchers[_].routeRules[_].routeAction.corsPolicy.maxAge == INTEGER
    input.Body.pathMatchers[_].routeRules[_].routeAction.faultInjectionPolicy.abort.httpStatus == INTEGER
    input.Body.pathMatchers[_].routeRules[_].routeAction.faultInjectionPolicy.abort.percentage == NUMBER
    input.Body.pathMatchers[_].routeRules[_].routeAction.faultInjectionPolicy.delay.fixedDelay.nanos == INTEGER
    input.Body.pathMatchers[_].routeRules[_].routeAction.faultInjectionPolicy.delay.fixedDelay.seconds == STRING
    input.Body.pathMatchers[_].routeRules[_].routeAction.faultInjectionPolicy.delay.percentage == NUMBER
    input.Body.pathMatchers[_].routeRules[_].routeAction.maxStreamDuration.nanos == INTEGER
    input.Body.pathMatchers[_].routeRules[_].routeAction.maxStreamDuration.seconds == STRING
    input.Body.pathMatchers[_].routeRules[_].routeAction.requestMirrorPolicy.backendService == STRING
    input.Body.pathMatchers[_].routeRules[_].routeAction.retryPolicy.numRetries == INTEGER
    input.Body.pathMatchers[_].routeRules[_].routeAction.retryPolicy.perTryTimeout.nanos == INTEGER
    input.Body.pathMatchers[_].routeRules[_].routeAction.retryPolicy.perTryTimeout.seconds == STRING
    input.Body.pathMatchers[_].routeRules[_].routeAction.retryPolicy.retryConditions[_] == STRING
    input.Body.pathMatchers[_].routeRules[_].routeAction.timeout.nanos == INTEGER
    input.Body.pathMatchers[_].routeRules[_].routeAction.timeout.seconds == STRING
    input.Body.pathMatchers[_].routeRules[_].routeAction.urlRewrite.hostRewrite == STRING
    input.Body.pathMatchers[_].routeRules[_].routeAction.urlRewrite.pathPrefixRewrite == STRING
    input.Body.pathMatchers[_].routeRules[_].routeAction.urlRewrite.pathTemplateRewrite == STRING
    input.Body.pathMatchers[_].routeRules[_].routeAction.weightedBackendServices[_].backendService == STRING
    input.Body.pathMatchers[_].routeRules[_].routeAction.weightedBackendServices[_].headerAction.requestHeadersToAdd[_].headerName == STRING
    input.Body.pathMatchers[_].routeRules[_].routeAction.weightedBackendServices[_].headerAction.requestHeadersToAdd[_].headerValue == STRING
    input.Body.pathMatchers[_].routeRules[_].routeAction.weightedBackendServices[_].headerAction.requestHeadersToAdd[_].replace == BOOLEAN
    input.Body.pathMatchers[_].routeRules[_].routeAction.weightedBackendServices[_].headerAction.requestHeadersToRemove[_] == STRING
    input.Body.pathMatchers[_].routeRules[_].routeAction.weightedBackendServices[_].headerAction.responseHeadersToAdd[_].headerName == STRING
    input.Body.pathMatchers[_].routeRules[_].routeAction.weightedBackendServices[_].headerAction.responseHeadersToAdd[_].headerValue == STRING
    input.Body.pathMatchers[_].routeRules[_].routeAction.weightedBackendServices[_].headerAction.responseHeadersToAdd[_].replace == BOOLEAN
    input.Body.pathMatchers[_].routeRules[_].routeAction.weightedBackendServices[_].headerAction.responseHeadersToRemove[_] == STRING
    input.Body.pathMatchers[_].routeRules[_].routeAction.weightedBackendServices[_].weight == INTEGER
    input.Body.pathMatchers[_].routeRules[_].service == STRING
    input.Body.pathMatchers[_].routeRules[_].urlRedirect.hostRedirect == STRING
    input.Body.pathMatchers[_].routeRules[_].urlRedirect.httpsRedirect == BOOLEAN
    input.Body.pathMatchers[_].routeRules[_].urlRedirect.pathRedirect == STRING
    input.Body.pathMatchers[_].routeRules[_].urlRedirect.prefixRedirect == STRING
    input.Body.pathMatchers[_].routeRules[_].urlRedirect.redirectResponseCode == enum_HttpRedirectActionRedirectResponseCode[_]
    input.Body.pathMatchers[_].routeRules[_].urlRedirect.stripQuery == BOOLEAN
    input.Body.region == STRING
    input.Body.selfLink == STRING
    input.Body.tests[_].description == STRING
    input.Body.tests[_].expectedOutputUrl == STRING
    input.Body.tests[_].expectedRedirectResponseCode == INTEGER
    input.Body.tests[_].headers[_].name == STRING
    input.Body.tests[_].headers[_].value == STRING
    input.Body.tests[_].host == STRING
    input.Body.tests[_].path == STRING
    input.Body.tests[_].service == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.regionUrlMaps.invalidateCache

valid {
    input.Body.host == STRING
    input.Body.path == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.ReqMap.urlMap == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.regionUrlMaps.list

valid {
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.Qs.filter == STRING
    input.Qs.maxResults == INTEGER
    input.Qs.orderBy == STRING
    input.Qs.pageToken == STRING
    input.Qs.returnPartialSuccess == BOOLEAN
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.regionUrlMaps.patch

enum_HttpRedirectActionRedirectResponseCode := [ "FOUND", "MOVED_PERMANENTLY_DEFAULT", "PERMANENT_REDIRECT", "SEE_OTHER", "TEMPORARY_REDIRECT" ]
enum_MetadataFilterFilterMatchCriteria := [ "MATCH_ALL", "MATCH_ANY", "NOT_SET" ]

valid {
    input.Body.creationTimestamp == STRING
    input.Body.defaultRouteAction.corsPolicy.allowCredentials == BOOLEAN
    input.Body.defaultRouteAction.corsPolicy.allowHeaders[_] == STRING
    input.Body.defaultRouteAction.corsPolicy.allowMethods[_] == STRING
    input.Body.defaultRouteAction.corsPolicy.allowOriginRegexes[_] == STRING
    input.Body.defaultRouteAction.corsPolicy.allowOrigins[_] == STRING
    input.Body.defaultRouteAction.corsPolicy.disabled == BOOLEAN
    input.Body.defaultRouteAction.corsPolicy.exposeHeaders[_] == STRING
    input.Body.defaultRouteAction.corsPolicy.maxAge == INTEGER
    input.Body.defaultRouteAction.faultInjectionPolicy.abort.httpStatus == INTEGER
    input.Body.defaultRouteAction.faultInjectionPolicy.abort.percentage == NUMBER
    input.Body.defaultRouteAction.faultInjectionPolicy.delay.fixedDelay.nanos == INTEGER
    input.Body.defaultRouteAction.faultInjectionPolicy.delay.fixedDelay.seconds == STRING
    input.Body.defaultRouteAction.faultInjectionPolicy.delay.percentage == NUMBER
    input.Body.defaultRouteAction.maxStreamDuration.nanos == INTEGER
    input.Body.defaultRouteAction.maxStreamDuration.seconds == STRING
    input.Body.defaultRouteAction.requestMirrorPolicy.backendService == STRING
    input.Body.defaultRouteAction.retryPolicy.numRetries == INTEGER
    input.Body.defaultRouteAction.retryPolicy.perTryTimeout.nanos == INTEGER
    input.Body.defaultRouteAction.retryPolicy.perTryTimeout.seconds == STRING
    input.Body.defaultRouteAction.retryPolicy.retryConditions[_] == STRING
    input.Body.defaultRouteAction.timeout.nanos == INTEGER
    input.Body.defaultRouteAction.timeout.seconds == STRING
    input.Body.defaultRouteAction.urlRewrite.hostRewrite == STRING
    input.Body.defaultRouteAction.urlRewrite.pathPrefixRewrite == STRING
    input.Body.defaultRouteAction.urlRewrite.pathTemplateRewrite == STRING
    input.Body.defaultRouteAction.weightedBackendServices[_].backendService == STRING
    input.Body.defaultRouteAction.weightedBackendServices[_].headerAction.requestHeadersToAdd[_].headerName == STRING
    input.Body.defaultRouteAction.weightedBackendServices[_].headerAction.requestHeadersToAdd[_].headerValue == STRING
    input.Body.defaultRouteAction.weightedBackendServices[_].headerAction.requestHeadersToAdd[_].replace == BOOLEAN
    input.Body.defaultRouteAction.weightedBackendServices[_].headerAction.requestHeadersToRemove[_] == STRING
    input.Body.defaultRouteAction.weightedBackendServices[_].headerAction.responseHeadersToAdd[_].headerName == STRING
    input.Body.defaultRouteAction.weightedBackendServices[_].headerAction.responseHeadersToAdd[_].headerValue == STRING
    input.Body.defaultRouteAction.weightedBackendServices[_].headerAction.responseHeadersToAdd[_].replace == BOOLEAN
    input.Body.defaultRouteAction.weightedBackendServices[_].headerAction.responseHeadersToRemove[_] == STRING
    input.Body.defaultRouteAction.weightedBackendServices[_].weight == INTEGER
    input.Body.defaultService == STRING
    input.Body.defaultUrlRedirect.hostRedirect == STRING
    input.Body.defaultUrlRedirect.httpsRedirect == BOOLEAN
    input.Body.defaultUrlRedirect.pathRedirect == STRING
    input.Body.defaultUrlRedirect.prefixRedirect == STRING
    input.Body.defaultUrlRedirect.redirectResponseCode == enum_HttpRedirectActionRedirectResponseCode[_]
    input.Body.defaultUrlRedirect.stripQuery == BOOLEAN
    input.Body.description == STRING
    input.Body.fingerprint == STRING
    input.Body.headerAction.requestHeadersToAdd[_].headerName == STRING
    input.Body.headerAction.requestHeadersToAdd[_].headerValue == STRING
    input.Body.headerAction.requestHeadersToAdd[_].replace == BOOLEAN
    input.Body.headerAction.requestHeadersToRemove[_] == STRING
    input.Body.headerAction.responseHeadersToAdd[_].headerName == STRING
    input.Body.headerAction.responseHeadersToAdd[_].headerValue == STRING
    input.Body.headerAction.responseHeadersToAdd[_].replace == BOOLEAN
    input.Body.headerAction.responseHeadersToRemove[_] == STRING
    input.Body.hostRules[_].description == STRING
    input.Body.hostRules[_].hosts[_] == STRING
    input.Body.hostRules[_].pathMatcher == STRING
    input.Body.id == STRING
    input.Body.kind == STRING
    input.Body.name == STRING
    input.Body.pathMatchers[_].defaultRouteAction.corsPolicy.allowCredentials == BOOLEAN
    input.Body.pathMatchers[_].defaultRouteAction.corsPolicy.allowHeaders[_] == STRING
    input.Body.pathMatchers[_].defaultRouteAction.corsPolicy.allowMethods[_] == STRING
    input.Body.pathMatchers[_].defaultRouteAction.corsPolicy.allowOriginRegexes[_] == STRING
    input.Body.pathMatchers[_].defaultRouteAction.corsPolicy.allowOrigins[_] == STRING
    input.Body.pathMatchers[_].defaultRouteAction.corsPolicy.disabled == BOOLEAN
    input.Body.pathMatchers[_].defaultRouteAction.corsPolicy.exposeHeaders[_] == STRING
    input.Body.pathMatchers[_].defaultRouteAction.corsPolicy.maxAge == INTEGER
    input.Body.pathMatchers[_].defaultRouteAction.faultInjectionPolicy.abort.httpStatus == INTEGER
    input.Body.pathMatchers[_].defaultRouteAction.faultInjectionPolicy.abort.percentage == NUMBER
    input.Body.pathMatchers[_].defaultRouteAction.faultInjectionPolicy.delay.fixedDelay.nanos == INTEGER
    input.Body.pathMatchers[_].defaultRouteAction.faultInjectionPolicy.delay.fixedDelay.seconds == STRING
    input.Body.pathMatchers[_].defaultRouteAction.faultInjectionPolicy.delay.percentage == NUMBER
    input.Body.pathMatchers[_].defaultRouteAction.maxStreamDuration.nanos == INTEGER
    input.Body.pathMatchers[_].defaultRouteAction.maxStreamDuration.seconds == STRING
    input.Body.pathMatchers[_].defaultRouteAction.requestMirrorPolicy.backendService == STRING
    input.Body.pathMatchers[_].defaultRouteAction.retryPolicy.numRetries == INTEGER
    input.Body.pathMatchers[_].defaultRouteAction.retryPolicy.perTryTimeout.nanos == INTEGER
    input.Body.pathMatchers[_].defaultRouteAction.retryPolicy.perTryTimeout.seconds == STRING
    input.Body.pathMatchers[_].defaultRouteAction.retryPolicy.retryConditions[_] == STRING
    input.Body.pathMatchers[_].defaultRouteAction.timeout.nanos == INTEGER
    input.Body.pathMatchers[_].defaultRouteAction.timeout.seconds == STRING
    input.Body.pathMatchers[_].defaultRouteAction.urlRewrite.hostRewrite == STRING
    input.Body.pathMatchers[_].defaultRouteAction.urlRewrite.pathPrefixRewrite == STRING
    input.Body.pathMatchers[_].defaultRouteAction.urlRewrite.pathTemplateRewrite == STRING
    input.Body.pathMatchers[_].defaultRouteAction.weightedBackendServices[_].backendService == STRING
    input.Body.pathMatchers[_].defaultRouteAction.weightedBackendServices[_].headerAction.requestHeadersToAdd[_].headerName == STRING
    input.Body.pathMatchers[_].defaultRouteAction.weightedBackendServices[_].headerAction.requestHeadersToAdd[_].headerValue == STRING
    input.Body.pathMatchers[_].defaultRouteAction.weightedBackendServices[_].headerAction.requestHeadersToAdd[_].replace == BOOLEAN
    input.Body.pathMatchers[_].defaultRouteAction.weightedBackendServices[_].headerAction.requestHeadersToRemove[_] == STRING
    input.Body.pathMatchers[_].defaultRouteAction.weightedBackendServices[_].headerAction.responseHeadersToAdd[_].headerName == STRING
    input.Body.pathMatchers[_].defaultRouteAction.weightedBackendServices[_].headerAction.responseHeadersToAdd[_].headerValue == STRING
    input.Body.pathMatchers[_].defaultRouteAction.weightedBackendServices[_].headerAction.responseHeadersToAdd[_].replace == BOOLEAN
    input.Body.pathMatchers[_].defaultRouteAction.weightedBackendServices[_].headerAction.responseHeadersToRemove[_] == STRING
    input.Body.pathMatchers[_].defaultRouteAction.weightedBackendServices[_].weight == INTEGER
    input.Body.pathMatchers[_].defaultService == STRING
    input.Body.pathMatchers[_].defaultUrlRedirect.hostRedirect == STRING
    input.Body.pathMatchers[_].defaultUrlRedirect.httpsRedirect == BOOLEAN
    input.Body.pathMatchers[_].defaultUrlRedirect.pathRedirect == STRING
    input.Body.pathMatchers[_].defaultUrlRedirect.prefixRedirect == STRING
    input.Body.pathMatchers[_].defaultUrlRedirect.redirectResponseCode == enum_HttpRedirectActionRedirectResponseCode[_]
    input.Body.pathMatchers[_].defaultUrlRedirect.stripQuery == BOOLEAN
    input.Body.pathMatchers[_].description == STRING
    input.Body.pathMatchers[_].headerAction.requestHeadersToAdd[_].headerName == STRING
    input.Body.pathMatchers[_].headerAction.requestHeadersToAdd[_].headerValue == STRING
    input.Body.pathMatchers[_].headerAction.requestHeadersToAdd[_].replace == BOOLEAN
    input.Body.pathMatchers[_].headerAction.requestHeadersToRemove[_] == STRING
    input.Body.pathMatchers[_].headerAction.responseHeadersToAdd[_].headerName == STRING
    input.Body.pathMatchers[_].headerAction.responseHeadersToAdd[_].headerValue == STRING
    input.Body.pathMatchers[_].headerAction.responseHeadersToAdd[_].replace == BOOLEAN
    input.Body.pathMatchers[_].headerAction.responseHeadersToRemove[_] == STRING
    input.Body.pathMatchers[_].name == STRING
    input.Body.pathMatchers[_].pathRules[_].paths[_] == STRING
    input.Body.pathMatchers[_].pathRules[_].routeAction.corsPolicy.allowCredentials == BOOLEAN
    input.Body.pathMatchers[_].pathRules[_].routeAction.corsPolicy.allowHeaders[_] == STRING
    input.Body.pathMatchers[_].pathRules[_].routeAction.corsPolicy.allowMethods[_] == STRING
    input.Body.pathMatchers[_].pathRules[_].routeAction.corsPolicy.allowOriginRegexes[_] == STRING
    input.Body.pathMatchers[_].pathRules[_].routeAction.corsPolicy.allowOrigins[_] == STRING
    input.Body.pathMatchers[_].pathRules[_].routeAction.corsPolicy.disabled == BOOLEAN
    input.Body.pathMatchers[_].pathRules[_].routeAction.corsPolicy.exposeHeaders[_] == STRING
    input.Body.pathMatchers[_].pathRules[_].routeAction.corsPolicy.maxAge == INTEGER
    input.Body.pathMatchers[_].pathRules[_].routeAction.faultInjectionPolicy.abort.httpStatus == INTEGER
    input.Body.pathMatchers[_].pathRules[_].routeAction.faultInjectionPolicy.abort.percentage == NUMBER
    input.Body.pathMatchers[_].pathRules[_].routeAction.faultInjectionPolicy.delay.fixedDelay.nanos == INTEGER
    input.Body.pathMatchers[_].pathRules[_].routeAction.faultInjectionPolicy.delay.fixedDelay.seconds == STRING
    input.Body.pathMatchers[_].pathRules[_].routeAction.faultInjectionPolicy.delay.percentage == NUMBER
    input.Body.pathMatchers[_].pathRules[_].routeAction.maxStreamDuration.nanos == INTEGER
    input.Body.pathMatchers[_].pathRules[_].routeAction.maxStreamDuration.seconds == STRING
    input.Body.pathMatchers[_].pathRules[_].routeAction.requestMirrorPolicy.backendService == STRING
    input.Body.pathMatchers[_].pathRules[_].routeAction.retryPolicy.numRetries == INTEGER
    input.Body.pathMatchers[_].pathRules[_].routeAction.retryPolicy.perTryTimeout.nanos == INTEGER
    input.Body.pathMatchers[_].pathRules[_].routeAction.retryPolicy.perTryTimeout.seconds == STRING
    input.Body.pathMatchers[_].pathRules[_].routeAction.retryPolicy.retryConditions[_] == STRING
    input.Body.pathMatchers[_].pathRules[_].routeAction.timeout.nanos == INTEGER
    input.Body.pathMatchers[_].pathRules[_].routeAction.timeout.seconds == STRING
    input.Body.pathMatchers[_].pathRules[_].routeAction.urlRewrite.hostRewrite == STRING
    input.Body.pathMatchers[_].pathRules[_].routeAction.urlRewrite.pathPrefixRewrite == STRING
    input.Body.pathMatchers[_].pathRules[_].routeAction.urlRewrite.pathTemplateRewrite == STRING
    input.Body.pathMatchers[_].pathRules[_].routeAction.weightedBackendServices[_].backendService == STRING
    input.Body.pathMatchers[_].pathRules[_].routeAction.weightedBackendServices[_].headerAction.requestHeadersToAdd[_].headerName == STRING
    input.Body.pathMatchers[_].pathRules[_].routeAction.weightedBackendServices[_].headerAction.requestHeadersToAdd[_].headerValue == STRING
    input.Body.pathMatchers[_].pathRules[_].routeAction.weightedBackendServices[_].headerAction.requestHeadersToAdd[_].replace == BOOLEAN
    input.Body.pathMatchers[_].pathRules[_].routeAction.weightedBackendServices[_].headerAction.requestHeadersToRemove[_] == STRING
    input.Body.pathMatchers[_].pathRules[_].routeAction.weightedBackendServices[_].headerAction.responseHeadersToAdd[_].headerName == STRING
    input.Body.pathMatchers[_].pathRules[_].routeAction.weightedBackendServices[_].headerAction.responseHeadersToAdd[_].headerValue == STRING
    input.Body.pathMatchers[_].pathRules[_].routeAction.weightedBackendServices[_].headerAction.responseHeadersToAdd[_].replace == BOOLEAN
    input.Body.pathMatchers[_].pathRules[_].routeAction.weightedBackendServices[_].headerAction.responseHeadersToRemove[_] == STRING
    input.Body.pathMatchers[_].pathRules[_].routeAction.weightedBackendServices[_].weight == INTEGER
    input.Body.pathMatchers[_].pathRules[_].service == STRING
    input.Body.pathMatchers[_].pathRules[_].urlRedirect.hostRedirect == STRING
    input.Body.pathMatchers[_].pathRules[_].urlRedirect.httpsRedirect == BOOLEAN
    input.Body.pathMatchers[_].pathRules[_].urlRedirect.pathRedirect == STRING
    input.Body.pathMatchers[_].pathRules[_].urlRedirect.prefixRedirect == STRING
    input.Body.pathMatchers[_].pathRules[_].urlRedirect.redirectResponseCode == enum_HttpRedirectActionRedirectResponseCode[_]
    input.Body.pathMatchers[_].pathRules[_].urlRedirect.stripQuery == BOOLEAN
    input.Body.pathMatchers[_].routeRules[_].description == STRING
    input.Body.pathMatchers[_].routeRules[_].headerAction.requestHeadersToAdd[_].headerName == STRING
    input.Body.pathMatchers[_].routeRules[_].headerAction.requestHeadersToAdd[_].headerValue == STRING
    input.Body.pathMatchers[_].routeRules[_].headerAction.requestHeadersToAdd[_].replace == BOOLEAN
    input.Body.pathMatchers[_].routeRules[_].headerAction.requestHeadersToRemove[_] == STRING
    input.Body.pathMatchers[_].routeRules[_].headerAction.responseHeadersToAdd[_].headerName == STRING
    input.Body.pathMatchers[_].routeRules[_].headerAction.responseHeadersToAdd[_].headerValue == STRING
    input.Body.pathMatchers[_].routeRules[_].headerAction.responseHeadersToAdd[_].replace == BOOLEAN
    input.Body.pathMatchers[_].routeRules[_].headerAction.responseHeadersToRemove[_] == STRING
    input.Body.pathMatchers[_].routeRules[_].matchRules[_].fullPathMatch == STRING
    input.Body.pathMatchers[_].routeRules[_].matchRules[_].headerMatches[_].exactMatch == STRING
    input.Body.pathMatchers[_].routeRules[_].matchRules[_].headerMatches[_].headerName == STRING
    input.Body.pathMatchers[_].routeRules[_].matchRules[_].headerMatches[_].invertMatch == BOOLEAN
    input.Body.pathMatchers[_].routeRules[_].matchRules[_].headerMatches[_].prefixMatch == STRING
    input.Body.pathMatchers[_].routeRules[_].matchRules[_].headerMatches[_].presentMatch == BOOLEAN
    input.Body.pathMatchers[_].routeRules[_].matchRules[_].headerMatches[_].rangeMatch.rangeEnd == STRING
    input.Body.pathMatchers[_].routeRules[_].matchRules[_].headerMatches[_].rangeMatch.rangeStart == STRING
    input.Body.pathMatchers[_].routeRules[_].matchRules[_].headerMatches[_].regexMatch == STRING
    input.Body.pathMatchers[_].routeRules[_].matchRules[_].headerMatches[_].suffixMatch == STRING
    input.Body.pathMatchers[_].routeRules[_].matchRules[_].ignoreCase == BOOLEAN
    input.Body.pathMatchers[_].routeRules[_].matchRules[_].metadataFilters[_].filterLabels[_].name == STRING
    input.Body.pathMatchers[_].routeRules[_].matchRules[_].metadataFilters[_].filterLabels[_].value == STRING
    input.Body.pathMatchers[_].routeRules[_].matchRules[_].metadataFilters[_].filterMatchCriteria == enum_MetadataFilterFilterMatchCriteria[_]
    input.Body.pathMatchers[_].routeRules[_].matchRules[_].pathTemplateMatch == STRING
    input.Body.pathMatchers[_].routeRules[_].matchRules[_].prefixMatch == STRING
    input.Body.pathMatchers[_].routeRules[_].matchRules[_].queryParameterMatches[_].exactMatch == STRING
    input.Body.pathMatchers[_].routeRules[_].matchRules[_].queryParameterMatches[_].name == STRING
    input.Body.pathMatchers[_].routeRules[_].matchRules[_].queryParameterMatches[_].presentMatch == BOOLEAN
    input.Body.pathMatchers[_].routeRules[_].matchRules[_].queryParameterMatches[_].regexMatch == STRING
    input.Body.pathMatchers[_].routeRules[_].matchRules[_].regexMatch == STRING
    input.Body.pathMatchers[_].routeRules[_].priority == INTEGER
    input.Body.pathMatchers[_].routeRules[_].routeAction.corsPolicy.allowCredentials == BOOLEAN
    input.Body.pathMatchers[_].routeRules[_].routeAction.corsPolicy.allowHeaders[_] == STRING
    input.Body.pathMatchers[_].routeRules[_].routeAction.corsPolicy.allowMethods[_] == STRING
    input.Body.pathMatchers[_].routeRules[_].routeAction.corsPolicy.allowOriginRegexes[_] == STRING
    input.Body.pathMatchers[_].routeRules[_].routeAction.corsPolicy.allowOrigins[_] == STRING
    input.Body.pathMatchers[_].routeRules[_].routeAction.corsPolicy.disabled == BOOLEAN
    input.Body.pathMatchers[_].routeRules[_].routeAction.corsPolicy.exposeHeaders[_] == STRING
    input.Body.pathMatchers[_].routeRules[_].routeAction.corsPolicy.maxAge == INTEGER
    input.Body.pathMatchers[_].routeRules[_].routeAction.faultInjectionPolicy.abort.httpStatus == INTEGER
    input.Body.pathMatchers[_].routeRules[_].routeAction.faultInjectionPolicy.abort.percentage == NUMBER
    input.Body.pathMatchers[_].routeRules[_].routeAction.faultInjectionPolicy.delay.fixedDelay.nanos == INTEGER
    input.Body.pathMatchers[_].routeRules[_].routeAction.faultInjectionPolicy.delay.fixedDelay.seconds == STRING
    input.Body.pathMatchers[_].routeRules[_].routeAction.faultInjectionPolicy.delay.percentage == NUMBER
    input.Body.pathMatchers[_].routeRules[_].routeAction.maxStreamDuration.nanos == INTEGER
    input.Body.pathMatchers[_].routeRules[_].routeAction.maxStreamDuration.seconds == STRING
    input.Body.pathMatchers[_].routeRules[_].routeAction.requestMirrorPolicy.backendService == STRING
    input.Body.pathMatchers[_].routeRules[_].routeAction.retryPolicy.numRetries == INTEGER
    input.Body.pathMatchers[_].routeRules[_].routeAction.retryPolicy.perTryTimeout.nanos == INTEGER
    input.Body.pathMatchers[_].routeRules[_].routeAction.retryPolicy.perTryTimeout.seconds == STRING
    input.Body.pathMatchers[_].routeRules[_].routeAction.retryPolicy.retryConditions[_] == STRING
    input.Body.pathMatchers[_].routeRules[_].routeAction.timeout.nanos == INTEGER
    input.Body.pathMatchers[_].routeRules[_].routeAction.timeout.seconds == STRING
    input.Body.pathMatchers[_].routeRules[_].routeAction.urlRewrite.hostRewrite == STRING
    input.Body.pathMatchers[_].routeRules[_].routeAction.urlRewrite.pathPrefixRewrite == STRING
    input.Body.pathMatchers[_].routeRules[_].routeAction.urlRewrite.pathTemplateRewrite == STRING
    input.Body.pathMatchers[_].routeRules[_].routeAction.weightedBackendServices[_].backendService == STRING
    input.Body.pathMatchers[_].routeRules[_].routeAction.weightedBackendServices[_].headerAction.requestHeadersToAdd[_].headerName == STRING
    input.Body.pathMatchers[_].routeRules[_].routeAction.weightedBackendServices[_].headerAction.requestHeadersToAdd[_].headerValue == STRING
    input.Body.pathMatchers[_].routeRules[_].routeAction.weightedBackendServices[_].headerAction.requestHeadersToAdd[_].replace == BOOLEAN
    input.Body.pathMatchers[_].routeRules[_].routeAction.weightedBackendServices[_].headerAction.requestHeadersToRemove[_] == STRING
    input.Body.pathMatchers[_].routeRules[_].routeAction.weightedBackendServices[_].headerAction.responseHeadersToAdd[_].headerName == STRING
    input.Body.pathMatchers[_].routeRules[_].routeAction.weightedBackendServices[_].headerAction.responseHeadersToAdd[_].headerValue == STRING
    input.Body.pathMatchers[_].routeRules[_].routeAction.weightedBackendServices[_].headerAction.responseHeadersToAdd[_].replace == BOOLEAN
    input.Body.pathMatchers[_].routeRules[_].routeAction.weightedBackendServices[_].headerAction.responseHeadersToRemove[_] == STRING
    input.Body.pathMatchers[_].routeRules[_].routeAction.weightedBackendServices[_].weight == INTEGER
    input.Body.pathMatchers[_].routeRules[_].service == STRING
    input.Body.pathMatchers[_].routeRules[_].urlRedirect.hostRedirect == STRING
    input.Body.pathMatchers[_].routeRules[_].urlRedirect.httpsRedirect == BOOLEAN
    input.Body.pathMatchers[_].routeRules[_].urlRedirect.pathRedirect == STRING
    input.Body.pathMatchers[_].routeRules[_].urlRedirect.prefixRedirect == STRING
    input.Body.pathMatchers[_].routeRules[_].urlRedirect.redirectResponseCode == enum_HttpRedirectActionRedirectResponseCode[_]
    input.Body.pathMatchers[_].routeRules[_].urlRedirect.stripQuery == BOOLEAN
    input.Body.region == STRING
    input.Body.selfLink == STRING
    input.Body.tests[_].description == STRING
    input.Body.tests[_].expectedOutputUrl == STRING
    input.Body.tests[_].expectedRedirectResponseCode == INTEGER
    input.Body.tests[_].headers[_].name == STRING
    input.Body.tests[_].headers[_].value == STRING
    input.Body.tests[_].host == STRING
    input.Body.tests[_].path == STRING
    input.Body.tests[_].service == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.ReqMap.urlMap == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.regionUrlMaps.testIamPermissions

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

compute.regionUrlMaps.update

enum_HttpRedirectActionRedirectResponseCode := [ "FOUND", "MOVED_PERMANENTLY_DEFAULT", "PERMANENT_REDIRECT", "SEE_OTHER", "TEMPORARY_REDIRECT" ]
enum_MetadataFilterFilterMatchCriteria := [ "MATCH_ALL", "MATCH_ANY", "NOT_SET" ]

valid {
    input.Body.creationTimestamp == STRING
    input.Body.defaultRouteAction.corsPolicy.allowCredentials == BOOLEAN
    input.Body.defaultRouteAction.corsPolicy.allowHeaders[_] == STRING
    input.Body.defaultRouteAction.corsPolicy.allowMethods[_] == STRING
    input.Body.defaultRouteAction.corsPolicy.allowOriginRegexes[_] == STRING
    input.Body.defaultRouteAction.corsPolicy.allowOrigins[_] == STRING
    input.Body.defaultRouteAction.corsPolicy.disabled == BOOLEAN
    input.Body.defaultRouteAction.corsPolicy.exposeHeaders[_] == STRING
    input.Body.defaultRouteAction.corsPolicy.maxAge == INTEGER
    input.Body.defaultRouteAction.faultInjectionPolicy.abort.httpStatus == INTEGER
    input.Body.defaultRouteAction.faultInjectionPolicy.abort.percentage == NUMBER
    input.Body.defaultRouteAction.faultInjectionPolicy.delay.fixedDelay.nanos == INTEGER
    input.Body.defaultRouteAction.faultInjectionPolicy.delay.fixedDelay.seconds == STRING
    input.Body.defaultRouteAction.faultInjectionPolicy.delay.percentage == NUMBER
    input.Body.defaultRouteAction.maxStreamDuration.nanos == INTEGER
    input.Body.defaultRouteAction.maxStreamDuration.seconds == STRING
    input.Body.defaultRouteAction.requestMirrorPolicy.backendService == STRING
    input.Body.defaultRouteAction.retryPolicy.numRetries == INTEGER
    input.Body.defaultRouteAction.retryPolicy.perTryTimeout.nanos == INTEGER
    input.Body.defaultRouteAction.retryPolicy.perTryTimeout.seconds == STRING
    input.Body.defaultRouteAction.retryPolicy.retryConditions[_] == STRING
    input.Body.defaultRouteAction.timeout.nanos == INTEGER
    input.Body.defaultRouteAction.timeout.seconds == STRING
    input.Body.defaultRouteAction.urlRewrite.hostRewrite == STRING
    input.Body.defaultRouteAction.urlRewrite.pathPrefixRewrite == STRING
    input.Body.defaultRouteAction.urlRewrite.pathTemplateRewrite == STRING
    input.Body.defaultRouteAction.weightedBackendServices[_].backendService == STRING
    input.Body.defaultRouteAction.weightedBackendServices[_].headerAction.requestHeadersToAdd[_].headerName == STRING
    input.Body.defaultRouteAction.weightedBackendServices[_].headerAction.requestHeadersToAdd[_].headerValue == STRING
    input.Body.defaultRouteAction.weightedBackendServices[_].headerAction.requestHeadersToAdd[_].replace == BOOLEAN
    input.Body.defaultRouteAction.weightedBackendServices[_].headerAction.requestHeadersToRemove[_] == STRING
    input.Body.defaultRouteAction.weightedBackendServices[_].headerAction.responseHeadersToAdd[_].headerName == STRING
    input.Body.defaultRouteAction.weightedBackendServices[_].headerAction.responseHeadersToAdd[_].headerValue == STRING
    input.Body.defaultRouteAction.weightedBackendServices[_].headerAction.responseHeadersToAdd[_].replace == BOOLEAN
    input.Body.defaultRouteAction.weightedBackendServices[_].headerAction.responseHeadersToRemove[_] == STRING
    input.Body.defaultRouteAction.weightedBackendServices[_].weight == INTEGER
    input.Body.defaultService == STRING
    input.Body.defaultUrlRedirect.hostRedirect == STRING
    input.Body.defaultUrlRedirect.httpsRedirect == BOOLEAN
    input.Body.defaultUrlRedirect.pathRedirect == STRING
    input.Body.defaultUrlRedirect.prefixRedirect == STRING
    input.Body.defaultUrlRedirect.redirectResponseCode == enum_HttpRedirectActionRedirectResponseCode[_]
    input.Body.defaultUrlRedirect.stripQuery == BOOLEAN
    input.Body.description == STRING
    input.Body.fingerprint == STRING
    input.Body.headerAction.requestHeadersToAdd[_].headerName == STRING
    input.Body.headerAction.requestHeadersToAdd[_].headerValue == STRING
    input.Body.headerAction.requestHeadersToAdd[_].replace == BOOLEAN
    input.Body.headerAction.requestHeadersToRemove[_] == STRING
    input.Body.headerAction.responseHeadersToAdd[_].headerName == STRING
    input.Body.headerAction.responseHeadersToAdd[_].headerValue == STRING
    input.Body.headerAction.responseHeadersToAdd[_].replace == BOOLEAN
    input.Body.headerAction.responseHeadersToRemove[_] == STRING
    input.Body.hostRules[_].description == STRING
    input.Body.hostRules[_].hosts[_] == STRING
    input.Body.hostRules[_].pathMatcher == STRING
    input.Body.id == STRING
    input.Body.kind == STRING
    input.Body.name == STRING
    input.Body.pathMatchers[_].defaultRouteAction.corsPolicy.allowCredentials == BOOLEAN
    input.Body.pathMatchers[_].defaultRouteAction.corsPolicy.allowHeaders[_] == STRING
    input.Body.pathMatchers[_].defaultRouteAction.corsPolicy.allowMethods[_] == STRING
    input.Body.pathMatchers[_].defaultRouteAction.corsPolicy.allowOriginRegexes[_] == STRING
    input.Body.pathMatchers[_].defaultRouteAction.corsPolicy.allowOrigins[_] == STRING
    input.Body.pathMatchers[_].defaultRouteAction.corsPolicy.disabled == BOOLEAN
    input.Body.pathMatchers[_].defaultRouteAction.corsPolicy.exposeHeaders[_] == STRING
    input.Body.pathMatchers[_].defaultRouteAction.corsPolicy.maxAge == INTEGER
    input.Body.pathMatchers[_].defaultRouteAction.faultInjectionPolicy.abort.httpStatus == INTEGER
    input.Body.pathMatchers[_].defaultRouteAction.faultInjectionPolicy.abort.percentage == NUMBER
    input.Body.pathMatchers[_].defaultRouteAction.faultInjectionPolicy.delay.fixedDelay.nanos == INTEGER
    input.Body.pathMatchers[_].defaultRouteAction.faultInjectionPolicy.delay.fixedDelay.seconds == STRING
    input.Body.pathMatchers[_].defaultRouteAction.faultInjectionPolicy.delay.percentage == NUMBER
    input.Body.pathMatchers[_].defaultRouteAction.maxStreamDuration.nanos == INTEGER
    input.Body.pathMatchers[_].defaultRouteAction.maxStreamDuration.seconds == STRING
    input.Body.pathMatchers[_].defaultRouteAction.requestMirrorPolicy.backendService == STRING
    input.Body.pathMatchers[_].defaultRouteAction.retryPolicy.numRetries == INTEGER
    input.Body.pathMatchers[_].defaultRouteAction.retryPolicy.perTryTimeout.nanos == INTEGER
    input.Body.pathMatchers[_].defaultRouteAction.retryPolicy.perTryTimeout.seconds == STRING
    input.Body.pathMatchers[_].defaultRouteAction.retryPolicy.retryConditions[_] == STRING
    input.Body.pathMatchers[_].defaultRouteAction.timeout.nanos == INTEGER
    input.Body.pathMatchers[_].defaultRouteAction.timeout.seconds == STRING
    input.Body.pathMatchers[_].defaultRouteAction.urlRewrite.hostRewrite == STRING
    input.Body.pathMatchers[_].defaultRouteAction.urlRewrite.pathPrefixRewrite == STRING
    input.Body.pathMatchers[_].defaultRouteAction.urlRewrite.pathTemplateRewrite == STRING
    input.Body.pathMatchers[_].defaultRouteAction.weightedBackendServices[_].backendService == STRING
    input.Body.pathMatchers[_].defaultRouteAction.weightedBackendServices[_].headerAction.requestHeadersToAdd[_].headerName == STRING
    input.Body.pathMatchers[_].defaultRouteAction.weightedBackendServices[_].headerAction.requestHeadersToAdd[_].headerValue == STRING
    input.Body.pathMatchers[_].defaultRouteAction.weightedBackendServices[_].headerAction.requestHeadersToAdd[_].replace == BOOLEAN
    input.Body.pathMatchers[_].defaultRouteAction.weightedBackendServices[_].headerAction.requestHeadersToRemove[_] == STRING
    input.Body.pathMatchers[_].defaultRouteAction.weightedBackendServices[_].headerAction.responseHeadersToAdd[_].headerName == STRING
    input.Body.pathMatchers[_].defaultRouteAction.weightedBackendServices[_].headerAction.responseHeadersToAdd[_].headerValue == STRING
    input.Body.pathMatchers[_].defaultRouteAction.weightedBackendServices[_].headerAction.responseHeadersToAdd[_].replace == BOOLEAN
    input.Body.pathMatchers[_].defaultRouteAction.weightedBackendServices[_].headerAction.responseHeadersToRemove[_] == STRING
    input.Body.pathMatchers[_].defaultRouteAction.weightedBackendServices[_].weight == INTEGER
    input.Body.pathMatchers[_].defaultService == STRING
    input.Body.pathMatchers[_].defaultUrlRedirect.hostRedirect == STRING
    input.Body.pathMatchers[_].defaultUrlRedirect.httpsRedirect == BOOLEAN
    input.Body.pathMatchers[_].defaultUrlRedirect.pathRedirect == STRING
    input.Body.pathMatchers[_].defaultUrlRedirect.prefixRedirect == STRING
    input.Body.pathMatchers[_].defaultUrlRedirect.redirectResponseCode == enum_HttpRedirectActionRedirectResponseCode[_]
    input.Body.pathMatchers[_].defaultUrlRedirect.stripQuery == BOOLEAN
    input.Body.pathMatchers[_].description == STRING
    input.Body.pathMatchers[_].headerAction.requestHeadersToAdd[_].headerName == STRING
    input.Body.pathMatchers[_].headerAction.requestHeadersToAdd[_].headerValue == STRING
    input.Body.pathMatchers[_].headerAction.requestHeadersToAdd[_].replace == BOOLEAN
    input.Body.pathMatchers[_].headerAction.requestHeadersToRemove[_] == STRING
    input.Body.pathMatchers[_].headerAction.responseHeadersToAdd[_].headerName == STRING
    input.Body.pathMatchers[_].headerAction.responseHeadersToAdd[_].headerValue == STRING
    input.Body.pathMatchers[_].headerAction.responseHeadersToAdd[_].replace == BOOLEAN
    input.Body.pathMatchers[_].headerAction.responseHeadersToRemove[_] == STRING
    input.Body.pathMatchers[_].name == STRING
    input.Body.pathMatchers[_].pathRules[_].paths[_] == STRING
    input.Body.pathMatchers[_].pathRules[_].routeAction.corsPolicy.allowCredentials == BOOLEAN
    input.Body.pathMatchers[_].pathRules[_].routeAction.corsPolicy.allowHeaders[_] == STRING
    input.Body.pathMatchers[_].pathRules[_].routeAction.corsPolicy.allowMethods[_] == STRING
    input.Body.pathMatchers[_].pathRules[_].routeAction.corsPolicy.allowOriginRegexes[_] == STRING
    input.Body.pathMatchers[_].pathRules[_].routeAction.corsPolicy.allowOrigins[_] == STRING
    input.Body.pathMatchers[_].pathRules[_].routeAction.corsPolicy.disabled == BOOLEAN
    input.Body.pathMatchers[_].pathRules[_].routeAction.corsPolicy.exposeHeaders[_] == STRING
    input.Body.pathMatchers[_].pathRules[_].routeAction.corsPolicy.maxAge == INTEGER
    input.Body.pathMatchers[_].pathRules[_].routeAction.faultInjectionPolicy.abort.httpStatus == INTEGER
    input.Body.pathMatchers[_].pathRules[_].routeAction.faultInjectionPolicy.abort.percentage == NUMBER
    input.Body.pathMatchers[_].pathRules[_].routeAction.faultInjectionPolicy.delay.fixedDelay.nanos == INTEGER
    input.Body.pathMatchers[_].pathRules[_].routeAction.faultInjectionPolicy.delay.fixedDelay.seconds == STRING
    input.Body.pathMatchers[_].pathRules[_].routeAction.faultInjectionPolicy.delay.percentage == NUMBER
    input.Body.pathMatchers[_].pathRules[_].routeAction.maxStreamDuration.nanos == INTEGER
    input.Body.pathMatchers[_].pathRules[_].routeAction.maxStreamDuration.seconds == STRING
    input.Body.pathMatchers[_].pathRules[_].routeAction.requestMirrorPolicy.backendService == STRING
    input.Body.pathMatchers[_].pathRules[_].routeAction.retryPolicy.numRetries == INTEGER
    input.Body.pathMatchers[_].pathRules[_].routeAction.retryPolicy.perTryTimeout.nanos == INTEGER
    input.Body.pathMatchers[_].pathRules[_].routeAction.retryPolicy.perTryTimeout.seconds == STRING
    input.Body.pathMatchers[_].pathRules[_].routeAction.retryPolicy.retryConditions[_] == STRING
    input.Body.pathMatchers[_].pathRules[_].routeAction.timeout.nanos == INTEGER
    input.Body.pathMatchers[_].pathRules[_].routeAction.timeout.seconds == STRING
    input.Body.pathMatchers[_].pathRules[_].routeAction.urlRewrite.hostRewrite == STRING
    input.Body.pathMatchers[_].pathRules[_].routeAction.urlRewrite.pathPrefixRewrite == STRING
    input.Body.pathMatchers[_].pathRules[_].routeAction.urlRewrite.pathTemplateRewrite == STRING
    input.Body.pathMatchers[_].pathRules[_].routeAction.weightedBackendServices[_].backendService == STRING
    input.Body.pathMatchers[_].pathRules[_].routeAction.weightedBackendServices[_].headerAction.requestHeadersToAdd[_].headerName == STRING
    input.Body.pathMatchers[_].pathRules[_].routeAction.weightedBackendServices[_].headerAction.requestHeadersToAdd[_].headerValue == STRING
    input.Body.pathMatchers[_].pathRules[_].routeAction.weightedBackendServices[_].headerAction.requestHeadersToAdd[_].replace == BOOLEAN
    input.Body.pathMatchers[_].pathRules[_].routeAction.weightedBackendServices[_].headerAction.requestHeadersToRemove[_] == STRING
    input.Body.pathMatchers[_].pathRules[_].routeAction.weightedBackendServices[_].headerAction.responseHeadersToAdd[_].headerName == STRING
    input.Body.pathMatchers[_].pathRules[_].routeAction.weightedBackendServices[_].headerAction.responseHeadersToAdd[_].headerValue == STRING
    input.Body.pathMatchers[_].pathRules[_].routeAction.weightedBackendServices[_].headerAction.responseHeadersToAdd[_].replace == BOOLEAN
    input.Body.pathMatchers[_].pathRules[_].routeAction.weightedBackendServices[_].headerAction.responseHeadersToRemove[_] == STRING
    input.Body.pathMatchers[_].pathRules[_].routeAction.weightedBackendServices[_].weight == INTEGER
    input.Body.pathMatchers[_].pathRules[_].service == STRING
    input.Body.pathMatchers[_].pathRules[_].urlRedirect.hostRedirect == STRING
    input.Body.pathMatchers[_].pathRules[_].urlRedirect.httpsRedirect == BOOLEAN
    input.Body.pathMatchers[_].pathRules[_].urlRedirect.pathRedirect == STRING
    input.Body.pathMatchers[_].pathRules[_].urlRedirect.prefixRedirect == STRING
    input.Body.pathMatchers[_].pathRules[_].urlRedirect.redirectResponseCode == enum_HttpRedirectActionRedirectResponseCode[_]
    input.Body.pathMatchers[_].pathRules[_].urlRedirect.stripQuery == BOOLEAN
    input.Body.pathMatchers[_].routeRules[_].description == STRING
    input.Body.pathMatchers[_].routeRules[_].headerAction.requestHeadersToAdd[_].headerName == STRING
    input.Body.pathMatchers[_].routeRules[_].headerAction.requestHeadersToAdd[_].headerValue == STRING
    input.Body.pathMatchers[_].routeRules[_].headerAction.requestHeadersToAdd[_].replace == BOOLEAN
    input.Body.pathMatchers[_].routeRules[_].headerAction.requestHeadersToRemove[_] == STRING
    input.Body.pathMatchers[_].routeRules[_].headerAction.responseHeadersToAdd[_].headerName == STRING
    input.Body.pathMatchers[_].routeRules[_].headerAction.responseHeadersToAdd[_].headerValue == STRING
    input.Body.pathMatchers[_].routeRules[_].headerAction.responseHeadersToAdd[_].replace == BOOLEAN
    input.Body.pathMatchers[_].routeRules[_].headerAction.responseHeadersToRemove[_] == STRING
    input.Body.pathMatchers[_].routeRules[_].matchRules[_].fullPathMatch == STRING
    input.Body.pathMatchers[_].routeRules[_].matchRules[_].headerMatches[_].exactMatch == STRING
    input.Body.pathMatchers[_].routeRules[_].matchRules[_].headerMatches[_].headerName == STRING
    input.Body.pathMatchers[_].routeRules[_].matchRules[_].headerMatches[_].invertMatch == BOOLEAN
    input.Body.pathMatchers[_].routeRules[_].matchRules[_].headerMatches[_].prefixMatch == STRING
    input.Body.pathMatchers[_].routeRules[_].matchRules[_].headerMatches[_].presentMatch == BOOLEAN
    input.Body.pathMatchers[_].routeRules[_].matchRules[_].headerMatches[_].rangeMatch.rangeEnd == STRING
    input.Body.pathMatchers[_].routeRules[_].matchRules[_].headerMatches[_].rangeMatch.rangeStart == STRING
    input.Body.pathMatchers[_].routeRules[_].matchRules[_].headerMatches[_].regexMatch == STRING
    input.Body.pathMatchers[_].routeRules[_].matchRules[_].headerMatches[_].suffixMatch == STRING
    input.Body.pathMatchers[_].routeRules[_].matchRules[_].ignoreCase == BOOLEAN
    input.Body.pathMatchers[_].routeRules[_].matchRules[_].metadataFilters[_].filterLabels[_].name == STRING
    input.Body.pathMatchers[_].routeRules[_].matchRules[_].metadataFilters[_].filterLabels[_].value == STRING
    input.Body.pathMatchers[_].routeRules[_].matchRules[_].metadataFilters[_].filterMatchCriteria == enum_MetadataFilterFilterMatchCriteria[_]
    input.Body.pathMatchers[_].routeRules[_].matchRules[_].pathTemplateMatch == STRING
    input.Body.pathMatchers[_].routeRules[_].matchRules[_].prefixMatch == STRING
    input.Body.pathMatchers[_].routeRules[_].matchRules[_].queryParameterMatches[_].exactMatch == STRING
    input.Body.pathMatchers[_].routeRules[_].matchRules[_].queryParameterMatches[_].name == STRING
    input.Body.pathMatchers[_].routeRules[_].matchRules[_].queryParameterMatches[_].presentMatch == BOOLEAN
    input.Body.pathMatchers[_].routeRules[_].matchRules[_].queryParameterMatches[_].regexMatch == STRING
    input.Body.pathMatchers[_].routeRules[_].matchRules[_].regexMatch == STRING
    input.Body.pathMatchers[_].routeRules[_].priority == INTEGER
    input.Body.pathMatchers[_].routeRules[_].routeAction.corsPolicy.allowCredentials == BOOLEAN
    input.Body.pathMatchers[_].routeRules[_].routeAction.corsPolicy.allowHeaders[_] == STRING
    input.Body.pathMatchers[_].routeRules[_].routeAction.corsPolicy.allowMethods[_] == STRING
    input.Body.pathMatchers[_].routeRules[_].routeAction.corsPolicy.allowOriginRegexes[_] == STRING
    input.Body.pathMatchers[_].routeRules[_].routeAction.corsPolicy.allowOrigins[_] == STRING
    input.Body.pathMatchers[_].routeRules[_].routeAction.corsPolicy.disabled == BOOLEAN
    input.Body.pathMatchers[_].routeRules[_].routeAction.corsPolicy.exposeHeaders[_] == STRING
    input.Body.pathMatchers[_].routeRules[_].routeAction.corsPolicy.maxAge == INTEGER
    input.Body.pathMatchers[_].routeRules[_].routeAction.faultInjectionPolicy.abort.httpStatus == INTEGER
    input.Body.pathMatchers[_].routeRules[_].routeAction.faultInjectionPolicy.abort.percentage == NUMBER
    input.Body.pathMatchers[_].routeRules[_].routeAction.faultInjectionPolicy.delay.fixedDelay.nanos == INTEGER
    input.Body.pathMatchers[_].routeRules[_].routeAction.faultInjectionPolicy.delay.fixedDelay.seconds == STRING
    input.Body.pathMatchers[_].routeRules[_].routeAction.faultInjectionPolicy.delay.percentage == NUMBER
    input.Body.pathMatchers[_].routeRules[_].routeAction.maxStreamDuration.nanos == INTEGER
    input.Body.pathMatchers[_].routeRules[_].routeAction.maxStreamDuration.seconds == STRING
    input.Body.pathMatchers[_].routeRules[_].routeAction.requestMirrorPolicy.backendService == STRING
    input.Body.pathMatchers[_].routeRules[_].routeAction.retryPolicy.numRetries == INTEGER
    input.Body.pathMatchers[_].routeRules[_].routeAction.retryPolicy.perTryTimeout.nanos == INTEGER
    input.Body.pathMatchers[_].routeRules[_].routeAction.retryPolicy.perTryTimeout.seconds == STRING
    input.Body.pathMatchers[_].routeRules[_].routeAction.retryPolicy.retryConditions[_] == STRING
    input.Body.pathMatchers[_].routeRules[_].routeAction.timeout.nanos == INTEGER
    input.Body.pathMatchers[_].routeRules[_].routeAction.timeout.seconds == STRING
    input.Body.pathMatchers[_].routeRules[_].routeAction.urlRewrite.hostRewrite == STRING
    input.Body.pathMatchers[_].routeRules[_].routeAction.urlRewrite.pathPrefixRewrite == STRING
    input.Body.pathMatchers[_].routeRules[_].routeAction.urlRewrite.pathTemplateRewrite == STRING
    input.Body.pathMatchers[_].routeRules[_].routeAction.weightedBackendServices[_].backendService == STRING
    input.Body.pathMatchers[_].routeRules[_].routeAction.weightedBackendServices[_].headerAction.requestHeadersToAdd[_].headerName == STRING
    input.Body.pathMatchers[_].routeRules[_].routeAction.weightedBackendServices[_].headerAction.requestHeadersToAdd[_].headerValue == STRING
    input.Body.pathMatchers[_].routeRules[_].routeAction.weightedBackendServices[_].headerAction.requestHeadersToAdd[_].replace == BOOLEAN
    input.Body.pathMatchers[_].routeRules[_].routeAction.weightedBackendServices[_].headerAction.requestHeadersToRemove[_] == STRING
    input.Body.pathMatchers[_].routeRules[_].routeAction.weightedBackendServices[_].headerAction.responseHeadersToAdd[_].headerName == STRING
    input.Body.pathMatchers[_].routeRules[_].routeAction.weightedBackendServices[_].headerAction.responseHeadersToAdd[_].headerValue == STRING
    input.Body.pathMatchers[_].routeRules[_].routeAction.weightedBackendServices[_].headerAction.responseHeadersToAdd[_].replace == BOOLEAN
    input.Body.pathMatchers[_].routeRules[_].routeAction.weightedBackendServices[_].headerAction.responseHeadersToRemove[_] == STRING
    input.Body.pathMatchers[_].routeRules[_].routeAction.weightedBackendServices[_].weight == INTEGER
    input.Body.pathMatchers[_].routeRules[_].service == STRING
    input.Body.pathMatchers[_].routeRules[_].urlRedirect.hostRedirect == STRING
    input.Body.pathMatchers[_].routeRules[_].urlRedirect.httpsRedirect == BOOLEAN
    input.Body.pathMatchers[_].routeRules[_].urlRedirect.pathRedirect == STRING
    input.Body.pathMatchers[_].routeRules[_].urlRedirect.prefixRedirect == STRING
    input.Body.pathMatchers[_].routeRules[_].urlRedirect.redirectResponseCode == enum_HttpRedirectActionRedirectResponseCode[_]
    input.Body.pathMatchers[_].routeRules[_].urlRedirect.stripQuery == BOOLEAN
    input.Body.region == STRING
    input.Body.selfLink == STRING
    input.Body.tests[_].description == STRING
    input.Body.tests[_].expectedOutputUrl == STRING
    input.Body.tests[_].expectedRedirectResponseCode == INTEGER
    input.Body.tests[_].headers[_].name == STRING
    input.Body.tests[_].headers[_].value == STRING
    input.Body.tests[_].host == STRING
    input.Body.tests[_].path == STRING
    input.Body.tests[_].service == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.ReqMap.urlMap == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.regionUrlMaps.validate

enum_HttpRedirectActionRedirectResponseCode := [ "FOUND", "MOVED_PERMANENTLY_DEFAULT", "PERMANENT_REDIRECT", "SEE_OTHER", "TEMPORARY_REDIRECT" ]
enum_MetadataFilterFilterMatchCriteria := [ "MATCH_ALL", "MATCH_ANY", "NOT_SET" ]

valid {
    input.Body.resource.creationTimestamp == STRING
    input.Body.resource.defaultRouteAction.corsPolicy.allowCredentials == BOOLEAN
    input.Body.resource.defaultRouteAction.corsPolicy.allowHeaders[_] == STRING
    input.Body.resource.defaultRouteAction.corsPolicy.allowMethods[_] == STRING
    input.Body.resource.defaultRouteAction.corsPolicy.allowOriginRegexes[_] == STRING
    input.Body.resource.defaultRouteAction.corsPolicy.allowOrigins[_] == STRING
    input.Body.resource.defaultRouteAction.corsPolicy.disabled == BOOLEAN
    input.Body.resource.defaultRouteAction.corsPolicy.exposeHeaders[_] == STRING
    input.Body.resource.defaultRouteAction.corsPolicy.maxAge == INTEGER
    input.Body.resource.defaultRouteAction.faultInjectionPolicy.abort.httpStatus == INTEGER
    input.Body.resource.defaultRouteAction.faultInjectionPolicy.abort.percentage == NUMBER
    input.Body.resource.defaultRouteAction.faultInjectionPolicy.delay.fixedDelay.nanos == INTEGER
    input.Body.resource.defaultRouteAction.faultInjectionPolicy.delay.fixedDelay.seconds == STRING
    input.Body.resource.defaultRouteAction.faultInjectionPolicy.delay.percentage == NUMBER
    input.Body.resource.defaultRouteAction.maxStreamDuration.nanos == INTEGER
    input.Body.resource.defaultRouteAction.maxStreamDuration.seconds == STRING
    input.Body.resource.defaultRouteAction.requestMirrorPolicy.backendService == STRING
    input.Body.resource.defaultRouteAction.retryPolicy.numRetries == INTEGER
    input.Body.resource.defaultRouteAction.retryPolicy.perTryTimeout.nanos == INTEGER
    input.Body.resource.defaultRouteAction.retryPolicy.perTryTimeout.seconds == STRING
    input.Body.resource.defaultRouteAction.retryPolicy.retryConditions[_] == STRING
    input.Body.resource.defaultRouteAction.timeout.nanos == INTEGER
    input.Body.resource.defaultRouteAction.timeout.seconds == STRING
    input.Body.resource.defaultRouteAction.urlRewrite.hostRewrite == STRING
    input.Body.resource.defaultRouteAction.urlRewrite.pathPrefixRewrite == STRING
    input.Body.resource.defaultRouteAction.urlRewrite.pathTemplateRewrite == STRING
    input.Body.resource.defaultRouteAction.weightedBackendServices[_].backendService == STRING
    input.Body.resource.defaultRouteAction.weightedBackendServices[_].headerAction.requestHeadersToAdd[_].headerName == STRING
    input.Body.resource.defaultRouteAction.weightedBackendServices[_].headerAction.requestHeadersToAdd[_].headerValue == STRING
    input.Body.resource.defaultRouteAction.weightedBackendServices[_].headerAction.requestHeadersToAdd[_].replace == BOOLEAN
    input.Body.resource.defaultRouteAction.weightedBackendServices[_].headerAction.requestHeadersToRemove[_] == STRING
    input.Body.resource.defaultRouteAction.weightedBackendServices[_].headerAction.responseHeadersToAdd[_].headerName == STRING
    input.Body.resource.defaultRouteAction.weightedBackendServices[_].headerAction.responseHeadersToAdd[_].headerValue == STRING
    input.Body.resource.defaultRouteAction.weightedBackendServices[_].headerAction.responseHeadersToAdd[_].replace == BOOLEAN
    input.Body.resource.defaultRouteAction.weightedBackendServices[_].headerAction.responseHeadersToRemove[_] == STRING
    input.Body.resource.defaultRouteAction.weightedBackendServices[_].weight == INTEGER
    input.Body.resource.defaultService == STRING
    input.Body.resource.defaultUrlRedirect.hostRedirect == STRING
    input.Body.resource.defaultUrlRedirect.httpsRedirect == BOOLEAN
    input.Body.resource.defaultUrlRedirect.pathRedirect == STRING
    input.Body.resource.defaultUrlRedirect.prefixRedirect == STRING
    input.Body.resource.defaultUrlRedirect.redirectResponseCode == enum_HttpRedirectActionRedirectResponseCode[_]
    input.Body.resource.defaultUrlRedirect.stripQuery == BOOLEAN
    input.Body.resource.description == STRING
    input.Body.resource.fingerprint == STRING
    input.Body.resource.headerAction.requestHeadersToAdd[_].headerName == STRING
    input.Body.resource.headerAction.requestHeadersToAdd[_].headerValue == STRING
    input.Body.resource.headerAction.requestHeadersToAdd[_].replace == BOOLEAN
    input.Body.resource.headerAction.requestHeadersToRemove[_] == STRING
    input.Body.resource.headerAction.responseHeadersToAdd[_].headerName == STRING
    input.Body.resource.headerAction.responseHeadersToAdd[_].headerValue == STRING
    input.Body.resource.headerAction.responseHeadersToAdd[_].replace == BOOLEAN
    input.Body.resource.headerAction.responseHeadersToRemove[_] == STRING
    input.Body.resource.hostRules[_].description == STRING
    input.Body.resource.hostRules[_].hosts[_] == STRING
    input.Body.resource.hostRules[_].pathMatcher == STRING
    input.Body.resource.id == STRING
    input.Body.resource.kind == STRING
    input.Body.resource.name == STRING
    input.Body.resource.pathMatchers[_].defaultRouteAction.corsPolicy.allowCredentials == BOOLEAN
    input.Body.resource.pathMatchers[_].defaultRouteAction.corsPolicy.allowHeaders[_] == STRING
    input.Body.resource.pathMatchers[_].defaultRouteAction.corsPolicy.allowMethods[_] == STRING
    input.Body.resource.pathMatchers[_].defaultRouteAction.corsPolicy.allowOriginRegexes[_] == STRING
    input.Body.resource.pathMatchers[_].defaultRouteAction.corsPolicy.allowOrigins[_] == STRING
    input.Body.resource.pathMatchers[_].defaultRouteAction.corsPolicy.disabled == BOOLEAN
    input.Body.resource.pathMatchers[_].defaultRouteAction.corsPolicy.exposeHeaders[_] == STRING
    input.Body.resource.pathMatchers[_].defaultRouteAction.corsPolicy.maxAge == INTEGER
    input.Body.resource.pathMatchers[_].defaultRouteAction.faultInjectionPolicy.abort.httpStatus == INTEGER
    input.Body.resource.pathMatchers[_].defaultRouteAction.faultInjectionPolicy.abort.percentage == NUMBER
    input.Body.resource.pathMatchers[_].defaultRouteAction.faultInjectionPolicy.delay.fixedDelay.nanos == INTEGER
    input.Body.resource.pathMatchers[_].defaultRouteAction.faultInjectionPolicy.delay.fixedDelay.seconds == STRING
    input.Body.resource.pathMatchers[_].defaultRouteAction.faultInjectionPolicy.delay.percentage == NUMBER
    input.Body.resource.pathMatchers[_].defaultRouteAction.maxStreamDuration.nanos == INTEGER
    input.Body.resource.pathMatchers[_].defaultRouteAction.maxStreamDuration.seconds == STRING
    input.Body.resource.pathMatchers[_].defaultRouteAction.requestMirrorPolicy.backendService == STRING
    input.Body.resource.pathMatchers[_].defaultRouteAction.retryPolicy.numRetries == INTEGER
    input.Body.resource.pathMatchers[_].defaultRouteAction.retryPolicy.perTryTimeout.nanos == INTEGER
    input.Body.resource.pathMatchers[_].defaultRouteAction.retryPolicy.perTryTimeout.seconds == STRING
    input.Body.resource.pathMatchers[_].defaultRouteAction.retryPolicy.retryConditions[_] == STRING
    input.Body.resource.pathMatchers[_].defaultRouteAction.timeout.nanos == INTEGER
    input.Body.resource.pathMatchers[_].defaultRouteAction.timeout.seconds == STRING
    input.Body.resource.pathMatchers[_].defaultRouteAction.urlRewrite.hostRewrite == STRING
    input.Body.resource.pathMatchers[_].defaultRouteAction.urlRewrite.pathPrefixRewrite == STRING
    input.Body.resource.pathMatchers[_].defaultRouteAction.urlRewrite.pathTemplateRewrite == STRING
    input.Body.resource.pathMatchers[_].defaultRouteAction.weightedBackendServices[_].backendService == STRING
    input.Body.resource.pathMatchers[_].defaultRouteAction.weightedBackendServices[_].headerAction.requestHeadersToAdd[_].headerName == STRING
    input.Body.resource.pathMatchers[_].defaultRouteAction.weightedBackendServices[_].headerAction.requestHeadersToAdd[_].headerValue == STRING
    input.Body.resource.pathMatchers[_].defaultRouteAction.weightedBackendServices[_].headerAction.requestHeadersToAdd[_].replace == BOOLEAN
    input.Body.resource.pathMatchers[_].defaultRouteAction.weightedBackendServices[_].headerAction.requestHeadersToRemove[_] == STRING
    input.Body.resource.pathMatchers[_].defaultRouteAction.weightedBackendServices[_].headerAction.responseHeadersToAdd[_].headerName == STRING
    input.Body.resource.pathMatchers[_].defaultRouteAction.weightedBackendServices[_].headerAction.responseHeadersToAdd[_].headerValue == STRING
    input.Body.resource.pathMatchers[_].defaultRouteAction.weightedBackendServices[_].headerAction.responseHeadersToAdd[_].replace == BOOLEAN
    input.Body.resource.pathMatchers[_].defaultRouteAction.weightedBackendServices[_].headerAction.responseHeadersToRemove[_] == STRING
    input.Body.resource.pathMatchers[_].defaultRouteAction.weightedBackendServices[_].weight == INTEGER
    input.Body.resource.pathMatchers[_].defaultService == STRING
    input.Body.resource.pathMatchers[_].defaultUrlRedirect.hostRedirect == STRING
    input.Body.resource.pathMatchers[_].defaultUrlRedirect.httpsRedirect == BOOLEAN
    input.Body.resource.pathMatchers[_].defaultUrlRedirect.pathRedirect == STRING
    input.Body.resource.pathMatchers[_].defaultUrlRedirect.prefixRedirect == STRING
    input.Body.resource.pathMatchers[_].defaultUrlRedirect.redirectResponseCode == enum_HttpRedirectActionRedirectResponseCode[_]
    input.Body.resource.pathMatchers[_].defaultUrlRedirect.stripQuery == BOOLEAN
    input.Body.resource.pathMatchers[_].description == STRING
    input.Body.resource.pathMatchers[_].headerAction.requestHeadersToAdd[_].headerName == STRING
    input.Body.resource.pathMatchers[_].headerAction.requestHeadersToAdd[_].headerValue == STRING
    input.Body.resource.pathMatchers[_].headerAction.requestHeadersToAdd[_].replace == BOOLEAN
    input.Body.resource.pathMatchers[_].headerAction.requestHeadersToRemove[_] == STRING
    input.Body.resource.pathMatchers[_].headerAction.responseHeadersToAdd[_].headerName == STRING
    input.Body.resource.pathMatchers[_].headerAction.responseHeadersToAdd[_].headerValue == STRING
    input.Body.resource.pathMatchers[_].headerAction.responseHeadersToAdd[_].replace == BOOLEAN
    input.Body.resource.pathMatchers[_].headerAction.responseHeadersToRemove[_] == STRING
    input.Body.resource.pathMatchers[_].name == STRING
    input.Body.resource.pathMatchers[_].pathRules[_].paths[_] == STRING
    input.Body.resource.pathMatchers[_].pathRules[_].routeAction.corsPolicy.allowCredentials == BOOLEAN
    input.Body.resource.pathMatchers[_].pathRules[_].routeAction.corsPolicy.allowHeaders[_] == STRING
    input.Body.resource.pathMatchers[_].pathRules[_].routeAction.corsPolicy.allowMethods[_] == STRING
    input.Body.resource.pathMatchers[_].pathRules[_].routeAction.corsPolicy.allowOriginRegexes[_] == STRING
    input.Body.resource.pathMatchers[_].pathRules[_].routeAction.corsPolicy.allowOrigins[_] == STRING
    input.Body.resource.pathMatchers[_].pathRules[_].routeAction.corsPolicy.disabled == BOOLEAN
    input.Body.resource.pathMatchers[_].pathRules[_].routeAction.corsPolicy.exposeHeaders[_] == STRING
    input.Body.resource.pathMatchers[_].pathRules[_].routeAction.corsPolicy.maxAge == INTEGER
    input.Body.resource.pathMatchers[_].pathRules[_].routeAction.faultInjectionPolicy.abort.httpStatus == INTEGER
    input.Body.resource.pathMatchers[_].pathRules[_].routeAction.faultInjectionPolicy.abort.percentage == NUMBER
    input.Body.resource.pathMatchers[_].pathRules[_].routeAction.faultInjectionPolicy.delay.fixedDelay.nanos == INTEGER
    input.Body.resource.pathMatchers[_].pathRules[_].routeAction.faultInjectionPolicy.delay.fixedDelay.seconds == STRING
    input.Body.resource.pathMatchers[_].pathRules[_].routeAction.faultInjectionPolicy.delay.percentage == NUMBER
    input.Body.resource.pathMatchers[_].pathRules[_].routeAction.maxStreamDuration.nanos == INTEGER
    input.Body.resource.pathMatchers[_].pathRules[_].routeAction.maxStreamDuration.seconds == STRING
    input.Body.resource.pathMatchers[_].pathRules[_].routeAction.requestMirrorPolicy.backendService == STRING
    input.Body.resource.pathMatchers[_].pathRules[_].routeAction.retryPolicy.numRetries == INTEGER
    input.Body.resource.pathMatchers[_].pathRules[_].routeAction.retryPolicy.perTryTimeout.nanos == INTEGER
    input.Body.resource.pathMatchers[_].pathRules[_].routeAction.retryPolicy.perTryTimeout.seconds == STRING
    input.Body.resource.pathMatchers[_].pathRules[_].routeAction.retryPolicy.retryConditions[_] == STRING
    input.Body.resource.pathMatchers[_].pathRules[_].routeAction.timeout.nanos == INTEGER
    input.Body.resource.pathMatchers[_].pathRules[_].routeAction.timeout.seconds == STRING
    input.Body.resource.pathMatchers[_].pathRules[_].routeAction.urlRewrite.hostRewrite == STRING
    input.Body.resource.pathMatchers[_].pathRules[_].routeAction.urlRewrite.pathPrefixRewrite == STRING
    input.Body.resource.pathMatchers[_].pathRules[_].routeAction.urlRewrite.pathTemplateRewrite == STRING
    input.Body.resource.pathMatchers[_].pathRules[_].routeAction.weightedBackendServices[_].backendService == STRING
    input.Body.resource.pathMatchers[_].pathRules[_].routeAction.weightedBackendServices[_].headerAction.requestHeadersToAdd[_].headerName == STRING
    input.Body.resource.pathMatchers[_].pathRules[_].routeAction.weightedBackendServices[_].headerAction.requestHeadersToAdd[_].headerValue == STRING
    input.Body.resource.pathMatchers[_].pathRules[_].routeAction.weightedBackendServices[_].headerAction.requestHeadersToAdd[_].replace == BOOLEAN
    input.Body.resource.pathMatchers[_].pathRules[_].routeAction.weightedBackendServices[_].headerAction.requestHeadersToRemove[_] == STRING
    input.Body.resource.pathMatchers[_].pathRules[_].routeAction.weightedBackendServices[_].headerAction.responseHeadersToAdd[_].headerName == STRING
    input.Body.resource.pathMatchers[_].pathRules[_].routeAction.weightedBackendServices[_].headerAction.responseHeadersToAdd[_].headerValue == STRING
    input.Body.resource.pathMatchers[_].pathRules[_].routeAction.weightedBackendServices[_].headerAction.responseHeadersToAdd[_].replace == BOOLEAN
    input.Body.resource.pathMatchers[_].pathRules[_].routeAction.weightedBackendServices[_].headerAction.responseHeadersToRemove[_] == STRING
    input.Body.resource.pathMatchers[_].pathRules[_].routeAction.weightedBackendServices[_].weight == INTEGER
    input.Body.resource.pathMatchers[_].pathRules[_].service == STRING
    input.Body.resource.pathMatchers[_].pathRules[_].urlRedirect.hostRedirect == STRING
    input.Body.resource.pathMatchers[_].pathRules[_].urlRedirect.httpsRedirect == BOOLEAN
    input.Body.resource.pathMatchers[_].pathRules[_].urlRedirect.pathRedirect == STRING
    input.Body.resource.pathMatchers[_].pathRules[_].urlRedirect.prefixRedirect == STRING
    input.Body.resource.pathMatchers[_].pathRules[_].urlRedirect.redirectResponseCode == enum_HttpRedirectActionRedirectResponseCode[_]
    input.Body.resource.pathMatchers[_].pathRules[_].urlRedirect.stripQuery == BOOLEAN
    input.Body.resource.pathMatchers[_].routeRules[_].description == STRING
    input.Body.resource.pathMatchers[_].routeRules[_].headerAction.requestHeadersToAdd[_].headerName == STRING
    input.Body.resource.pathMatchers[_].routeRules[_].headerAction.requestHeadersToAdd[_].headerValue == STRING
    input.Body.resource.pathMatchers[_].routeRules[_].headerAction.requestHeadersToAdd[_].replace == BOOLEAN
    input.Body.resource.pathMatchers[_].routeRules[_].headerAction.requestHeadersToRemove[_] == STRING
    input.Body.resource.pathMatchers[_].routeRules[_].headerAction.responseHeadersToAdd[_].headerName == STRING
    input.Body.resource.pathMatchers[_].routeRules[_].headerAction.responseHeadersToAdd[_].headerValue == STRING
    input.Body.resource.pathMatchers[_].routeRules[_].headerAction.responseHeadersToAdd[_].replace == BOOLEAN
    input.Body.resource.pathMatchers[_].routeRules[_].headerAction.responseHeadersToRemove[_] == STRING
    input.Body.resource.pathMatchers[_].routeRules[_].matchRules[_].fullPathMatch == STRING
    input.Body.resource.pathMatchers[_].routeRules[_].matchRules[_].headerMatches[_].exactMatch == STRING
    input.Body.resource.pathMatchers[_].routeRules[_].matchRules[_].headerMatches[_].headerName == STRING
    input.Body.resource.pathMatchers[_].routeRules[_].matchRules[_].headerMatches[_].invertMatch == BOOLEAN
    input.Body.resource.pathMatchers[_].routeRules[_].matchRules[_].headerMatches[_].prefixMatch == STRING
    input.Body.resource.pathMatchers[_].routeRules[_].matchRules[_].headerMatches[_].presentMatch == BOOLEAN
    input.Body.resource.pathMatchers[_].routeRules[_].matchRules[_].headerMatches[_].rangeMatch.rangeEnd == STRING
    input.Body.resource.pathMatchers[_].routeRules[_].matchRules[_].headerMatches[_].rangeMatch.rangeStart == STRING
    input.Body.resource.pathMatchers[_].routeRules[_].matchRules[_].headerMatches[_].regexMatch == STRING
    input.Body.resource.pathMatchers[_].routeRules[_].matchRules[_].headerMatches[_].suffixMatch == STRING
    input.Body.resource.pathMatchers[_].routeRules[_].matchRules[_].ignoreCase == BOOLEAN
    input.Body.resource.pathMatchers[_].routeRules[_].matchRules[_].metadataFilters[_].filterLabels[_].name == STRING
    input.Body.resource.pathMatchers[_].routeRules[_].matchRules[_].metadataFilters[_].filterLabels[_].value == STRING
    input.Body.resource.pathMatchers[_].routeRules[_].matchRules[_].metadataFilters[_].filterMatchCriteria == enum_MetadataFilterFilterMatchCriteria[_]
    input.Body.resource.pathMatchers[_].routeRules[_].matchRules[_].pathTemplateMatch == STRING
    input.Body.resource.pathMatchers[_].routeRules[_].matchRules[_].prefixMatch == STRING
    input.Body.resource.pathMatchers[_].routeRules[_].matchRules[_].queryParameterMatches[_].exactMatch == STRING
    input.Body.resource.pathMatchers[_].routeRules[_].matchRules[_].queryParameterMatches[_].name == STRING
    input.Body.resource.pathMatchers[_].routeRules[_].matchRules[_].queryParameterMatches[_].presentMatch == BOOLEAN
    input.Body.resource.pathMatchers[_].routeRules[_].matchRules[_].queryParameterMatches[_].regexMatch == STRING
    input.Body.resource.pathMatchers[_].routeRules[_].matchRules[_].regexMatch == STRING
    input.Body.resource.pathMatchers[_].routeRules[_].priority == INTEGER
    input.Body.resource.pathMatchers[_].routeRules[_].routeAction.corsPolicy.allowCredentials == BOOLEAN
    input.Body.resource.pathMatchers[_].routeRules[_].routeAction.corsPolicy.allowHeaders[_] == STRING
    input.Body.resource.pathMatchers[_].routeRules[_].routeAction.corsPolicy.allowMethods[_] == STRING
    input.Body.resource.pathMatchers[_].routeRules[_].routeAction.corsPolicy.allowOriginRegexes[_] == STRING
    input.Body.resource.pathMatchers[_].routeRules[_].routeAction.corsPolicy.allowOrigins[_] == STRING
    input.Body.resource.pathMatchers[_].routeRules[_].routeAction.corsPolicy.disabled == BOOLEAN
    input.Body.resource.pathMatchers[_].routeRules[_].routeAction.corsPolicy.exposeHeaders[_] == STRING
    input.Body.resource.pathMatchers[_].routeRules[_].routeAction.corsPolicy.maxAge == INTEGER
    input.Body.resource.pathMatchers[_].routeRules[_].routeAction.faultInjectionPolicy.abort.httpStatus == INTEGER
    input.Body.resource.pathMatchers[_].routeRules[_].routeAction.faultInjectionPolicy.abort.percentage == NUMBER
    input.Body.resource.pathMatchers[_].routeRules[_].routeAction.faultInjectionPolicy.delay.fixedDelay.nanos == INTEGER
    input.Body.resource.pathMatchers[_].routeRules[_].routeAction.faultInjectionPolicy.delay.fixedDelay.seconds == STRING
    input.Body.resource.pathMatchers[_].routeRules[_].routeAction.faultInjectionPolicy.delay.percentage == NUMBER
    input.Body.resource.pathMatchers[_].routeRules[_].routeAction.maxStreamDuration.nanos == INTEGER
    input.Body.resource.pathMatchers[_].routeRules[_].routeAction.maxStreamDuration.seconds == STRING
    input.Body.resource.pathMatchers[_].routeRules[_].routeAction.requestMirrorPolicy.backendService == STRING
    input.Body.resource.pathMatchers[_].routeRules[_].routeAction.retryPolicy.numRetries == INTEGER
    input.Body.resource.pathMatchers[_].routeRules[_].routeAction.retryPolicy.perTryTimeout.nanos == INTEGER
    input.Body.resource.pathMatchers[_].routeRules[_].routeAction.retryPolicy.perTryTimeout.seconds == STRING
    input.Body.resource.pathMatchers[_].routeRules[_].routeAction.retryPolicy.retryConditions[_] == STRING
    input.Body.resource.pathMatchers[_].routeRules[_].routeAction.timeout.nanos == INTEGER
    input.Body.resource.pathMatchers[_].routeRules[_].routeAction.timeout.seconds == STRING
    input.Body.resource.pathMatchers[_].routeRules[_].routeAction.urlRewrite.hostRewrite == STRING
    input.Body.resource.pathMatchers[_].routeRules[_].routeAction.urlRewrite.pathPrefixRewrite == STRING
    input.Body.resource.pathMatchers[_].routeRules[_].routeAction.urlRewrite.pathTemplateRewrite == STRING
    input.Body.resource.pathMatchers[_].routeRules[_].routeAction.weightedBackendServices[_].backendService == STRING
    input.Body.resource.pathMatchers[_].routeRules[_].routeAction.weightedBackendServices[_].headerAction.requestHeadersToAdd[_].headerName == STRING
    input.Body.resource.pathMatchers[_].routeRules[_].routeAction.weightedBackendServices[_].headerAction.requestHeadersToAdd[_].headerValue == STRING
    input.Body.resource.pathMatchers[_].routeRules[_].routeAction.weightedBackendServices[_].headerAction.requestHeadersToAdd[_].replace == BOOLEAN
    input.Body.resource.pathMatchers[_].routeRules[_].routeAction.weightedBackendServices[_].headerAction.requestHeadersToRemove[_] == STRING
    input.Body.resource.pathMatchers[_].routeRules[_].routeAction.weightedBackendServices[_].headerAction.responseHeadersToAdd[_].headerName == STRING
    input.Body.resource.pathMatchers[_].routeRules[_].routeAction.weightedBackendServices[_].headerAction.responseHeadersToAdd[_].headerValue == STRING
    input.Body.resource.pathMatchers[_].routeRules[_].routeAction.weightedBackendServices[_].headerAction.responseHeadersToAdd[_].replace == BOOLEAN
    input.Body.resource.pathMatchers[_].routeRules[_].routeAction.weightedBackendServices[_].headerAction.responseHeadersToRemove[_] == STRING
    input.Body.resource.pathMatchers[_].routeRules[_].routeAction.weightedBackendServices[_].weight == INTEGER
    input.Body.resource.pathMatchers[_].routeRules[_].service == STRING
    input.Body.resource.pathMatchers[_].routeRules[_].urlRedirect.hostRedirect == STRING
    input.Body.resource.pathMatchers[_].routeRules[_].urlRedirect.httpsRedirect == BOOLEAN
    input.Body.resource.pathMatchers[_].routeRules[_].urlRedirect.pathRedirect == STRING
    input.Body.resource.pathMatchers[_].routeRules[_].urlRedirect.prefixRedirect == STRING
    input.Body.resource.pathMatchers[_].routeRules[_].urlRedirect.redirectResponseCode == enum_HttpRedirectActionRedirectResponseCode[_]
    input.Body.resource.pathMatchers[_].routeRules[_].urlRedirect.stripQuery == BOOLEAN
    input.Body.resource.region == STRING
    input.Body.resource.selfLink == STRING
    input.Body.resource.tests[_].description == STRING
    input.Body.resource.tests[_].expectedOutputUrl == STRING
    input.Body.resource.tests[_].expectedRedirectResponseCode == INTEGER
    input.Body.resource.tests[_].headers[_].name == STRING
    input.Body.resource.tests[_].headers[_].value == STRING
    input.Body.resource.tests[_].host == STRING
    input.Body.resource.tests[_].path == STRING
    input.Body.resource.tests[_].service == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.ReqMap.urlMap == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.regionZones.list

valid {
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.Qs.filter == STRING
    input.Qs.maxResults == INTEGER
    input.Qs.orderBy == STRING
    input.Qs.pageToken == STRING
    input.Qs.returnPartialSuccess == BOOLEAN
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.regions.get

valid {
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.regions.list

valid {
    input.ReqMap.ProjectID == STRING
    input.Qs.filter == STRING
    input.Qs.maxResults == INTEGER
    input.Qs.orderBy == STRING
    input.Qs.pageToken == STRING
    input.Qs.returnPartialSuccess == BOOLEAN
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.reservations.aggregatedList

valid {
    input.ReqMap.ProjectID == STRING
    input.Qs.filter == STRING
    input.Qs.includeAllScopes == BOOLEAN
    input.Qs.maxResults == INTEGER
    input.Qs.orderBy == STRING
    input.Qs.pageToken == STRING
    input.Qs.returnPartialSuccess == BOOLEAN
    input.Qs.serviceProjectNumber == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.reservations.delete

valid {
    input.ReqMap.ProjectID == STRING
    input.ReqMap.reservation == STRING
    input.ReqMap.zone == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.reservations.get

valid {
    input.ReqMap.ProjectID == STRING
    input.ReqMap.reservation == STRING
    input.ReqMap.zone == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.reservations.getIamPolicy

valid {
    input.ReqMap.ProjectID == STRING
    input.ReqMap.resource == STRING
    input.ReqMap.zone == STRING
    input.Qs.optionsRequestedPolicyVersion == INTEGER
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.reservations.insert

enum_AllocationAggregateReservationVmFamily := [ "VM_FAMILY_CLOUD_TPU_LITE_DEVICE_CT5L", "VM_FAMILY_CLOUD_TPU_LITE_POD_SLICE_CT5LP", "VM_FAMILY_CLOUD_TPU_POD_SLICE_CT4P" ]
enum_AllocationAggregateReservationWorkloadType := [ "BATCH", "SERVING", "UNSPECIFIED" ]
enum_AllocationSpecificSKUAllocationAllocatedInstancePropertiesReservedDiskInterface := [ "NVME", "SCSI" ]
enum_ReservationStatus := [ "CREATING", "DELETING", "INVALID", "READY", "UPDATING" ]
enum_ShareSettingsShareType := [ "LOCAL", "ORGANIZATION", "SHARE_TYPE_UNSPECIFIED", "SPECIFIC_PROJECTS" ]

valid {
    input.Body.aggregateReservation.inUseResources[_].accelerator.acceleratorCount == INTEGER
    input.Body.aggregateReservation.inUseResources[_].accelerator.acceleratorType == STRING
    input.Body.aggregateReservation.reservedResources[_].accelerator.acceleratorCount == INTEGER
    input.Body.aggregateReservation.reservedResources[_].accelerator.acceleratorType == STRING
    input.Body.aggregateReservation.vmFamily == enum_AllocationAggregateReservationVmFamily[_]
    input.Body.aggregateReservation.workloadType == enum_AllocationAggregateReservationWorkloadType[_]
    input.Body.commitment == STRING
    input.Body.creationTimestamp == STRING
    input.Body.description == STRING
    input.Body.id == STRING
    input.Body.kind == STRING
    input.Body.name == STRING
    input.Body.resourcePolicies.STRING == STRING
    input.Body.resourceStatus.specificSkuAllocation.sourceInstanceTemplateId == STRING
    input.Body.satisfiesPzs == BOOLEAN
    input.Body.selfLink == STRING
    input.Body.shareSettings.projectMap.STRING.projectId == STRING
    input.Body.shareSettings.shareType == enum_ShareSettingsShareType[_]
    input.Body.specificReservation.assuredCount == STRING
    input.Body.specificReservation.count == STRING
    input.Body.specificReservation.inUseCount == STRING
    input.Body.specificReservation.instanceProperties.guestAccelerators[_].acceleratorCount == INTEGER
    input.Body.specificReservation.instanceProperties.guestAccelerators[_].acceleratorType == STRING
    input.Body.specificReservation.instanceProperties.localSsds[_].diskSizeGb == STRING
    input.Body.specificReservation.instanceProperties.localSsds[_].interface == enum_AllocationSpecificSKUAllocationAllocatedInstancePropertiesReservedDiskInterface[_]
    input.Body.specificReservation.instanceProperties.locationHint == STRING
    input.Body.specificReservation.instanceProperties.machineType == STRING
    input.Body.specificReservation.instanceProperties.minCpuPlatform == STRING
    input.Body.specificReservation.sourceInstanceTemplate == STRING
    input.Body.specificReservationRequired == BOOLEAN
    input.Body.status == enum_ReservationStatus[_]
    input.Body.zone == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.zone == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.reservations.list

valid {
    input.ReqMap.ProjectID == STRING
    input.ReqMap.zone == STRING
    input.Qs.filter == STRING
    input.Qs.maxResults == INTEGER
    input.Qs.orderBy == STRING
    input.Qs.pageToken == STRING
    input.Qs.returnPartialSuccess == BOOLEAN
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.reservations.resize

valid {
    input.Body.specificSkuCount == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.reservation == STRING
    input.ReqMap.zone == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.reservations.setIamPolicy

enum_AuditLogConfigLogType := [ "ADMIN_READ", "DATA_READ", "DATA_WRITE", "LOG_TYPE_UNSPECIFIED" ]
enum_AuthorizationLoggingOptionsPermissionType := [ "ADMIN_READ", "ADMIN_WRITE", "DATA_READ", "DATA_WRITE", "PERMISSION_TYPE_UNSPECIFIED" ]
enum_ConditionIam := [ "APPROVER", "ATTRIBUTION", "AUTHORITY", "CREDENTIALS_TYPE", "CREDS_ASSERTION", "JUSTIFICATION_TYPE", "NO_ATTR", "SECURITY_REALM" ]
enum_ConditionOp := [ "DISCHARGED", "EQUALS", "IN", "NOT_EQUALS", "NOT_IN", "NO_OP" ]
enum_ConditionSys := [ "IP", "NAME", "NO_ATTR", "REGION", "SERVICE" ]
enum_LogConfigCloudAuditOptionsLogName := [ "ADMIN_ACTIVITY", "DATA_ACCESS", "UNSPECIFIED_LOG_NAME" ]
enum_LogConfigDataAccessOptionsLogMode := [ "LOG_FAIL_CLOSED", "LOG_MODE_UNSPECIFIED" ]
enum_RuleAction := [ "ALLOW", "ALLOW_WITH_LOG", "DENY", "DENY_WITH_LOG", "LOG", "NO_ACTION" ]

valid {
    input.Body.bindings[_].bindingId == STRING
    input.Body.bindings[_].condition.description == STRING
    input.Body.bindings[_].condition.expression == STRING
    input.Body.bindings[_].condition.location == STRING
    input.Body.bindings[_].condition.title == STRING
    input.Body.bindings[_].members[_] == STRING
    input.Body.bindings[_].role == STRING
    input.Body.etag == STRING
    input.Body.policy.auditConfigs[_].auditLogConfigs[_].exemptedMembers[_] == STRING
    input.Body.policy.auditConfigs[_].auditLogConfigs[_].ignoreChildExemptions == BOOLEAN
    input.Body.policy.auditConfigs[_].auditLogConfigs[_].logType == enum_AuditLogConfigLogType[_]
    input.Body.policy.auditConfigs[_].exemptedMembers[_] == STRING
    input.Body.policy.auditConfigs[_].service == STRING
    input.Body.policy.bindings[_].bindingId == 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.rules[_].action == enum_RuleAction[_]
    input.Body.policy.rules[_].conditions[_].iam == enum_ConditionIam[_]
    input.Body.policy.rules[_].conditions[_].op == enum_ConditionOp[_]
    input.Body.policy.rules[_].conditions[_].svc == STRING
    input.Body.policy.rules[_].conditions[_].sys == enum_ConditionSys[_]
    input.Body.policy.rules[_].conditions[_].values[_] == STRING
    input.Body.policy.rules[_].description == STRING
    input.Body.policy.rules[_].ins[_] == STRING
    input.Body.policy.rules[_].logConfigs[_].cloudAudit.authorizationLoggingOptions.permissionType == enum_AuthorizationLoggingOptionsPermissionType[_]
    input.Body.policy.rules[_].logConfigs[_].cloudAudit.logName == enum_LogConfigCloudAuditOptionsLogName[_]
    input.Body.policy.rules[_].logConfigs[_].counter.customFields[_].name == STRING
    input.Body.policy.rules[_].logConfigs[_].counter.customFields[_].value == STRING
    input.Body.policy.rules[_].logConfigs[_].counter.field == STRING
    input.Body.policy.rules[_].logConfigs[_].counter.metric == STRING
    input.Body.policy.rules[_].logConfigs[_].dataAccess.logMode == enum_LogConfigDataAccessOptionsLogMode[_]
    input.Body.policy.rules[_].notIns[_] == STRING
    input.Body.policy.rules[_].permissions[_] == STRING
    input.Body.policy.version == INTEGER
    input.ReqMap.ProjectID == STRING
    input.ReqMap.resource == STRING
    input.ReqMap.zone == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.reservations.testIamPermissions

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

compute.reservations.update

enum_AllocationAggregateReservationVmFamily := [ "VM_FAMILY_CLOUD_TPU_LITE_DEVICE_CT5L", "VM_FAMILY_CLOUD_TPU_LITE_POD_SLICE_CT5LP", "VM_FAMILY_CLOUD_TPU_POD_SLICE_CT4P" ]
enum_AllocationAggregateReservationWorkloadType := [ "BATCH", "SERVING", "UNSPECIFIED" ]
enum_AllocationSpecificSKUAllocationAllocatedInstancePropertiesReservedDiskInterface := [ "NVME", "SCSI" ]
enum_ReservationStatus := [ "CREATING", "DELETING", "INVALID", "READY", "UPDATING" ]
enum_ShareSettingsShareType := [ "LOCAL", "ORGANIZATION", "SHARE_TYPE_UNSPECIFIED", "SPECIFIC_PROJECTS" ]

valid {
    input.Body.aggregateReservation.inUseResources[_].accelerator.acceleratorCount == INTEGER
    input.Body.aggregateReservation.inUseResources[_].accelerator.acceleratorType == STRING
    input.Body.aggregateReservation.reservedResources[_].accelerator.acceleratorCount == INTEGER
    input.Body.aggregateReservation.reservedResources[_].accelerator.acceleratorType == STRING
    input.Body.aggregateReservation.vmFamily == enum_AllocationAggregateReservationVmFamily[_]
    input.Body.aggregateReservation.workloadType == enum_AllocationAggregateReservationWorkloadType[_]
    input.Body.commitment == STRING
    input.Body.creationTimestamp == STRING
    input.Body.description == STRING
    input.Body.id == STRING
    input.Body.kind == STRING
    input.Body.name == STRING
    input.Body.resourcePolicies.STRING == STRING
    input.Body.resourceStatus.specificSkuAllocation.sourceInstanceTemplateId == STRING
    input.Body.satisfiesPzs == BOOLEAN
    input.Body.selfLink == STRING
    input.Body.shareSettings.projectMap.STRING.projectId == STRING
    input.Body.shareSettings.shareType == enum_ShareSettingsShareType[_]
    input.Body.specificReservation.assuredCount == STRING
    input.Body.specificReservation.count == STRING
    input.Body.specificReservation.inUseCount == STRING
    input.Body.specificReservation.instanceProperties.guestAccelerators[_].acceleratorCount == INTEGER
    input.Body.specificReservation.instanceProperties.guestAccelerators[_].acceleratorType == STRING
    input.Body.specificReservation.instanceProperties.localSsds[_].diskSizeGb == STRING
    input.Body.specificReservation.instanceProperties.localSsds[_].interface == enum_AllocationSpecificSKUAllocationAllocatedInstancePropertiesReservedDiskInterface[_]
    input.Body.specificReservation.instanceProperties.locationHint == STRING
    input.Body.specificReservation.instanceProperties.machineType == STRING
    input.Body.specificReservation.instanceProperties.minCpuPlatform == STRING
    input.Body.specificReservation.sourceInstanceTemplate == STRING
    input.Body.specificReservationRequired == BOOLEAN
    input.Body.status == enum_ReservationStatus[_]
    input.Body.zone == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.reservation == STRING
    input.ReqMap.zone == STRING
    input.Qs.paths == STRING
    input.Qs.requestId == STRING
    input.Qs.updateMask == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.resourcePolicies.aggregatedList

valid {
    input.ReqMap.ProjectID == STRING
    input.Qs.filter == STRING
    input.Qs.includeAllScopes == BOOLEAN
    input.Qs.maxResults == INTEGER
    input.Qs.orderBy == STRING
    input.Qs.pageToken == STRING
    input.Qs.returnPartialSuccess == BOOLEAN
    input.Qs.serviceProjectNumber == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.resourcePolicies.delete

valid {
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.ReqMap.resourcePolicy == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.resourcePolicies.get

valid {
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.ReqMap.resourcePolicy == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.resourcePolicies.getIamPolicy

valid {
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.ReqMap.resource == STRING
    input.Qs.optionsRequestedPolicyVersion == INTEGER
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.resourcePolicies.insert

enum_ResourcePolicyGroupPlacementPolicyCollocation := [ "COLLOCATED", "UNSPECIFIED_COLLOCATION" ]
enum_ResourcePolicySnapshotSchedulePolicyRetentionPolicyOnSourceDiskDelete := [ "APPLY_RETENTION_POLICY", "KEEP_AUTO_SNAPSHOTS", "UNSPECIFIED_ON_SOURCE_DISK_DELETE" ]
enum_ResourcePolicyStatus := [ "CREATING", "DELETING", "EXPIRED", "INVALID", "READY" ]
enum_ResourcePolicyWeeklyCycleDayOfWeekDay := [ "FRIDAY", "INVALID", "MONDAY", "SATURDAY", "SUNDAY", "THURSDAY", "TUESDAY", "WEDNESDAY" ]

valid {
    input.Body.creationTimestamp == STRING
    input.Body.description == STRING
    input.Body.diskConsistencyGroupPolicy.STRING == STRING
    input.Body.groupPlacementPolicy.availabilityDomainCount == INTEGER
    input.Body.groupPlacementPolicy.collocation == enum_ResourcePolicyGroupPlacementPolicyCollocation[_]
    input.Body.groupPlacementPolicy.vmCount == INTEGER
    input.Body.id == STRING
    input.Body.instanceSchedulePolicy.expirationTime == STRING
    input.Body.instanceSchedulePolicy.startTime == STRING
    input.Body.instanceSchedulePolicy.timeZone == STRING
    input.Body.instanceSchedulePolicy.vmStartSchedule.schedule == STRING
    input.Body.instanceSchedulePolicy.vmStopSchedule.schedule == STRING
    input.Body.kind == STRING
    input.Body.name == STRING
    input.Body.region == STRING
    input.Body.resourceStatus.instanceSchedulePolicy.lastRunStartTime == STRING
    input.Body.resourceStatus.instanceSchedulePolicy.nextRunStartTime == STRING
    input.Body.selfLink == STRING
    input.Body.snapshotSchedulePolicy.retentionPolicy.maxRetentionDays == INTEGER
    input.Body.snapshotSchedulePolicy.retentionPolicy.onSourceDiskDelete == enum_ResourcePolicySnapshotSchedulePolicyRetentionPolicyOnSourceDiskDelete[_]
    input.Body.snapshotSchedulePolicy.schedule.dailySchedule.daysInCycle == INTEGER
    input.Body.snapshotSchedulePolicy.schedule.dailySchedule.duration == STRING
    input.Body.snapshotSchedulePolicy.schedule.dailySchedule.startTime == STRING
    input.Body.snapshotSchedulePolicy.schedule.hourlySchedule.duration == STRING
    input.Body.snapshotSchedulePolicy.schedule.hourlySchedule.hoursInCycle == INTEGER
    input.Body.snapshotSchedulePolicy.schedule.hourlySchedule.startTime == STRING
    input.Body.snapshotSchedulePolicy.schedule.weeklySchedule.dayOfWeeks[_].day == enum_ResourcePolicyWeeklyCycleDayOfWeekDay[_]
    input.Body.snapshotSchedulePolicy.schedule.weeklySchedule.dayOfWeeks[_].duration == STRING
    input.Body.snapshotSchedulePolicy.schedule.weeklySchedule.dayOfWeeks[_].startTime == STRING
    input.Body.snapshotSchedulePolicy.snapshotProperties.chainName == STRING
    input.Body.snapshotSchedulePolicy.snapshotProperties.guestFlush == BOOLEAN
    input.Body.snapshotSchedulePolicy.snapshotProperties.labels.STRING == STRING
    input.Body.snapshotSchedulePolicy.snapshotProperties.storageLocations[_] == STRING
    input.Body.status == enum_ResourcePolicyStatus[_]
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.resourcePolicies.list

valid {
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.Qs.filter == STRING
    input.Qs.maxResults == INTEGER
    input.Qs.orderBy == STRING
    input.Qs.pageToken == STRING
    input.Qs.returnPartialSuccess == BOOLEAN
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.resourcePolicies.patch

enum_ResourcePolicyGroupPlacementPolicyCollocation := [ "COLLOCATED", "UNSPECIFIED_COLLOCATION" ]
enum_ResourcePolicySnapshotSchedulePolicyRetentionPolicyOnSourceDiskDelete := [ "APPLY_RETENTION_POLICY", "KEEP_AUTO_SNAPSHOTS", "UNSPECIFIED_ON_SOURCE_DISK_DELETE" ]
enum_ResourcePolicyStatus := [ "CREATING", "DELETING", "EXPIRED", "INVALID", "READY" ]
enum_ResourcePolicyWeeklyCycleDayOfWeekDay := [ "FRIDAY", "INVALID", "MONDAY", "SATURDAY", "SUNDAY", "THURSDAY", "TUESDAY", "WEDNESDAY" ]

valid {
    input.Body.creationTimestamp == STRING
    input.Body.description == STRING
    input.Body.diskConsistencyGroupPolicy.STRING == STRING
    input.Body.groupPlacementPolicy.availabilityDomainCount == INTEGER
    input.Body.groupPlacementPolicy.collocation == enum_ResourcePolicyGroupPlacementPolicyCollocation[_]
    input.Body.groupPlacementPolicy.vmCount == INTEGER
    input.Body.id == STRING
    input.Body.instanceSchedulePolicy.expirationTime == STRING
    input.Body.instanceSchedulePolicy.startTime == STRING
    input.Body.instanceSchedulePolicy.timeZone == STRING
    input.Body.instanceSchedulePolicy.vmStartSchedule.schedule == STRING
    input.Body.instanceSchedulePolicy.vmStopSchedule.schedule == STRING
    input.Body.kind == STRING
    input.Body.name == STRING
    input.Body.region == STRING
    input.Body.resourceStatus.instanceSchedulePolicy.lastRunStartTime == STRING
    input.Body.resourceStatus.instanceSchedulePolicy.nextRunStartTime == STRING
    input.Body.selfLink == STRING
    input.Body.snapshotSchedulePolicy.retentionPolicy.maxRetentionDays == INTEGER
    input.Body.snapshotSchedulePolicy.retentionPolicy.onSourceDiskDelete == enum_ResourcePolicySnapshotSchedulePolicyRetentionPolicyOnSourceDiskDelete[_]
    input.Body.snapshotSchedulePolicy.schedule.dailySchedule.daysInCycle == INTEGER
    input.Body.snapshotSchedulePolicy.schedule.dailySchedule.duration == STRING
    input.Body.snapshotSchedulePolicy.schedule.dailySchedule.startTime == STRING
    input.Body.snapshotSchedulePolicy.schedule.hourlySchedule.duration == STRING
    input.Body.snapshotSchedulePolicy.schedule.hourlySchedule.hoursInCycle == INTEGER
    input.Body.snapshotSchedulePolicy.schedule.hourlySchedule.startTime == STRING
    input.Body.snapshotSchedulePolicy.schedule.weeklySchedule.dayOfWeeks[_].day == enum_ResourcePolicyWeeklyCycleDayOfWeekDay[_]
    input.Body.snapshotSchedulePolicy.schedule.weeklySchedule.dayOfWeeks[_].duration == STRING
    input.Body.snapshotSchedulePolicy.schedule.weeklySchedule.dayOfWeeks[_].startTime == STRING
    input.Body.snapshotSchedulePolicy.snapshotProperties.chainName == STRING
    input.Body.snapshotSchedulePolicy.snapshotProperties.guestFlush == BOOLEAN
    input.Body.snapshotSchedulePolicy.snapshotProperties.labels.STRING == STRING
    input.Body.snapshotSchedulePolicy.snapshotProperties.storageLocations[_] == STRING
    input.Body.status == enum_ResourcePolicyStatus[_]
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.ReqMap.resourcePolicy == STRING
    input.Qs.requestId == STRING
    input.Qs.updateMask == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.resourcePolicies.setIamPolicy

enum_AuditLogConfigLogType := [ "ADMIN_READ", "DATA_READ", "DATA_WRITE", "LOG_TYPE_UNSPECIFIED" ]
enum_AuthorizationLoggingOptionsPermissionType := [ "ADMIN_READ", "ADMIN_WRITE", "DATA_READ", "DATA_WRITE", "PERMISSION_TYPE_UNSPECIFIED" ]
enum_ConditionIam := [ "APPROVER", "ATTRIBUTION", "AUTHORITY", "CREDENTIALS_TYPE", "CREDS_ASSERTION", "JUSTIFICATION_TYPE", "NO_ATTR", "SECURITY_REALM" ]
enum_ConditionOp := [ "DISCHARGED", "EQUALS", "IN", "NOT_EQUALS", "NOT_IN", "NO_OP" ]
enum_ConditionSys := [ "IP", "NAME", "NO_ATTR", "REGION", "SERVICE" ]
enum_LogConfigCloudAuditOptionsLogName := [ "ADMIN_ACTIVITY", "DATA_ACCESS", "UNSPECIFIED_LOG_NAME" ]
enum_LogConfigDataAccessOptionsLogMode := [ "LOG_FAIL_CLOSED", "LOG_MODE_UNSPECIFIED" ]
enum_RuleAction := [ "ALLOW", "ALLOW_WITH_LOG", "DENY", "DENY_WITH_LOG", "LOG", "NO_ACTION" ]

valid {
    input.Body.bindings[_].bindingId == STRING
    input.Body.bindings[_].condition.description == STRING
    input.Body.bindings[_].condition.expression == STRING
    input.Body.bindings[_].condition.location == STRING
    input.Body.bindings[_].condition.title == STRING
    input.Body.bindings[_].members[_] == STRING
    input.Body.bindings[_].role == STRING
    input.Body.etag == STRING
    input.Body.policy.auditConfigs[_].auditLogConfigs[_].exemptedMembers[_] == STRING
    input.Body.policy.auditConfigs[_].auditLogConfigs[_].ignoreChildExemptions == BOOLEAN
    input.Body.policy.auditConfigs[_].auditLogConfigs[_].logType == enum_AuditLogConfigLogType[_]
    input.Body.policy.auditConfigs[_].exemptedMembers[_] == STRING
    input.Body.policy.auditConfigs[_].service == STRING
    input.Body.policy.bindings[_].bindingId == 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.rules[_].action == enum_RuleAction[_]
    input.Body.policy.rules[_].conditions[_].iam == enum_ConditionIam[_]
    input.Body.policy.rules[_].conditions[_].op == enum_ConditionOp[_]
    input.Body.policy.rules[_].conditions[_].svc == STRING
    input.Body.policy.rules[_].conditions[_].sys == enum_ConditionSys[_]
    input.Body.policy.rules[_].conditions[_].values[_] == STRING
    input.Body.policy.rules[_].description == STRING
    input.Body.policy.rules[_].ins[_] == STRING
    input.Body.policy.rules[_].logConfigs[_].cloudAudit.authorizationLoggingOptions.permissionType == enum_AuthorizationLoggingOptionsPermissionType[_]
    input.Body.policy.rules[_].logConfigs[_].cloudAudit.logName == enum_LogConfigCloudAuditOptionsLogName[_]
    input.Body.policy.rules[_].logConfigs[_].counter.customFields[_].name == STRING
    input.Body.policy.rules[_].logConfigs[_].counter.customFields[_].value == STRING
    input.Body.policy.rules[_].logConfigs[_].counter.field == STRING
    input.Body.policy.rules[_].logConfigs[_].counter.metric == STRING
    input.Body.policy.rules[_].logConfigs[_].dataAccess.logMode == enum_LogConfigDataAccessOptionsLogMode[_]
    input.Body.policy.rules[_].notIns[_] == STRING
    input.Body.policy.rules[_].permissions[_] == STRING
    input.Body.policy.version == INTEGER
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.ReqMap.resource == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.resourcePolicies.testIamPermissions

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

compute.routers.aggregatedList

valid {
    input.ReqMap.ProjectID == STRING
    input.Qs.filter == STRING
    input.Qs.includeAllScopes == BOOLEAN
    input.Qs.maxResults == INTEGER
    input.Qs.orderBy == STRING
    input.Qs.pageToken == STRING
    input.Qs.returnPartialSuccess == BOOLEAN
    input.Qs.serviceProjectNumber == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.routers.delete

valid {
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.ReqMap.router == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.routers.deleteNamedSet

valid {
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.ReqMap.router == STRING
    input.Qs.namedSet == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.routers.deleteRoutePolicy

valid {
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.ReqMap.router == STRING
    input.Qs.policy == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.routers.get

valid {
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.ReqMap.router == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.routers.getNamedSet

valid {
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.ReqMap.router == STRING
    input.Qs.namedSet == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.routers.getNatIpInfo

valid {
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.ReqMap.router == STRING
    input.Qs.natName == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.routers.getNatMappingInfo

valid {
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.ReqMap.router == STRING
    input.Qs.filter == STRING
    input.Qs.maxResults == INTEGER
    input.Qs.natName == STRING
    input.Qs.orderBy == STRING
    input.Qs.pageToken == STRING
    input.Qs.returnPartialSuccess == BOOLEAN
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.routers.getRoutePolicy

valid {
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.ReqMap.router == STRING
    input.Qs.policy == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.routers.getRouterStatus

valid {
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.ReqMap.router == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.routers.insert

enum_RouterBgpAdvertiseMode := [ "CUSTOM", "DEFAULT" ]
enum_RouterBgpAdvertisedGroups := [ "ALL_SUBNETS" ]
enum_RouterBgpPeerAdvertiseMode := [ "CUSTOM", "DEFAULT" ]
enum_RouterBgpPeerAdvertisedGroups := [ "ALL_SUBNETS" ]
enum_RouterBgpPeerBfdSessionInitializationMode := [ "ACTIVE", "DISABLED", "PASSIVE" ]
enum_RouterBgpPeerEnable := [ "FALSE", "TRUE" ]
enum_RouterBgpPeerManagementType := [ "MANAGED_BY_ATTACHMENT", "MANAGED_BY_USER" ]
enum_RouterInterfaceManagementType := [ "MANAGED_BY_ATTACHMENT", "MANAGED_BY_USER" ]
enum_RouterNatAutoNetworkTier := [ "FIXED_STANDARD", "PREMIUM", "STANDARD", "STANDARD_OVERRIDES_FIXED_STANDARD" ]
enum_RouterNatEndpointTypes := [ "ENDPOINT_TYPE_MANAGED_PROXY_LB", "ENDPOINT_TYPE_SWG", "ENDPOINT_TYPE_VM" ]
enum_RouterNatLogConfigFilter := [ "ALL", "ERRORS_ONLY", "TRANSLATIONS_ONLY" ]
enum_RouterNatNatIpAllocateOption := [ "AUTO_ONLY", "MANUAL_ONLY" ]
enum_RouterNatSourceSubnetworkIpRangesToNat := [ "ALL_SUBNETWORKS_ALL_IP_RANGES", "ALL_SUBNETWORKS_ALL_PRIMARY_IP_RANGES", "LIST_OF_SUBNETWORKS" ]
enum_RouterNatSubnetworkToNatSourceIpRangesToNat := [ "ALL_IP_RANGES", "LIST_OF_SECONDARY_IP_RANGES", "PRIMARY_IP_RANGE" ]
enum_RouterNatType := [ "PRIVATE", "PUBLIC" ]

valid {
    input.Body.bgp.advertiseMode == enum_RouterBgpAdvertiseMode[_]
    input.Body.bgp.advertisedGroups[_] == enum_RouterBgpAdvertisedGroups[_]
    input.Body.bgp.advertisedIpRanges[_].description == STRING
    input.Body.bgp.advertisedIpRanges[_].range == STRING
    input.Body.bgp.asn == INTEGER
    input.Body.bgp.keepaliveInterval == INTEGER
    input.Body.bgpPeers[_].advertiseMode == enum_RouterBgpPeerAdvertiseMode[_]
    input.Body.bgpPeers[_].advertisedGroups[_] == enum_RouterBgpPeerAdvertisedGroups[_]
    input.Body.bgpPeers[_].advertisedIpRanges[_].description == STRING
    input.Body.bgpPeers[_].advertisedIpRanges[_].range == STRING
    input.Body.bgpPeers[_].advertisedRoutePriority == INTEGER
    input.Body.bgpPeers[_].bfd.minReceiveInterval == INTEGER
    input.Body.bgpPeers[_].bfd.minTransmitInterval == INTEGER
    input.Body.bgpPeers[_].bfd.multiplier == INTEGER
    input.Body.bgpPeers[_].bfd.sessionInitializationMode == enum_RouterBgpPeerBfdSessionInitializationMode[_]
    input.Body.bgpPeers[_].customLearnedIpRanges[_].range == STRING
    input.Body.bgpPeers[_].customLearnedRoutePriority == INTEGER
    input.Body.bgpPeers[_].enable == enum_RouterBgpPeerEnable[_]
    input.Body.bgpPeers[_].enableIpv6 == BOOLEAN
    input.Body.bgpPeers[_].interfaceName == STRING
    input.Body.bgpPeers[_].ipAddress == STRING
    input.Body.bgpPeers[_].ipv6NexthopAddress == STRING
    input.Body.bgpPeers[_].managementType == enum_RouterBgpPeerManagementType[_]
    input.Body.bgpPeers[_].md5AuthenticationKeyName == STRING
    input.Body.bgpPeers[_].name == STRING
    input.Body.bgpPeers[_].peerAsn == INTEGER
    input.Body.bgpPeers[_].peerIpAddress == STRING
    input.Body.bgpPeers[_].peerIpv6NexthopAddress == STRING
    input.Body.bgpPeers[_].routerApplianceInstance == STRING
    input.Body.creationTimestamp == STRING
    input.Body.description == STRING
    input.Body.encryptedInterconnectRouter == BOOLEAN
    input.Body.id == STRING
    input.Body.interfaces[_].ipRange == STRING
    input.Body.interfaces[_].linkedInterconnectAttachment == STRING
    input.Body.interfaces[_].linkedVpnTunnel == STRING
    input.Body.interfaces[_].managementType == enum_RouterInterfaceManagementType[_]
    input.Body.interfaces[_].name == STRING
    input.Body.interfaces[_].privateIpAddress == STRING
    input.Body.interfaces[_].redundantInterface == STRING
    input.Body.interfaces[_].subnetwork == STRING
    input.Body.kind == STRING
    input.Body.md5AuthenticationKeys[_].key == STRING
    input.Body.md5AuthenticationKeys[_].name == STRING
    input.Body.name == STRING
    input.Body.nats[_].autoNetworkTier == enum_RouterNatAutoNetworkTier[_]
    input.Body.nats[_].drainNatIps[_] == STRING
    input.Body.nats[_].enableDynamicPortAllocation == BOOLEAN
    input.Body.nats[_].enableEndpointIndependentMapping == BOOLEAN
    input.Body.nats[_].endpointTypes[_] == enum_RouterNatEndpointTypes[_]
    input.Body.nats[_].icmpIdleTimeoutSec == INTEGER
    input.Body.nats[_].logConfig.enable == BOOLEAN
    input.Body.nats[_].logConfig.filter == enum_RouterNatLogConfigFilter[_]
    input.Body.nats[_].maxPortsPerVm == INTEGER
    input.Body.nats[_].minPortsPerVm == INTEGER
    input.Body.nats[_].name == STRING
    input.Body.nats[_].natIpAllocateOption == enum_RouterNatNatIpAllocateOption[_]
    input.Body.nats[_].natIps[_] == STRING
    input.Body.nats[_].rules[_].action.sourceNatActiveIps[_] == STRING
    input.Body.nats[_].rules[_].action.sourceNatActiveRanges[_] == STRING
    input.Body.nats[_].rules[_].action.sourceNatDrainIps[_] == STRING
    input.Body.nats[_].rules[_].action.sourceNatDrainRanges[_] == STRING
    input.Body.nats[_].rules[_].description == STRING
    input.Body.nats[_].rules[_].match == STRING
    input.Body.nats[_].rules[_].ruleNumber == INTEGER
    input.Body.nats[_].sourceSubnetworkIpRangesToNat == enum_RouterNatSourceSubnetworkIpRangesToNat[_]
    input.Body.nats[_].subnetworks[_].name == STRING
    input.Body.nats[_].subnetworks[_].secondaryIpRangeNames[_] == STRING
    input.Body.nats[_].subnetworks[_].sourceIpRangesToNat[_] == enum_RouterNatSubnetworkToNatSourceIpRangesToNat[_]
    input.Body.nats[_].tcpEstablishedIdleTimeoutSec == INTEGER
    input.Body.nats[_].tcpTimeWaitTimeoutSec == INTEGER
    input.Body.nats[_].tcpTransitoryIdleTimeoutSec == INTEGER
    input.Body.nats[_].type == enum_RouterNatType[_]
    input.Body.nats[_].udpIdleTimeoutSec == INTEGER
    input.Body.network == STRING
    input.Body.region == STRING
    input.Body.selfLink == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.routers.list

valid {
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.Qs.filter == STRING
    input.Qs.maxResults == INTEGER
    input.Qs.orderBy == STRING
    input.Qs.pageToken == STRING
    input.Qs.returnPartialSuccess == BOOLEAN
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.routers.listBgpRoutes

enum_AddressFamilyParameter := [ "IPV4", "IPV6", "UNSPECIFIED_IP_VERSION" ]
enum_RouteTypeParameter := [ "ADVERTISED", "LEARNED", "UNSPECIFIED_ROUTE_TYPE" ]

valid {
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.ReqMap.router == STRING
    input.Qs.addressFamily == enum_AddressFamilyParameter[_]
    input.Qs.destinationPrefix == STRING
    input.Qs.filter == STRING
    input.Qs.maxResults == INTEGER
    input.Qs.orderBy == STRING
    input.Qs.pageToken == STRING
    input.Qs.peer == STRING
    input.Qs.policyApplied == BOOLEAN
    input.Qs.returnPartialSuccess == BOOLEAN
    input.Qs.routeType == enum_RouteTypeParameter[_]
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.routers.listNamedSets

valid {
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.ReqMap.router == STRING
    input.Qs.filter == STRING
    input.Qs.maxResults == INTEGER
    input.Qs.orderBy == STRING
    input.Qs.pageToken == STRING
    input.Qs.returnPartialSuccess == BOOLEAN
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.routers.listRoutePolicies

valid {
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.ReqMap.router == STRING
    input.Qs.filter == STRING
    input.Qs.maxResults == INTEGER
    input.Qs.orderBy == STRING
    input.Qs.pageToken == STRING
    input.Qs.returnPartialSuccess == BOOLEAN
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.routers.patch

enum_RouterBgpAdvertiseMode := [ "CUSTOM", "DEFAULT" ]
enum_RouterBgpAdvertisedGroups := [ "ALL_SUBNETS" ]
enum_RouterBgpPeerAdvertiseMode := [ "CUSTOM", "DEFAULT" ]
enum_RouterBgpPeerAdvertisedGroups := [ "ALL_SUBNETS" ]
enum_RouterBgpPeerBfdSessionInitializationMode := [ "ACTIVE", "DISABLED", "PASSIVE" ]
enum_RouterBgpPeerEnable := [ "FALSE", "TRUE" ]
enum_RouterBgpPeerManagementType := [ "MANAGED_BY_ATTACHMENT", "MANAGED_BY_USER" ]
enum_RouterInterfaceManagementType := [ "MANAGED_BY_ATTACHMENT", "MANAGED_BY_USER" ]
enum_RouterNatAutoNetworkTier := [ "FIXED_STANDARD", "PREMIUM", "STANDARD", "STANDARD_OVERRIDES_FIXED_STANDARD" ]
enum_RouterNatEndpointTypes := [ "ENDPOINT_TYPE_MANAGED_PROXY_LB", "ENDPOINT_TYPE_SWG", "ENDPOINT_TYPE_VM" ]
enum_RouterNatLogConfigFilter := [ "ALL", "ERRORS_ONLY", "TRANSLATIONS_ONLY" ]
enum_RouterNatNatIpAllocateOption := [ "AUTO_ONLY", "MANUAL_ONLY" ]
enum_RouterNatSourceSubnetworkIpRangesToNat := [ "ALL_SUBNETWORKS_ALL_IP_RANGES", "ALL_SUBNETWORKS_ALL_PRIMARY_IP_RANGES", "LIST_OF_SUBNETWORKS" ]
enum_RouterNatSubnetworkToNatSourceIpRangesToNat := [ "ALL_IP_RANGES", "LIST_OF_SECONDARY_IP_RANGES", "PRIMARY_IP_RANGE" ]
enum_RouterNatType := [ "PRIVATE", "PUBLIC" ]

valid {
    input.Body.bgp.advertiseMode == enum_RouterBgpAdvertiseMode[_]
    input.Body.bgp.advertisedGroups[_] == enum_RouterBgpAdvertisedGroups[_]
    input.Body.bgp.advertisedIpRanges[_].description == STRING
    input.Body.bgp.advertisedIpRanges[_].range == STRING
    input.Body.bgp.asn == INTEGER
    input.Body.bgp.keepaliveInterval == INTEGER
    input.Body.bgpPeers[_].advertiseMode == enum_RouterBgpPeerAdvertiseMode[_]
    input.Body.bgpPeers[_].advertisedGroups[_] == enum_RouterBgpPeerAdvertisedGroups[_]
    input.Body.bgpPeers[_].advertisedIpRanges[_].description == STRING
    input.Body.bgpPeers[_].advertisedIpRanges[_].range == STRING
    input.Body.bgpPeers[_].advertisedRoutePriority == INTEGER
    input.Body.bgpPeers[_].bfd.minReceiveInterval == INTEGER
    input.Body.bgpPeers[_].bfd.minTransmitInterval == INTEGER
    input.Body.bgpPeers[_].bfd.multiplier == INTEGER
    input.Body.bgpPeers[_].bfd.sessionInitializationMode == enum_RouterBgpPeerBfdSessionInitializationMode[_]
    input.Body.bgpPeers[_].customLearnedIpRanges[_].range == STRING
    input.Body.bgpPeers[_].customLearnedRoutePriority == INTEGER
    input.Body.bgpPeers[_].enable == enum_RouterBgpPeerEnable[_]
    input.Body.bgpPeers[_].enableIpv6 == BOOLEAN
    input.Body.bgpPeers[_].interfaceName == STRING
    input.Body.bgpPeers[_].ipAddress == STRING
    input.Body.bgpPeers[_].ipv6NexthopAddress == STRING
    input.Body.bgpPeers[_].managementType == enum_RouterBgpPeerManagementType[_]
    input.Body.bgpPeers[_].md5AuthenticationKeyName == STRING
    input.Body.bgpPeers[_].name == STRING
    input.Body.bgpPeers[_].peerAsn == INTEGER
    input.Body.bgpPeers[_].peerIpAddress == STRING
    input.Body.bgpPeers[_].peerIpv6NexthopAddress == STRING
    input.Body.bgpPeers[_].routerApplianceInstance == STRING
    input.Body.creationTimestamp == STRING
    input.Body.description == STRING
    input.Body.encryptedInterconnectRouter == BOOLEAN
    input.Body.id == STRING
    input.Body.interfaces[_].ipRange == STRING
    input.Body.interfaces[_].linkedInterconnectAttachment == STRING
    input.Body.interfaces[_].linkedVpnTunnel == STRING
    input.Body.interfaces[_].managementType == enum_RouterInterfaceManagementType[_]
    input.Body.interfaces[_].name == STRING
    input.Body.interfaces[_].privateIpAddress == STRING
    input.Body.interfaces[_].redundantInterface == STRING
    input.Body.interfaces[_].subnetwork == STRING
    input.Body.kind == STRING
    input.Body.md5AuthenticationKeys[_].key == STRING
    input.Body.md5AuthenticationKeys[_].name == STRING
    input.Body.name == STRING
    input.Body.nats[_].autoNetworkTier == enum_RouterNatAutoNetworkTier[_]
    input.Body.nats[_].drainNatIps[_] == STRING
    input.Body.nats[_].enableDynamicPortAllocation == BOOLEAN
    input.Body.nats[_].enableEndpointIndependentMapping == BOOLEAN
    input.Body.nats[_].endpointTypes[_] == enum_RouterNatEndpointTypes[_]
    input.Body.nats[_].icmpIdleTimeoutSec == INTEGER
    input.Body.nats[_].logConfig.enable == BOOLEAN
    input.Body.nats[_].logConfig.filter == enum_RouterNatLogConfigFilter[_]
    input.Body.nats[_].maxPortsPerVm == INTEGER
    input.Body.nats[_].minPortsPerVm == INTEGER
    input.Body.nats[_].name == STRING
    input.Body.nats[_].natIpAllocateOption == enum_RouterNatNatIpAllocateOption[_]
    input.Body.nats[_].natIps[_] == STRING
    input.Body.nats[_].rules[_].action.sourceNatActiveIps[_] == STRING
    input.Body.nats[_].rules[_].action.sourceNatActiveRanges[_] == STRING
    input.Body.nats[_].rules[_].action.sourceNatDrainIps[_] == STRING
    input.Body.nats[_].rules[_].action.sourceNatDrainRanges[_] == STRING
    input.Body.nats[_].rules[_].description == STRING
    input.Body.nats[_].rules[_].match == STRING
    input.Body.nats[_].rules[_].ruleNumber == INTEGER
    input.Body.nats[_].sourceSubnetworkIpRangesToNat == enum_RouterNatSourceSubnetworkIpRangesToNat[_]
    input.Body.nats[_].subnetworks[_].name == STRING
    input.Body.nats[_].subnetworks[_].secondaryIpRangeNames[_] == STRING
    input.Body.nats[_].subnetworks[_].sourceIpRangesToNat[_] == enum_RouterNatSubnetworkToNatSourceIpRangesToNat[_]
    input.Body.nats[_].tcpEstablishedIdleTimeoutSec == INTEGER
    input.Body.nats[_].tcpTimeWaitTimeoutSec == INTEGER
    input.Body.nats[_].tcpTransitoryIdleTimeoutSec == INTEGER
    input.Body.nats[_].type == enum_RouterNatType[_]
    input.Body.nats[_].udpIdleTimeoutSec == INTEGER
    input.Body.network == STRING
    input.Body.region == STRING
    input.Body.selfLink == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.ReqMap.router == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.routers.preview

enum_RouterBgpAdvertiseMode := [ "CUSTOM", "DEFAULT" ]
enum_RouterBgpAdvertisedGroups := [ "ALL_SUBNETS" ]
enum_RouterBgpPeerAdvertiseMode := [ "CUSTOM", "DEFAULT" ]
enum_RouterBgpPeerAdvertisedGroups := [ "ALL_SUBNETS" ]
enum_RouterBgpPeerBfdSessionInitializationMode := [ "ACTIVE", "DISABLED", "PASSIVE" ]
enum_RouterBgpPeerEnable := [ "FALSE", "TRUE" ]
enum_RouterBgpPeerManagementType := [ "MANAGED_BY_ATTACHMENT", "MANAGED_BY_USER" ]
enum_RouterInterfaceManagementType := [ "MANAGED_BY_ATTACHMENT", "MANAGED_BY_USER" ]
enum_RouterNatAutoNetworkTier := [ "FIXED_STANDARD", "PREMIUM", "STANDARD", "STANDARD_OVERRIDES_FIXED_STANDARD" ]
enum_RouterNatEndpointTypes := [ "ENDPOINT_TYPE_MANAGED_PROXY_LB", "ENDPOINT_TYPE_SWG", "ENDPOINT_TYPE_VM" ]
enum_RouterNatLogConfigFilter := [ "ALL", "ERRORS_ONLY", "TRANSLATIONS_ONLY" ]
enum_RouterNatNatIpAllocateOption := [ "AUTO_ONLY", "MANUAL_ONLY" ]
enum_RouterNatSourceSubnetworkIpRangesToNat := [ "ALL_SUBNETWORKS_ALL_IP_RANGES", "ALL_SUBNETWORKS_ALL_PRIMARY_IP_RANGES", "LIST_OF_SUBNETWORKS" ]
enum_RouterNatSubnetworkToNatSourceIpRangesToNat := [ "ALL_IP_RANGES", "LIST_OF_SECONDARY_IP_RANGES", "PRIMARY_IP_RANGE" ]
enum_RouterNatType := [ "PRIVATE", "PUBLIC" ]

valid {
    input.Body.bgp.advertiseMode == enum_RouterBgpAdvertiseMode[_]
    input.Body.bgp.advertisedGroups[_] == enum_RouterBgpAdvertisedGroups[_]
    input.Body.bgp.advertisedIpRanges[_].description == STRING
    input.Body.bgp.advertisedIpRanges[_].range == STRING
    input.Body.bgp.asn == INTEGER
    input.Body.bgp.keepaliveInterval == INTEGER
    input.Body.bgpPeers[_].advertiseMode == enum_RouterBgpPeerAdvertiseMode[_]
    input.Body.bgpPeers[_].advertisedGroups[_] == enum_RouterBgpPeerAdvertisedGroups[_]
    input.Body.bgpPeers[_].advertisedIpRanges[_].description == STRING
    input.Body.bgpPeers[_].advertisedIpRanges[_].range == STRING
    input.Body.bgpPeers[_].advertisedRoutePriority == INTEGER
    input.Body.bgpPeers[_].bfd.minReceiveInterval == INTEGER
    input.Body.bgpPeers[_].bfd.minTransmitInterval == INTEGER
    input.Body.bgpPeers[_].bfd.multiplier == INTEGER
    input.Body.bgpPeers[_].bfd.sessionInitializationMode == enum_RouterBgpPeerBfdSessionInitializationMode[_]
    input.Body.bgpPeers[_].customLearnedIpRanges[_].range == STRING
    input.Body.bgpPeers[_].customLearnedRoutePriority == INTEGER
    input.Body.bgpPeers[_].enable == enum_RouterBgpPeerEnable[_]
    input.Body.bgpPeers[_].enableIpv6 == BOOLEAN
    input.Body.bgpPeers[_].interfaceName == STRING
    input.Body.bgpPeers[_].ipAddress == STRING
    input.Body.bgpPeers[_].ipv6NexthopAddress == STRING
    input.Body.bgpPeers[_].managementType == enum_RouterBgpPeerManagementType[_]
    input.Body.bgpPeers[_].md5AuthenticationKeyName == STRING
    input.Body.bgpPeers[_].name == STRING
    input.Body.bgpPeers[_].peerAsn == INTEGER
    input.Body.bgpPeers[_].peerIpAddress == STRING
    input.Body.bgpPeers[_].peerIpv6NexthopAddress == STRING
    input.Body.bgpPeers[_].routerApplianceInstance == STRING
    input.Body.creationTimestamp == STRING
    input.Body.description == STRING
    input.Body.encryptedInterconnectRouter == BOOLEAN
    input.Body.id == STRING
    input.Body.interfaces[_].ipRange == STRING
    input.Body.interfaces[_].linkedInterconnectAttachment == STRING
    input.Body.interfaces[_].linkedVpnTunnel == STRING
    input.Body.interfaces[_].managementType == enum_RouterInterfaceManagementType[_]
    input.Body.interfaces[_].name == STRING
    input.Body.interfaces[_].privateIpAddress == STRING
    input.Body.interfaces[_].redundantInterface == STRING
    input.Body.interfaces[_].subnetwork == STRING
    input.Body.kind == STRING
    input.Body.md5AuthenticationKeys[_].key == STRING
    input.Body.md5AuthenticationKeys[_].name == STRING
    input.Body.name == STRING
    input.Body.nats[_].autoNetworkTier == enum_RouterNatAutoNetworkTier[_]
    input.Body.nats[_].drainNatIps[_] == STRING
    input.Body.nats[_].enableDynamicPortAllocation == BOOLEAN
    input.Body.nats[_].enableEndpointIndependentMapping == BOOLEAN
    input.Body.nats[_].endpointTypes[_] == enum_RouterNatEndpointTypes[_]
    input.Body.nats[_].icmpIdleTimeoutSec == INTEGER
    input.Body.nats[_].logConfig.enable == BOOLEAN
    input.Body.nats[_].logConfig.filter == enum_RouterNatLogConfigFilter[_]
    input.Body.nats[_].maxPortsPerVm == INTEGER
    input.Body.nats[_].minPortsPerVm == INTEGER
    input.Body.nats[_].name == STRING
    input.Body.nats[_].natIpAllocateOption == enum_RouterNatNatIpAllocateOption[_]
    input.Body.nats[_].natIps[_] == STRING
    input.Body.nats[_].rules[_].action.sourceNatActiveIps[_] == STRING
    input.Body.nats[_].rules[_].action.sourceNatActiveRanges[_] == STRING
    input.Body.nats[_].rules[_].action.sourceNatDrainIps[_] == STRING
    input.Body.nats[_].rules[_].action.sourceNatDrainRanges[_] == STRING
    input.Body.nats[_].rules[_].description == STRING
    input.Body.nats[_].rules[_].match == STRING
    input.Body.nats[_].rules[_].ruleNumber == INTEGER
    input.Body.nats[_].sourceSubnetworkIpRangesToNat == enum_RouterNatSourceSubnetworkIpRangesToNat[_]
    input.Body.nats[_].subnetworks[_].name == STRING
    input.Body.nats[_].subnetworks[_].secondaryIpRangeNames[_] == STRING
    input.Body.nats[_].subnetworks[_].sourceIpRangesToNat[_] == enum_RouterNatSubnetworkToNatSourceIpRangesToNat[_]
    input.Body.nats[_].tcpEstablishedIdleTimeoutSec == INTEGER
    input.Body.nats[_].tcpTimeWaitTimeoutSec == INTEGER
    input.Body.nats[_].tcpTransitoryIdleTimeoutSec == INTEGER
    input.Body.nats[_].type == enum_RouterNatType[_]
    input.Body.nats[_].udpIdleTimeoutSec == INTEGER
    input.Body.network == STRING
    input.Body.region == STRING
    input.Body.selfLink == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.ReqMap.router == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.routers.testIamPermissions

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

compute.routers.update

enum_RouterBgpAdvertiseMode := [ "CUSTOM", "DEFAULT" ]
enum_RouterBgpAdvertisedGroups := [ "ALL_SUBNETS" ]
enum_RouterBgpPeerAdvertiseMode := [ "CUSTOM", "DEFAULT" ]
enum_RouterBgpPeerAdvertisedGroups := [ "ALL_SUBNETS" ]
enum_RouterBgpPeerBfdSessionInitializationMode := [ "ACTIVE", "DISABLED", "PASSIVE" ]
enum_RouterBgpPeerEnable := [ "FALSE", "TRUE" ]
enum_RouterBgpPeerManagementType := [ "MANAGED_BY_ATTACHMENT", "MANAGED_BY_USER" ]
enum_RouterInterfaceManagementType := [ "MANAGED_BY_ATTACHMENT", "MANAGED_BY_USER" ]
enum_RouterNatAutoNetworkTier := [ "FIXED_STANDARD", "PREMIUM", "STANDARD", "STANDARD_OVERRIDES_FIXED_STANDARD" ]
enum_RouterNatEndpointTypes := [ "ENDPOINT_TYPE_MANAGED_PROXY_LB", "ENDPOINT_TYPE_SWG", "ENDPOINT_TYPE_VM" ]
enum_RouterNatLogConfigFilter := [ "ALL", "ERRORS_ONLY", "TRANSLATIONS_ONLY" ]
enum_RouterNatNatIpAllocateOption := [ "AUTO_ONLY", "MANUAL_ONLY" ]
enum_RouterNatSourceSubnetworkIpRangesToNat := [ "ALL_SUBNETWORKS_ALL_IP_RANGES", "ALL_SUBNETWORKS_ALL_PRIMARY_IP_RANGES", "LIST_OF_SUBNETWORKS" ]
enum_RouterNatSubnetworkToNatSourceIpRangesToNat := [ "ALL_IP_RANGES", "LIST_OF_SECONDARY_IP_RANGES", "PRIMARY_IP_RANGE" ]
enum_RouterNatType := [ "PRIVATE", "PUBLIC" ]

valid {
    input.Body.bgp.advertiseMode == enum_RouterBgpAdvertiseMode[_]
    input.Body.bgp.advertisedGroups[_] == enum_RouterBgpAdvertisedGroups[_]
    input.Body.bgp.advertisedIpRanges[_].description == STRING
    input.Body.bgp.advertisedIpRanges[_].range == STRING
    input.Body.bgp.asn == INTEGER
    input.Body.bgp.keepaliveInterval == INTEGER
    input.Body.bgpPeers[_].advertiseMode == enum_RouterBgpPeerAdvertiseMode[_]
    input.Body.bgpPeers[_].advertisedGroups[_] == enum_RouterBgpPeerAdvertisedGroups[_]
    input.Body.bgpPeers[_].advertisedIpRanges[_].description == STRING
    input.Body.bgpPeers[_].advertisedIpRanges[_].range == STRING
    input.Body.bgpPeers[_].advertisedRoutePriority == INTEGER
    input.Body.bgpPeers[_].bfd.minReceiveInterval == INTEGER
    input.Body.bgpPeers[_].bfd.minTransmitInterval == INTEGER
    input.Body.bgpPeers[_].bfd.multiplier == INTEGER
    input.Body.bgpPeers[_].bfd.sessionInitializationMode == enum_RouterBgpPeerBfdSessionInitializationMode[_]
    input.Body.bgpPeers[_].customLearnedIpRanges[_].range == STRING
    input.Body.bgpPeers[_].customLearnedRoutePriority == INTEGER
    input.Body.bgpPeers[_].enable == enum_RouterBgpPeerEnable[_]
    input.Body.bgpPeers[_].enableIpv6 == BOOLEAN
    input.Body.bgpPeers[_].interfaceName == STRING
    input.Body.bgpPeers[_].ipAddress == STRING
    input.Body.bgpPeers[_].ipv6NexthopAddress == STRING
    input.Body.bgpPeers[_].managementType == enum_RouterBgpPeerManagementType[_]
    input.Body.bgpPeers[_].md5AuthenticationKeyName == STRING
    input.Body.bgpPeers[_].name == STRING
    input.Body.bgpPeers[_].peerAsn == INTEGER
    input.Body.bgpPeers[_].peerIpAddress == STRING
    input.Body.bgpPeers[_].peerIpv6NexthopAddress == STRING
    input.Body.bgpPeers[_].routerApplianceInstance == STRING
    input.Body.creationTimestamp == STRING
    input.Body.description == STRING
    input.Body.encryptedInterconnectRouter == BOOLEAN
    input.Body.id == STRING
    input.Body.interfaces[_].ipRange == STRING
    input.Body.interfaces[_].linkedInterconnectAttachment == STRING
    input.Body.interfaces[_].linkedVpnTunnel == STRING
    input.Body.interfaces[_].managementType == enum_RouterInterfaceManagementType[_]
    input.Body.interfaces[_].name == STRING
    input.Body.interfaces[_].privateIpAddress == STRING
    input.Body.interfaces[_].redundantInterface == STRING
    input.Body.interfaces[_].subnetwork == STRING
    input.Body.kind == STRING
    input.Body.md5AuthenticationKeys[_].key == STRING
    input.Body.md5AuthenticationKeys[_].name == STRING
    input.Body.name == STRING
    input.Body.nats[_].autoNetworkTier == enum_RouterNatAutoNetworkTier[_]
    input.Body.nats[_].drainNatIps[_] == STRING
    input.Body.nats[_].enableDynamicPortAllocation == BOOLEAN
    input.Body.nats[_].enableEndpointIndependentMapping == BOOLEAN
    input.Body.nats[_].endpointTypes[_] == enum_RouterNatEndpointTypes[_]
    input.Body.nats[_].icmpIdleTimeoutSec == INTEGER
    input.Body.nats[_].logConfig.enable == BOOLEAN
    input.Body.nats[_].logConfig.filter == enum_RouterNatLogConfigFilter[_]
    input.Body.nats[_].maxPortsPerVm == INTEGER
    input.Body.nats[_].minPortsPerVm == INTEGER
    input.Body.nats[_].name == STRING
    input.Body.nats[_].natIpAllocateOption == enum_RouterNatNatIpAllocateOption[_]
    input.Body.nats[_].natIps[_] == STRING
    input.Body.nats[_].rules[_].action.sourceNatActiveIps[_] == STRING
    input.Body.nats[_].rules[_].action.sourceNatActiveRanges[_] == STRING
    input.Body.nats[_].rules[_].action.sourceNatDrainIps[_] == STRING
    input.Body.nats[_].rules[_].action.sourceNatDrainRanges[_] == STRING
    input.Body.nats[_].rules[_].description == STRING
    input.Body.nats[_].rules[_].match == STRING
    input.Body.nats[_].rules[_].ruleNumber == INTEGER
    input.Body.nats[_].sourceSubnetworkIpRangesToNat == enum_RouterNatSourceSubnetworkIpRangesToNat[_]
    input.Body.nats[_].subnetworks[_].name == STRING
    input.Body.nats[_].subnetworks[_].secondaryIpRangeNames[_] == STRING
    input.Body.nats[_].subnetworks[_].sourceIpRangesToNat[_] == enum_RouterNatSubnetworkToNatSourceIpRangesToNat[_]
    input.Body.nats[_].tcpEstablishedIdleTimeoutSec == INTEGER
    input.Body.nats[_].tcpTimeWaitTimeoutSec == INTEGER
    input.Body.nats[_].tcpTransitoryIdleTimeoutSec == INTEGER
    input.Body.nats[_].type == enum_RouterNatType[_]
    input.Body.nats[_].udpIdleTimeoutSec == INTEGER
    input.Body.network == STRING
    input.Body.region == STRING
    input.Body.selfLink == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.ReqMap.router == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.routers.updateNamedSet

enum_NamedSetType := [ "NAMED_SET_TYPE_COMMUNITY", "NAMED_SET_TYPE_PREFIX" ]

valid {
    input.Body.elements[_].description == STRING
    input.Body.elements[_].expression == STRING
    input.Body.elements[_].location == STRING
    input.Body.elements[_].title == STRING
    input.Body.fingerprint == STRING
    input.Body.name == STRING
    input.Body.type == enum_NamedSetType[_]
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.ReqMap.router == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.routers.updateRoutePolicy

enum_RoutePolicyType := [ "ROUTE_POLICY_TYPE_EXPORT", "ROUTE_POLICY_TYPE_IMPORT" ]

valid {
    input.Body.fingerprint == STRING
    input.Body.name == STRING
    input.Body.terms[_].actions[_].description == STRING
    input.Body.terms[_].actions[_].expression == STRING
    input.Body.terms[_].actions[_].location == STRING
    input.Body.terms[_].actions[_].title == STRING
    input.Body.terms[_].match.description == STRING
    input.Body.terms[_].match.expression == STRING
    input.Body.terms[_].match.location == STRING
    input.Body.terms[_].match.title == STRING
    input.Body.terms[_].priority == INTEGER
    input.Body.type == enum_RoutePolicyType[_]
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.ReqMap.router == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.routes.delete

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

compute.routes.get

valid {
    input.ReqMap.ProjectID == STRING
    input.ReqMap.route == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.routes.insert

enum_RouteAsPathPathSegmentType := [ "AS_CONFED_SEQUENCE", "AS_CONFED_SET", "AS_SEQUENCE", "AS_SET" ]
enum_RouteRouteStatus := [ "ACTIVE", "DROPPED", "INACTIVE", "PENDING" ]
enum_RouteRouteType := [ "BGP", "STATIC", "SUBNET", "TRANSIT" ]
enum_RouteWarningsCode := [ "CLEANUP_FAILED", "DEPRECATED_RESOURCE_USED", "DEPRECATED_TYPE_USED", "DISK_SIZE_LARGER_THAN_IMAGE_SIZE", "EXPERIMENTAL_TYPE_USED", "EXTERNAL_API_WARNING", "FIELD_VALUE_OVERRIDEN", "INJECTED_KERNELS_DEPRECATED", "INVALID_HEALTH_CHECK_FOR_DYNAMIC_WIEGHTED_LB", "LARGE_DEPLOYMENT_WARNING", "LIST_OVERHEAD_QUOTA_EXCEED", "MISSING_TYPE_DEPENDENCY", "NEXT_HOP_ADDRESS_NOT_ASSIGNED", "NEXT_HOP_CANNOT_IP_FORWARD", "NEXT_HOP_INSTANCE_HAS_NO_IPV6_INTERFACE", "NEXT_HOP_INSTANCE_NOT_FOUND", "NEXT_HOP_INSTANCE_NOT_ON_NETWORK", "NEXT_HOP_NOT_RUNNING", "NOT_CRITICAL_ERROR", "NO_RESULTS_ON_PAGE", "PARTIAL_SUCCESS", "REQUIRED_TOS_AGREEMENT", "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING", "RESOURCE_NOT_DELETED", "SCHEMA_VALIDATION_IGNORED", "SINGLE_INSTANCE_PROPERTY_TEMPLATE", "UNDECLARED_PROPERTIES", "UNREACHABLE" ]

valid {
    input.Body.asPaths[_].asLists[_] == INTEGER
    input.Body.asPaths[_].pathSegmentType == enum_RouteAsPathPathSegmentType[_]
    input.Body.creationTimestamp == STRING
    input.Body.description == STRING
    input.Body.destRange == STRING
    input.Body.id == STRING
    input.Body.kind == STRING
    input.Body.name == STRING
    input.Body.network == STRING
    input.Body.nextHopGateway == STRING
    input.Body.nextHopHub == STRING
    input.Body.nextHopIlb == STRING
    input.Body.nextHopInstance == STRING
    input.Body.nextHopIp == STRING
    input.Body.nextHopNetwork == STRING
    input.Body.nextHopPeering == STRING
    input.Body.nextHopVpnTunnel == STRING
    input.Body.priority == INTEGER
    input.Body.routeStatus == enum_RouteRouteStatus[_]
    input.Body.routeType == enum_RouteRouteType[_]
    input.Body.selfLink == STRING
    input.Body.tags[_] == STRING
    input.Body.warnings[_].code == enum_RouteWarningsCode[_]
    input.Body.warnings[_].data[_].key == STRING
    input.Body.warnings[_].data[_].value == STRING
    input.Body.warnings[_].message == STRING
    input.ReqMap.ProjectID == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.routes.list

valid {
    input.ReqMap.ProjectID == STRING
    input.Qs.filter == STRING
    input.Qs.maxResults == INTEGER
    input.Qs.orderBy == STRING
    input.Qs.pageToken == STRING
    input.Qs.returnPartialSuccess == BOOLEAN
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.routes.testIamPermissions

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

compute.securityPolicies.addRule

enum_SecurityPolicyRuleMatcherVersionedExpr := [ "SRC_IPS_V1" ]
enum_SecurityPolicyRulePreconfiguredWafConfigExclusionFieldParamsOp := [ "CONTAINS", "ENDS_WITH", "EQUALS", "EQUALS_ANY", "STARTS_WITH" ]
enum_SecurityPolicyRuleRateLimitOptionsEnforceOnKey := [ "ALL", "HTTP_COOKIE", "HTTP_HEADER", "HTTP_PATH", "IP", "REGION_CODE", "SNI", "TLS_JA3_FINGERPRINT", "USER_IP", "XFF_IP" ]
enum_SecurityPolicyRuleRateLimitOptionsEnforceOnKeyConfigEnforceOnKeyType := [ "ALL", "HTTP_COOKIE", "HTTP_HEADER", "HTTP_PATH", "IP", "REGION_CODE", "SNI", "TLS_JA3_FINGERPRINT", "USER_IP", "XFF_IP" ]
enum_SecurityPolicyRuleRedirectOptionsType := [ "EXTERNAL_302", "GOOGLE_RECAPTCHA" ]

valid {
    input.Body.action == STRING
    input.Body.description == STRING
    input.Body.headerAction.requestHeadersToAdds[_].headerName == STRING
    input.Body.headerAction.requestHeadersToAdds[_].headerValue == STRING
    input.Body.kind == STRING
    input.Body.match.config.srcIpRanges[_] == STRING
    input.Body.match.expr.description == STRING
    input.Body.match.expr.expression == STRING
    input.Body.match.expr.location == STRING
    input.Body.match.expr.title == STRING
    input.Body.match.exprOptions.recaptchaOptions.actionTokenSiteKeys[_] == STRING
    input.Body.match.exprOptions.recaptchaOptions.sessionTokenSiteKeys[_] == STRING
    input.Body.match.versionedExpr == enum_SecurityPolicyRuleMatcherVersionedExpr[_]
    input.Body.networkMatch.destIpRanges[_] == STRING
    input.Body.networkMatch.destPorts[_] == STRING
    input.Body.networkMatch.ipProtocols[_] == STRING
    input.Body.networkMatch.srcAsns[_] == INTEGER
    input.Body.networkMatch.srcIpRanges[_] == STRING
    input.Body.networkMatch.srcPorts[_] == STRING
    input.Body.networkMatch.srcRegionCodes[_] == STRING
    input.Body.networkMatch.userDefinedFields[_].name == STRING
    input.Body.networkMatch.userDefinedFields[_].values[_] == STRING
    input.Body.preconfiguredWafConfig.exclusions[_].requestCookiesToExclude[_].op == enum_SecurityPolicyRulePreconfiguredWafConfigExclusionFieldParamsOp[_]
    input.Body.preconfiguredWafConfig.exclusions[_].requestCookiesToExclude[_].val == STRING
    input.Body.preconfiguredWafConfig.exclusions[_].requestHeadersToExclude[_].op == enum_SecurityPolicyRulePreconfiguredWafConfigExclusionFieldParamsOp[_]
    input.Body.preconfiguredWafConfig.exclusions[_].requestHeadersToExclude[_].val == STRING
    input.Body.preconfiguredWafConfig.exclusions[_].requestQueryParamsToExclude[_].op == enum_SecurityPolicyRulePreconfiguredWafConfigExclusionFieldParamsOp[_]
    input.Body.preconfiguredWafConfig.exclusions[_].requestQueryParamsToExclude[_].val == STRING
    input.Body.preconfiguredWafConfig.exclusions[_].requestUrisToExclude[_].op == enum_SecurityPolicyRulePreconfiguredWafConfigExclusionFieldParamsOp[_]
    input.Body.preconfiguredWafConfig.exclusions[_].requestUrisToExclude[_].val == STRING
    input.Body.preconfiguredWafConfig.exclusions[_].targetRuleIds[_] == STRING
    input.Body.preconfiguredWafConfig.exclusions[_].targetRuleSet == STRING
    input.Body.preview == BOOLEAN
    input.Body.priority == INTEGER
    input.Body.rateLimitOptions.banDurationSec == INTEGER
    input.Body.rateLimitOptions.banThreshold.count == INTEGER
    input.Body.rateLimitOptions.banThreshold.intervalSec == INTEGER
    input.Body.rateLimitOptions.conformAction == STRING
    input.Body.rateLimitOptions.enforceOnKey == enum_SecurityPolicyRuleRateLimitOptionsEnforceOnKey[_]
    input.Body.rateLimitOptions.enforceOnKeyConfigs[_].enforceOnKeyName == STRING
    input.Body.rateLimitOptions.enforceOnKeyConfigs[_].enforceOnKeyType == enum_SecurityPolicyRuleRateLimitOptionsEnforceOnKeyConfigEnforceOnKeyType[_]
    input.Body.rateLimitOptions.enforceOnKeyName == STRING
    input.Body.rateLimitOptions.exceedAction == STRING
    input.Body.rateLimitOptions.exceedRedirectOptions.target == STRING
    input.Body.rateLimitOptions.exceedRedirectOptions.type == enum_SecurityPolicyRuleRedirectOptionsType[_]
    input.Body.rateLimitOptions.rateLimitThreshold.count == INTEGER
    input.Body.rateLimitOptions.rateLimitThreshold.intervalSec == INTEGER
    input.Body.redirectOptions.target == STRING
    input.Body.redirectOptions.type == enum_SecurityPolicyRuleRedirectOptionsType[_]
    input.ReqMap.ProjectID == STRING
    input.ReqMap.securityPolicy == STRING
    input.Qs.validateOnly == BOOLEAN
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.securityPolicies.aggregatedList

valid {
    input.ReqMap.ProjectID == STRING
    input.Qs.filter == STRING
    input.Qs.includeAllScopes == BOOLEAN
    input.Qs.maxResults == INTEGER
    input.Qs.orderBy == STRING
    input.Qs.pageToken == STRING
    input.Qs.returnPartialSuccess == BOOLEAN
    input.Qs.serviceProjectNumber == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.securityPolicies.delete

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

compute.securityPolicies.get

valid {
    input.ReqMap.ProjectID == STRING
    input.ReqMap.securityPolicy == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.securityPolicies.getRule

valid {
    input.ReqMap.ProjectID == STRING
    input.ReqMap.securityPolicy == STRING
    input.Qs.priority == INTEGER
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.securityPolicies.insert

enum_SecurityPolicyAdaptiveProtectionConfigLayer7DdosDefenseConfigRuleVisibility := [ "PREMIUM", "STANDARD" ]
enum_SecurityPolicyAdvancedOptionsConfigJsonParsing := [ "DISABLED", "STANDARD", "STANDARD_WITH_GRAPHQL" ]
enum_SecurityPolicyAdvancedOptionsConfigLogLevel := [ "NORMAL", "VERBOSE" ]
enum_SecurityPolicyDdosProtectionConfigDdosProtection := [ "ADVANCED", "STANDARD" ]
enum_SecurityPolicyRuleMatcherVersionedExpr := [ "SRC_IPS_V1" ]
enum_SecurityPolicyRulePreconfiguredWafConfigExclusionFieldParamsOp := [ "CONTAINS", "ENDS_WITH", "EQUALS", "EQUALS_ANY", "STARTS_WITH" ]
enum_SecurityPolicyRuleRateLimitOptionsEnforceOnKey := [ "ALL", "HTTP_COOKIE", "HTTP_HEADER", "HTTP_PATH", "IP", "REGION_CODE", "SNI", "TLS_JA3_FINGERPRINT", "USER_IP", "XFF_IP" ]
enum_SecurityPolicyRuleRateLimitOptionsEnforceOnKeyConfigEnforceOnKeyType := [ "ALL", "HTTP_COOKIE", "HTTP_HEADER", "HTTP_PATH", "IP", "REGION_CODE", "SNI", "TLS_JA3_FINGERPRINT", "USER_IP", "XFF_IP" ]
enum_SecurityPolicyRuleRedirectOptionsType := [ "EXTERNAL_302", "GOOGLE_RECAPTCHA" ]
enum_SecurityPolicyType := [ "CLOUD_ARMOR", "CLOUD_ARMOR_EDGE", "CLOUD_ARMOR_NETWORK" ]
enum_SecurityPolicyUserDefinedFieldBase := [ "IPV4", "IPV6", "TCP", "UDP" ]

valid {
    input.Body.adaptiveProtectionConfig.layer7DdosDefenseConfig.enable == BOOLEAN
    input.Body.adaptiveProtectionConfig.layer7DdosDefenseConfig.ruleVisibility == enum_SecurityPolicyAdaptiveProtectionConfigLayer7DdosDefenseConfigRuleVisibility[_]
    input.Body.adaptiveProtectionConfig.layer7DdosDefenseConfig.thresholdConfigs[_].autoDeployConfidenceThreshold == NUMBER
    input.Body.adaptiveProtectionConfig.layer7DdosDefenseConfig.thresholdConfigs[_].autoDeployExpirationSec == INTEGER
    input.Body.adaptiveProtectionConfig.layer7DdosDefenseConfig.thresholdConfigs[_].autoDeployImpactedBaselineThreshold == NUMBER
    input.Body.adaptiveProtectionConfig.layer7DdosDefenseConfig.thresholdConfigs[_].autoDeployLoadThreshold == NUMBER
    input.Body.adaptiveProtectionConfig.layer7DdosDefenseConfig.thresholdConfigs[_].name == STRING
    input.Body.advancedOptionsConfig.jsonCustomConfig.contentTypes[_] == STRING
    input.Body.advancedOptionsConfig.jsonParsing == enum_SecurityPolicyAdvancedOptionsConfigJsonParsing[_]
    input.Body.advancedOptionsConfig.logLevel == enum_SecurityPolicyAdvancedOptionsConfigLogLevel[_]
    input.Body.advancedOptionsConfig.userIpRequestHeaders[_] == STRING
    input.Body.creationTimestamp == STRING
    input.Body.ddosProtectionConfig.ddosProtection == enum_SecurityPolicyDdosProtectionConfigDdosProtection[_]
    input.Body.description == STRING
    input.Body.fingerprint == STRING
    input.Body.id == STRING
    input.Body.kind == STRING
    input.Body.labelFingerprint == STRING
    input.Body.labels.STRING == STRING
    input.Body.name == STRING
    input.Body.recaptchaOptionsConfig.redirectSiteKey == STRING
    input.Body.region == STRING
    input.Body.rules[_].action == STRING
    input.Body.rules[_].description == STRING
    input.Body.rules[_].headerAction.requestHeadersToAdds[_].headerName == STRING
    input.Body.rules[_].headerAction.requestHeadersToAdds[_].headerValue == STRING
    input.Body.rules[_].kind == STRING
    input.Body.rules[_].match.config.srcIpRanges[_] == STRING
    input.Body.rules[_].match.expr.description == STRING
    input.Body.rules[_].match.expr.expression == STRING
    input.Body.rules[_].match.expr.location == STRING
    input.Body.rules[_].match.expr.title == STRING
    input.Body.rules[_].match.exprOptions.recaptchaOptions.actionTokenSiteKeys[_] == STRING
    input.Body.rules[_].match.exprOptions.recaptchaOptions.sessionTokenSiteKeys[_] == STRING
    input.Body.rules[_].match.versionedExpr == enum_SecurityPolicyRuleMatcherVersionedExpr[_]
    input.Body.rules[_].networkMatch.destIpRanges[_] == STRING
    input.Body.rules[_].networkMatch.destPorts[_] == STRING
    input.Body.rules[_].networkMatch.ipProtocols[_] == STRING
    input.Body.rules[_].networkMatch.srcAsns[_] == INTEGER
    input.Body.rules[_].networkMatch.srcIpRanges[_] == STRING
    input.Body.rules[_].networkMatch.srcPorts[_] == STRING
    input.Body.rules[_].networkMatch.srcRegionCodes[_] == STRING
    input.Body.rules[_].networkMatch.userDefinedFields[_].name == STRING
    input.Body.rules[_].networkMatch.userDefinedFields[_].values[_] == STRING
    input.Body.rules[_].preconfiguredWafConfig.exclusions[_].requestCookiesToExclude[_].op == enum_SecurityPolicyRulePreconfiguredWafConfigExclusionFieldParamsOp[_]
    input.Body.rules[_].preconfiguredWafConfig.exclusions[_].requestCookiesToExclude[_].val == STRING
    input.Body.rules[_].preconfiguredWafConfig.exclusions[_].requestHeadersToExclude[_].op == enum_SecurityPolicyRulePreconfiguredWafConfigExclusionFieldParamsOp[_]
    input.Body.rules[_].preconfiguredWafConfig.exclusions[_].requestHeadersToExclude[_].val == STRING
    input.Body.rules[_].preconfiguredWafConfig.exclusions[_].requestQueryParamsToExclude[_].op == enum_SecurityPolicyRulePreconfiguredWafConfigExclusionFieldParamsOp[_]
    input.Body.rules[_].preconfiguredWafConfig.exclusions[_].requestQueryParamsToExclude[_].val == STRING
    input.Body.rules[_].preconfiguredWafConfig.exclusions[_].requestUrisToExclude[_].op == enum_SecurityPolicyRulePreconfiguredWafConfigExclusionFieldParamsOp[_]
    input.Body.rules[_].preconfiguredWafConfig.exclusions[_].requestUrisToExclude[_].val == STRING
    input.Body.rules[_].preconfiguredWafConfig.exclusions[_].targetRuleIds[_] == STRING
    input.Body.rules[_].preconfiguredWafConfig.exclusions[_].targetRuleSet == STRING
    input.Body.rules[_].preview == BOOLEAN
    input.Body.rules[_].priority == INTEGER
    input.Body.rules[_].rateLimitOptions.banDurationSec == INTEGER
    input.Body.rules[_].rateLimitOptions.banThreshold.count == INTEGER
    input.Body.rules[_].rateLimitOptions.banThreshold.intervalSec == INTEGER
    input.Body.rules[_].rateLimitOptions.conformAction == STRING
    input.Body.rules[_].rateLimitOptions.enforceOnKey == enum_SecurityPolicyRuleRateLimitOptionsEnforceOnKey[_]
    input.Body.rules[_].rateLimitOptions.enforceOnKeyConfigs[_].enforceOnKeyName == STRING
    input.Body.rules[_].rateLimitOptions.enforceOnKeyConfigs[_].enforceOnKeyType == enum_SecurityPolicyRuleRateLimitOptionsEnforceOnKeyConfigEnforceOnKeyType[_]
    input.Body.rules[_].rateLimitOptions.enforceOnKeyName == STRING
    input.Body.rules[_].rateLimitOptions.exceedAction == STRING
    input.Body.rules[_].rateLimitOptions.exceedRedirectOptions.target == STRING
    input.Body.rules[_].rateLimitOptions.exceedRedirectOptions.type == enum_SecurityPolicyRuleRedirectOptionsType[_]
    input.Body.rules[_].rateLimitOptions.rateLimitThreshold.count == INTEGER
    input.Body.rules[_].rateLimitOptions.rateLimitThreshold.intervalSec == INTEGER
    input.Body.rules[_].redirectOptions.target == STRING
    input.Body.rules[_].redirectOptions.type == enum_SecurityPolicyRuleRedirectOptionsType[_]
    input.Body.selfLink == STRING
    input.Body.type == enum_SecurityPolicyType[_]
    input.Body.userDefinedFields[_].base == enum_SecurityPolicyUserDefinedFieldBase[_]
    input.Body.userDefinedFields[_].mask == STRING
    input.Body.userDefinedFields[_].name == STRING
    input.Body.userDefinedFields[_].offset == INTEGER
    input.Body.userDefinedFields[_].size == INTEGER
    input.ReqMap.ProjectID == STRING
    input.Qs.requestId == STRING
    input.Qs.validateOnly == BOOLEAN
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.securityPolicies.list

valid {
    input.ReqMap.ProjectID == STRING
    input.Qs.filter == STRING
    input.Qs.maxResults == INTEGER
    input.Qs.orderBy == STRING
    input.Qs.pageToken == STRING
    input.Qs.returnPartialSuccess == BOOLEAN
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.securityPolicies.listPreconfiguredExpressionSets

valid {
    input.ReqMap.ProjectID == STRING
    input.Qs.filter == STRING
    input.Qs.maxResults == INTEGER
    input.Qs.orderBy == STRING
    input.Qs.pageToken == STRING
    input.Qs.returnPartialSuccess == BOOLEAN
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.securityPolicies.patch

enum_SecurityPolicyAdaptiveProtectionConfigLayer7DdosDefenseConfigRuleVisibility := [ "PREMIUM", "STANDARD" ]
enum_SecurityPolicyAdvancedOptionsConfigJsonParsing := [ "DISABLED", "STANDARD", "STANDARD_WITH_GRAPHQL" ]
enum_SecurityPolicyAdvancedOptionsConfigLogLevel := [ "NORMAL", "VERBOSE" ]
enum_SecurityPolicyDdosProtectionConfigDdosProtection := [ "ADVANCED", "STANDARD" ]
enum_SecurityPolicyRuleMatcherVersionedExpr := [ "SRC_IPS_V1" ]
enum_SecurityPolicyRulePreconfiguredWafConfigExclusionFieldParamsOp := [ "CONTAINS", "ENDS_WITH", "EQUALS", "EQUALS_ANY", "STARTS_WITH" ]
enum_SecurityPolicyRuleRateLimitOptionsEnforceOnKey := [ "ALL", "HTTP_COOKIE", "HTTP_HEADER", "HTTP_PATH", "IP", "REGION_CODE", "SNI", "TLS_JA3_FINGERPRINT", "USER_IP", "XFF_IP" ]
enum_SecurityPolicyRuleRateLimitOptionsEnforceOnKeyConfigEnforceOnKeyType := [ "ALL", "HTTP_COOKIE", "HTTP_HEADER", "HTTP_PATH", "IP", "REGION_CODE", "SNI", "TLS_JA3_FINGERPRINT", "USER_IP", "XFF_IP" ]
enum_SecurityPolicyRuleRedirectOptionsType := [ "EXTERNAL_302", "GOOGLE_RECAPTCHA" ]
enum_SecurityPolicyType := [ "CLOUD_ARMOR", "CLOUD_ARMOR_EDGE", "CLOUD_ARMOR_NETWORK" ]
enum_SecurityPolicyUserDefinedFieldBase := [ "IPV4", "IPV6", "TCP", "UDP" ]

valid {
    input.Body.adaptiveProtectionConfig.layer7DdosDefenseConfig.enable == BOOLEAN
    input.Body.adaptiveProtectionConfig.layer7DdosDefenseConfig.ruleVisibility == enum_SecurityPolicyAdaptiveProtectionConfigLayer7DdosDefenseConfigRuleVisibility[_]
    input.Body.adaptiveProtectionConfig.layer7DdosDefenseConfig.thresholdConfigs[_].autoDeployConfidenceThreshold == NUMBER
    input.Body.adaptiveProtectionConfig.layer7DdosDefenseConfig.thresholdConfigs[_].autoDeployExpirationSec == INTEGER
    input.Body.adaptiveProtectionConfig.layer7DdosDefenseConfig.thresholdConfigs[_].autoDeployImpactedBaselineThreshold == NUMBER
    input.Body.adaptiveProtectionConfig.layer7DdosDefenseConfig.thresholdConfigs[_].autoDeployLoadThreshold == NUMBER
    input.Body.adaptiveProtectionConfig.layer7DdosDefenseConfig.thresholdConfigs[_].name == STRING
    input.Body.advancedOptionsConfig.jsonCustomConfig.contentTypes[_] == STRING
    input.Body.advancedOptionsConfig.jsonParsing == enum_SecurityPolicyAdvancedOptionsConfigJsonParsing[_]
    input.Body.advancedOptionsConfig.logLevel == enum_SecurityPolicyAdvancedOptionsConfigLogLevel[_]
    input.Body.advancedOptionsConfig.userIpRequestHeaders[_] == STRING
    input.Body.creationTimestamp == STRING
    input.Body.ddosProtectionConfig.ddosProtection == enum_SecurityPolicyDdosProtectionConfigDdosProtection[_]
    input.Body.description == STRING
    input.Body.fingerprint == STRING
    input.Body.id == STRING
    input.Body.kind == STRING
    input.Body.labelFingerprint == STRING
    input.Body.labels.STRING == STRING
    input.Body.name == STRING
    input.Body.recaptchaOptionsConfig.redirectSiteKey == STRING
    input.Body.region == STRING
    input.Body.rules[_].action == STRING
    input.Body.rules[_].description == STRING
    input.Body.rules[_].headerAction.requestHeadersToAdds[_].headerName == STRING
    input.Body.rules[_].headerAction.requestHeadersToAdds[_].headerValue == STRING
    input.Body.rules[_].kind == STRING
    input.Body.rules[_].match.config.srcIpRanges[_] == STRING
    input.Body.rules[_].match.expr.description == STRING
    input.Body.rules[_].match.expr.expression == STRING
    input.Body.rules[_].match.expr.location == STRING
    input.Body.rules[_].match.expr.title == STRING
    input.Body.rules[_].match.exprOptions.recaptchaOptions.actionTokenSiteKeys[_] == STRING
    input.Body.rules[_].match.exprOptions.recaptchaOptions.sessionTokenSiteKeys[_] == STRING
    input.Body.rules[_].match.versionedExpr == enum_SecurityPolicyRuleMatcherVersionedExpr[_]
    input.Body.rules[_].networkMatch.destIpRanges[_] == STRING
    input.Body.rules[_].networkMatch.destPorts[_] == STRING
    input.Body.rules[_].networkMatch.ipProtocols[_] == STRING
    input.Body.rules[_].networkMatch.srcAsns[_] == INTEGER
    input.Body.rules[_].networkMatch.srcIpRanges[_] == STRING
    input.Body.rules[_].networkMatch.srcPorts[_] == STRING
    input.Body.rules[_].networkMatch.srcRegionCodes[_] == STRING
    input.Body.rules[_].networkMatch.userDefinedFields[_].name == STRING
    input.Body.rules[_].networkMatch.userDefinedFields[_].values[_] == STRING
    input.Body.rules[_].preconfiguredWafConfig.exclusions[_].requestCookiesToExclude[_].op == enum_SecurityPolicyRulePreconfiguredWafConfigExclusionFieldParamsOp[_]
    input.Body.rules[_].preconfiguredWafConfig.exclusions[_].requestCookiesToExclude[_].val == STRING
    input.Body.rules[_].preconfiguredWafConfig.exclusions[_].requestHeadersToExclude[_].op == enum_SecurityPolicyRulePreconfiguredWafConfigExclusionFieldParamsOp[_]
    input.Body.rules[_].preconfiguredWafConfig.exclusions[_].requestHeadersToExclude[_].val == STRING
    input.Body.rules[_].preconfiguredWafConfig.exclusions[_].requestQueryParamsToExclude[_].op == enum_SecurityPolicyRulePreconfiguredWafConfigExclusionFieldParamsOp[_]
    input.Body.rules[_].preconfiguredWafConfig.exclusions[_].requestQueryParamsToExclude[_].val == STRING
    input.Body.rules[_].preconfiguredWafConfig.exclusions[_].requestUrisToExclude[_].op == enum_SecurityPolicyRulePreconfiguredWafConfigExclusionFieldParamsOp[_]
    input.Body.rules[_].preconfiguredWafConfig.exclusions[_].requestUrisToExclude[_].val == STRING
    input.Body.rules[_].preconfiguredWafConfig.exclusions[_].targetRuleIds[_] == STRING
    input.Body.rules[_].preconfiguredWafConfig.exclusions[_].targetRuleSet == STRING
    input.Body.rules[_].preview == BOOLEAN
    input.Body.rules[_].priority == INTEGER
    input.Body.rules[_].rateLimitOptions.banDurationSec == INTEGER
    input.Body.rules[_].rateLimitOptions.banThreshold.count == INTEGER
    input.Body.rules[_].rateLimitOptions.banThreshold.intervalSec == INTEGER
    input.Body.rules[_].rateLimitOptions.conformAction == STRING
    input.Body.rules[_].rateLimitOptions.enforceOnKey == enum_SecurityPolicyRuleRateLimitOptionsEnforceOnKey[_]
    input.Body.rules[_].rateLimitOptions.enforceOnKeyConfigs[_].enforceOnKeyName == STRING
    input.Body.rules[_].rateLimitOptions.enforceOnKeyConfigs[_].enforceOnKeyType == enum_SecurityPolicyRuleRateLimitOptionsEnforceOnKeyConfigEnforceOnKeyType[_]
    input.Body.rules[_].rateLimitOptions.enforceOnKeyName == STRING
    input.Body.rules[_].rateLimitOptions.exceedAction == STRING
    input.Body.rules[_].rateLimitOptions.exceedRedirectOptions.target == STRING
    input.Body.rules[_].rateLimitOptions.exceedRedirectOptions.type == enum_SecurityPolicyRuleRedirectOptionsType[_]
    input.Body.rules[_].rateLimitOptions.rateLimitThreshold.count == INTEGER
    input.Body.rules[_].rateLimitOptions.rateLimitThreshold.intervalSec == INTEGER
    input.Body.rules[_].redirectOptions.target == STRING
    input.Body.rules[_].redirectOptions.type == enum_SecurityPolicyRuleRedirectOptionsType[_]
    input.Body.selfLink == STRING
    input.Body.type == enum_SecurityPolicyType[_]
    input.Body.userDefinedFields[_].base == enum_SecurityPolicyUserDefinedFieldBase[_]
    input.Body.userDefinedFields[_].mask == STRING
    input.Body.userDefinedFields[_].name == STRING
    input.Body.userDefinedFields[_].offset == INTEGER
    input.Body.userDefinedFields[_].size == INTEGER
    input.ReqMap.ProjectID == STRING
    input.ReqMap.securityPolicy == STRING
    input.Qs.requestId == STRING
    input.Qs.updateMask == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.securityPolicies.patchRule

enum_SecurityPolicyRuleMatcherVersionedExpr := [ "SRC_IPS_V1" ]
enum_SecurityPolicyRulePreconfiguredWafConfigExclusionFieldParamsOp := [ "CONTAINS", "ENDS_WITH", "EQUALS", "EQUALS_ANY", "STARTS_WITH" ]
enum_SecurityPolicyRuleRateLimitOptionsEnforceOnKey := [ "ALL", "HTTP_COOKIE", "HTTP_HEADER", "HTTP_PATH", "IP", "REGION_CODE", "SNI", "TLS_JA3_FINGERPRINT", "USER_IP", "XFF_IP" ]
enum_SecurityPolicyRuleRateLimitOptionsEnforceOnKeyConfigEnforceOnKeyType := [ "ALL", "HTTP_COOKIE", "HTTP_HEADER", "HTTP_PATH", "IP", "REGION_CODE", "SNI", "TLS_JA3_FINGERPRINT", "USER_IP", "XFF_IP" ]
enum_SecurityPolicyRuleRedirectOptionsType := [ "EXTERNAL_302", "GOOGLE_RECAPTCHA" ]

valid {
    input.Body.action == STRING
    input.Body.description == STRING
    input.Body.headerAction.requestHeadersToAdds[_].headerName == STRING
    input.Body.headerAction.requestHeadersToAdds[_].headerValue == STRING
    input.Body.kind == STRING
    input.Body.match.config.srcIpRanges[_] == STRING
    input.Body.match.expr.description == STRING
    input.Body.match.expr.expression == STRING
    input.Body.match.expr.location == STRING
    input.Body.match.expr.title == STRING
    input.Body.match.exprOptions.recaptchaOptions.actionTokenSiteKeys[_] == STRING
    input.Body.match.exprOptions.recaptchaOptions.sessionTokenSiteKeys[_] == STRING
    input.Body.match.versionedExpr == enum_SecurityPolicyRuleMatcherVersionedExpr[_]
    input.Body.networkMatch.destIpRanges[_] == STRING
    input.Body.networkMatch.destPorts[_] == STRING
    input.Body.networkMatch.ipProtocols[_] == STRING
    input.Body.networkMatch.srcAsns[_] == INTEGER
    input.Body.networkMatch.srcIpRanges[_] == STRING
    input.Body.networkMatch.srcPorts[_] == STRING
    input.Body.networkMatch.srcRegionCodes[_] == STRING
    input.Body.networkMatch.userDefinedFields[_].name == STRING
    input.Body.networkMatch.userDefinedFields[_].values[_] == STRING
    input.Body.preconfiguredWafConfig.exclusions[_].requestCookiesToExclude[_].op == enum_SecurityPolicyRulePreconfiguredWafConfigExclusionFieldParamsOp[_]
    input.Body.preconfiguredWafConfig.exclusions[_].requestCookiesToExclude[_].val == STRING
    input.Body.preconfiguredWafConfig.exclusions[_].requestHeadersToExclude[_].op == enum_SecurityPolicyRulePreconfiguredWafConfigExclusionFieldParamsOp[_]
    input.Body.preconfiguredWafConfig.exclusions[_].requestHeadersToExclude[_].val == STRING
    input.Body.preconfiguredWafConfig.exclusions[_].requestQueryParamsToExclude[_].op == enum_SecurityPolicyRulePreconfiguredWafConfigExclusionFieldParamsOp[_]
    input.Body.preconfiguredWafConfig.exclusions[_].requestQueryParamsToExclude[_].val == STRING
    input.Body.preconfiguredWafConfig.exclusions[_].requestUrisToExclude[_].op == enum_SecurityPolicyRulePreconfiguredWafConfigExclusionFieldParamsOp[_]
    input.Body.preconfiguredWafConfig.exclusions[_].requestUrisToExclude[_].val == STRING
    input.Body.preconfiguredWafConfig.exclusions[_].targetRuleIds[_] == STRING
    input.Body.preconfiguredWafConfig.exclusions[_].targetRuleSet == STRING
    input.Body.preview == BOOLEAN
    input.Body.priority == INTEGER
    input.Body.rateLimitOptions.banDurationSec == INTEGER
    input.Body.rateLimitOptions.banThreshold.count == INTEGER
    input.Body.rateLimitOptions.banThreshold.intervalSec == INTEGER
    input.Body.rateLimitOptions.conformAction == STRING
    input.Body.rateLimitOptions.enforceOnKey == enum_SecurityPolicyRuleRateLimitOptionsEnforceOnKey[_]
    input.Body.rateLimitOptions.enforceOnKeyConfigs[_].enforceOnKeyName == STRING
    input.Body.rateLimitOptions.enforceOnKeyConfigs[_].enforceOnKeyType == enum_SecurityPolicyRuleRateLimitOptionsEnforceOnKeyConfigEnforceOnKeyType[_]
    input.Body.rateLimitOptions.enforceOnKeyName == STRING
    input.Body.rateLimitOptions.exceedAction == STRING
    input.Body.rateLimitOptions.exceedRedirectOptions.target == STRING
    input.Body.rateLimitOptions.exceedRedirectOptions.type == enum_SecurityPolicyRuleRedirectOptionsType[_]
    input.Body.rateLimitOptions.rateLimitThreshold.count == INTEGER
    input.Body.rateLimitOptions.rateLimitThreshold.intervalSec == INTEGER
    input.Body.redirectOptions.target == STRING
    input.Body.redirectOptions.type == enum_SecurityPolicyRuleRedirectOptionsType[_]
    input.ReqMap.ProjectID == STRING
    input.ReqMap.securityPolicy == STRING
    input.Qs.priority == INTEGER
    input.Qs.updateMask == STRING
    input.Qs.validateOnly == BOOLEAN
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.securityPolicies.removeRule

valid {
    input.ReqMap.ProjectID == STRING
    input.ReqMap.securityPolicy == STRING
    input.Qs.priority == INTEGER
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.securityPolicies.setLabels

valid {
    input.Body.labelFingerprint == STRING
    input.Body.labels.STRING == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.resource == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.securityPolicies.testIamPermissions

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

compute.serviceAttachments.aggregatedList

valid {
    input.ReqMap.ProjectID == STRING
    input.Qs.filter == STRING
    input.Qs.includeAllScopes == BOOLEAN
    input.Qs.maxResults == INTEGER
    input.Qs.orderBy == STRING
    input.Qs.pageToken == STRING
    input.Qs.returnPartialSuccess == BOOLEAN
    input.Qs.serviceProjectNumber == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.serviceAttachments.delete

valid {
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.ReqMap.serviceAttachment == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.serviceAttachments.get

valid {
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.ReqMap.serviceAttachment == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.serviceAttachments.getIamPolicy

valid {
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.ReqMap.resource == STRING
    input.Qs.optionsRequestedPolicyVersion == INTEGER
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.serviceAttachments.insert

enum_ServiceAttachmentConnectedEndpointStatus := [ "ACCEPTED", "CLOSED", "NEEDS_ATTENTION", "PENDING", "REJECTED", "STATUS_UNSPECIFIED" ]
enum_ServiceAttachmentConnectionPreference := [ "ACCEPT_AUTOMATIC", "ACCEPT_MANUAL", "CONNECTION_PREFERENCE_UNSPECIFIED" ]

valid {
    input.Body.connectedEndpoints[_].consumerNetwork == STRING
    input.Body.connectedEndpoints[_].endpoint == STRING
    input.Body.connectedEndpoints[_].pscConnectionId == STRING
    input.Body.connectedEndpoints[_].status == enum_ServiceAttachmentConnectedEndpointStatus[_]
    input.Body.connectionPreference == enum_ServiceAttachmentConnectionPreference[_]
    input.Body.consumerAcceptLists[_].connectionLimit == INTEGER
    input.Body.consumerAcceptLists[_].networkUrl == STRING
    input.Body.consumerAcceptLists[_].projectIdOrNum == STRING
    input.Body.consumerRejectLists[_] == STRING
    input.Body.creationTimestamp == STRING
    input.Body.description == STRING
    input.Body.domainNames[_] == STRING
    input.Body.enableProxyProtocol == BOOLEAN
    input.Body.fingerprint == STRING
    input.Body.id == STRING
    input.Body.kind == STRING
    input.Body.name == STRING
    input.Body.natSubnets[_] == STRING
    input.Body.producerForwardingRule == STRING
    input.Body.pscServiceAttachmentId.high == STRING
    input.Body.pscServiceAttachmentId.low == STRING
    input.Body.reconcileConnections == BOOLEAN
    input.Body.region == STRING
    input.Body.selfLink == STRING
    input.Body.targetService == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.serviceAttachments.list

valid {
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.Qs.filter == STRING
    input.Qs.maxResults == INTEGER
    input.Qs.orderBy == STRING
    input.Qs.pageToken == STRING
    input.Qs.returnPartialSuccess == BOOLEAN
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.serviceAttachments.patch

enum_ServiceAttachmentConnectedEndpointStatus := [ "ACCEPTED", "CLOSED", "NEEDS_ATTENTION", "PENDING", "REJECTED", "STATUS_UNSPECIFIED" ]
enum_ServiceAttachmentConnectionPreference := [ "ACCEPT_AUTOMATIC", "ACCEPT_MANUAL", "CONNECTION_PREFERENCE_UNSPECIFIED" ]

valid {
    input.Body.connectedEndpoints[_].consumerNetwork == STRING
    input.Body.connectedEndpoints[_].endpoint == STRING
    input.Body.connectedEndpoints[_].pscConnectionId == STRING
    input.Body.connectedEndpoints[_].status == enum_ServiceAttachmentConnectedEndpointStatus[_]
    input.Body.connectionPreference == enum_ServiceAttachmentConnectionPreference[_]
    input.Body.consumerAcceptLists[_].connectionLimit == INTEGER
    input.Body.consumerAcceptLists[_].networkUrl == STRING
    input.Body.consumerAcceptLists[_].projectIdOrNum == STRING
    input.Body.consumerRejectLists[_] == STRING
    input.Body.creationTimestamp == STRING
    input.Body.description == STRING
    input.Body.domainNames[_] == STRING
    input.Body.enableProxyProtocol == BOOLEAN
    input.Body.fingerprint == STRING
    input.Body.id == STRING
    input.Body.kind == STRING
    input.Body.name == STRING
    input.Body.natSubnets[_] == STRING
    input.Body.producerForwardingRule == STRING
    input.Body.pscServiceAttachmentId.high == STRING
    input.Body.pscServiceAttachmentId.low == STRING
    input.Body.reconcileConnections == BOOLEAN
    input.Body.region == STRING
    input.Body.selfLink == STRING
    input.Body.targetService == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.ReqMap.serviceAttachment == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.serviceAttachments.setIamPolicy

enum_AuditLogConfigLogType := [ "ADMIN_READ", "DATA_READ", "DATA_WRITE", "LOG_TYPE_UNSPECIFIED" ]
enum_AuthorizationLoggingOptionsPermissionType := [ "ADMIN_READ", "ADMIN_WRITE", "DATA_READ", "DATA_WRITE", "PERMISSION_TYPE_UNSPECIFIED" ]
enum_ConditionIam := [ "APPROVER", "ATTRIBUTION", "AUTHORITY", "CREDENTIALS_TYPE", "CREDS_ASSERTION", "JUSTIFICATION_TYPE", "NO_ATTR", "SECURITY_REALM" ]
enum_ConditionOp := [ "DISCHARGED", "EQUALS", "IN", "NOT_EQUALS", "NOT_IN", "NO_OP" ]
enum_ConditionSys := [ "IP", "NAME", "NO_ATTR", "REGION", "SERVICE" ]
enum_LogConfigCloudAuditOptionsLogName := [ "ADMIN_ACTIVITY", "DATA_ACCESS", "UNSPECIFIED_LOG_NAME" ]
enum_LogConfigDataAccessOptionsLogMode := [ "LOG_FAIL_CLOSED", "LOG_MODE_UNSPECIFIED" ]
enum_RuleAction := [ "ALLOW", "ALLOW_WITH_LOG", "DENY", "DENY_WITH_LOG", "LOG", "NO_ACTION" ]

valid {
    input.Body.bindings[_].bindingId == STRING
    input.Body.bindings[_].condition.description == STRING
    input.Body.bindings[_].condition.expression == STRING
    input.Body.bindings[_].condition.location == STRING
    input.Body.bindings[_].condition.title == STRING
    input.Body.bindings[_].members[_] == STRING
    input.Body.bindings[_].role == STRING
    input.Body.etag == STRING
    input.Body.policy.auditConfigs[_].auditLogConfigs[_].exemptedMembers[_] == STRING
    input.Body.policy.auditConfigs[_].auditLogConfigs[_].ignoreChildExemptions == BOOLEAN
    input.Body.policy.auditConfigs[_].auditLogConfigs[_].logType == enum_AuditLogConfigLogType[_]
    input.Body.policy.auditConfigs[_].exemptedMembers[_] == STRING
    input.Body.policy.auditConfigs[_].service == STRING
    input.Body.policy.bindings[_].bindingId == 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.rules[_].action == enum_RuleAction[_]
    input.Body.policy.rules[_].conditions[_].iam == enum_ConditionIam[_]
    input.Body.policy.rules[_].conditions[_].op == enum_ConditionOp[_]
    input.Body.policy.rules[_].conditions[_].svc == STRING
    input.Body.policy.rules[_].conditions[_].sys == enum_ConditionSys[_]
    input.Body.policy.rules[_].conditions[_].values[_] == STRING
    input.Body.policy.rules[_].description == STRING
    input.Body.policy.rules[_].ins[_] == STRING
    input.Body.policy.rules[_].logConfigs[_].cloudAudit.authorizationLoggingOptions.permissionType == enum_AuthorizationLoggingOptionsPermissionType[_]
    input.Body.policy.rules[_].logConfigs[_].cloudAudit.logName == enum_LogConfigCloudAuditOptionsLogName[_]
    input.Body.policy.rules[_].logConfigs[_].counter.customFields[_].name == STRING
    input.Body.policy.rules[_].logConfigs[_].counter.customFields[_].value == STRING
    input.Body.policy.rules[_].logConfigs[_].counter.field == STRING
    input.Body.policy.rules[_].logConfigs[_].counter.metric == STRING
    input.Body.policy.rules[_].logConfigs[_].dataAccess.logMode == enum_LogConfigDataAccessOptionsLogMode[_]
    input.Body.policy.rules[_].notIns[_] == STRING
    input.Body.policy.rules[_].permissions[_] == STRING
    input.Body.policy.version == INTEGER
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.ReqMap.resource == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.serviceAttachments.testIamPermissions

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

compute.snapshotSettings.get

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

compute.snapshotSettings.patch

enum_SnapshotSettingsStorageLocationSettingsPolicy := [ "LOCAL_REGION", "NEAREST_MULTI_REGION", "SPECIFIC_LOCATIONS", "STORAGE_LOCATION_POLICY_UNSPECIFIED" ]

valid {
    input.Body.storageLocation.locations.STRING.name == STRING
    input.Body.storageLocation.policy == enum_SnapshotSettingsStorageLocationSettingsPolicy[_]
    input.ReqMap.ProjectID == STRING
    input.Qs.requestId == STRING
    input.Qs.updateMask == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.snapshots.aggregatedList

valid {
    input.ReqMap.ProjectID == STRING
    input.Qs.filter == STRING
    input.Qs.includeAllScopes == BOOLEAN
    input.Qs.maxResults == INTEGER
    input.Qs.orderBy == STRING
    input.Qs.pageToken == STRING
    input.Qs.returnPartialSuccess == BOOLEAN
    input.Qs.serviceProjectNumber == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.snapshots.delete

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

compute.snapshots.get

valid {
    input.ReqMap.ProjectID == STRING
    input.ReqMap.snapshot == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.snapshots.getIamPolicy

valid {
    input.ReqMap.ProjectID == STRING
    input.ReqMap.resource == STRING
    input.Qs.optionsRequestedPolicyVersion == INTEGER
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.snapshots.insert

enum_GuestOsFeatureType := [ "FEATURE_TYPE_UNSPECIFIED", "GVNIC", "IDPF", "MULTI_IP_SUBNET", "SECURE_BOOT", "SEV_CAPABLE", "SEV_LIVE_MIGRATABLE", "SEV_LIVE_MIGRATABLE_V2", "SEV_SNP_CAPABLE", "UEFI_COMPATIBLE", "VIRTIO_SCSI_MULTIQUEUE", "WINDOWS" ]
enum_SnapshotArchitecture := [ "ARCHITECTURE_UNSPECIFIED", "ARM64", "X86_64" ]
enum_SnapshotSnapshotType := [ "ARCHIVE", "STANDARD" ]
enum_SnapshotStatus := [ "CREATING", "DELETING", "FAILED", "READY", "UPLOADING" ]
enum_SnapshotStorageBytesStatus := [ "UPDATING", "UP_TO_DATE" ]

valid {
    input.Body.architecture == enum_SnapshotArchitecture[_]
    input.Body.autoCreated == BOOLEAN
    input.Body.chainName == STRING
    input.Body.creationSizeBytes == STRING
    input.Body.creationTimestamp == STRING
    input.Body.description == STRING
    input.Body.diskSizeGb == STRING
    input.Body.downloadBytes == STRING
    input.Body.enableConfidentialCompute == BOOLEAN
    input.Body.guestOsFeatures[_].type == enum_GuestOsFeatureType[_]
    input.Body.id == STRING
    input.Body.kind == STRING
    input.Body.labelFingerprint == STRING
    input.Body.labels.STRING == STRING
    input.Body.licenseCodes[_] == STRING
    input.Body.licenses[_] == STRING
    input.Body.locationHint == STRING
    input.Body.name == STRING
    input.Body.satisfiesPzs == BOOLEAN
    input.Body.selfLink == STRING
    input.Body.snapshotEncryptionKey.kmsKeyName == STRING
    input.Body.snapshotEncryptionKey.kmsKeyServiceAccount == STRING
    input.Body.snapshotEncryptionKey.rawKey == STRING
    input.Body.snapshotEncryptionKey.rsaEncryptedKey == STRING
    input.Body.snapshotEncryptionKey.sha256 == STRING
    input.Body.snapshotType == enum_SnapshotSnapshotType[_]
    input.Body.sourceDisk == STRING
    input.Body.sourceDiskEncryptionKey.kmsKeyName == STRING
    input.Body.sourceDiskEncryptionKey.kmsKeyServiceAccount == STRING
    input.Body.sourceDiskEncryptionKey.rawKey == STRING
    input.Body.sourceDiskEncryptionKey.rsaEncryptedKey == STRING
    input.Body.sourceDiskEncryptionKey.sha256 == STRING
    input.Body.sourceDiskForRecoveryCheckpoint == STRING
    input.Body.sourceDiskId == STRING
    input.Body.sourceInstantSnapshot == STRING
    input.Body.sourceInstantSnapshotEncryptionKey.kmsKeyName == STRING
    input.Body.sourceInstantSnapshotEncryptionKey.kmsKeyServiceAccount == STRING
    input.Body.sourceInstantSnapshotEncryptionKey.rawKey == STRING
    input.Body.sourceInstantSnapshotEncryptionKey.rsaEncryptedKey == STRING
    input.Body.sourceInstantSnapshotEncryptionKey.sha256 == STRING
    input.Body.sourceInstantSnapshotId == STRING
    input.Body.sourceSnapshotSchedulePolicy == STRING
    input.Body.sourceSnapshotSchedulePolicyId == STRING
    input.Body.status == enum_SnapshotStatus[_]
    input.Body.storageBytes == STRING
    input.Body.storageBytesStatus == enum_SnapshotStorageBytesStatus[_]
    input.Body.storageLocations[_] == STRING
    input.ReqMap.ProjectID == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.snapshots.list

valid {
    input.ReqMap.ProjectID == STRING
    input.Qs.filter == STRING
    input.Qs.maxResults == INTEGER
    input.Qs.orderBy == STRING
    input.Qs.pageToken == STRING
    input.Qs.returnPartialSuccess == BOOLEAN
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.snapshots.setIamPolicy

enum_AuditLogConfigLogType := [ "ADMIN_READ", "DATA_READ", "DATA_WRITE", "LOG_TYPE_UNSPECIFIED" ]
enum_AuthorizationLoggingOptionsPermissionType := [ "ADMIN_READ", "ADMIN_WRITE", "DATA_READ", "DATA_WRITE", "PERMISSION_TYPE_UNSPECIFIED" ]
enum_ConditionIam := [ "APPROVER", "ATTRIBUTION", "AUTHORITY", "CREDENTIALS_TYPE", "CREDS_ASSERTION", "JUSTIFICATION_TYPE", "NO_ATTR", "SECURITY_REALM" ]
enum_ConditionOp := [ "DISCHARGED", "EQUALS", "IN", "NOT_EQUALS", "NOT_IN", "NO_OP" ]
enum_ConditionSys := [ "IP", "NAME", "NO_ATTR", "REGION", "SERVICE" ]
enum_LogConfigCloudAuditOptionsLogName := [ "ADMIN_ACTIVITY", "DATA_ACCESS", "UNSPECIFIED_LOG_NAME" ]
enum_LogConfigDataAccessOptionsLogMode := [ "LOG_FAIL_CLOSED", "LOG_MODE_UNSPECIFIED" ]
enum_RuleAction := [ "ALLOW", "ALLOW_WITH_LOG", "DENY", "DENY_WITH_LOG", "LOG", "NO_ACTION" ]

valid {
    input.Body.bindings[_].bindingId == STRING
    input.Body.bindings[_].condition.description == STRING
    input.Body.bindings[_].condition.expression == STRING
    input.Body.bindings[_].condition.location == STRING
    input.Body.bindings[_].condition.title == STRING
    input.Body.bindings[_].members[_] == STRING
    input.Body.bindings[_].role == STRING
    input.Body.etag == STRING
    input.Body.policy.auditConfigs[_].auditLogConfigs[_].exemptedMembers[_] == STRING
    input.Body.policy.auditConfigs[_].auditLogConfigs[_].ignoreChildExemptions == BOOLEAN
    input.Body.policy.auditConfigs[_].auditLogConfigs[_].logType == enum_AuditLogConfigLogType[_]
    input.Body.policy.auditConfigs[_].exemptedMembers[_] == STRING
    input.Body.policy.auditConfigs[_].service == STRING
    input.Body.policy.bindings[_].bindingId == 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.rules[_].action == enum_RuleAction[_]
    input.Body.policy.rules[_].conditions[_].iam == enum_ConditionIam[_]
    input.Body.policy.rules[_].conditions[_].op == enum_ConditionOp[_]
    input.Body.policy.rules[_].conditions[_].svc == STRING
    input.Body.policy.rules[_].conditions[_].sys == enum_ConditionSys[_]
    input.Body.policy.rules[_].conditions[_].values[_] == STRING
    input.Body.policy.rules[_].description == STRING
    input.Body.policy.rules[_].ins[_] == STRING
    input.Body.policy.rules[_].logConfigs[_].cloudAudit.authorizationLoggingOptions.permissionType == enum_AuthorizationLoggingOptionsPermissionType[_]
    input.Body.policy.rules[_].logConfigs[_].cloudAudit.logName == enum_LogConfigCloudAuditOptionsLogName[_]
    input.Body.policy.rules[_].logConfigs[_].counter.customFields[_].name == STRING
    input.Body.policy.rules[_].logConfigs[_].counter.customFields[_].value == STRING
    input.Body.policy.rules[_].logConfigs[_].counter.field == STRING
    input.Body.policy.rules[_].logConfigs[_].counter.metric == STRING
    input.Body.policy.rules[_].logConfigs[_].dataAccess.logMode == enum_LogConfigDataAccessOptionsLogMode[_]
    input.Body.policy.rules[_].notIns[_] == STRING
    input.Body.policy.rules[_].permissions[_] == STRING
    input.Body.policy.version == INTEGER
    input.ReqMap.ProjectID == STRING
    input.ReqMap.resource == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.snapshots.setLabels

valid {
    input.Body.labelFingerprint == STRING
    input.Body.labels.STRING == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.resource == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.snapshots.testIamPermissions

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

compute.sslCertificates.aggregatedList

valid {
    input.ReqMap.ProjectID == STRING
    input.Qs.filter == STRING
    input.Qs.includeAllScopes == BOOLEAN
    input.Qs.maxResults == INTEGER
    input.Qs.orderBy == STRING
    input.Qs.pageToken == STRING
    input.Qs.returnPartialSuccess == BOOLEAN
    input.Qs.serviceProjectNumber == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.sslCertificates.delete

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

compute.sslCertificates.get

valid {
    input.ReqMap.ProjectID == STRING
    input.ReqMap.sslCertificate == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.sslCertificates.insert

enum_SslCertificateManagedSslCertificateDomainStatus := [ "ACTIVE", "DOMAIN_STATUS_UNSPECIFIED", "FAILED_CAA_CHECKING", "FAILED_CAA_FORBIDDEN", "FAILED_NOT_VISIBLE", "FAILED_RATE_LIMITED", "PROVISIONING" ]
enum_SslCertificateManagedSslCertificateStatus := [ "ACTIVE", "MANAGED_CERTIFICATE_STATUS_UNSPECIFIED", "PROVISIONING", "PROVISIONING_FAILED", "PROVISIONING_FAILED_PERMANENTLY", "RENEWAL_FAILED" ]
enum_SslCertificateType := [ "MANAGED", "SELF_MANAGED", "TYPE_UNSPECIFIED" ]

valid {
    input.Body.certificate == STRING
    input.Body.creationTimestamp == STRING
    input.Body.description == STRING
    input.Body.expireTime == STRING
    input.Body.id == STRING
    input.Body.kind == STRING
    input.Body.managed.domainStatus.STRING == enum_SslCertificateManagedSslCertificateDomainStatus[_]
    input.Body.managed.domains[_] == STRING
    input.Body.managed.status == enum_SslCertificateManagedSslCertificateStatus[_]
    input.Body.name == STRING
    input.Body.privateKey == STRING
    input.Body.region == STRING
    input.Body.selfLink == STRING
    input.Body.selfManaged.certificate == STRING
    input.Body.selfManaged.privateKey == STRING
    input.Body.subjectAlternativeNames[_] == STRING
    input.Body.type == enum_SslCertificateType[_]
    input.ReqMap.ProjectID == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.sslCertificates.list

valid {
    input.ReqMap.ProjectID == STRING
    input.Qs.filter == STRING
    input.Qs.maxResults == INTEGER
    input.Qs.orderBy == STRING
    input.Qs.pageToken == STRING
    input.Qs.returnPartialSuccess == BOOLEAN
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.sslCertificates.testIamPermissions

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

compute.sslPolicies.aggregatedList

valid {
    input.ReqMap.ProjectID == STRING
    input.Qs.filter == STRING
    input.Qs.includeAllScopes == BOOLEAN
    input.Qs.maxResults == INTEGER
    input.Qs.orderBy == STRING
    input.Qs.pageToken == STRING
    input.Qs.returnPartialSuccess == BOOLEAN
    input.Qs.serviceProjectNumber == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.sslPolicies.delete

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

compute.sslPolicies.get

valid {
    input.ReqMap.ProjectID == STRING
    input.ReqMap.sslPolicy == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.sslPolicies.insert

enum_SslPolicyMinTlsVersion := [ "TLS_1_0", "TLS_1_1", "TLS_1_2" ]
enum_SslPolicyProfile := [ "COMPATIBLE", "CUSTOM", "MODERN", "RESTRICTED" ]
enum_SslPolicyWarningsCode := [ "CLEANUP_FAILED", "DEPRECATED_RESOURCE_USED", "DEPRECATED_TYPE_USED", "DISK_SIZE_LARGER_THAN_IMAGE_SIZE", "EXPERIMENTAL_TYPE_USED", "EXTERNAL_API_WARNING", "FIELD_VALUE_OVERRIDEN", "INJECTED_KERNELS_DEPRECATED", "INVALID_HEALTH_CHECK_FOR_DYNAMIC_WIEGHTED_LB", "LARGE_DEPLOYMENT_WARNING", "LIST_OVERHEAD_QUOTA_EXCEED", "MISSING_TYPE_DEPENDENCY", "NEXT_HOP_ADDRESS_NOT_ASSIGNED", "NEXT_HOP_CANNOT_IP_FORWARD", "NEXT_HOP_INSTANCE_HAS_NO_IPV6_INTERFACE", "NEXT_HOP_INSTANCE_NOT_FOUND", "NEXT_HOP_INSTANCE_NOT_ON_NETWORK", "NEXT_HOP_NOT_RUNNING", "NOT_CRITICAL_ERROR", "NO_RESULTS_ON_PAGE", "PARTIAL_SUCCESS", "REQUIRED_TOS_AGREEMENT", "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING", "RESOURCE_NOT_DELETED", "SCHEMA_VALIDATION_IGNORED", "SINGLE_INSTANCE_PROPERTY_TEMPLATE", "UNDECLARED_PROPERTIES", "UNREACHABLE" ]

valid {
    input.Body.creationTimestamp == STRING
    input.Body.customFeatures[_] == STRING
    input.Body.description == STRING
    input.Body.enabledFeatures[_] == STRING
    input.Body.fingerprint == STRING
    input.Body.id == STRING
    input.Body.kind == STRING
    input.Body.minTlsVersion == enum_SslPolicyMinTlsVersion[_]
    input.Body.name == STRING
    input.Body.profile == enum_SslPolicyProfile[_]
    input.Body.region == STRING
    input.Body.selfLink == STRING
    input.Body.warnings[_].code == enum_SslPolicyWarningsCode[_]
    input.Body.warnings[_].data[_].key == STRING
    input.Body.warnings[_].data[_].value == STRING
    input.Body.warnings[_].message == STRING
    input.ReqMap.ProjectID == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.sslPolicies.list

valid {
    input.ReqMap.ProjectID == STRING
    input.Qs.filter == STRING
    input.Qs.maxResults == INTEGER
    input.Qs.orderBy == STRING
    input.Qs.pageToken == STRING
    input.Qs.returnPartialSuccess == BOOLEAN
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.sslPolicies.listAvailableFeatures

valid {
    input.ReqMap.ProjectID == STRING
    input.Qs.filter == STRING
    input.Qs.maxResults == INTEGER
    input.Qs.orderBy == STRING
    input.Qs.pageToken == STRING
    input.Qs.returnPartialSuccess == BOOLEAN
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.sslPolicies.patch

enum_SslPolicyMinTlsVersion := [ "TLS_1_0", "TLS_1_1", "TLS_1_2" ]
enum_SslPolicyProfile := [ "COMPATIBLE", "CUSTOM", "MODERN", "RESTRICTED" ]
enum_SslPolicyWarningsCode := [ "CLEANUP_FAILED", "DEPRECATED_RESOURCE_USED", "DEPRECATED_TYPE_USED", "DISK_SIZE_LARGER_THAN_IMAGE_SIZE", "EXPERIMENTAL_TYPE_USED", "EXTERNAL_API_WARNING", "FIELD_VALUE_OVERRIDEN", "INJECTED_KERNELS_DEPRECATED", "INVALID_HEALTH_CHECK_FOR_DYNAMIC_WIEGHTED_LB", "LARGE_DEPLOYMENT_WARNING", "LIST_OVERHEAD_QUOTA_EXCEED", "MISSING_TYPE_DEPENDENCY", "NEXT_HOP_ADDRESS_NOT_ASSIGNED", "NEXT_HOP_CANNOT_IP_FORWARD", "NEXT_HOP_INSTANCE_HAS_NO_IPV6_INTERFACE", "NEXT_HOP_INSTANCE_NOT_FOUND", "NEXT_HOP_INSTANCE_NOT_ON_NETWORK", "NEXT_HOP_NOT_RUNNING", "NOT_CRITICAL_ERROR", "NO_RESULTS_ON_PAGE", "PARTIAL_SUCCESS", "REQUIRED_TOS_AGREEMENT", "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING", "RESOURCE_NOT_DELETED", "SCHEMA_VALIDATION_IGNORED", "SINGLE_INSTANCE_PROPERTY_TEMPLATE", "UNDECLARED_PROPERTIES", "UNREACHABLE" ]

valid {
    input.Body.creationTimestamp == STRING
    input.Body.customFeatures[_] == STRING
    input.Body.description == STRING
    input.Body.enabledFeatures[_] == STRING
    input.Body.fingerprint == STRING
    input.Body.id == STRING
    input.Body.kind == STRING
    input.Body.minTlsVersion == enum_SslPolicyMinTlsVersion[_]
    input.Body.name == STRING
    input.Body.profile == enum_SslPolicyProfile[_]
    input.Body.region == STRING
    input.Body.selfLink == STRING
    input.Body.warnings[_].code == enum_SslPolicyWarningsCode[_]
    input.Body.warnings[_].data[_].key == STRING
    input.Body.warnings[_].data[_].value == STRING
    input.Body.warnings[_].message == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.sslPolicy == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.sslPolicies.testIamPermissions

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

compute.storagePoolTypes.aggregatedList

valid {
    input.ReqMap.ProjectID == STRING
    input.Qs.filter == STRING
    input.Qs.includeAllScopes == BOOLEAN
    input.Qs.maxResults == INTEGER
    input.Qs.orderBy == STRING
    input.Qs.pageToken == STRING
    input.Qs.returnPartialSuccess == BOOLEAN
    input.Qs.serviceProjectNumber == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.storagePoolTypes.get

valid {
    input.ReqMap.ProjectID == STRING
    input.ReqMap.storagePoolType == STRING
    input.ReqMap.zone == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.storagePoolTypes.list

valid {
    input.ReqMap.ProjectID == STRING
    input.ReqMap.zone == STRING
    input.Qs.filter == STRING
    input.Qs.maxResults == INTEGER
    input.Qs.orderBy == STRING
    input.Qs.pageToken == STRING
    input.Qs.returnPartialSuccess == BOOLEAN
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.storagePools.aggregatedList

valid {
    input.ReqMap.ProjectID == STRING
    input.Qs.filter == STRING
    input.Qs.includeAllScopes == BOOLEAN
    input.Qs.maxResults == INTEGER
    input.Qs.orderBy == STRING
    input.Qs.pageToken == STRING
    input.Qs.returnPartialSuccess == BOOLEAN
    input.Qs.serviceProjectNumber == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.storagePools.delete

valid {
    input.ReqMap.ProjectID == STRING
    input.ReqMap.storagePool == STRING
    input.ReqMap.zone == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.storagePools.get

valid {
    input.ReqMap.ProjectID == STRING
    input.ReqMap.storagePool == STRING
    input.ReqMap.zone == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.storagePools.getIamPolicy

valid {
    input.ReqMap.ProjectID == STRING
    input.ReqMap.resource == STRING
    input.ReqMap.zone == STRING
    input.Qs.optionsRequestedPolicyVersion == INTEGER
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.storagePools.insert

enum_StoragePoolCapacityProvisioningType := [ "ADVANCED", "STANDARD", "UNSPECIFIED" ]
enum_StoragePoolPerformanceProvisioningType := [ "ADVANCED", "STANDARD", "UNSPECIFIED" ]
enum_StoragePoolState := [ "CREATING", "DELETING", "FAILED", "READY" ]

valid {
    input.Body.capacityProvisioningType == enum_StoragePoolCapacityProvisioningType[_]
    input.Body.creationTimestamp == STRING
    input.Body.description == STRING
    input.Body.id == STRING
    input.Body.kind == STRING
    input.Body.labelFingerprint == STRING
    input.Body.labels.STRING == STRING
    input.Body.name == STRING
    input.Body.performanceProvisioningType == enum_StoragePoolPerformanceProvisioningType[_]
    input.Body.poolProvisionedCapacityGb == STRING
    input.Body.poolProvisionedIops == STRING
    input.Body.poolProvisionedThroughput == STRING
    input.Body.resourceStatus.diskCount == STRING
    input.Body.resourceStatus.lastResizeTimestamp == STRING
    input.Body.resourceStatus.maxTotalProvisionedDiskCapacityGb == STRING
    input.Body.resourceStatus.poolUsedCapacityBytes == STRING
    input.Body.resourceStatus.poolUsedIops == STRING
    input.Body.resourceStatus.poolUsedThroughput == STRING
    input.Body.resourceStatus.poolUserWrittenBytes == STRING
    input.Body.resourceStatus.totalProvisionedDiskCapacityGb == STRING
    input.Body.resourceStatus.totalProvisionedDiskIops == STRING
    input.Body.resourceStatus.totalProvisionedDiskThroughput == STRING
    input.Body.selfLink == STRING
    input.Body.selfLinkWithId == STRING
    input.Body.state == enum_StoragePoolState[_]
    input.Body.status.diskCount == STRING
    input.Body.status.lastResizeTimestamp == STRING
    input.Body.status.maxTotalProvisionedDiskCapacityGb == STRING
    input.Body.status.poolUsedCapacityBytes == STRING
    input.Body.status.poolUsedIops == STRING
    input.Body.status.poolUsedThroughput == STRING
    input.Body.status.poolUserWrittenBytes == STRING
    input.Body.status.totalProvisionedDiskCapacityGb == STRING
    input.Body.status.totalProvisionedDiskIops == STRING
    input.Body.status.totalProvisionedDiskThroughput == STRING
    input.Body.storagePoolType == STRING
    input.Body.zone == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.zone == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.storagePools.list

valid {
    input.ReqMap.ProjectID == STRING
    input.ReqMap.zone == STRING
    input.Qs.filter == STRING
    input.Qs.maxResults == INTEGER
    input.Qs.orderBy == STRING
    input.Qs.pageToken == STRING
    input.Qs.returnPartialSuccess == BOOLEAN
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.storagePools.listDisks

valid {
    input.ReqMap.ProjectID == STRING
    input.ReqMap.storagePool == STRING
    input.ReqMap.zone == STRING
    input.Qs.filter == STRING
    input.Qs.maxResults == INTEGER
    input.Qs.orderBy == STRING
    input.Qs.pageToken == STRING
    input.Qs.returnPartialSuccess == BOOLEAN
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.storagePools.setIamPolicy

enum_AuditLogConfigLogType := [ "ADMIN_READ", "DATA_READ", "DATA_WRITE", "LOG_TYPE_UNSPECIFIED" ]
enum_AuthorizationLoggingOptionsPermissionType := [ "ADMIN_READ", "ADMIN_WRITE", "DATA_READ", "DATA_WRITE", "PERMISSION_TYPE_UNSPECIFIED" ]
enum_ConditionIam := [ "APPROVER", "ATTRIBUTION", "AUTHORITY", "CREDENTIALS_TYPE", "CREDS_ASSERTION", "JUSTIFICATION_TYPE", "NO_ATTR", "SECURITY_REALM" ]
enum_ConditionOp := [ "DISCHARGED", "EQUALS", "IN", "NOT_EQUALS", "NOT_IN", "NO_OP" ]
enum_ConditionSys := [ "IP", "NAME", "NO_ATTR", "REGION", "SERVICE" ]
enum_LogConfigCloudAuditOptionsLogName := [ "ADMIN_ACTIVITY", "DATA_ACCESS", "UNSPECIFIED_LOG_NAME" ]
enum_LogConfigDataAccessOptionsLogMode := [ "LOG_FAIL_CLOSED", "LOG_MODE_UNSPECIFIED" ]
enum_RuleAction := [ "ALLOW", "ALLOW_WITH_LOG", "DENY", "DENY_WITH_LOG", "LOG", "NO_ACTION" ]

valid {
    input.Body.bindings[_].bindingId == STRING
    input.Body.bindings[_].condition.description == STRING
    input.Body.bindings[_].condition.expression == STRING
    input.Body.bindings[_].condition.location == STRING
    input.Body.bindings[_].condition.title == STRING
    input.Body.bindings[_].members[_] == STRING
    input.Body.bindings[_].role == STRING
    input.Body.etag == STRING
    input.Body.policy.auditConfigs[_].auditLogConfigs[_].exemptedMembers[_] == STRING
    input.Body.policy.auditConfigs[_].auditLogConfigs[_].ignoreChildExemptions == BOOLEAN
    input.Body.policy.auditConfigs[_].auditLogConfigs[_].logType == enum_AuditLogConfigLogType[_]
    input.Body.policy.auditConfigs[_].exemptedMembers[_] == STRING
    input.Body.policy.auditConfigs[_].service == STRING
    input.Body.policy.bindings[_].bindingId == 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.rules[_].action == enum_RuleAction[_]
    input.Body.policy.rules[_].conditions[_].iam == enum_ConditionIam[_]
    input.Body.policy.rules[_].conditions[_].op == enum_ConditionOp[_]
    input.Body.policy.rules[_].conditions[_].svc == STRING
    input.Body.policy.rules[_].conditions[_].sys == enum_ConditionSys[_]
    input.Body.policy.rules[_].conditions[_].values[_] == STRING
    input.Body.policy.rules[_].description == STRING
    input.Body.policy.rules[_].ins[_] == STRING
    input.Body.policy.rules[_].logConfigs[_].cloudAudit.authorizationLoggingOptions.permissionType == enum_AuthorizationLoggingOptionsPermissionType[_]
    input.Body.policy.rules[_].logConfigs[_].cloudAudit.logName == enum_LogConfigCloudAuditOptionsLogName[_]
    input.Body.policy.rules[_].logConfigs[_].counter.customFields[_].name == STRING
    input.Body.policy.rules[_].logConfigs[_].counter.customFields[_].value == STRING
    input.Body.policy.rules[_].logConfigs[_].counter.field == STRING
    input.Body.policy.rules[_].logConfigs[_].counter.metric == STRING
    input.Body.policy.rules[_].logConfigs[_].dataAccess.logMode == enum_LogConfigDataAccessOptionsLogMode[_]
    input.Body.policy.rules[_].notIns[_] == STRING
    input.Body.policy.rules[_].permissions[_] == STRING
    input.Body.policy.version == INTEGER
    input.ReqMap.ProjectID == STRING
    input.ReqMap.resource == STRING
    input.ReqMap.zone == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.storagePools.setLabels

valid {
    input.Body.labelFingerprint == STRING
    input.Body.labels.STRING == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.resource == STRING
    input.ReqMap.zone == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.storagePools.testIamPermissions

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

compute.storagePools.update

enum_StoragePoolCapacityProvisioningType := [ "ADVANCED", "STANDARD", "UNSPECIFIED" ]
enum_StoragePoolPerformanceProvisioningType := [ "ADVANCED", "STANDARD", "UNSPECIFIED" ]
enum_StoragePoolState := [ "CREATING", "DELETING", "FAILED", "READY" ]

valid {
    input.Body.capacityProvisioningType == enum_StoragePoolCapacityProvisioningType[_]
    input.Body.creationTimestamp == STRING
    input.Body.description == STRING
    input.Body.id == STRING
    input.Body.kind == STRING
    input.Body.labelFingerprint == STRING
    input.Body.labels.STRING == STRING
    input.Body.name == STRING
    input.Body.performanceProvisioningType == enum_StoragePoolPerformanceProvisioningType[_]
    input.Body.poolProvisionedCapacityGb == STRING
    input.Body.poolProvisionedIops == STRING
    input.Body.poolProvisionedThroughput == STRING
    input.Body.resourceStatus.diskCount == STRING
    input.Body.resourceStatus.lastResizeTimestamp == STRING
    input.Body.resourceStatus.maxTotalProvisionedDiskCapacityGb == STRING
    input.Body.resourceStatus.poolUsedCapacityBytes == STRING
    input.Body.resourceStatus.poolUsedIops == STRING
    input.Body.resourceStatus.poolUsedThroughput == STRING
    input.Body.resourceStatus.poolUserWrittenBytes == STRING
    input.Body.resourceStatus.totalProvisionedDiskCapacityGb == STRING
    input.Body.resourceStatus.totalProvisionedDiskIops == STRING
    input.Body.resourceStatus.totalProvisionedDiskThroughput == STRING
    input.Body.selfLink == STRING
    input.Body.selfLinkWithId == STRING
    input.Body.state == enum_StoragePoolState[_]
    input.Body.status.diskCount == STRING
    input.Body.status.lastResizeTimestamp == STRING
    input.Body.status.maxTotalProvisionedDiskCapacityGb == STRING
    input.Body.status.poolUsedCapacityBytes == STRING
    input.Body.status.poolUsedIops == STRING
    input.Body.status.poolUsedThroughput == STRING
    input.Body.status.poolUserWrittenBytes == STRING
    input.Body.status.totalProvisionedDiskCapacityGb == STRING
    input.Body.status.totalProvisionedDiskIops == STRING
    input.Body.status.totalProvisionedDiskThroughput == STRING
    input.Body.storagePoolType == STRING
    input.Body.zone == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.storagePool == STRING
    input.ReqMap.zone == STRING
    input.Qs.requestId == STRING
    input.Qs.updateMask == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.subnetworks.aggregatedList

valid {
    input.ReqMap.ProjectID == STRING
    input.Qs.filter == STRING
    input.Qs.includeAllScopes == BOOLEAN
    input.Qs.maxResults == INTEGER
    input.Qs.orderBy == STRING
    input.Qs.pageToken == STRING
    input.Qs.returnPartialSuccess == BOOLEAN
    input.Qs.serviceProjectNumber == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.subnetworks.delete

valid {
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.ReqMap.subnetwork == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.subnetworks.expandIpCidrRange

valid {
    input.Body.ipCidrRange == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.ReqMap.subnetwork == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.subnetworks.get

valid {
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.ReqMap.subnetwork == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.subnetworks.getIamPolicy

valid {
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.ReqMap.resource == STRING
    input.Qs.optionsRequestedPolicyVersion == INTEGER
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.subnetworks.insert

enum_SubnetworkIpv6AccessType := [ "EXTERNAL", "INTERNAL" ]
enum_SubnetworkLogConfigAggregationInterval := [ "INTERVAL_10_MIN", "INTERVAL_15_MIN", "INTERVAL_1_MIN", "INTERVAL_30_SEC", "INTERVAL_5_MIN", "INTERVAL_5_SEC" ]
enum_SubnetworkLogConfigMetadata := [ "CUSTOM_METADATA", "EXCLUDE_ALL_METADATA", "INCLUDE_ALL_METADATA" ]
enum_SubnetworkPrivateIpv6GoogleAccess := [ "DISABLE_GOOGLE_ACCESS", "ENABLE_BIDIRECTIONAL_ACCESS_TO_GOOGLE", "ENABLE_OUTBOUND_VM_ACCESS_TO_GOOGLE" ]
enum_SubnetworkPurpose := [ "GLOBAL_MANAGED_PROXY", "INTERNAL_HTTPS_LOAD_BALANCER", "PRIVATE", "PRIVATE_NAT", "PRIVATE_RFC_1918", "PRIVATE_SERVICE_CONNECT", "REGIONAL_MANAGED_PROXY" ]
enum_SubnetworkRole := [ "ACTIVE", "BACKUP" ]
enum_SubnetworkStackType := [ "IPV4_IPV6", "IPV4_ONLY" ]
enum_SubnetworkState := [ "DRAINING", "READY" ]

valid {
    input.Body.creationTimestamp == STRING
    input.Body.description == STRING
    input.Body.enableFlowLogs == BOOLEAN
    input.Body.externalIpv6Prefix == STRING
    input.Body.fingerprint == STRING
    input.Body.gatewayAddress == STRING
    input.Body.id == STRING
    input.Body.internalIpv6Prefix == STRING
    input.Body.ipCidrRange == STRING
    input.Body.ipv6AccessType == enum_SubnetworkIpv6AccessType[_]
    input.Body.ipv6CidrRange == STRING
    input.Body.kind == STRING
    input.Body.logConfig.aggregationInterval == enum_SubnetworkLogConfigAggregationInterval[_]
    input.Body.logConfig.enable == BOOLEAN
    input.Body.logConfig.filterExpr == STRING
    input.Body.logConfig.flowSampling == NUMBER
    input.Body.logConfig.metadata == enum_SubnetworkLogConfigMetadata[_]
    input.Body.logConfig.metadataFields[_] == STRING
    input.Body.name == STRING
    input.Body.network == STRING
    input.Body.privateIpGoogleAccess == BOOLEAN
    input.Body.privateIpv6GoogleAccess == enum_SubnetworkPrivateIpv6GoogleAccess[_]
    input.Body.purpose == enum_SubnetworkPurpose[_]
    input.Body.region == STRING
    input.Body.reservedInternalRange == STRING
    input.Body.role == enum_SubnetworkRole[_]
    input.Body.secondaryIpRanges[_].ipCidrRange == STRING
    input.Body.secondaryIpRanges[_].rangeName == STRING
    input.Body.secondaryIpRanges[_].reservedInternalRange == STRING
    input.Body.selfLink == STRING
    input.Body.stackType == enum_SubnetworkStackType[_]
    input.Body.state == enum_SubnetworkState[_]
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.subnetworks.list

valid {
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.Qs.filter == STRING
    input.Qs.maxResults == INTEGER
    input.Qs.orderBy == STRING
    input.Qs.pageToken == STRING
    input.Qs.returnPartialSuccess == BOOLEAN
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.subnetworks.listUsable

valid {
    input.ReqMap.ProjectID == STRING
    input.Qs.filter == STRING
    input.Qs.maxResults == INTEGER
    input.Qs.orderBy == STRING
    input.Qs.pageToken == STRING
    input.Qs.returnPartialSuccess == BOOLEAN
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.subnetworks.patch

enum_SubnetworkIpv6AccessType := [ "EXTERNAL", "INTERNAL" ]
enum_SubnetworkLogConfigAggregationInterval := [ "INTERVAL_10_MIN", "INTERVAL_15_MIN", "INTERVAL_1_MIN", "INTERVAL_30_SEC", "INTERVAL_5_MIN", "INTERVAL_5_SEC" ]
enum_SubnetworkLogConfigMetadata := [ "CUSTOM_METADATA", "EXCLUDE_ALL_METADATA", "INCLUDE_ALL_METADATA" ]
enum_SubnetworkPrivateIpv6GoogleAccess := [ "DISABLE_GOOGLE_ACCESS", "ENABLE_BIDIRECTIONAL_ACCESS_TO_GOOGLE", "ENABLE_OUTBOUND_VM_ACCESS_TO_GOOGLE" ]
enum_SubnetworkPurpose := [ "GLOBAL_MANAGED_PROXY", "INTERNAL_HTTPS_LOAD_BALANCER", "PRIVATE", "PRIVATE_NAT", "PRIVATE_RFC_1918", "PRIVATE_SERVICE_CONNECT", "REGIONAL_MANAGED_PROXY" ]
enum_SubnetworkRole := [ "ACTIVE", "BACKUP" ]
enum_SubnetworkStackType := [ "IPV4_IPV6", "IPV4_ONLY" ]
enum_SubnetworkState := [ "DRAINING", "READY" ]

valid {
    input.Body.creationTimestamp == STRING
    input.Body.description == STRING
    input.Body.enableFlowLogs == BOOLEAN
    input.Body.externalIpv6Prefix == STRING
    input.Body.fingerprint == STRING
    input.Body.gatewayAddress == STRING
    input.Body.id == STRING
    input.Body.internalIpv6Prefix == STRING
    input.Body.ipCidrRange == STRING
    input.Body.ipv6AccessType == enum_SubnetworkIpv6AccessType[_]
    input.Body.ipv6CidrRange == STRING
    input.Body.kind == STRING
    input.Body.logConfig.aggregationInterval == enum_SubnetworkLogConfigAggregationInterval[_]
    input.Body.logConfig.enable == BOOLEAN
    input.Body.logConfig.filterExpr == STRING
    input.Body.logConfig.flowSampling == NUMBER
    input.Body.logConfig.metadata == enum_SubnetworkLogConfigMetadata[_]
    input.Body.logConfig.metadataFields[_] == STRING
    input.Body.name == STRING
    input.Body.network == STRING
    input.Body.privateIpGoogleAccess == BOOLEAN
    input.Body.privateIpv6GoogleAccess == enum_SubnetworkPrivateIpv6GoogleAccess[_]
    input.Body.purpose == enum_SubnetworkPurpose[_]
    input.Body.region == STRING
    input.Body.reservedInternalRange == STRING
    input.Body.role == enum_SubnetworkRole[_]
    input.Body.secondaryIpRanges[_].ipCidrRange == STRING
    input.Body.secondaryIpRanges[_].rangeName == STRING
    input.Body.secondaryIpRanges[_].reservedInternalRange == STRING
    input.Body.selfLink == STRING
    input.Body.stackType == enum_SubnetworkStackType[_]
    input.Body.state == enum_SubnetworkState[_]
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.ReqMap.subnetwork == STRING
    input.Qs.drainTimeoutSeconds == INTEGER
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.subnetworks.setIamPolicy

enum_AuditLogConfigLogType := [ "ADMIN_READ", "DATA_READ", "DATA_WRITE", "LOG_TYPE_UNSPECIFIED" ]
enum_AuthorizationLoggingOptionsPermissionType := [ "ADMIN_READ", "ADMIN_WRITE", "DATA_READ", "DATA_WRITE", "PERMISSION_TYPE_UNSPECIFIED" ]
enum_ConditionIam := [ "APPROVER", "ATTRIBUTION", "AUTHORITY", "CREDENTIALS_TYPE", "CREDS_ASSERTION", "JUSTIFICATION_TYPE", "NO_ATTR", "SECURITY_REALM" ]
enum_ConditionOp := [ "DISCHARGED", "EQUALS", "IN", "NOT_EQUALS", "NOT_IN", "NO_OP" ]
enum_ConditionSys := [ "IP", "NAME", "NO_ATTR", "REGION", "SERVICE" ]
enum_LogConfigCloudAuditOptionsLogName := [ "ADMIN_ACTIVITY", "DATA_ACCESS", "UNSPECIFIED_LOG_NAME" ]
enum_LogConfigDataAccessOptionsLogMode := [ "LOG_FAIL_CLOSED", "LOG_MODE_UNSPECIFIED" ]
enum_RuleAction := [ "ALLOW", "ALLOW_WITH_LOG", "DENY", "DENY_WITH_LOG", "LOG", "NO_ACTION" ]

valid {
    input.Body.bindings[_].bindingId == STRING
    input.Body.bindings[_].condition.description == STRING
    input.Body.bindings[_].condition.expression == STRING
    input.Body.bindings[_].condition.location == STRING
    input.Body.bindings[_].condition.title == STRING
    input.Body.bindings[_].members[_] == STRING
    input.Body.bindings[_].role == STRING
    input.Body.etag == STRING
    input.Body.policy.auditConfigs[_].auditLogConfigs[_].exemptedMembers[_] == STRING
    input.Body.policy.auditConfigs[_].auditLogConfigs[_].ignoreChildExemptions == BOOLEAN
    input.Body.policy.auditConfigs[_].auditLogConfigs[_].logType == enum_AuditLogConfigLogType[_]
    input.Body.policy.auditConfigs[_].exemptedMembers[_] == STRING
    input.Body.policy.auditConfigs[_].service == STRING
    input.Body.policy.bindings[_].bindingId == 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.rules[_].action == enum_RuleAction[_]
    input.Body.policy.rules[_].conditions[_].iam == enum_ConditionIam[_]
    input.Body.policy.rules[_].conditions[_].op == enum_ConditionOp[_]
    input.Body.policy.rules[_].conditions[_].svc == STRING
    input.Body.policy.rules[_].conditions[_].sys == enum_ConditionSys[_]
    input.Body.policy.rules[_].conditions[_].values[_] == STRING
    input.Body.policy.rules[_].description == STRING
    input.Body.policy.rules[_].ins[_] == STRING
    input.Body.policy.rules[_].logConfigs[_].cloudAudit.authorizationLoggingOptions.permissionType == enum_AuthorizationLoggingOptionsPermissionType[_]
    input.Body.policy.rules[_].logConfigs[_].cloudAudit.logName == enum_LogConfigCloudAuditOptionsLogName[_]
    input.Body.policy.rules[_].logConfigs[_].counter.customFields[_].name == STRING
    input.Body.policy.rules[_].logConfigs[_].counter.customFields[_].value == STRING
    input.Body.policy.rules[_].logConfigs[_].counter.field == STRING
    input.Body.policy.rules[_].logConfigs[_].counter.metric == STRING
    input.Body.policy.rules[_].logConfigs[_].dataAccess.logMode == enum_LogConfigDataAccessOptionsLogMode[_]
    input.Body.policy.rules[_].notIns[_] == STRING
    input.Body.policy.rules[_].permissions[_] == STRING
    input.Body.policy.version == INTEGER
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.ReqMap.resource == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.subnetworks.setPrivateIpGoogleAccess

valid {
    input.Body.privateIpGoogleAccess == BOOLEAN
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.ReqMap.subnetwork == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.subnetworks.testIamPermissions

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

compute.targetGrpcProxies.delete

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

compute.targetGrpcProxies.get

valid {
    input.ReqMap.ProjectID == STRING
    input.ReqMap.targetGrpcProxy == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.targetGrpcProxies.insert

valid {
    input.Body.creationTimestamp == STRING
    input.Body.description == STRING
    input.Body.fingerprint == STRING
    input.Body.id == STRING
    input.Body.kind == STRING
    input.Body.name == STRING
    input.Body.selfLink == STRING
    input.Body.selfLinkWithId == STRING
    input.Body.urlMap == STRING
    input.Body.validateForProxyless == BOOLEAN
    input.ReqMap.ProjectID == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.targetGrpcProxies.list

valid {
    input.ReqMap.ProjectID == STRING
    input.Qs.filter == STRING
    input.Qs.maxResults == INTEGER
    input.Qs.orderBy == STRING
    input.Qs.pageToken == STRING
    input.Qs.returnPartialSuccess == BOOLEAN
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.targetGrpcProxies.patch

valid {
    input.Body.creationTimestamp == STRING
    input.Body.description == STRING
    input.Body.fingerprint == STRING
    input.Body.id == STRING
    input.Body.kind == STRING
    input.Body.name == STRING
    input.Body.selfLink == STRING
    input.Body.selfLinkWithId == STRING
    input.Body.urlMap == STRING
    input.Body.validateForProxyless == BOOLEAN
    input.ReqMap.ProjectID == STRING
    input.ReqMap.targetGrpcProxy == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.targetGrpcProxies.testIamPermissions

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

compute.targetHttpProxies.aggregatedList

valid {
    input.ReqMap.ProjectID == STRING
    input.Qs.filter == STRING
    input.Qs.includeAllScopes == BOOLEAN
    input.Qs.maxResults == INTEGER
    input.Qs.orderBy == STRING
    input.Qs.pageToken == STRING
    input.Qs.returnPartialSuccess == BOOLEAN
    input.Qs.serviceProjectNumber == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.targetHttpProxies.delete

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

compute.targetHttpProxies.get

valid {
    input.ReqMap.ProjectID == STRING
    input.ReqMap.targetHttpProxy == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.targetHttpProxies.insert

valid {
    input.Body.creationTimestamp == STRING
    input.Body.description == STRING
    input.Body.fingerprint == STRING
    input.Body.httpKeepAliveTimeoutSec == INTEGER
    input.Body.id == STRING
    input.Body.kind == STRING
    input.Body.name == STRING
    input.Body.proxyBind == BOOLEAN
    input.Body.region == STRING
    input.Body.selfLink == STRING
    input.Body.urlMap == STRING
    input.ReqMap.ProjectID == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.targetHttpProxies.list

valid {
    input.ReqMap.ProjectID == STRING
    input.Qs.filter == STRING
    input.Qs.maxResults == INTEGER
    input.Qs.orderBy == STRING
    input.Qs.pageToken == STRING
    input.Qs.returnPartialSuccess == BOOLEAN
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.targetHttpProxies.patch

valid {
    input.Body.creationTimestamp == STRING
    input.Body.description == STRING
    input.Body.fingerprint == STRING
    input.Body.httpKeepAliveTimeoutSec == INTEGER
    input.Body.id == STRING
    input.Body.kind == STRING
    input.Body.name == STRING
    input.Body.proxyBind == BOOLEAN
    input.Body.region == STRING
    input.Body.selfLink == STRING
    input.Body.urlMap == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.targetHttpProxy == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.targetHttpProxies.setUrlMap

valid {
    input.Body.urlMap == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.targetHttpProxy == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.targetHttpProxies.testIamPermissions

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

compute.targetHttpsProxies.aggregatedList

valid {
    input.ReqMap.ProjectID == STRING
    input.Qs.filter == STRING
    input.Qs.includeAllScopes == BOOLEAN
    input.Qs.maxResults == INTEGER
    input.Qs.orderBy == STRING
    input.Qs.pageToken == STRING
    input.Qs.returnPartialSuccess == BOOLEAN
    input.Qs.serviceProjectNumber == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.targetHttpsProxies.delete

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

compute.targetHttpsProxies.get

valid {
    input.ReqMap.ProjectID == STRING
    input.ReqMap.targetHttpsProxy == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.targetHttpsProxies.insert

enum_TargetHttpsProxyQuicOverride := [ "DISABLE", "ENABLE", "NONE" ]

valid {
    input.Body.authorizationPolicy == STRING
    input.Body.certificateMap == STRING
    input.Body.creationTimestamp == STRING
    input.Body.description == STRING
    input.Body.fingerprint == STRING
    input.Body.httpKeepAliveTimeoutSec == INTEGER
    input.Body.id == STRING
    input.Body.kind == STRING
    input.Body.name == STRING
    input.Body.proxyBind == BOOLEAN
    input.Body.quicOverride == enum_TargetHttpsProxyQuicOverride[_]
    input.Body.region == STRING
    input.Body.selfLink == STRING
    input.Body.serverTlsPolicy == STRING
    input.Body.sslCertificates[_] == STRING
    input.Body.sslPolicy == STRING
    input.Body.urlMap == STRING
    input.ReqMap.ProjectID == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.targetHttpsProxies.list

valid {
    input.ReqMap.ProjectID == STRING
    input.Qs.filter == STRING
    input.Qs.maxResults == INTEGER
    input.Qs.orderBy == STRING
    input.Qs.pageToken == STRING
    input.Qs.returnPartialSuccess == BOOLEAN
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.targetHttpsProxies.patch

enum_TargetHttpsProxyQuicOverride := [ "DISABLE", "ENABLE", "NONE" ]

valid {
    input.Body.authorizationPolicy == STRING
    input.Body.certificateMap == STRING
    input.Body.creationTimestamp == STRING
    input.Body.description == STRING
    input.Body.fingerprint == STRING
    input.Body.httpKeepAliveTimeoutSec == INTEGER
    input.Body.id == STRING
    input.Body.kind == STRING
    input.Body.name == STRING
    input.Body.proxyBind == BOOLEAN
    input.Body.quicOverride == enum_TargetHttpsProxyQuicOverride[_]
    input.Body.region == STRING
    input.Body.selfLink == STRING
    input.Body.serverTlsPolicy == STRING
    input.Body.sslCertificates[_] == STRING
    input.Body.sslPolicy == STRING
    input.Body.urlMap == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.targetHttpsProxy == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.targetHttpsProxies.setCertificateMap

valid {
    input.Body.certificateMap == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.targetHttpsProxy == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.targetHttpsProxies.setQuicOverride

enum_TargetHttpsProxiesSetQuicOverrideRequestQuicOverride := [ "DISABLE", "ENABLE", "NONE" ]

valid {
    input.Body.quicOverride == enum_TargetHttpsProxiesSetQuicOverrideRequestQuicOverride[_]
    input.ReqMap.ProjectID == STRING
    input.ReqMap.targetHttpsProxy == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.targetHttpsProxies.setSslCertificates

valid {
    input.Body.sslCertificates[_] == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.targetHttpsProxy == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.targetHttpsProxies.setSslPolicy

valid {
    input.Body.sslPolicy == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.targetHttpsProxy == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.targetHttpsProxies.setUrlMap

valid {
    input.Body.urlMap == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.targetHttpsProxy == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.targetHttpsProxies.testIamPermissions

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

compute.targetInstances.aggregatedList

valid {
    input.ReqMap.ProjectID == STRING
    input.Qs.filter == STRING
    input.Qs.includeAllScopes == BOOLEAN
    input.Qs.maxResults == INTEGER
    input.Qs.orderBy == STRING
    input.Qs.pageToken == STRING
    input.Qs.returnPartialSuccess == BOOLEAN
    input.Qs.serviceProjectNumber == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.targetInstances.delete

valid {
    input.ReqMap.ProjectID == STRING
    input.ReqMap.targetInstance == STRING
    input.ReqMap.zone == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.targetInstances.get

valid {
    input.ReqMap.ProjectID == STRING
    input.ReqMap.targetInstance == STRING
    input.ReqMap.zone == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.targetInstances.insert

enum_TargetInstanceNatPolicy := [ "NO_NAT" ]

valid {
    input.Body.creationTimestamp == STRING
    input.Body.description == STRING
    input.Body.id == STRING
    input.Body.instance == STRING
    input.Body.kind == STRING
    input.Body.name == STRING
    input.Body.natPolicy == enum_TargetInstanceNatPolicy[_]
    input.Body.network == STRING
    input.Body.securityPolicy == STRING
    input.Body.selfLink == STRING
    input.Body.zone == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.zone == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.targetInstances.list

valid {
    input.ReqMap.ProjectID == STRING
    input.ReqMap.zone == STRING
    input.Qs.filter == STRING
    input.Qs.maxResults == INTEGER
    input.Qs.orderBy == STRING
    input.Qs.pageToken == STRING
    input.Qs.returnPartialSuccess == BOOLEAN
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.targetInstances.setSecurityPolicy

valid {
    input.Body.securityPolicy == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.targetInstance == STRING
    input.ReqMap.zone == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.targetInstances.testIamPermissions

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

compute.targetPools.addHealthCheck

valid {
    input.Body.healthChecks[_].healthCheck == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.ReqMap.targetPool == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.targetPools.addInstance

valid {
    input.Body.instances[_].instance == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.ReqMap.targetPool == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.targetPools.aggregatedList

valid {
    input.ReqMap.ProjectID == STRING
    input.Qs.filter == STRING
    input.Qs.includeAllScopes == BOOLEAN
    input.Qs.maxResults == INTEGER
    input.Qs.orderBy == STRING
    input.Qs.pageToken == STRING
    input.Qs.returnPartialSuccess == BOOLEAN
    input.Qs.serviceProjectNumber == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.targetPools.delete

valid {
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.ReqMap.targetPool == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.targetPools.get

valid {
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.ReqMap.targetPool == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.targetPools.getHealth

valid {
    input.Body.instance == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.ReqMap.targetPool == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.targetPools.insert

enum_TargetPoolSessionAffinity := [ "CLIENT_IP", "CLIENT_IP_NO_DESTINATION", "CLIENT_IP_PORT_PROTO", "CLIENT_IP_PROTO", "GENERATED_COOKIE", "HEADER_FIELD", "HTTP_COOKIE", "NONE" ]

valid {
    input.Body.backupPool == STRING
    input.Body.creationTimestamp == STRING
    input.Body.description == STRING
    input.Body.failoverRatio == NUMBER
    input.Body.healthChecks[_] == STRING
    input.Body.id == STRING
    input.Body.instances[_] == STRING
    input.Body.kind == STRING
    input.Body.name == STRING
    input.Body.region == STRING
    input.Body.securityPolicy == STRING
    input.Body.selfLink == STRING
    input.Body.sessionAffinity == enum_TargetPoolSessionAffinity[_]
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.targetPools.list

valid {
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.Qs.filter == STRING
    input.Qs.maxResults == INTEGER
    input.Qs.orderBy == STRING
    input.Qs.pageToken == STRING
    input.Qs.returnPartialSuccess == BOOLEAN
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.targetPools.removeHealthCheck

valid {
    input.Body.healthChecks[_].healthCheck == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.ReqMap.targetPool == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.targetPools.removeInstance

valid {
    input.Body.instances[_].instance == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.ReqMap.targetPool == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.targetPools.setBackup

valid {
    input.Body.target == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.ReqMap.targetPool == STRING
    input.Qs.failoverRatio == NUMBER
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.targetPools.setSecurityPolicy

valid {
    input.Body.securityPolicy == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.ReqMap.targetPool == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.targetPools.testIamPermissions

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

compute.targetSslProxies.delete

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

compute.targetSslProxies.get

valid {
    input.ReqMap.ProjectID == STRING
    input.ReqMap.targetSslProxy == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.targetSslProxies.insert

enum_TargetSslProxyProxyHeader := [ "NONE", "PROXY_V1" ]

valid {
    input.Body.certificateMap == STRING
    input.Body.creationTimestamp == STRING
    input.Body.description == STRING
    input.Body.id == STRING
    input.Body.kind == STRING
    input.Body.name == STRING
    input.Body.proxyHeader == enum_TargetSslProxyProxyHeader[_]
    input.Body.selfLink == STRING
    input.Body.service == STRING
    input.Body.sslCertificates[_] == STRING
    input.Body.sslPolicy == STRING
    input.ReqMap.ProjectID == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.targetSslProxies.list

valid {
    input.ReqMap.ProjectID == STRING
    input.Qs.filter == STRING
    input.Qs.maxResults == INTEGER
    input.Qs.orderBy == STRING
    input.Qs.pageToken == STRING
    input.Qs.returnPartialSuccess == BOOLEAN
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.targetSslProxies.setBackendService

valid {
    input.Body.service == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.targetSslProxy == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.targetSslProxies.setCertificateMap

valid {
    input.Body.certificateMap == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.targetSslProxy == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.targetSslProxies.setProxyHeader

enum_TargetSslProxiesSetProxyHeaderRequestProxyHeader := [ "NONE", "PROXY_V1" ]

valid {
    input.Body.proxyHeader == enum_TargetSslProxiesSetProxyHeaderRequestProxyHeader[_]
    input.ReqMap.ProjectID == STRING
    input.ReqMap.targetSslProxy == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.targetSslProxies.setSslCertificates

valid {
    input.Body.sslCertificates[_] == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.targetSslProxy == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.targetSslProxies.setSslPolicy

valid {
    input.Body.sslPolicy == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.targetSslProxy == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.targetSslProxies.testIamPermissions

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

compute.targetTcpProxies.aggregatedList

valid {
    input.ReqMap.ProjectID == STRING
    input.Qs.filter == STRING
    input.Qs.includeAllScopes == BOOLEAN
    input.Qs.maxResults == INTEGER
    input.Qs.orderBy == STRING
    input.Qs.pageToken == STRING
    input.Qs.returnPartialSuccess == BOOLEAN
    input.Qs.serviceProjectNumber == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.targetTcpProxies.delete

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

compute.targetTcpProxies.get

valid {
    input.ReqMap.ProjectID == STRING
    input.ReqMap.targetTcpProxy == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.targetTcpProxies.insert

enum_TargetTcpProxyProxyHeader := [ "NONE", "PROXY_V1" ]

valid {
    input.Body.creationTimestamp == STRING
    input.Body.description == STRING
    input.Body.id == STRING
    input.Body.kind == STRING
    input.Body.name == STRING
    input.Body.proxyBind == BOOLEAN
    input.Body.proxyHeader == enum_TargetTcpProxyProxyHeader[_]
    input.Body.region == STRING
    input.Body.selfLink == STRING
    input.Body.service == STRING
    input.ReqMap.ProjectID == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.targetTcpProxies.list

valid {
    input.ReqMap.ProjectID == STRING
    input.Qs.filter == STRING
    input.Qs.maxResults == INTEGER
    input.Qs.orderBy == STRING
    input.Qs.pageToken == STRING
    input.Qs.returnPartialSuccess == BOOLEAN
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.targetTcpProxies.setBackendService

valid {
    input.Body.service == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.targetTcpProxy == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.targetTcpProxies.setProxyHeader

enum_TargetTcpProxiesSetProxyHeaderRequestProxyHeader := [ "NONE", "PROXY_V1" ]

valid {
    input.Body.proxyHeader == enum_TargetTcpProxiesSetProxyHeaderRequestProxyHeader[_]
    input.ReqMap.ProjectID == STRING
    input.ReqMap.targetTcpProxy == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.targetTcpProxies.testIamPermissions

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

compute.targetVpnGateways.aggregatedList

valid {
    input.ReqMap.ProjectID == STRING
    input.Qs.filter == STRING
    input.Qs.includeAllScopes == BOOLEAN
    input.Qs.maxResults == INTEGER
    input.Qs.orderBy == STRING
    input.Qs.pageToken == STRING
    input.Qs.returnPartialSuccess == BOOLEAN
    input.Qs.serviceProjectNumber == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.targetVpnGateways.delete

valid {
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.ReqMap.targetVpnGateway == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.targetVpnGateways.get

valid {
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.ReqMap.targetVpnGateway == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.targetVpnGateways.insert

enum_TargetVpnGatewayStatus := [ "CREATING", "DELETING", "FAILED", "READY" ]

valid {
    input.Body.creationTimestamp == STRING
    input.Body.description == STRING
    input.Body.forwardingRules[_] == STRING
    input.Body.id == STRING
    input.Body.kind == STRING
    input.Body.labelFingerprint == STRING
    input.Body.labels.STRING == STRING
    input.Body.name == STRING
    input.Body.network == STRING
    input.Body.region == STRING
    input.Body.selfLink == STRING
    input.Body.status == enum_TargetVpnGatewayStatus[_]
    input.Body.tunnels[_] == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.targetVpnGateways.list

valid {
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.Qs.filter == STRING
    input.Qs.maxResults == INTEGER
    input.Qs.orderBy == STRING
    input.Qs.pageToken == STRING
    input.Qs.returnPartialSuccess == BOOLEAN
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.targetVpnGateways.setLabels

valid {
    input.Body.labelFingerprint == STRING
    input.Body.labels.STRING == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.ReqMap.resource == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.targetVpnGateways.testIamPermissions

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

compute.urlMaps.aggregatedList

valid {
    input.ReqMap.ProjectID == STRING
    input.Qs.filter == STRING
    input.Qs.includeAllScopes == BOOLEAN
    input.Qs.maxResults == INTEGER
    input.Qs.orderBy == STRING
    input.Qs.pageToken == STRING
    input.Qs.returnPartialSuccess == BOOLEAN
    input.Qs.serviceProjectNumber == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.urlMaps.delete

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

compute.urlMaps.get

valid {
    input.ReqMap.ProjectID == STRING
    input.ReqMap.urlMap == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.urlMaps.insert

enum_HttpRedirectActionRedirectResponseCode := [ "FOUND", "MOVED_PERMANENTLY_DEFAULT", "PERMANENT_REDIRECT", "SEE_OTHER", "TEMPORARY_REDIRECT" ]
enum_MetadataFilterFilterMatchCriteria := [ "MATCH_ALL", "MATCH_ANY", "NOT_SET" ]

valid {
    input.Body.creationTimestamp == STRING
    input.Body.defaultRouteAction.corsPolicy.allowCredentials == BOOLEAN
    input.Body.defaultRouteAction.corsPolicy.allowHeaders[_] == STRING
    input.Body.defaultRouteAction.corsPolicy.allowMethods[_] == STRING
    input.Body.defaultRouteAction.corsPolicy.allowOriginRegexes[_] == STRING
    input.Body.defaultRouteAction.corsPolicy.allowOrigins[_] == STRING
    input.Body.defaultRouteAction.corsPolicy.disabled == BOOLEAN
    input.Body.defaultRouteAction.corsPolicy.exposeHeaders[_] == STRING
    input.Body.defaultRouteAction.corsPolicy.maxAge == INTEGER
    input.Body.defaultRouteAction.faultInjectionPolicy.abort.httpStatus == INTEGER
    input.Body.defaultRouteAction.faultInjectionPolicy.abort.percentage == NUMBER
    input.Body.defaultRouteAction.faultInjectionPolicy.delay.fixedDelay.nanos == INTEGER
    input.Body.defaultRouteAction.faultInjectionPolicy.delay.fixedDelay.seconds == STRING
    input.Body.defaultRouteAction.faultInjectionPolicy.delay.percentage == NUMBER
    input.Body.defaultRouteAction.maxStreamDuration.nanos == INTEGER
    input.Body.defaultRouteAction.maxStreamDuration.seconds == STRING
    input.Body.defaultRouteAction.requestMirrorPolicy.backendService == STRING
    input.Body.defaultRouteAction.retryPolicy.numRetries == INTEGER
    input.Body.defaultRouteAction.retryPolicy.perTryTimeout.nanos == INTEGER
    input.Body.defaultRouteAction.retryPolicy.perTryTimeout.seconds == STRING
    input.Body.defaultRouteAction.retryPolicy.retryConditions[_] == STRING
    input.Body.defaultRouteAction.timeout.nanos == INTEGER
    input.Body.defaultRouteAction.timeout.seconds == STRING
    input.Body.defaultRouteAction.urlRewrite.hostRewrite == STRING
    input.Body.defaultRouteAction.urlRewrite.pathPrefixRewrite == STRING
    input.Body.defaultRouteAction.urlRewrite.pathTemplateRewrite == STRING
    input.Body.defaultRouteAction.weightedBackendServices[_].backendService == STRING
    input.Body.defaultRouteAction.weightedBackendServices[_].headerAction.requestHeadersToAdd[_].headerName == STRING
    input.Body.defaultRouteAction.weightedBackendServices[_].headerAction.requestHeadersToAdd[_].headerValue == STRING
    input.Body.defaultRouteAction.weightedBackendServices[_].headerAction.requestHeadersToAdd[_].replace == BOOLEAN
    input.Body.defaultRouteAction.weightedBackendServices[_].headerAction.requestHeadersToRemove[_] == STRING
    input.Body.defaultRouteAction.weightedBackendServices[_].headerAction.responseHeadersToAdd[_].headerName == STRING
    input.Body.defaultRouteAction.weightedBackendServices[_].headerAction.responseHeadersToAdd[_].headerValue == STRING
    input.Body.defaultRouteAction.weightedBackendServices[_].headerAction.responseHeadersToAdd[_].replace == BOOLEAN
    input.Body.defaultRouteAction.weightedBackendServices[_].headerAction.responseHeadersToRemove[_] == STRING
    input.Body.defaultRouteAction.weightedBackendServices[_].weight == INTEGER
    input.Body.defaultService == STRING
    input.Body.defaultUrlRedirect.hostRedirect == STRING
    input.Body.defaultUrlRedirect.httpsRedirect == BOOLEAN
    input.Body.defaultUrlRedirect.pathRedirect == STRING
    input.Body.defaultUrlRedirect.prefixRedirect == STRING
    input.Body.defaultUrlRedirect.redirectResponseCode == enum_HttpRedirectActionRedirectResponseCode[_]
    input.Body.defaultUrlRedirect.stripQuery == BOOLEAN
    input.Body.description == STRING
    input.Body.fingerprint == STRING
    input.Body.headerAction.requestHeadersToAdd[_].headerName == STRING
    input.Body.headerAction.requestHeadersToAdd[_].headerValue == STRING
    input.Body.headerAction.requestHeadersToAdd[_].replace == BOOLEAN
    input.Body.headerAction.requestHeadersToRemove[_] == STRING
    input.Body.headerAction.responseHeadersToAdd[_].headerName == STRING
    input.Body.headerAction.responseHeadersToAdd[_].headerValue == STRING
    input.Body.headerAction.responseHeadersToAdd[_].replace == BOOLEAN
    input.Body.headerAction.responseHeadersToRemove[_] == STRING
    input.Body.hostRules[_].description == STRING
    input.Body.hostRules[_].hosts[_] == STRING
    input.Body.hostRules[_].pathMatcher == STRING
    input.Body.id == STRING
    input.Body.kind == STRING
    input.Body.name == STRING
    input.Body.pathMatchers[_].defaultRouteAction.corsPolicy.allowCredentials == BOOLEAN
    input.Body.pathMatchers[_].defaultRouteAction.corsPolicy.allowHeaders[_] == STRING
    input.Body.pathMatchers[_].defaultRouteAction.corsPolicy.allowMethods[_] == STRING
    input.Body.pathMatchers[_].defaultRouteAction.corsPolicy.allowOriginRegexes[_] == STRING
    input.Body.pathMatchers[_].defaultRouteAction.corsPolicy.allowOrigins[_] == STRING
    input.Body.pathMatchers[_].defaultRouteAction.corsPolicy.disabled == BOOLEAN
    input.Body.pathMatchers[_].defaultRouteAction.corsPolicy.exposeHeaders[_] == STRING
    input.Body.pathMatchers[_].defaultRouteAction.corsPolicy.maxAge == INTEGER
    input.Body.pathMatchers[_].defaultRouteAction.faultInjectionPolicy.abort.httpStatus == INTEGER
    input.Body.pathMatchers[_].defaultRouteAction.faultInjectionPolicy.abort.percentage == NUMBER
    input.Body.pathMatchers[_].defaultRouteAction.faultInjectionPolicy.delay.fixedDelay.nanos == INTEGER
    input.Body.pathMatchers[_].defaultRouteAction.faultInjectionPolicy.delay.fixedDelay.seconds == STRING
    input.Body.pathMatchers[_].defaultRouteAction.faultInjectionPolicy.delay.percentage == NUMBER
    input.Body.pathMatchers[_].defaultRouteAction.maxStreamDuration.nanos == INTEGER
    input.Body.pathMatchers[_].defaultRouteAction.maxStreamDuration.seconds == STRING
    input.Body.pathMatchers[_].defaultRouteAction.requestMirrorPolicy.backendService == STRING
    input.Body.pathMatchers[_].defaultRouteAction.retryPolicy.numRetries == INTEGER
    input.Body.pathMatchers[_].defaultRouteAction.retryPolicy.perTryTimeout.nanos == INTEGER
    input.Body.pathMatchers[_].defaultRouteAction.retryPolicy.perTryTimeout.seconds == STRING
    input.Body.pathMatchers[_].defaultRouteAction.retryPolicy.retryConditions[_] == STRING
    input.Body.pathMatchers[_].defaultRouteAction.timeout.nanos == INTEGER
    input.Body.pathMatchers[_].defaultRouteAction.timeout.seconds == STRING
    input.Body.pathMatchers[_].defaultRouteAction.urlRewrite.hostRewrite == STRING
    input.Body.pathMatchers[_].defaultRouteAction.urlRewrite.pathPrefixRewrite == STRING
    input.Body.pathMatchers[_].defaultRouteAction.urlRewrite.pathTemplateRewrite == STRING
    input.Body.pathMatchers[_].defaultRouteAction.weightedBackendServices[_].backendService == STRING
    input.Body.pathMatchers[_].defaultRouteAction.weightedBackendServices[_].headerAction.requestHeadersToAdd[_].headerName == STRING
    input.Body.pathMatchers[_].defaultRouteAction.weightedBackendServices[_].headerAction.requestHeadersToAdd[_].headerValue == STRING
    input.Body.pathMatchers[_].defaultRouteAction.weightedBackendServices[_].headerAction.requestHeadersToAdd[_].replace == BOOLEAN
    input.Body.pathMatchers[_].defaultRouteAction.weightedBackendServices[_].headerAction.requestHeadersToRemove[_] == STRING
    input.Body.pathMatchers[_].defaultRouteAction.weightedBackendServices[_].headerAction.responseHeadersToAdd[_].headerName == STRING
    input.Body.pathMatchers[_].defaultRouteAction.weightedBackendServices[_].headerAction.responseHeadersToAdd[_].headerValue == STRING
    input.Body.pathMatchers[_].defaultRouteAction.weightedBackendServices[_].headerAction.responseHeadersToAdd[_].replace == BOOLEAN
    input.Body.pathMatchers[_].defaultRouteAction.weightedBackendServices[_].headerAction.responseHeadersToRemove[_] == STRING
    input.Body.pathMatchers[_].defaultRouteAction.weightedBackendServices[_].weight == INTEGER
    input.Body.pathMatchers[_].defaultService == STRING
    input.Body.pathMatchers[_].defaultUrlRedirect.hostRedirect == STRING
    input.Body.pathMatchers[_].defaultUrlRedirect.httpsRedirect == BOOLEAN
    input.Body.pathMatchers[_].defaultUrlRedirect.pathRedirect == STRING
    input.Body.pathMatchers[_].defaultUrlRedirect.prefixRedirect == STRING
    input.Body.pathMatchers[_].defaultUrlRedirect.redirectResponseCode == enum_HttpRedirectActionRedirectResponseCode[_]
    input.Body.pathMatchers[_].defaultUrlRedirect.stripQuery == BOOLEAN
    input.Body.pathMatchers[_].description == STRING
    input.Body.pathMatchers[_].headerAction.requestHeadersToAdd[_].headerName == STRING
    input.Body.pathMatchers[_].headerAction.requestHeadersToAdd[_].headerValue == STRING
    input.Body.pathMatchers[_].headerAction.requestHeadersToAdd[_].replace == BOOLEAN
    input.Body.pathMatchers[_].headerAction.requestHeadersToRemove[_] == STRING
    input.Body.pathMatchers[_].headerAction.responseHeadersToAdd[_].headerName == STRING
    input.Body.pathMatchers[_].headerAction.responseHeadersToAdd[_].headerValue == STRING
    input.Body.pathMatchers[_].headerAction.responseHeadersToAdd[_].replace == BOOLEAN
    input.Body.pathMatchers[_].headerAction.responseHeadersToRemove[_] == STRING
    input.Body.pathMatchers[_].name == STRING
    input.Body.pathMatchers[_].pathRules[_].paths[_] == STRING
    input.Body.pathMatchers[_].pathRules[_].routeAction.corsPolicy.allowCredentials == BOOLEAN
    input.Body.pathMatchers[_].pathRules[_].routeAction.corsPolicy.allowHeaders[_] == STRING
    input.Body.pathMatchers[_].pathRules[_].routeAction.corsPolicy.allowMethods[_] == STRING
    input.Body.pathMatchers[_].pathRules[_].routeAction.corsPolicy.allowOriginRegexes[_] == STRING
    input.Body.pathMatchers[_].pathRules[_].routeAction.corsPolicy.allowOrigins[_] == STRING
    input.Body.pathMatchers[_].pathRules[_].routeAction.corsPolicy.disabled == BOOLEAN
    input.Body.pathMatchers[_].pathRules[_].routeAction.corsPolicy.exposeHeaders[_] == STRING
    input.Body.pathMatchers[_].pathRules[_].routeAction.corsPolicy.maxAge == INTEGER
    input.Body.pathMatchers[_].pathRules[_].routeAction.faultInjectionPolicy.abort.httpStatus == INTEGER
    input.Body.pathMatchers[_].pathRules[_].routeAction.faultInjectionPolicy.abort.percentage == NUMBER
    input.Body.pathMatchers[_].pathRules[_].routeAction.faultInjectionPolicy.delay.fixedDelay.nanos == INTEGER
    input.Body.pathMatchers[_].pathRules[_].routeAction.faultInjectionPolicy.delay.fixedDelay.seconds == STRING
    input.Body.pathMatchers[_].pathRules[_].routeAction.faultInjectionPolicy.delay.percentage == NUMBER
    input.Body.pathMatchers[_].pathRules[_].routeAction.maxStreamDuration.nanos == INTEGER
    input.Body.pathMatchers[_].pathRules[_].routeAction.maxStreamDuration.seconds == STRING
    input.Body.pathMatchers[_].pathRules[_].routeAction.requestMirrorPolicy.backendService == STRING
    input.Body.pathMatchers[_].pathRules[_].routeAction.retryPolicy.numRetries == INTEGER
    input.Body.pathMatchers[_].pathRules[_].routeAction.retryPolicy.perTryTimeout.nanos == INTEGER
    input.Body.pathMatchers[_].pathRules[_].routeAction.retryPolicy.perTryTimeout.seconds == STRING
    input.Body.pathMatchers[_].pathRules[_].routeAction.retryPolicy.retryConditions[_] == STRING
    input.Body.pathMatchers[_].pathRules[_].routeAction.timeout.nanos == INTEGER
    input.Body.pathMatchers[_].pathRules[_].routeAction.timeout.seconds == STRING
    input.Body.pathMatchers[_].pathRules[_].routeAction.urlRewrite.hostRewrite == STRING
    input.Body.pathMatchers[_].pathRules[_].routeAction.urlRewrite.pathPrefixRewrite == STRING
    input.Body.pathMatchers[_].pathRules[_].routeAction.urlRewrite.pathTemplateRewrite == STRING
    input.Body.pathMatchers[_].pathRules[_].routeAction.weightedBackendServices[_].backendService == STRING
    input.Body.pathMatchers[_].pathRules[_].routeAction.weightedBackendServices[_].headerAction.requestHeadersToAdd[_].headerName == STRING
    input.Body.pathMatchers[_].pathRules[_].routeAction.weightedBackendServices[_].headerAction.requestHeadersToAdd[_].headerValue == STRING
    input.Body.pathMatchers[_].pathRules[_].routeAction.weightedBackendServices[_].headerAction.requestHeadersToAdd[_].replace == BOOLEAN
    input.Body.pathMatchers[_].pathRules[_].routeAction.weightedBackendServices[_].headerAction.requestHeadersToRemove[_] == STRING
    input.Body.pathMatchers[_].pathRules[_].routeAction.weightedBackendServices[_].headerAction.responseHeadersToAdd[_].headerName == STRING
    input.Body.pathMatchers[_].pathRules[_].routeAction.weightedBackendServices[_].headerAction.responseHeadersToAdd[_].headerValue == STRING
    input.Body.pathMatchers[_].pathRules[_].routeAction.weightedBackendServices[_].headerAction.responseHeadersToAdd[_].replace == BOOLEAN
    input.Body.pathMatchers[_].pathRules[_].routeAction.weightedBackendServices[_].headerAction.responseHeadersToRemove[_] == STRING
    input.Body.pathMatchers[_].pathRules[_].routeAction.weightedBackendServices[_].weight == INTEGER
    input.Body.pathMatchers[_].pathRules[_].service == STRING
    input.Body.pathMatchers[_].pathRules[_].urlRedirect.hostRedirect == STRING
    input.Body.pathMatchers[_].pathRules[_].urlRedirect.httpsRedirect == BOOLEAN
    input.Body.pathMatchers[_].pathRules[_].urlRedirect.pathRedirect == STRING
    input.Body.pathMatchers[_].pathRules[_].urlRedirect.prefixRedirect == STRING
    input.Body.pathMatchers[_].pathRules[_].urlRedirect.redirectResponseCode == enum_HttpRedirectActionRedirectResponseCode[_]
    input.Body.pathMatchers[_].pathRules[_].urlRedirect.stripQuery == BOOLEAN
    input.Body.pathMatchers[_].routeRules[_].description == STRING
    input.Body.pathMatchers[_].routeRules[_].headerAction.requestHeadersToAdd[_].headerName == STRING
    input.Body.pathMatchers[_].routeRules[_].headerAction.requestHeadersToAdd[_].headerValue == STRING
    input.Body.pathMatchers[_].routeRules[_].headerAction.requestHeadersToAdd[_].replace == BOOLEAN
    input.Body.pathMatchers[_].routeRules[_].headerAction.requestHeadersToRemove[_] == STRING
    input.Body.pathMatchers[_].routeRules[_].headerAction.responseHeadersToAdd[_].headerName == STRING
    input.Body.pathMatchers[_].routeRules[_].headerAction.responseHeadersToAdd[_].headerValue == STRING
    input.Body.pathMatchers[_].routeRules[_].headerAction.responseHeadersToAdd[_].replace == BOOLEAN
    input.Body.pathMatchers[_].routeRules[_].headerAction.responseHeadersToRemove[_] == STRING
    input.Body.pathMatchers[_].routeRules[_].matchRules[_].fullPathMatch == STRING
    input.Body.pathMatchers[_].routeRules[_].matchRules[_].headerMatches[_].exactMatch == STRING
    input.Body.pathMatchers[_].routeRules[_].matchRules[_].headerMatches[_].headerName == STRING
    input.Body.pathMatchers[_].routeRules[_].matchRules[_].headerMatches[_].invertMatch == BOOLEAN
    input.Body.pathMatchers[_].routeRules[_].matchRules[_].headerMatches[_].prefixMatch == STRING
    input.Body.pathMatchers[_].routeRules[_].matchRules[_].headerMatches[_].presentMatch == BOOLEAN
    input.Body.pathMatchers[_].routeRules[_].matchRules[_].headerMatches[_].rangeMatch.rangeEnd == STRING
    input.Body.pathMatchers[_].routeRules[_].matchRules[_].headerMatches[_].rangeMatch.rangeStart == STRING
    input.Body.pathMatchers[_].routeRules[_].matchRules[_].headerMatches[_].regexMatch == STRING
    input.Body.pathMatchers[_].routeRules[_].matchRules[_].headerMatches[_].suffixMatch == STRING
    input.Body.pathMatchers[_].routeRules[_].matchRules[_].ignoreCase == BOOLEAN
    input.Body.pathMatchers[_].routeRules[_].matchRules[_].metadataFilters[_].filterLabels[_].name == STRING
    input.Body.pathMatchers[_].routeRules[_].matchRules[_].metadataFilters[_].filterLabels[_].value == STRING
    input.Body.pathMatchers[_].routeRules[_].matchRules[_].metadataFilters[_].filterMatchCriteria == enum_MetadataFilterFilterMatchCriteria[_]
    input.Body.pathMatchers[_].routeRules[_].matchRules[_].pathTemplateMatch == STRING
    input.Body.pathMatchers[_].routeRules[_].matchRules[_].prefixMatch == STRING
    input.Body.pathMatchers[_].routeRules[_].matchRules[_].queryParameterMatches[_].exactMatch == STRING
    input.Body.pathMatchers[_].routeRules[_].matchRules[_].queryParameterMatches[_].name == STRING
    input.Body.pathMatchers[_].routeRules[_].matchRules[_].queryParameterMatches[_].presentMatch == BOOLEAN
    input.Body.pathMatchers[_].routeRules[_].matchRules[_].queryParameterMatches[_].regexMatch == STRING
    input.Body.pathMatchers[_].routeRules[_].matchRules[_].regexMatch == STRING
    input.Body.pathMatchers[_].routeRules[_].priority == INTEGER
    input.Body.pathMatchers[_].routeRules[_].routeAction.corsPolicy.allowCredentials == BOOLEAN
    input.Body.pathMatchers[_].routeRules[_].routeAction.corsPolicy.allowHeaders[_] == STRING
    input.Body.pathMatchers[_].routeRules[_].routeAction.corsPolicy.allowMethods[_] == STRING
    input.Body.pathMatchers[_].routeRules[_].routeAction.corsPolicy.allowOriginRegexes[_] == STRING
    input.Body.pathMatchers[_].routeRules[_].routeAction.corsPolicy.allowOrigins[_] == STRING
    input.Body.pathMatchers[_].routeRules[_].routeAction.corsPolicy.disabled == BOOLEAN
    input.Body.pathMatchers[_].routeRules[_].routeAction.corsPolicy.exposeHeaders[_] == STRING
    input.Body.pathMatchers[_].routeRules[_].routeAction.corsPolicy.maxAge == INTEGER
    input.Body.pathMatchers[_].routeRules[_].routeAction.faultInjectionPolicy.abort.httpStatus == INTEGER
    input.Body.pathMatchers[_].routeRules[_].routeAction.faultInjectionPolicy.abort.percentage == NUMBER
    input.Body.pathMatchers[_].routeRules[_].routeAction.faultInjectionPolicy.delay.fixedDelay.nanos == INTEGER
    input.Body.pathMatchers[_].routeRules[_].routeAction.faultInjectionPolicy.delay.fixedDelay.seconds == STRING
    input.Body.pathMatchers[_].routeRules[_].routeAction.faultInjectionPolicy.delay.percentage == NUMBER
    input.Body.pathMatchers[_].routeRules[_].routeAction.maxStreamDuration.nanos == INTEGER
    input.Body.pathMatchers[_].routeRules[_].routeAction.maxStreamDuration.seconds == STRING
    input.Body.pathMatchers[_].routeRules[_].routeAction.requestMirrorPolicy.backendService == STRING
    input.Body.pathMatchers[_].routeRules[_].routeAction.retryPolicy.numRetries == INTEGER
    input.Body.pathMatchers[_].routeRules[_].routeAction.retryPolicy.perTryTimeout.nanos == INTEGER
    input.Body.pathMatchers[_].routeRules[_].routeAction.retryPolicy.perTryTimeout.seconds == STRING
    input.Body.pathMatchers[_].routeRules[_].routeAction.retryPolicy.retryConditions[_] == STRING
    input.Body.pathMatchers[_].routeRules[_].routeAction.timeout.nanos == INTEGER
    input.Body.pathMatchers[_].routeRules[_].routeAction.timeout.seconds == STRING
    input.Body.pathMatchers[_].routeRules[_].routeAction.urlRewrite.hostRewrite == STRING
    input.Body.pathMatchers[_].routeRules[_].routeAction.urlRewrite.pathPrefixRewrite == STRING
    input.Body.pathMatchers[_].routeRules[_].routeAction.urlRewrite.pathTemplateRewrite == STRING
    input.Body.pathMatchers[_].routeRules[_].routeAction.weightedBackendServices[_].backendService == STRING
    input.Body.pathMatchers[_].routeRules[_].routeAction.weightedBackendServices[_].headerAction.requestHeadersToAdd[_].headerName == STRING
    input.Body.pathMatchers[_].routeRules[_].routeAction.weightedBackendServices[_].headerAction.requestHeadersToAdd[_].headerValue == STRING
    input.Body.pathMatchers[_].routeRules[_].routeAction.weightedBackendServices[_].headerAction.requestHeadersToAdd[_].replace == BOOLEAN
    input.Body.pathMatchers[_].routeRules[_].routeAction.weightedBackendServices[_].headerAction.requestHeadersToRemove[_] == STRING
    input.Body.pathMatchers[_].routeRules[_].routeAction.weightedBackendServices[_].headerAction.responseHeadersToAdd[_].headerName == STRING
    input.Body.pathMatchers[_].routeRules[_].routeAction.weightedBackendServices[_].headerAction.responseHeadersToAdd[_].headerValue == STRING
    input.Body.pathMatchers[_].routeRules[_].routeAction.weightedBackendServices[_].headerAction.responseHeadersToAdd[_].replace == BOOLEAN
    input.Body.pathMatchers[_].routeRules[_].routeAction.weightedBackendServices[_].headerAction.responseHeadersToRemove[_] == STRING
    input.Body.pathMatchers[_].routeRules[_].routeAction.weightedBackendServices[_].weight == INTEGER
    input.Body.pathMatchers[_].routeRules[_].service == STRING
    input.Body.pathMatchers[_].routeRules[_].urlRedirect.hostRedirect == STRING
    input.Body.pathMatchers[_].routeRules[_].urlRedirect.httpsRedirect == BOOLEAN
    input.Body.pathMatchers[_].routeRules[_].urlRedirect.pathRedirect == STRING
    input.Body.pathMatchers[_].routeRules[_].urlRedirect.prefixRedirect == STRING
    input.Body.pathMatchers[_].routeRules[_].urlRedirect.redirectResponseCode == enum_HttpRedirectActionRedirectResponseCode[_]
    input.Body.pathMatchers[_].routeRules[_].urlRedirect.stripQuery == BOOLEAN
    input.Body.region == STRING
    input.Body.selfLink == STRING
    input.Body.tests[_].description == STRING
    input.Body.tests[_].expectedOutputUrl == STRING
    input.Body.tests[_].expectedRedirectResponseCode == INTEGER
    input.Body.tests[_].headers[_].name == STRING
    input.Body.tests[_].headers[_].value == STRING
    input.Body.tests[_].host == STRING
    input.Body.tests[_].path == STRING
    input.Body.tests[_].service == STRING
    input.ReqMap.ProjectID == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.urlMaps.invalidateCache

valid {
    input.Body.host == STRING
    input.Body.path == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.urlMap == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.urlMaps.list

valid {
    input.ReqMap.ProjectID == STRING
    input.Qs.filter == STRING
    input.Qs.maxResults == INTEGER
    input.Qs.orderBy == STRING
    input.Qs.pageToken == STRING
    input.Qs.returnPartialSuccess == BOOLEAN
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.urlMaps.patch

enum_HttpRedirectActionRedirectResponseCode := [ "FOUND", "MOVED_PERMANENTLY_DEFAULT", "PERMANENT_REDIRECT", "SEE_OTHER", "TEMPORARY_REDIRECT" ]
enum_MetadataFilterFilterMatchCriteria := [ "MATCH_ALL", "MATCH_ANY", "NOT_SET" ]

valid {
    input.Body.creationTimestamp == STRING
    input.Body.defaultRouteAction.corsPolicy.allowCredentials == BOOLEAN
    input.Body.defaultRouteAction.corsPolicy.allowHeaders[_] == STRING
    input.Body.defaultRouteAction.corsPolicy.allowMethods[_] == STRING
    input.Body.defaultRouteAction.corsPolicy.allowOriginRegexes[_] == STRING
    input.Body.defaultRouteAction.corsPolicy.allowOrigins[_] == STRING
    input.Body.defaultRouteAction.corsPolicy.disabled == BOOLEAN
    input.Body.defaultRouteAction.corsPolicy.exposeHeaders[_] == STRING
    input.Body.defaultRouteAction.corsPolicy.maxAge == INTEGER
    input.Body.defaultRouteAction.faultInjectionPolicy.abort.httpStatus == INTEGER
    input.Body.defaultRouteAction.faultInjectionPolicy.abort.percentage == NUMBER
    input.Body.defaultRouteAction.faultInjectionPolicy.delay.fixedDelay.nanos == INTEGER
    input.Body.defaultRouteAction.faultInjectionPolicy.delay.fixedDelay.seconds == STRING
    input.Body.defaultRouteAction.faultInjectionPolicy.delay.percentage == NUMBER
    input.Body.defaultRouteAction.maxStreamDuration.nanos == INTEGER
    input.Body.defaultRouteAction.maxStreamDuration.seconds == STRING
    input.Body.defaultRouteAction.requestMirrorPolicy.backendService == STRING
    input.Body.defaultRouteAction.retryPolicy.numRetries == INTEGER
    input.Body.defaultRouteAction.retryPolicy.perTryTimeout.nanos == INTEGER
    input.Body.defaultRouteAction.retryPolicy.perTryTimeout.seconds == STRING
    input.Body.defaultRouteAction.retryPolicy.retryConditions[_] == STRING
    input.Body.defaultRouteAction.timeout.nanos == INTEGER
    input.Body.defaultRouteAction.timeout.seconds == STRING
    input.Body.defaultRouteAction.urlRewrite.hostRewrite == STRING
    input.Body.defaultRouteAction.urlRewrite.pathPrefixRewrite == STRING
    input.Body.defaultRouteAction.urlRewrite.pathTemplateRewrite == STRING
    input.Body.defaultRouteAction.weightedBackendServices[_].backendService == STRING
    input.Body.defaultRouteAction.weightedBackendServices[_].headerAction.requestHeadersToAdd[_].headerName == STRING
    input.Body.defaultRouteAction.weightedBackendServices[_].headerAction.requestHeadersToAdd[_].headerValue == STRING
    input.Body.defaultRouteAction.weightedBackendServices[_].headerAction.requestHeadersToAdd[_].replace == BOOLEAN
    input.Body.defaultRouteAction.weightedBackendServices[_].headerAction.requestHeadersToRemove[_] == STRING
    input.Body.defaultRouteAction.weightedBackendServices[_].headerAction.responseHeadersToAdd[_].headerName == STRING
    input.Body.defaultRouteAction.weightedBackendServices[_].headerAction.responseHeadersToAdd[_].headerValue == STRING
    input.Body.defaultRouteAction.weightedBackendServices[_].headerAction.responseHeadersToAdd[_].replace == BOOLEAN
    input.Body.defaultRouteAction.weightedBackendServices[_].headerAction.responseHeadersToRemove[_] == STRING
    input.Body.defaultRouteAction.weightedBackendServices[_].weight == INTEGER
    input.Body.defaultService == STRING
    input.Body.defaultUrlRedirect.hostRedirect == STRING
    input.Body.defaultUrlRedirect.httpsRedirect == BOOLEAN
    input.Body.defaultUrlRedirect.pathRedirect == STRING
    input.Body.defaultUrlRedirect.prefixRedirect == STRING
    input.Body.defaultUrlRedirect.redirectResponseCode == enum_HttpRedirectActionRedirectResponseCode[_]
    input.Body.defaultUrlRedirect.stripQuery == BOOLEAN
    input.Body.description == STRING
    input.Body.fingerprint == STRING
    input.Body.headerAction.requestHeadersToAdd[_].headerName == STRING
    input.Body.headerAction.requestHeadersToAdd[_].headerValue == STRING
    input.Body.headerAction.requestHeadersToAdd[_].replace == BOOLEAN
    input.Body.headerAction.requestHeadersToRemove[_] == STRING
    input.Body.headerAction.responseHeadersToAdd[_].headerName == STRING
    input.Body.headerAction.responseHeadersToAdd[_].headerValue == STRING
    input.Body.headerAction.responseHeadersToAdd[_].replace == BOOLEAN
    input.Body.headerAction.responseHeadersToRemove[_] == STRING
    input.Body.hostRules[_].description == STRING
    input.Body.hostRules[_].hosts[_] == STRING
    input.Body.hostRules[_].pathMatcher == STRING
    input.Body.id == STRING
    input.Body.kind == STRING
    input.Body.name == STRING
    input.Body.pathMatchers[_].defaultRouteAction.corsPolicy.allowCredentials == BOOLEAN
    input.Body.pathMatchers[_].defaultRouteAction.corsPolicy.allowHeaders[_] == STRING
    input.Body.pathMatchers[_].defaultRouteAction.corsPolicy.allowMethods[_] == STRING
    input.Body.pathMatchers[_].defaultRouteAction.corsPolicy.allowOriginRegexes[_] == STRING
    input.Body.pathMatchers[_].defaultRouteAction.corsPolicy.allowOrigins[_] == STRING
    input.Body.pathMatchers[_].defaultRouteAction.corsPolicy.disabled == BOOLEAN
    input.Body.pathMatchers[_].defaultRouteAction.corsPolicy.exposeHeaders[_] == STRING
    input.Body.pathMatchers[_].defaultRouteAction.corsPolicy.maxAge == INTEGER
    input.Body.pathMatchers[_].defaultRouteAction.faultInjectionPolicy.abort.httpStatus == INTEGER
    input.Body.pathMatchers[_].defaultRouteAction.faultInjectionPolicy.abort.percentage == NUMBER
    input.Body.pathMatchers[_].defaultRouteAction.faultInjectionPolicy.delay.fixedDelay.nanos == INTEGER
    input.Body.pathMatchers[_].defaultRouteAction.faultInjectionPolicy.delay.fixedDelay.seconds == STRING
    input.Body.pathMatchers[_].defaultRouteAction.faultInjectionPolicy.delay.percentage == NUMBER
    input.Body.pathMatchers[_].defaultRouteAction.maxStreamDuration.nanos == INTEGER
    input.Body.pathMatchers[_].defaultRouteAction.maxStreamDuration.seconds == STRING
    input.Body.pathMatchers[_].defaultRouteAction.requestMirrorPolicy.backendService == STRING
    input.Body.pathMatchers[_].defaultRouteAction.retryPolicy.numRetries == INTEGER
    input.Body.pathMatchers[_].defaultRouteAction.retryPolicy.perTryTimeout.nanos == INTEGER
    input.Body.pathMatchers[_].defaultRouteAction.retryPolicy.perTryTimeout.seconds == STRING
    input.Body.pathMatchers[_].defaultRouteAction.retryPolicy.retryConditions[_] == STRING
    input.Body.pathMatchers[_].defaultRouteAction.timeout.nanos == INTEGER
    input.Body.pathMatchers[_].defaultRouteAction.timeout.seconds == STRING
    input.Body.pathMatchers[_].defaultRouteAction.urlRewrite.hostRewrite == STRING
    input.Body.pathMatchers[_].defaultRouteAction.urlRewrite.pathPrefixRewrite == STRING
    input.Body.pathMatchers[_].defaultRouteAction.urlRewrite.pathTemplateRewrite == STRING
    input.Body.pathMatchers[_].defaultRouteAction.weightedBackendServices[_].backendService == STRING
    input.Body.pathMatchers[_].defaultRouteAction.weightedBackendServices[_].headerAction.requestHeadersToAdd[_].headerName == STRING
    input.Body.pathMatchers[_].defaultRouteAction.weightedBackendServices[_].headerAction.requestHeadersToAdd[_].headerValue == STRING
    input.Body.pathMatchers[_].defaultRouteAction.weightedBackendServices[_].headerAction.requestHeadersToAdd[_].replace == BOOLEAN
    input.Body.pathMatchers[_].defaultRouteAction.weightedBackendServices[_].headerAction.requestHeadersToRemove[_] == STRING
    input.Body.pathMatchers[_].defaultRouteAction.weightedBackendServices[_].headerAction.responseHeadersToAdd[_].headerName == STRING
    input.Body.pathMatchers[_].defaultRouteAction.weightedBackendServices[_].headerAction.responseHeadersToAdd[_].headerValue == STRING
    input.Body.pathMatchers[_].defaultRouteAction.weightedBackendServices[_].headerAction.responseHeadersToAdd[_].replace == BOOLEAN
    input.Body.pathMatchers[_].defaultRouteAction.weightedBackendServices[_].headerAction.responseHeadersToRemove[_] == STRING
    input.Body.pathMatchers[_].defaultRouteAction.weightedBackendServices[_].weight == INTEGER
    input.Body.pathMatchers[_].defaultService == STRING
    input.Body.pathMatchers[_].defaultUrlRedirect.hostRedirect == STRING
    input.Body.pathMatchers[_].defaultUrlRedirect.httpsRedirect == BOOLEAN
    input.Body.pathMatchers[_].defaultUrlRedirect.pathRedirect == STRING
    input.Body.pathMatchers[_].defaultUrlRedirect.prefixRedirect == STRING
    input.Body.pathMatchers[_].defaultUrlRedirect.redirectResponseCode == enum_HttpRedirectActionRedirectResponseCode[_]
    input.Body.pathMatchers[_].defaultUrlRedirect.stripQuery == BOOLEAN
    input.Body.pathMatchers[_].description == STRING
    input.Body.pathMatchers[_].headerAction.requestHeadersToAdd[_].headerName == STRING
    input.Body.pathMatchers[_].headerAction.requestHeadersToAdd[_].headerValue == STRING
    input.Body.pathMatchers[_].headerAction.requestHeadersToAdd[_].replace == BOOLEAN
    input.Body.pathMatchers[_].headerAction.requestHeadersToRemove[_] == STRING
    input.Body.pathMatchers[_].headerAction.responseHeadersToAdd[_].headerName == STRING
    input.Body.pathMatchers[_].headerAction.responseHeadersToAdd[_].headerValue == STRING
    input.Body.pathMatchers[_].headerAction.responseHeadersToAdd[_].replace == BOOLEAN
    input.Body.pathMatchers[_].headerAction.responseHeadersToRemove[_] == STRING
    input.Body.pathMatchers[_].name == STRING
    input.Body.pathMatchers[_].pathRules[_].paths[_] == STRING
    input.Body.pathMatchers[_].pathRules[_].routeAction.corsPolicy.allowCredentials == BOOLEAN
    input.Body.pathMatchers[_].pathRules[_].routeAction.corsPolicy.allowHeaders[_] == STRING
    input.Body.pathMatchers[_].pathRules[_].routeAction.corsPolicy.allowMethods[_] == STRING
    input.Body.pathMatchers[_].pathRules[_].routeAction.corsPolicy.allowOriginRegexes[_] == STRING
    input.Body.pathMatchers[_].pathRules[_].routeAction.corsPolicy.allowOrigins[_] == STRING
    input.Body.pathMatchers[_].pathRules[_].routeAction.corsPolicy.disabled == BOOLEAN
    input.Body.pathMatchers[_].pathRules[_].routeAction.corsPolicy.exposeHeaders[_] == STRING
    input.Body.pathMatchers[_].pathRules[_].routeAction.corsPolicy.maxAge == INTEGER
    input.Body.pathMatchers[_].pathRules[_].routeAction.faultInjectionPolicy.abort.httpStatus == INTEGER
    input.Body.pathMatchers[_].pathRules[_].routeAction.faultInjectionPolicy.abort.percentage == NUMBER
    input.Body.pathMatchers[_].pathRules[_].routeAction.faultInjectionPolicy.delay.fixedDelay.nanos == INTEGER
    input.Body.pathMatchers[_].pathRules[_].routeAction.faultInjectionPolicy.delay.fixedDelay.seconds == STRING
    input.Body.pathMatchers[_].pathRules[_].routeAction.faultInjectionPolicy.delay.percentage == NUMBER
    input.Body.pathMatchers[_].pathRules[_].routeAction.maxStreamDuration.nanos == INTEGER
    input.Body.pathMatchers[_].pathRules[_].routeAction.maxStreamDuration.seconds == STRING
    input.Body.pathMatchers[_].pathRules[_].routeAction.requestMirrorPolicy.backendService == STRING
    input.Body.pathMatchers[_].pathRules[_].routeAction.retryPolicy.numRetries == INTEGER
    input.Body.pathMatchers[_].pathRules[_].routeAction.retryPolicy.perTryTimeout.nanos == INTEGER
    input.Body.pathMatchers[_].pathRules[_].routeAction.retryPolicy.perTryTimeout.seconds == STRING
    input.Body.pathMatchers[_].pathRules[_].routeAction.retryPolicy.retryConditions[_] == STRING
    input.Body.pathMatchers[_].pathRules[_].routeAction.timeout.nanos == INTEGER
    input.Body.pathMatchers[_].pathRules[_].routeAction.timeout.seconds == STRING
    input.Body.pathMatchers[_].pathRules[_].routeAction.urlRewrite.hostRewrite == STRING
    input.Body.pathMatchers[_].pathRules[_].routeAction.urlRewrite.pathPrefixRewrite == STRING
    input.Body.pathMatchers[_].pathRules[_].routeAction.urlRewrite.pathTemplateRewrite == STRING
    input.Body.pathMatchers[_].pathRules[_].routeAction.weightedBackendServices[_].backendService == STRING
    input.Body.pathMatchers[_].pathRules[_].routeAction.weightedBackendServices[_].headerAction.requestHeadersToAdd[_].headerName == STRING
    input.Body.pathMatchers[_].pathRules[_].routeAction.weightedBackendServices[_].headerAction.requestHeadersToAdd[_].headerValue == STRING
    input.Body.pathMatchers[_].pathRules[_].routeAction.weightedBackendServices[_].headerAction.requestHeadersToAdd[_].replace == BOOLEAN
    input.Body.pathMatchers[_].pathRules[_].routeAction.weightedBackendServices[_].headerAction.requestHeadersToRemove[_] == STRING
    input.Body.pathMatchers[_].pathRules[_].routeAction.weightedBackendServices[_].headerAction.responseHeadersToAdd[_].headerName == STRING
    input.Body.pathMatchers[_].pathRules[_].routeAction.weightedBackendServices[_].headerAction.responseHeadersToAdd[_].headerValue == STRING
    input.Body.pathMatchers[_].pathRules[_].routeAction.weightedBackendServices[_].headerAction.responseHeadersToAdd[_].replace == BOOLEAN
    input.Body.pathMatchers[_].pathRules[_].routeAction.weightedBackendServices[_].headerAction.responseHeadersToRemove[_] == STRING
    input.Body.pathMatchers[_].pathRules[_].routeAction.weightedBackendServices[_].weight == INTEGER
    input.Body.pathMatchers[_].pathRules[_].service == STRING
    input.Body.pathMatchers[_].pathRules[_].urlRedirect.hostRedirect == STRING
    input.Body.pathMatchers[_].pathRules[_].urlRedirect.httpsRedirect == BOOLEAN
    input.Body.pathMatchers[_].pathRules[_].urlRedirect.pathRedirect == STRING
    input.Body.pathMatchers[_].pathRules[_].urlRedirect.prefixRedirect == STRING
    input.Body.pathMatchers[_].pathRules[_].urlRedirect.redirectResponseCode == enum_HttpRedirectActionRedirectResponseCode[_]
    input.Body.pathMatchers[_].pathRules[_].urlRedirect.stripQuery == BOOLEAN
    input.Body.pathMatchers[_].routeRules[_].description == STRING
    input.Body.pathMatchers[_].routeRules[_].headerAction.requestHeadersToAdd[_].headerName == STRING
    input.Body.pathMatchers[_].routeRules[_].headerAction.requestHeadersToAdd[_].headerValue == STRING
    input.Body.pathMatchers[_].routeRules[_].headerAction.requestHeadersToAdd[_].replace == BOOLEAN
    input.Body.pathMatchers[_].routeRules[_].headerAction.requestHeadersToRemove[_] == STRING
    input.Body.pathMatchers[_].routeRules[_].headerAction.responseHeadersToAdd[_].headerName == STRING
    input.Body.pathMatchers[_].routeRules[_].headerAction.responseHeadersToAdd[_].headerValue == STRING
    input.Body.pathMatchers[_].routeRules[_].headerAction.responseHeadersToAdd[_].replace == BOOLEAN
    input.Body.pathMatchers[_].routeRules[_].headerAction.responseHeadersToRemove[_] == STRING
    input.Body.pathMatchers[_].routeRules[_].matchRules[_].fullPathMatch == STRING
    input.Body.pathMatchers[_].routeRules[_].matchRules[_].headerMatches[_].exactMatch == STRING
    input.Body.pathMatchers[_].routeRules[_].matchRules[_].headerMatches[_].headerName == STRING
    input.Body.pathMatchers[_].routeRules[_].matchRules[_].headerMatches[_].invertMatch == BOOLEAN
    input.Body.pathMatchers[_].routeRules[_].matchRules[_].headerMatches[_].prefixMatch == STRING
    input.Body.pathMatchers[_].routeRules[_].matchRules[_].headerMatches[_].presentMatch == BOOLEAN
    input.Body.pathMatchers[_].routeRules[_].matchRules[_].headerMatches[_].rangeMatch.rangeEnd == STRING
    input.Body.pathMatchers[_].routeRules[_].matchRules[_].headerMatches[_].rangeMatch.rangeStart == STRING
    input.Body.pathMatchers[_].routeRules[_].matchRules[_].headerMatches[_].regexMatch == STRING
    input.Body.pathMatchers[_].routeRules[_].matchRules[_].headerMatches[_].suffixMatch == STRING
    input.Body.pathMatchers[_].routeRules[_].matchRules[_].ignoreCase == BOOLEAN
    input.Body.pathMatchers[_].routeRules[_].matchRules[_].metadataFilters[_].filterLabels[_].name == STRING
    input.Body.pathMatchers[_].routeRules[_].matchRules[_].metadataFilters[_].filterLabels[_].value == STRING
    input.Body.pathMatchers[_].routeRules[_].matchRules[_].metadataFilters[_].filterMatchCriteria == enum_MetadataFilterFilterMatchCriteria[_]
    input.Body.pathMatchers[_].routeRules[_].matchRules[_].pathTemplateMatch == STRING
    input.Body.pathMatchers[_].routeRules[_].matchRules[_].prefixMatch == STRING
    input.Body.pathMatchers[_].routeRules[_].matchRules[_].queryParameterMatches[_].exactMatch == STRING
    input.Body.pathMatchers[_].routeRules[_].matchRules[_].queryParameterMatches[_].name == STRING
    input.Body.pathMatchers[_].routeRules[_].matchRules[_].queryParameterMatches[_].presentMatch == BOOLEAN
    input.Body.pathMatchers[_].routeRules[_].matchRules[_].queryParameterMatches[_].regexMatch == STRING
    input.Body.pathMatchers[_].routeRules[_].matchRules[_].regexMatch == STRING
    input.Body.pathMatchers[_].routeRules[_].priority == INTEGER
    input.Body.pathMatchers[_].routeRules[_].routeAction.corsPolicy.allowCredentials == BOOLEAN
    input.Body.pathMatchers[_].routeRules[_].routeAction.corsPolicy.allowHeaders[_] == STRING
    input.Body.pathMatchers[_].routeRules[_].routeAction.corsPolicy.allowMethods[_] == STRING
    input.Body.pathMatchers[_].routeRules[_].routeAction.corsPolicy.allowOriginRegexes[_] == STRING
    input.Body.pathMatchers[_].routeRules[_].routeAction.corsPolicy.allowOrigins[_] == STRING
    input.Body.pathMatchers[_].routeRules[_].routeAction.corsPolicy.disabled == BOOLEAN
    input.Body.pathMatchers[_].routeRules[_].routeAction.corsPolicy.exposeHeaders[_] == STRING
    input.Body.pathMatchers[_].routeRules[_].routeAction.corsPolicy.maxAge == INTEGER
    input.Body.pathMatchers[_].routeRules[_].routeAction.faultInjectionPolicy.abort.httpStatus == INTEGER
    input.Body.pathMatchers[_].routeRules[_].routeAction.faultInjectionPolicy.abort.percentage == NUMBER
    input.Body.pathMatchers[_].routeRules[_].routeAction.faultInjectionPolicy.delay.fixedDelay.nanos == INTEGER
    input.Body.pathMatchers[_].routeRules[_].routeAction.faultInjectionPolicy.delay.fixedDelay.seconds == STRING
    input.Body.pathMatchers[_].routeRules[_].routeAction.faultInjectionPolicy.delay.percentage == NUMBER
    input.Body.pathMatchers[_].routeRules[_].routeAction.maxStreamDuration.nanos == INTEGER
    input.Body.pathMatchers[_].routeRules[_].routeAction.maxStreamDuration.seconds == STRING
    input.Body.pathMatchers[_].routeRules[_].routeAction.requestMirrorPolicy.backendService == STRING
    input.Body.pathMatchers[_].routeRules[_].routeAction.retryPolicy.numRetries == INTEGER
    input.Body.pathMatchers[_].routeRules[_].routeAction.retryPolicy.perTryTimeout.nanos == INTEGER
    input.Body.pathMatchers[_].routeRules[_].routeAction.retryPolicy.perTryTimeout.seconds == STRING
    input.Body.pathMatchers[_].routeRules[_].routeAction.retryPolicy.retryConditions[_] == STRING
    input.Body.pathMatchers[_].routeRules[_].routeAction.timeout.nanos == INTEGER
    input.Body.pathMatchers[_].routeRules[_].routeAction.timeout.seconds == STRING
    input.Body.pathMatchers[_].routeRules[_].routeAction.urlRewrite.hostRewrite == STRING
    input.Body.pathMatchers[_].routeRules[_].routeAction.urlRewrite.pathPrefixRewrite == STRING
    input.Body.pathMatchers[_].routeRules[_].routeAction.urlRewrite.pathTemplateRewrite == STRING
    input.Body.pathMatchers[_].routeRules[_].routeAction.weightedBackendServices[_].backendService == STRING
    input.Body.pathMatchers[_].routeRules[_].routeAction.weightedBackendServices[_].headerAction.requestHeadersToAdd[_].headerName == STRING
    input.Body.pathMatchers[_].routeRules[_].routeAction.weightedBackendServices[_].headerAction.requestHeadersToAdd[_].headerValue == STRING
    input.Body.pathMatchers[_].routeRules[_].routeAction.weightedBackendServices[_].headerAction.requestHeadersToAdd[_].replace == BOOLEAN
    input.Body.pathMatchers[_].routeRules[_].routeAction.weightedBackendServices[_].headerAction.requestHeadersToRemove[_] == STRING
    input.Body.pathMatchers[_].routeRules[_].routeAction.weightedBackendServices[_].headerAction.responseHeadersToAdd[_].headerName == STRING
    input.Body.pathMatchers[_].routeRules[_].routeAction.weightedBackendServices[_].headerAction.responseHeadersToAdd[_].headerValue == STRING
    input.Body.pathMatchers[_].routeRules[_].routeAction.weightedBackendServices[_].headerAction.responseHeadersToAdd[_].replace == BOOLEAN
    input.Body.pathMatchers[_].routeRules[_].routeAction.weightedBackendServices[_].headerAction.responseHeadersToRemove[_] == STRING
    input.Body.pathMatchers[_].routeRules[_].routeAction.weightedBackendServices[_].weight == INTEGER
    input.Body.pathMatchers[_].routeRules[_].service == STRING
    input.Body.pathMatchers[_].routeRules[_].urlRedirect.hostRedirect == STRING
    input.Body.pathMatchers[_].routeRules[_].urlRedirect.httpsRedirect == BOOLEAN
    input.Body.pathMatchers[_].routeRules[_].urlRedirect.pathRedirect == STRING
    input.Body.pathMatchers[_].routeRules[_].urlRedirect.prefixRedirect == STRING
    input.Body.pathMatchers[_].routeRules[_].urlRedirect.redirectResponseCode == enum_HttpRedirectActionRedirectResponseCode[_]
    input.Body.pathMatchers[_].routeRules[_].urlRedirect.stripQuery == BOOLEAN
    input.Body.region == STRING
    input.Body.selfLink == STRING
    input.Body.tests[_].description == STRING
    input.Body.tests[_].expectedOutputUrl == STRING
    input.Body.tests[_].expectedRedirectResponseCode == INTEGER
    input.Body.tests[_].headers[_].name == STRING
    input.Body.tests[_].headers[_].value == STRING
    input.Body.tests[_].host == STRING
    input.Body.tests[_].path == STRING
    input.Body.tests[_].service == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.urlMap == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.urlMaps.testIamPermissions

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

compute.urlMaps.update

enum_HttpRedirectActionRedirectResponseCode := [ "FOUND", "MOVED_PERMANENTLY_DEFAULT", "PERMANENT_REDIRECT", "SEE_OTHER", "TEMPORARY_REDIRECT" ]
enum_MetadataFilterFilterMatchCriteria := [ "MATCH_ALL", "MATCH_ANY", "NOT_SET" ]

valid {
    input.Body.creationTimestamp == STRING
    input.Body.defaultRouteAction.corsPolicy.allowCredentials == BOOLEAN
    input.Body.defaultRouteAction.corsPolicy.allowHeaders[_] == STRING
    input.Body.defaultRouteAction.corsPolicy.allowMethods[_] == STRING
    input.Body.defaultRouteAction.corsPolicy.allowOriginRegexes[_] == STRING
    input.Body.defaultRouteAction.corsPolicy.allowOrigins[_] == STRING
    input.Body.defaultRouteAction.corsPolicy.disabled == BOOLEAN
    input.Body.defaultRouteAction.corsPolicy.exposeHeaders[_] == STRING
    input.Body.defaultRouteAction.corsPolicy.maxAge == INTEGER
    input.Body.defaultRouteAction.faultInjectionPolicy.abort.httpStatus == INTEGER
    input.Body.defaultRouteAction.faultInjectionPolicy.abort.percentage == NUMBER
    input.Body.defaultRouteAction.faultInjectionPolicy.delay.fixedDelay.nanos == INTEGER
    input.Body.defaultRouteAction.faultInjectionPolicy.delay.fixedDelay.seconds == STRING
    input.Body.defaultRouteAction.faultInjectionPolicy.delay.percentage == NUMBER
    input.Body.defaultRouteAction.maxStreamDuration.nanos == INTEGER
    input.Body.defaultRouteAction.maxStreamDuration.seconds == STRING
    input.Body.defaultRouteAction.requestMirrorPolicy.backendService == STRING
    input.Body.defaultRouteAction.retryPolicy.numRetries == INTEGER
    input.Body.defaultRouteAction.retryPolicy.perTryTimeout.nanos == INTEGER
    input.Body.defaultRouteAction.retryPolicy.perTryTimeout.seconds == STRING
    input.Body.defaultRouteAction.retryPolicy.retryConditions[_] == STRING
    input.Body.defaultRouteAction.timeout.nanos == INTEGER
    input.Body.defaultRouteAction.timeout.seconds == STRING
    input.Body.defaultRouteAction.urlRewrite.hostRewrite == STRING
    input.Body.defaultRouteAction.urlRewrite.pathPrefixRewrite == STRING
    input.Body.defaultRouteAction.urlRewrite.pathTemplateRewrite == STRING
    input.Body.defaultRouteAction.weightedBackendServices[_].backendService == STRING
    input.Body.defaultRouteAction.weightedBackendServices[_].headerAction.requestHeadersToAdd[_].headerName == STRING
    input.Body.defaultRouteAction.weightedBackendServices[_].headerAction.requestHeadersToAdd[_].headerValue == STRING
    input.Body.defaultRouteAction.weightedBackendServices[_].headerAction.requestHeadersToAdd[_].replace == BOOLEAN
    input.Body.defaultRouteAction.weightedBackendServices[_].headerAction.requestHeadersToRemove[_] == STRING
    input.Body.defaultRouteAction.weightedBackendServices[_].headerAction.responseHeadersToAdd[_].headerName == STRING
    input.Body.defaultRouteAction.weightedBackendServices[_].headerAction.responseHeadersToAdd[_].headerValue == STRING
    input.Body.defaultRouteAction.weightedBackendServices[_].headerAction.responseHeadersToAdd[_].replace == BOOLEAN
    input.Body.defaultRouteAction.weightedBackendServices[_].headerAction.responseHeadersToRemove[_] == STRING
    input.Body.defaultRouteAction.weightedBackendServices[_].weight == INTEGER
    input.Body.defaultService == STRING
    input.Body.defaultUrlRedirect.hostRedirect == STRING
    input.Body.defaultUrlRedirect.httpsRedirect == BOOLEAN
    input.Body.defaultUrlRedirect.pathRedirect == STRING
    input.Body.defaultUrlRedirect.prefixRedirect == STRING
    input.Body.defaultUrlRedirect.redirectResponseCode == enum_HttpRedirectActionRedirectResponseCode[_]
    input.Body.defaultUrlRedirect.stripQuery == BOOLEAN
    input.Body.description == STRING
    input.Body.fingerprint == STRING
    input.Body.headerAction.requestHeadersToAdd[_].headerName == STRING
    input.Body.headerAction.requestHeadersToAdd[_].headerValue == STRING
    input.Body.headerAction.requestHeadersToAdd[_].replace == BOOLEAN
    input.Body.headerAction.requestHeadersToRemove[_] == STRING
    input.Body.headerAction.responseHeadersToAdd[_].headerName == STRING
    input.Body.headerAction.responseHeadersToAdd[_].headerValue == STRING
    input.Body.headerAction.responseHeadersToAdd[_].replace == BOOLEAN
    input.Body.headerAction.responseHeadersToRemove[_] == STRING
    input.Body.hostRules[_].description == STRING
    input.Body.hostRules[_].hosts[_] == STRING
    input.Body.hostRules[_].pathMatcher == STRING
    input.Body.id == STRING
    input.Body.kind == STRING
    input.Body.name == STRING
    input.Body.pathMatchers[_].defaultRouteAction.corsPolicy.allowCredentials == BOOLEAN
    input.Body.pathMatchers[_].defaultRouteAction.corsPolicy.allowHeaders[_] == STRING
    input.Body.pathMatchers[_].defaultRouteAction.corsPolicy.allowMethods[_] == STRING
    input.Body.pathMatchers[_].defaultRouteAction.corsPolicy.allowOriginRegexes[_] == STRING
    input.Body.pathMatchers[_].defaultRouteAction.corsPolicy.allowOrigins[_] == STRING
    input.Body.pathMatchers[_].defaultRouteAction.corsPolicy.disabled == BOOLEAN
    input.Body.pathMatchers[_].defaultRouteAction.corsPolicy.exposeHeaders[_] == STRING
    input.Body.pathMatchers[_].defaultRouteAction.corsPolicy.maxAge == INTEGER
    input.Body.pathMatchers[_].defaultRouteAction.faultInjectionPolicy.abort.httpStatus == INTEGER
    input.Body.pathMatchers[_].defaultRouteAction.faultInjectionPolicy.abort.percentage == NUMBER
    input.Body.pathMatchers[_].defaultRouteAction.faultInjectionPolicy.delay.fixedDelay.nanos == INTEGER
    input.Body.pathMatchers[_].defaultRouteAction.faultInjectionPolicy.delay.fixedDelay.seconds == STRING
    input.Body.pathMatchers[_].defaultRouteAction.faultInjectionPolicy.delay.percentage == NUMBER
    input.Body.pathMatchers[_].defaultRouteAction.maxStreamDuration.nanos == INTEGER
    input.Body.pathMatchers[_].defaultRouteAction.maxStreamDuration.seconds == STRING
    input.Body.pathMatchers[_].defaultRouteAction.requestMirrorPolicy.backendService == STRING
    input.Body.pathMatchers[_].defaultRouteAction.retryPolicy.numRetries == INTEGER
    input.Body.pathMatchers[_].defaultRouteAction.retryPolicy.perTryTimeout.nanos == INTEGER
    input.Body.pathMatchers[_].defaultRouteAction.retryPolicy.perTryTimeout.seconds == STRING
    input.Body.pathMatchers[_].defaultRouteAction.retryPolicy.retryConditions[_] == STRING
    input.Body.pathMatchers[_].defaultRouteAction.timeout.nanos == INTEGER
    input.Body.pathMatchers[_].defaultRouteAction.timeout.seconds == STRING
    input.Body.pathMatchers[_].defaultRouteAction.urlRewrite.hostRewrite == STRING
    input.Body.pathMatchers[_].defaultRouteAction.urlRewrite.pathPrefixRewrite == STRING
    input.Body.pathMatchers[_].defaultRouteAction.urlRewrite.pathTemplateRewrite == STRING
    input.Body.pathMatchers[_].defaultRouteAction.weightedBackendServices[_].backendService == STRING
    input.Body.pathMatchers[_].defaultRouteAction.weightedBackendServices[_].headerAction.requestHeadersToAdd[_].headerName == STRING
    input.Body.pathMatchers[_].defaultRouteAction.weightedBackendServices[_].headerAction.requestHeadersToAdd[_].headerValue == STRING
    input.Body.pathMatchers[_].defaultRouteAction.weightedBackendServices[_].headerAction.requestHeadersToAdd[_].replace == BOOLEAN
    input.Body.pathMatchers[_].defaultRouteAction.weightedBackendServices[_].headerAction.requestHeadersToRemove[_] == STRING
    input.Body.pathMatchers[_].defaultRouteAction.weightedBackendServices[_].headerAction.responseHeadersToAdd[_].headerName == STRING
    input.Body.pathMatchers[_].defaultRouteAction.weightedBackendServices[_].headerAction.responseHeadersToAdd[_].headerValue == STRING
    input.Body.pathMatchers[_].defaultRouteAction.weightedBackendServices[_].headerAction.responseHeadersToAdd[_].replace == BOOLEAN
    input.Body.pathMatchers[_].defaultRouteAction.weightedBackendServices[_].headerAction.responseHeadersToRemove[_] == STRING
    input.Body.pathMatchers[_].defaultRouteAction.weightedBackendServices[_].weight == INTEGER
    input.Body.pathMatchers[_].defaultService == STRING
    input.Body.pathMatchers[_].defaultUrlRedirect.hostRedirect == STRING
    input.Body.pathMatchers[_].defaultUrlRedirect.httpsRedirect == BOOLEAN
    input.Body.pathMatchers[_].defaultUrlRedirect.pathRedirect == STRING
    input.Body.pathMatchers[_].defaultUrlRedirect.prefixRedirect == STRING
    input.Body.pathMatchers[_].defaultUrlRedirect.redirectResponseCode == enum_HttpRedirectActionRedirectResponseCode[_]
    input.Body.pathMatchers[_].defaultUrlRedirect.stripQuery == BOOLEAN
    input.Body.pathMatchers[_].description == STRING
    input.Body.pathMatchers[_].headerAction.requestHeadersToAdd[_].headerName == STRING
    input.Body.pathMatchers[_].headerAction.requestHeadersToAdd[_].headerValue == STRING
    input.Body.pathMatchers[_].headerAction.requestHeadersToAdd[_].replace == BOOLEAN
    input.Body.pathMatchers[_].headerAction.requestHeadersToRemove[_] == STRING
    input.Body.pathMatchers[_].headerAction.responseHeadersToAdd[_].headerName == STRING
    input.Body.pathMatchers[_].headerAction.responseHeadersToAdd[_].headerValue == STRING
    input.Body.pathMatchers[_].headerAction.responseHeadersToAdd[_].replace == BOOLEAN
    input.Body.pathMatchers[_].headerAction.responseHeadersToRemove[_] == STRING
    input.Body.pathMatchers[_].name == STRING
    input.Body.pathMatchers[_].pathRules[_].paths[_] == STRING
    input.Body.pathMatchers[_].pathRules[_].routeAction.corsPolicy.allowCredentials == BOOLEAN
    input.Body.pathMatchers[_].pathRules[_].routeAction.corsPolicy.allowHeaders[_] == STRING
    input.Body.pathMatchers[_].pathRules[_].routeAction.corsPolicy.allowMethods[_] == STRING
    input.Body.pathMatchers[_].pathRules[_].routeAction.corsPolicy.allowOriginRegexes[_] == STRING
    input.Body.pathMatchers[_].pathRules[_].routeAction.corsPolicy.allowOrigins[_] == STRING
    input.Body.pathMatchers[_].pathRules[_].routeAction.corsPolicy.disabled == BOOLEAN
    input.Body.pathMatchers[_].pathRules[_].routeAction.corsPolicy.exposeHeaders[_] == STRING
    input.Body.pathMatchers[_].pathRules[_].routeAction.corsPolicy.maxAge == INTEGER
    input.Body.pathMatchers[_].pathRules[_].routeAction.faultInjectionPolicy.abort.httpStatus == INTEGER
    input.Body.pathMatchers[_].pathRules[_].routeAction.faultInjectionPolicy.abort.percentage == NUMBER
    input.Body.pathMatchers[_].pathRules[_].routeAction.faultInjectionPolicy.delay.fixedDelay.nanos == INTEGER
    input.Body.pathMatchers[_].pathRules[_].routeAction.faultInjectionPolicy.delay.fixedDelay.seconds == STRING
    input.Body.pathMatchers[_].pathRules[_].routeAction.faultInjectionPolicy.delay.percentage == NUMBER
    input.Body.pathMatchers[_].pathRules[_].routeAction.maxStreamDuration.nanos == INTEGER
    input.Body.pathMatchers[_].pathRules[_].routeAction.maxStreamDuration.seconds == STRING
    input.Body.pathMatchers[_].pathRules[_].routeAction.requestMirrorPolicy.backendService == STRING
    input.Body.pathMatchers[_].pathRules[_].routeAction.retryPolicy.numRetries == INTEGER
    input.Body.pathMatchers[_].pathRules[_].routeAction.retryPolicy.perTryTimeout.nanos == INTEGER
    input.Body.pathMatchers[_].pathRules[_].routeAction.retryPolicy.perTryTimeout.seconds == STRING
    input.Body.pathMatchers[_].pathRules[_].routeAction.retryPolicy.retryConditions[_] == STRING
    input.Body.pathMatchers[_].pathRules[_].routeAction.timeout.nanos == INTEGER
    input.Body.pathMatchers[_].pathRules[_].routeAction.timeout.seconds == STRING
    input.Body.pathMatchers[_].pathRules[_].routeAction.urlRewrite.hostRewrite == STRING
    input.Body.pathMatchers[_].pathRules[_].routeAction.urlRewrite.pathPrefixRewrite == STRING
    input.Body.pathMatchers[_].pathRules[_].routeAction.urlRewrite.pathTemplateRewrite == STRING
    input.Body.pathMatchers[_].pathRules[_].routeAction.weightedBackendServices[_].backendService == STRING
    input.Body.pathMatchers[_].pathRules[_].routeAction.weightedBackendServices[_].headerAction.requestHeadersToAdd[_].headerName == STRING
    input.Body.pathMatchers[_].pathRules[_].routeAction.weightedBackendServices[_].headerAction.requestHeadersToAdd[_].headerValue == STRING
    input.Body.pathMatchers[_].pathRules[_].routeAction.weightedBackendServices[_].headerAction.requestHeadersToAdd[_].replace == BOOLEAN
    input.Body.pathMatchers[_].pathRules[_].routeAction.weightedBackendServices[_].headerAction.requestHeadersToRemove[_] == STRING
    input.Body.pathMatchers[_].pathRules[_].routeAction.weightedBackendServices[_].headerAction.responseHeadersToAdd[_].headerName == STRING
    input.Body.pathMatchers[_].pathRules[_].routeAction.weightedBackendServices[_].headerAction.responseHeadersToAdd[_].headerValue == STRING
    input.Body.pathMatchers[_].pathRules[_].routeAction.weightedBackendServices[_].headerAction.responseHeadersToAdd[_].replace == BOOLEAN
    input.Body.pathMatchers[_].pathRules[_].routeAction.weightedBackendServices[_].headerAction.responseHeadersToRemove[_] == STRING
    input.Body.pathMatchers[_].pathRules[_].routeAction.weightedBackendServices[_].weight == INTEGER
    input.Body.pathMatchers[_].pathRules[_].service == STRING
    input.Body.pathMatchers[_].pathRules[_].urlRedirect.hostRedirect == STRING
    input.Body.pathMatchers[_].pathRules[_].urlRedirect.httpsRedirect == BOOLEAN
    input.Body.pathMatchers[_].pathRules[_].urlRedirect.pathRedirect == STRING
    input.Body.pathMatchers[_].pathRules[_].urlRedirect.prefixRedirect == STRING
    input.Body.pathMatchers[_].pathRules[_].urlRedirect.redirectResponseCode == enum_HttpRedirectActionRedirectResponseCode[_]
    input.Body.pathMatchers[_].pathRules[_].urlRedirect.stripQuery == BOOLEAN
    input.Body.pathMatchers[_].routeRules[_].description == STRING
    input.Body.pathMatchers[_].routeRules[_].headerAction.requestHeadersToAdd[_].headerName == STRING
    input.Body.pathMatchers[_].routeRules[_].headerAction.requestHeadersToAdd[_].headerValue == STRING
    input.Body.pathMatchers[_].routeRules[_].headerAction.requestHeadersToAdd[_].replace == BOOLEAN
    input.Body.pathMatchers[_].routeRules[_].headerAction.requestHeadersToRemove[_] == STRING
    input.Body.pathMatchers[_].routeRules[_].headerAction.responseHeadersToAdd[_].headerName == STRING
    input.Body.pathMatchers[_].routeRules[_].headerAction.responseHeadersToAdd[_].headerValue == STRING
    input.Body.pathMatchers[_].routeRules[_].headerAction.responseHeadersToAdd[_].replace == BOOLEAN
    input.Body.pathMatchers[_].routeRules[_].headerAction.responseHeadersToRemove[_] == STRING
    input.Body.pathMatchers[_].routeRules[_].matchRules[_].fullPathMatch == STRING
    input.Body.pathMatchers[_].routeRules[_].matchRules[_].headerMatches[_].exactMatch == STRING
    input.Body.pathMatchers[_].routeRules[_].matchRules[_].headerMatches[_].headerName == STRING
    input.Body.pathMatchers[_].routeRules[_].matchRules[_].headerMatches[_].invertMatch == BOOLEAN
    input.Body.pathMatchers[_].routeRules[_].matchRules[_].headerMatches[_].prefixMatch == STRING
    input.Body.pathMatchers[_].routeRules[_].matchRules[_].headerMatches[_].presentMatch == BOOLEAN
    input.Body.pathMatchers[_].routeRules[_].matchRules[_].headerMatches[_].rangeMatch.rangeEnd == STRING
    input.Body.pathMatchers[_].routeRules[_].matchRules[_].headerMatches[_].rangeMatch.rangeStart == STRING
    input.Body.pathMatchers[_].routeRules[_].matchRules[_].headerMatches[_].regexMatch == STRING
    input.Body.pathMatchers[_].routeRules[_].matchRules[_].headerMatches[_].suffixMatch == STRING
    input.Body.pathMatchers[_].routeRules[_].matchRules[_].ignoreCase == BOOLEAN
    input.Body.pathMatchers[_].routeRules[_].matchRules[_].metadataFilters[_].filterLabels[_].name == STRING
    input.Body.pathMatchers[_].routeRules[_].matchRules[_].metadataFilters[_].filterLabels[_].value == STRING
    input.Body.pathMatchers[_].routeRules[_].matchRules[_].metadataFilters[_].filterMatchCriteria == enum_MetadataFilterFilterMatchCriteria[_]
    input.Body.pathMatchers[_].routeRules[_].matchRules[_].pathTemplateMatch == STRING
    input.Body.pathMatchers[_].routeRules[_].matchRules[_].prefixMatch == STRING
    input.Body.pathMatchers[_].routeRules[_].matchRules[_].queryParameterMatches[_].exactMatch == STRING
    input.Body.pathMatchers[_].routeRules[_].matchRules[_].queryParameterMatches[_].name == STRING
    input.Body.pathMatchers[_].routeRules[_].matchRules[_].queryParameterMatches[_].presentMatch == BOOLEAN
    input.Body.pathMatchers[_].routeRules[_].matchRules[_].queryParameterMatches[_].regexMatch == STRING
    input.Body.pathMatchers[_].routeRules[_].matchRules[_].regexMatch == STRING
    input.Body.pathMatchers[_].routeRules[_].priority == INTEGER
    input.Body.pathMatchers[_].routeRules[_].routeAction.corsPolicy.allowCredentials == BOOLEAN
    input.Body.pathMatchers[_].routeRules[_].routeAction.corsPolicy.allowHeaders[_] == STRING
    input.Body.pathMatchers[_].routeRules[_].routeAction.corsPolicy.allowMethods[_] == STRING
    input.Body.pathMatchers[_].routeRules[_].routeAction.corsPolicy.allowOriginRegexes[_] == STRING
    input.Body.pathMatchers[_].routeRules[_].routeAction.corsPolicy.allowOrigins[_] == STRING
    input.Body.pathMatchers[_].routeRules[_].routeAction.corsPolicy.disabled == BOOLEAN
    input.Body.pathMatchers[_].routeRules[_].routeAction.corsPolicy.exposeHeaders[_] == STRING
    input.Body.pathMatchers[_].routeRules[_].routeAction.corsPolicy.maxAge == INTEGER
    input.Body.pathMatchers[_].routeRules[_].routeAction.faultInjectionPolicy.abort.httpStatus == INTEGER
    input.Body.pathMatchers[_].routeRules[_].routeAction.faultInjectionPolicy.abort.percentage == NUMBER
    input.Body.pathMatchers[_].routeRules[_].routeAction.faultInjectionPolicy.delay.fixedDelay.nanos == INTEGER
    input.Body.pathMatchers[_].routeRules[_].routeAction.faultInjectionPolicy.delay.fixedDelay.seconds == STRING
    input.Body.pathMatchers[_].routeRules[_].routeAction.faultInjectionPolicy.delay.percentage == NUMBER
    input.Body.pathMatchers[_].routeRules[_].routeAction.maxStreamDuration.nanos == INTEGER
    input.Body.pathMatchers[_].routeRules[_].routeAction.maxStreamDuration.seconds == STRING
    input.Body.pathMatchers[_].routeRules[_].routeAction.requestMirrorPolicy.backendService == STRING
    input.Body.pathMatchers[_].routeRules[_].routeAction.retryPolicy.numRetries == INTEGER
    input.Body.pathMatchers[_].routeRules[_].routeAction.retryPolicy.perTryTimeout.nanos == INTEGER
    input.Body.pathMatchers[_].routeRules[_].routeAction.retryPolicy.perTryTimeout.seconds == STRING
    input.Body.pathMatchers[_].routeRules[_].routeAction.retryPolicy.retryConditions[_] == STRING
    input.Body.pathMatchers[_].routeRules[_].routeAction.timeout.nanos == INTEGER
    input.Body.pathMatchers[_].routeRules[_].routeAction.timeout.seconds == STRING
    input.Body.pathMatchers[_].routeRules[_].routeAction.urlRewrite.hostRewrite == STRING
    input.Body.pathMatchers[_].routeRules[_].routeAction.urlRewrite.pathPrefixRewrite == STRING
    input.Body.pathMatchers[_].routeRules[_].routeAction.urlRewrite.pathTemplateRewrite == STRING
    input.Body.pathMatchers[_].routeRules[_].routeAction.weightedBackendServices[_].backendService == STRING
    input.Body.pathMatchers[_].routeRules[_].routeAction.weightedBackendServices[_].headerAction.requestHeadersToAdd[_].headerName == STRING
    input.Body.pathMatchers[_].routeRules[_].routeAction.weightedBackendServices[_].headerAction.requestHeadersToAdd[_].headerValue == STRING
    input.Body.pathMatchers[_].routeRules[_].routeAction.weightedBackendServices[_].headerAction.requestHeadersToAdd[_].replace == BOOLEAN
    input.Body.pathMatchers[_].routeRules[_].routeAction.weightedBackendServices[_].headerAction.requestHeadersToRemove[_] == STRING
    input.Body.pathMatchers[_].routeRules[_].routeAction.weightedBackendServices[_].headerAction.responseHeadersToAdd[_].headerName == STRING
    input.Body.pathMatchers[_].routeRules[_].routeAction.weightedBackendServices[_].headerAction.responseHeadersToAdd[_].headerValue == STRING
    input.Body.pathMatchers[_].routeRules[_].routeAction.weightedBackendServices[_].headerAction.responseHeadersToAdd[_].replace == BOOLEAN
    input.Body.pathMatchers[_].routeRules[_].routeAction.weightedBackendServices[_].headerAction.responseHeadersToRemove[_] == STRING
    input.Body.pathMatchers[_].routeRules[_].routeAction.weightedBackendServices[_].weight == INTEGER
    input.Body.pathMatchers[_].routeRules[_].service == STRING
    input.Body.pathMatchers[_].routeRules[_].urlRedirect.hostRedirect == STRING
    input.Body.pathMatchers[_].routeRules[_].urlRedirect.httpsRedirect == BOOLEAN
    input.Body.pathMatchers[_].routeRules[_].urlRedirect.pathRedirect == STRING
    input.Body.pathMatchers[_].routeRules[_].urlRedirect.prefixRedirect == STRING
    input.Body.pathMatchers[_].routeRules[_].urlRedirect.redirectResponseCode == enum_HttpRedirectActionRedirectResponseCode[_]
    input.Body.pathMatchers[_].routeRules[_].urlRedirect.stripQuery == BOOLEAN
    input.Body.region == STRING
    input.Body.selfLink == STRING
    input.Body.tests[_].description == STRING
    input.Body.tests[_].expectedOutputUrl == STRING
    input.Body.tests[_].expectedRedirectResponseCode == INTEGER
    input.Body.tests[_].headers[_].name == STRING
    input.Body.tests[_].headers[_].value == STRING
    input.Body.tests[_].host == STRING
    input.Body.tests[_].path == STRING
    input.Body.tests[_].service == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.urlMap == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.urlMaps.validate

enum_HttpRedirectActionRedirectResponseCode := [ "FOUND", "MOVED_PERMANENTLY_DEFAULT", "PERMANENT_REDIRECT", "SEE_OTHER", "TEMPORARY_REDIRECT" ]
enum_MetadataFilterFilterMatchCriteria := [ "MATCH_ALL", "MATCH_ANY", "NOT_SET" ]
enum_UrlMapsValidateRequestLoadBalancingSchemes := [ "EXTERNAL", "EXTERNAL_MANAGED", "LOAD_BALANCING_SCHEME_UNSPECIFIED" ]

valid {
    input.Body.loadBalancingSchemes[_] == enum_UrlMapsValidateRequestLoadBalancingSchemes[_]
    input.Body.resource.creationTimestamp == STRING
    input.Body.resource.defaultRouteAction.corsPolicy.allowCredentials == BOOLEAN
    input.Body.resource.defaultRouteAction.corsPolicy.allowHeaders[_] == STRING
    input.Body.resource.defaultRouteAction.corsPolicy.allowMethods[_] == STRING
    input.Body.resource.defaultRouteAction.corsPolicy.allowOriginRegexes[_] == STRING
    input.Body.resource.defaultRouteAction.corsPolicy.allowOrigins[_] == STRING
    input.Body.resource.defaultRouteAction.corsPolicy.disabled == BOOLEAN
    input.Body.resource.defaultRouteAction.corsPolicy.exposeHeaders[_] == STRING
    input.Body.resource.defaultRouteAction.corsPolicy.maxAge == INTEGER
    input.Body.resource.defaultRouteAction.faultInjectionPolicy.abort.httpStatus == INTEGER
    input.Body.resource.defaultRouteAction.faultInjectionPolicy.abort.percentage == NUMBER
    input.Body.resource.defaultRouteAction.faultInjectionPolicy.delay.fixedDelay.nanos == INTEGER
    input.Body.resource.defaultRouteAction.faultInjectionPolicy.delay.fixedDelay.seconds == STRING
    input.Body.resource.defaultRouteAction.faultInjectionPolicy.delay.percentage == NUMBER
    input.Body.resource.defaultRouteAction.maxStreamDuration.nanos == INTEGER
    input.Body.resource.defaultRouteAction.maxStreamDuration.seconds == STRING
    input.Body.resource.defaultRouteAction.requestMirrorPolicy.backendService == STRING
    input.Body.resource.defaultRouteAction.retryPolicy.numRetries == INTEGER
    input.Body.resource.defaultRouteAction.retryPolicy.perTryTimeout.nanos == INTEGER
    input.Body.resource.defaultRouteAction.retryPolicy.perTryTimeout.seconds == STRING
    input.Body.resource.defaultRouteAction.retryPolicy.retryConditions[_] == STRING
    input.Body.resource.defaultRouteAction.timeout.nanos == INTEGER
    input.Body.resource.defaultRouteAction.timeout.seconds == STRING
    input.Body.resource.defaultRouteAction.urlRewrite.hostRewrite == STRING
    input.Body.resource.defaultRouteAction.urlRewrite.pathPrefixRewrite == STRING
    input.Body.resource.defaultRouteAction.urlRewrite.pathTemplateRewrite == STRING
    input.Body.resource.defaultRouteAction.weightedBackendServices[_].backendService == STRING
    input.Body.resource.defaultRouteAction.weightedBackendServices[_].headerAction.requestHeadersToAdd[_].headerName == STRING
    input.Body.resource.defaultRouteAction.weightedBackendServices[_].headerAction.requestHeadersToAdd[_].headerValue == STRING
    input.Body.resource.defaultRouteAction.weightedBackendServices[_].headerAction.requestHeadersToAdd[_].replace == BOOLEAN
    input.Body.resource.defaultRouteAction.weightedBackendServices[_].headerAction.requestHeadersToRemove[_] == STRING
    input.Body.resource.defaultRouteAction.weightedBackendServices[_].headerAction.responseHeadersToAdd[_].headerName == STRING
    input.Body.resource.defaultRouteAction.weightedBackendServices[_].headerAction.responseHeadersToAdd[_].headerValue == STRING
    input.Body.resource.defaultRouteAction.weightedBackendServices[_].headerAction.responseHeadersToAdd[_].replace == BOOLEAN
    input.Body.resource.defaultRouteAction.weightedBackendServices[_].headerAction.responseHeadersToRemove[_] == STRING
    input.Body.resource.defaultRouteAction.weightedBackendServices[_].weight == INTEGER
    input.Body.resource.defaultService == STRING
    input.Body.resource.defaultUrlRedirect.hostRedirect == STRING
    input.Body.resource.defaultUrlRedirect.httpsRedirect == BOOLEAN
    input.Body.resource.defaultUrlRedirect.pathRedirect == STRING
    input.Body.resource.defaultUrlRedirect.prefixRedirect == STRING
    input.Body.resource.defaultUrlRedirect.redirectResponseCode == enum_HttpRedirectActionRedirectResponseCode[_]
    input.Body.resource.defaultUrlRedirect.stripQuery == BOOLEAN
    input.Body.resource.description == STRING
    input.Body.resource.fingerprint == STRING
    input.Body.resource.headerAction.requestHeadersToAdd[_].headerName == STRING
    input.Body.resource.headerAction.requestHeadersToAdd[_].headerValue == STRING
    input.Body.resource.headerAction.requestHeadersToAdd[_].replace == BOOLEAN
    input.Body.resource.headerAction.requestHeadersToRemove[_] == STRING
    input.Body.resource.headerAction.responseHeadersToAdd[_].headerName == STRING
    input.Body.resource.headerAction.responseHeadersToAdd[_].headerValue == STRING
    input.Body.resource.headerAction.responseHeadersToAdd[_].replace == BOOLEAN
    input.Body.resource.headerAction.responseHeadersToRemove[_] == STRING
    input.Body.resource.hostRules[_].description == STRING
    input.Body.resource.hostRules[_].hosts[_] == STRING
    input.Body.resource.hostRules[_].pathMatcher == STRING
    input.Body.resource.id == STRING
    input.Body.resource.kind == STRING
    input.Body.resource.name == STRING
    input.Body.resource.pathMatchers[_].defaultRouteAction.corsPolicy.allowCredentials == BOOLEAN
    input.Body.resource.pathMatchers[_].defaultRouteAction.corsPolicy.allowHeaders[_] == STRING
    input.Body.resource.pathMatchers[_].defaultRouteAction.corsPolicy.allowMethods[_] == STRING
    input.Body.resource.pathMatchers[_].defaultRouteAction.corsPolicy.allowOriginRegexes[_] == STRING
    input.Body.resource.pathMatchers[_].defaultRouteAction.corsPolicy.allowOrigins[_] == STRING
    input.Body.resource.pathMatchers[_].defaultRouteAction.corsPolicy.disabled == BOOLEAN
    input.Body.resource.pathMatchers[_].defaultRouteAction.corsPolicy.exposeHeaders[_] == STRING
    input.Body.resource.pathMatchers[_].defaultRouteAction.corsPolicy.maxAge == INTEGER
    input.Body.resource.pathMatchers[_].defaultRouteAction.faultInjectionPolicy.abort.httpStatus == INTEGER
    input.Body.resource.pathMatchers[_].defaultRouteAction.faultInjectionPolicy.abort.percentage == NUMBER
    input.Body.resource.pathMatchers[_].defaultRouteAction.faultInjectionPolicy.delay.fixedDelay.nanos == INTEGER
    input.Body.resource.pathMatchers[_].defaultRouteAction.faultInjectionPolicy.delay.fixedDelay.seconds == STRING
    input.Body.resource.pathMatchers[_].defaultRouteAction.faultInjectionPolicy.delay.percentage == NUMBER
    input.Body.resource.pathMatchers[_].defaultRouteAction.maxStreamDuration.nanos == INTEGER
    input.Body.resource.pathMatchers[_].defaultRouteAction.maxStreamDuration.seconds == STRING
    input.Body.resource.pathMatchers[_].defaultRouteAction.requestMirrorPolicy.backendService == STRING
    input.Body.resource.pathMatchers[_].defaultRouteAction.retryPolicy.numRetries == INTEGER
    input.Body.resource.pathMatchers[_].defaultRouteAction.retryPolicy.perTryTimeout.nanos == INTEGER
    input.Body.resource.pathMatchers[_].defaultRouteAction.retryPolicy.perTryTimeout.seconds == STRING
    input.Body.resource.pathMatchers[_].defaultRouteAction.retryPolicy.retryConditions[_] == STRING
    input.Body.resource.pathMatchers[_].defaultRouteAction.timeout.nanos == INTEGER
    input.Body.resource.pathMatchers[_].defaultRouteAction.timeout.seconds == STRING
    input.Body.resource.pathMatchers[_].defaultRouteAction.urlRewrite.hostRewrite == STRING
    input.Body.resource.pathMatchers[_].defaultRouteAction.urlRewrite.pathPrefixRewrite == STRING
    input.Body.resource.pathMatchers[_].defaultRouteAction.urlRewrite.pathTemplateRewrite == STRING
    input.Body.resource.pathMatchers[_].defaultRouteAction.weightedBackendServices[_].backendService == STRING
    input.Body.resource.pathMatchers[_].defaultRouteAction.weightedBackendServices[_].headerAction.requestHeadersToAdd[_].headerName == STRING
    input.Body.resource.pathMatchers[_].defaultRouteAction.weightedBackendServices[_].headerAction.requestHeadersToAdd[_].headerValue == STRING
    input.Body.resource.pathMatchers[_].defaultRouteAction.weightedBackendServices[_].headerAction.requestHeadersToAdd[_].replace == BOOLEAN
    input.Body.resource.pathMatchers[_].defaultRouteAction.weightedBackendServices[_].headerAction.requestHeadersToRemove[_] == STRING
    input.Body.resource.pathMatchers[_].defaultRouteAction.weightedBackendServices[_].headerAction.responseHeadersToAdd[_].headerName == STRING
    input.Body.resource.pathMatchers[_].defaultRouteAction.weightedBackendServices[_].headerAction.responseHeadersToAdd[_].headerValue == STRING
    input.Body.resource.pathMatchers[_].defaultRouteAction.weightedBackendServices[_].headerAction.responseHeadersToAdd[_].replace == BOOLEAN
    input.Body.resource.pathMatchers[_].defaultRouteAction.weightedBackendServices[_].headerAction.responseHeadersToRemove[_] == STRING
    input.Body.resource.pathMatchers[_].defaultRouteAction.weightedBackendServices[_].weight == INTEGER
    input.Body.resource.pathMatchers[_].defaultService == STRING
    input.Body.resource.pathMatchers[_].defaultUrlRedirect.hostRedirect == STRING
    input.Body.resource.pathMatchers[_].defaultUrlRedirect.httpsRedirect == BOOLEAN
    input.Body.resource.pathMatchers[_].defaultUrlRedirect.pathRedirect == STRING
    input.Body.resource.pathMatchers[_].defaultUrlRedirect.prefixRedirect == STRING
    input.Body.resource.pathMatchers[_].defaultUrlRedirect.redirectResponseCode == enum_HttpRedirectActionRedirectResponseCode[_]
    input.Body.resource.pathMatchers[_].defaultUrlRedirect.stripQuery == BOOLEAN
    input.Body.resource.pathMatchers[_].description == STRING
    input.Body.resource.pathMatchers[_].headerAction.requestHeadersToAdd[_].headerName == STRING
    input.Body.resource.pathMatchers[_].headerAction.requestHeadersToAdd[_].headerValue == STRING
    input.Body.resource.pathMatchers[_].headerAction.requestHeadersToAdd[_].replace == BOOLEAN
    input.Body.resource.pathMatchers[_].headerAction.requestHeadersToRemove[_] == STRING
    input.Body.resource.pathMatchers[_].headerAction.responseHeadersToAdd[_].headerName == STRING
    input.Body.resource.pathMatchers[_].headerAction.responseHeadersToAdd[_].headerValue == STRING
    input.Body.resource.pathMatchers[_].headerAction.responseHeadersToAdd[_].replace == BOOLEAN
    input.Body.resource.pathMatchers[_].headerAction.responseHeadersToRemove[_] == STRING
    input.Body.resource.pathMatchers[_].name == STRING
    input.Body.resource.pathMatchers[_].pathRules[_].paths[_] == STRING
    input.Body.resource.pathMatchers[_].pathRules[_].routeAction.corsPolicy.allowCredentials == BOOLEAN
    input.Body.resource.pathMatchers[_].pathRules[_].routeAction.corsPolicy.allowHeaders[_] == STRING
    input.Body.resource.pathMatchers[_].pathRules[_].routeAction.corsPolicy.allowMethods[_] == STRING
    input.Body.resource.pathMatchers[_].pathRules[_].routeAction.corsPolicy.allowOriginRegexes[_] == STRING
    input.Body.resource.pathMatchers[_].pathRules[_].routeAction.corsPolicy.allowOrigins[_] == STRING
    input.Body.resource.pathMatchers[_].pathRules[_].routeAction.corsPolicy.disabled == BOOLEAN
    input.Body.resource.pathMatchers[_].pathRules[_].routeAction.corsPolicy.exposeHeaders[_] == STRING
    input.Body.resource.pathMatchers[_].pathRules[_].routeAction.corsPolicy.maxAge == INTEGER
    input.Body.resource.pathMatchers[_].pathRules[_].routeAction.faultInjectionPolicy.abort.httpStatus == INTEGER
    input.Body.resource.pathMatchers[_].pathRules[_].routeAction.faultInjectionPolicy.abort.percentage == NUMBER
    input.Body.resource.pathMatchers[_].pathRules[_].routeAction.faultInjectionPolicy.delay.fixedDelay.nanos == INTEGER
    input.Body.resource.pathMatchers[_].pathRules[_].routeAction.faultInjectionPolicy.delay.fixedDelay.seconds == STRING
    input.Body.resource.pathMatchers[_].pathRules[_].routeAction.faultInjectionPolicy.delay.percentage == NUMBER
    input.Body.resource.pathMatchers[_].pathRules[_].routeAction.maxStreamDuration.nanos == INTEGER
    input.Body.resource.pathMatchers[_].pathRules[_].routeAction.maxStreamDuration.seconds == STRING
    input.Body.resource.pathMatchers[_].pathRules[_].routeAction.requestMirrorPolicy.backendService == STRING
    input.Body.resource.pathMatchers[_].pathRules[_].routeAction.retryPolicy.numRetries == INTEGER
    input.Body.resource.pathMatchers[_].pathRules[_].routeAction.retryPolicy.perTryTimeout.nanos == INTEGER
    input.Body.resource.pathMatchers[_].pathRules[_].routeAction.retryPolicy.perTryTimeout.seconds == STRING
    input.Body.resource.pathMatchers[_].pathRules[_].routeAction.retryPolicy.retryConditions[_] == STRING
    input.Body.resource.pathMatchers[_].pathRules[_].routeAction.timeout.nanos == INTEGER
    input.Body.resource.pathMatchers[_].pathRules[_].routeAction.timeout.seconds == STRING
    input.Body.resource.pathMatchers[_].pathRules[_].routeAction.urlRewrite.hostRewrite == STRING
    input.Body.resource.pathMatchers[_].pathRules[_].routeAction.urlRewrite.pathPrefixRewrite == STRING
    input.Body.resource.pathMatchers[_].pathRules[_].routeAction.urlRewrite.pathTemplateRewrite == STRING
    input.Body.resource.pathMatchers[_].pathRules[_].routeAction.weightedBackendServices[_].backendService == STRING
    input.Body.resource.pathMatchers[_].pathRules[_].routeAction.weightedBackendServices[_].headerAction.requestHeadersToAdd[_].headerName == STRING
    input.Body.resource.pathMatchers[_].pathRules[_].routeAction.weightedBackendServices[_].headerAction.requestHeadersToAdd[_].headerValue == STRING
    input.Body.resource.pathMatchers[_].pathRules[_].routeAction.weightedBackendServices[_].headerAction.requestHeadersToAdd[_].replace == BOOLEAN
    input.Body.resource.pathMatchers[_].pathRules[_].routeAction.weightedBackendServices[_].headerAction.requestHeadersToRemove[_] == STRING
    input.Body.resource.pathMatchers[_].pathRules[_].routeAction.weightedBackendServices[_].headerAction.responseHeadersToAdd[_].headerName == STRING
    input.Body.resource.pathMatchers[_].pathRules[_].routeAction.weightedBackendServices[_].headerAction.responseHeadersToAdd[_].headerValue == STRING
    input.Body.resource.pathMatchers[_].pathRules[_].routeAction.weightedBackendServices[_].headerAction.responseHeadersToAdd[_].replace == BOOLEAN
    input.Body.resource.pathMatchers[_].pathRules[_].routeAction.weightedBackendServices[_].headerAction.responseHeadersToRemove[_] == STRING
    input.Body.resource.pathMatchers[_].pathRules[_].routeAction.weightedBackendServices[_].weight == INTEGER
    input.Body.resource.pathMatchers[_].pathRules[_].service == STRING
    input.Body.resource.pathMatchers[_].pathRules[_].urlRedirect.hostRedirect == STRING
    input.Body.resource.pathMatchers[_].pathRules[_].urlRedirect.httpsRedirect == BOOLEAN
    input.Body.resource.pathMatchers[_].pathRules[_].urlRedirect.pathRedirect == STRING
    input.Body.resource.pathMatchers[_].pathRules[_].urlRedirect.prefixRedirect == STRING
    input.Body.resource.pathMatchers[_].pathRules[_].urlRedirect.redirectResponseCode == enum_HttpRedirectActionRedirectResponseCode[_]
    input.Body.resource.pathMatchers[_].pathRules[_].urlRedirect.stripQuery == BOOLEAN
    input.Body.resource.pathMatchers[_].routeRules[_].description == STRING
    input.Body.resource.pathMatchers[_].routeRules[_].headerAction.requestHeadersToAdd[_].headerName == STRING
    input.Body.resource.pathMatchers[_].routeRules[_].headerAction.requestHeadersToAdd[_].headerValue == STRING
    input.Body.resource.pathMatchers[_].routeRules[_].headerAction.requestHeadersToAdd[_].replace == BOOLEAN
    input.Body.resource.pathMatchers[_].routeRules[_].headerAction.requestHeadersToRemove[_] == STRING
    input.Body.resource.pathMatchers[_].routeRules[_].headerAction.responseHeadersToAdd[_].headerName == STRING
    input.Body.resource.pathMatchers[_].routeRules[_].headerAction.responseHeadersToAdd[_].headerValue == STRING
    input.Body.resource.pathMatchers[_].routeRules[_].headerAction.responseHeadersToAdd[_].replace == BOOLEAN
    input.Body.resource.pathMatchers[_].routeRules[_].headerAction.responseHeadersToRemove[_] == STRING
    input.Body.resource.pathMatchers[_].routeRules[_].matchRules[_].fullPathMatch == STRING
    input.Body.resource.pathMatchers[_].routeRules[_].matchRules[_].headerMatches[_].exactMatch == STRING
    input.Body.resource.pathMatchers[_].routeRules[_].matchRules[_].headerMatches[_].headerName == STRING
    input.Body.resource.pathMatchers[_].routeRules[_].matchRules[_].headerMatches[_].invertMatch == BOOLEAN
    input.Body.resource.pathMatchers[_].routeRules[_].matchRules[_].headerMatches[_].prefixMatch == STRING
    input.Body.resource.pathMatchers[_].routeRules[_].matchRules[_].headerMatches[_].presentMatch == BOOLEAN
    input.Body.resource.pathMatchers[_].routeRules[_].matchRules[_].headerMatches[_].rangeMatch.rangeEnd == STRING
    input.Body.resource.pathMatchers[_].routeRules[_].matchRules[_].headerMatches[_].rangeMatch.rangeStart == STRING
    input.Body.resource.pathMatchers[_].routeRules[_].matchRules[_].headerMatches[_].regexMatch == STRING
    input.Body.resource.pathMatchers[_].routeRules[_].matchRules[_].headerMatches[_].suffixMatch == STRING
    input.Body.resource.pathMatchers[_].routeRules[_].matchRules[_].ignoreCase == BOOLEAN
    input.Body.resource.pathMatchers[_].routeRules[_].matchRules[_].metadataFilters[_].filterLabels[_].name == STRING
    input.Body.resource.pathMatchers[_].routeRules[_].matchRules[_].metadataFilters[_].filterLabels[_].value == STRING
    input.Body.resource.pathMatchers[_].routeRules[_].matchRules[_].metadataFilters[_].filterMatchCriteria == enum_MetadataFilterFilterMatchCriteria[_]
    input.Body.resource.pathMatchers[_].routeRules[_].matchRules[_].pathTemplateMatch == STRING
    input.Body.resource.pathMatchers[_].routeRules[_].matchRules[_].prefixMatch == STRING
    input.Body.resource.pathMatchers[_].routeRules[_].matchRules[_].queryParameterMatches[_].exactMatch == STRING
    input.Body.resource.pathMatchers[_].routeRules[_].matchRules[_].queryParameterMatches[_].name == STRING
    input.Body.resource.pathMatchers[_].routeRules[_].matchRules[_].queryParameterMatches[_].presentMatch == BOOLEAN
    input.Body.resource.pathMatchers[_].routeRules[_].matchRules[_].queryParameterMatches[_].regexMatch == STRING
    input.Body.resource.pathMatchers[_].routeRules[_].matchRules[_].regexMatch == STRING
    input.Body.resource.pathMatchers[_].routeRules[_].priority == INTEGER
    input.Body.resource.pathMatchers[_].routeRules[_].routeAction.corsPolicy.allowCredentials == BOOLEAN
    input.Body.resource.pathMatchers[_].routeRules[_].routeAction.corsPolicy.allowHeaders[_] == STRING
    input.Body.resource.pathMatchers[_].routeRules[_].routeAction.corsPolicy.allowMethods[_] == STRING
    input.Body.resource.pathMatchers[_].routeRules[_].routeAction.corsPolicy.allowOriginRegexes[_] == STRING
    input.Body.resource.pathMatchers[_].routeRules[_].routeAction.corsPolicy.allowOrigins[_] == STRING
    input.Body.resource.pathMatchers[_].routeRules[_].routeAction.corsPolicy.disabled == BOOLEAN
    input.Body.resource.pathMatchers[_].routeRules[_].routeAction.corsPolicy.exposeHeaders[_] == STRING
    input.Body.resource.pathMatchers[_].routeRules[_].routeAction.corsPolicy.maxAge == INTEGER
    input.Body.resource.pathMatchers[_].routeRules[_].routeAction.faultInjectionPolicy.abort.httpStatus == INTEGER
    input.Body.resource.pathMatchers[_].routeRules[_].routeAction.faultInjectionPolicy.abort.percentage == NUMBER
    input.Body.resource.pathMatchers[_].routeRules[_].routeAction.faultInjectionPolicy.delay.fixedDelay.nanos == INTEGER
    input.Body.resource.pathMatchers[_].routeRules[_].routeAction.faultInjectionPolicy.delay.fixedDelay.seconds == STRING
    input.Body.resource.pathMatchers[_].routeRules[_].routeAction.faultInjectionPolicy.delay.percentage == NUMBER
    input.Body.resource.pathMatchers[_].routeRules[_].routeAction.maxStreamDuration.nanos == INTEGER
    input.Body.resource.pathMatchers[_].routeRules[_].routeAction.maxStreamDuration.seconds == STRING
    input.Body.resource.pathMatchers[_].routeRules[_].routeAction.requestMirrorPolicy.backendService == STRING
    input.Body.resource.pathMatchers[_].routeRules[_].routeAction.retryPolicy.numRetries == INTEGER
    input.Body.resource.pathMatchers[_].routeRules[_].routeAction.retryPolicy.perTryTimeout.nanos == INTEGER
    input.Body.resource.pathMatchers[_].routeRules[_].routeAction.retryPolicy.perTryTimeout.seconds == STRING
    input.Body.resource.pathMatchers[_].routeRules[_].routeAction.retryPolicy.retryConditions[_] == STRING
    input.Body.resource.pathMatchers[_].routeRules[_].routeAction.timeout.nanos == INTEGER
    input.Body.resource.pathMatchers[_].routeRules[_].routeAction.timeout.seconds == STRING
    input.Body.resource.pathMatchers[_].routeRules[_].routeAction.urlRewrite.hostRewrite == STRING
    input.Body.resource.pathMatchers[_].routeRules[_].routeAction.urlRewrite.pathPrefixRewrite == STRING
    input.Body.resource.pathMatchers[_].routeRules[_].routeAction.urlRewrite.pathTemplateRewrite == STRING
    input.Body.resource.pathMatchers[_].routeRules[_].routeAction.weightedBackendServices[_].backendService == STRING
    input.Body.resource.pathMatchers[_].routeRules[_].routeAction.weightedBackendServices[_].headerAction.requestHeadersToAdd[_].headerName == STRING
    input.Body.resource.pathMatchers[_].routeRules[_].routeAction.weightedBackendServices[_].headerAction.requestHeadersToAdd[_].headerValue == STRING
    input.Body.resource.pathMatchers[_].routeRules[_].routeAction.weightedBackendServices[_].headerAction.requestHeadersToAdd[_].replace == BOOLEAN
    input.Body.resource.pathMatchers[_].routeRules[_].routeAction.weightedBackendServices[_].headerAction.requestHeadersToRemove[_] == STRING
    input.Body.resource.pathMatchers[_].routeRules[_].routeAction.weightedBackendServices[_].headerAction.responseHeadersToAdd[_].headerName == STRING
    input.Body.resource.pathMatchers[_].routeRules[_].routeAction.weightedBackendServices[_].headerAction.responseHeadersToAdd[_].headerValue == STRING
    input.Body.resource.pathMatchers[_].routeRules[_].routeAction.weightedBackendServices[_].headerAction.responseHeadersToAdd[_].replace == BOOLEAN
    input.Body.resource.pathMatchers[_].routeRules[_].routeAction.weightedBackendServices[_].headerAction.responseHeadersToRemove[_] == STRING
    input.Body.resource.pathMatchers[_].routeRules[_].routeAction.weightedBackendServices[_].weight == INTEGER
    input.Body.resource.pathMatchers[_].routeRules[_].service == STRING
    input.Body.resource.pathMatchers[_].routeRules[_].urlRedirect.hostRedirect == STRING
    input.Body.resource.pathMatchers[_].routeRules[_].urlRedirect.httpsRedirect == BOOLEAN
    input.Body.resource.pathMatchers[_].routeRules[_].urlRedirect.pathRedirect == STRING
    input.Body.resource.pathMatchers[_].routeRules[_].urlRedirect.prefixRedirect == STRING
    input.Body.resource.pathMatchers[_].routeRules[_].urlRedirect.redirectResponseCode == enum_HttpRedirectActionRedirectResponseCode[_]
    input.Body.resource.pathMatchers[_].routeRules[_].urlRedirect.stripQuery == BOOLEAN
    input.Body.resource.region == STRING
    input.Body.resource.selfLink == STRING
    input.Body.resource.tests[_].description == STRING
    input.Body.resource.tests[_].expectedOutputUrl == STRING
    input.Body.resource.tests[_].expectedRedirectResponseCode == INTEGER
    input.Body.resource.tests[_].headers[_].name == STRING
    input.Body.resource.tests[_].headers[_].value == STRING
    input.Body.resource.tests[_].host == STRING
    input.Body.resource.tests[_].path == STRING
    input.Body.resource.tests[_].service == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.urlMap == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.vpnGateways.aggregatedList

valid {
    input.ReqMap.ProjectID == STRING
    input.Qs.filter == STRING
    input.Qs.includeAllScopes == BOOLEAN
    input.Qs.maxResults == INTEGER
    input.Qs.orderBy == STRING
    input.Qs.pageToken == STRING
    input.Qs.returnPartialSuccess == BOOLEAN
    input.Qs.serviceProjectNumber == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.vpnGateways.delete

valid {
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.ReqMap.vpnGateway == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.vpnGateways.get

valid {
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.ReqMap.vpnGateway == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.vpnGateways.getStatus

valid {
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.ReqMap.vpnGateway == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.vpnGateways.insert

enum_VpnGatewayGatewayIpVersion := [ "IPV4", "IPV6" ]
enum_VpnGatewayStackType := [ "IPV4_IPV6", "IPV4_ONLY" ]

valid {
    input.Body.creationTimestamp == STRING
    input.Body.description == STRING
    input.Body.gatewayIpVersion == enum_VpnGatewayGatewayIpVersion[_]
    input.Body.id == STRING
    input.Body.kind == STRING
    input.Body.labelFingerprint == STRING
    input.Body.labels.STRING == STRING
    input.Body.name == STRING
    input.Body.network == STRING
    input.Body.region == STRING
    input.Body.selfLink == STRING
    input.Body.stackType == enum_VpnGatewayStackType[_]
    input.Body.vpnInterfaces[_].id == INTEGER
    input.Body.vpnInterfaces[_].interconnectAttachment == STRING
    input.Body.vpnInterfaces[_].ipAddress == STRING
    input.Body.vpnInterfaces[_].ipv6Address == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.vpnGateways.list

valid {
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.Qs.filter == STRING
    input.Qs.maxResults == INTEGER
    input.Qs.orderBy == STRING
    input.Qs.pageToken == STRING
    input.Qs.returnPartialSuccess == BOOLEAN
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.vpnGateways.setLabels

valid {
    input.Body.labelFingerprint == STRING
    input.Body.labels.STRING == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.ReqMap.resource == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.vpnGateways.testIamPermissions

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

compute.vpnTunnels.aggregatedList

valid {
    input.ReqMap.ProjectID == STRING
    input.Qs.filter == STRING
    input.Qs.includeAllScopes == BOOLEAN
    input.Qs.maxResults == INTEGER
    input.Qs.orderBy == STRING
    input.Qs.pageToken == STRING
    input.Qs.returnPartialSuccess == BOOLEAN
    input.Qs.serviceProjectNumber == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.vpnTunnels.delete

valid {
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.ReqMap.vpnTunnel == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.vpnTunnels.get

valid {
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.ReqMap.vpnTunnel == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.vpnTunnels.insert

enum_VpnTunnelStatus := [ "ALLOCATING_RESOURCES", "AUTHORIZATION_ERROR", "DEPROVISIONING", "ESTABLISHED", "FAILED", "FIRST_HANDSHAKE", "NEGOTIATION_FAILURE", "NETWORK_ERROR", "NO_INCOMING_PACKETS", "PROVISIONING", "REJECTED", "STOPPED", "WAITING_FOR_FULL_CONFIG" ]

valid {
    input.Body.creationTimestamp == STRING
    input.Body.description == STRING
    input.Body.detailedStatus == STRING
    input.Body.id == STRING
    input.Body.ikeVersion == INTEGER
    input.Body.kind == STRING
    input.Body.labelFingerprint == STRING
    input.Body.labels.STRING == STRING
    input.Body.localTrafficSelector[_] == STRING
    input.Body.name == STRING
    input.Body.peerExternalGateway == STRING
    input.Body.peerExternalGatewayInterface == INTEGER
    input.Body.peerGcpGateway == STRING
    input.Body.peerIp == STRING
    input.Body.region == STRING
    input.Body.remoteTrafficSelector[_] == STRING
    input.Body.router == STRING
    input.Body.selfLink == STRING
    input.Body.sharedSecret == STRING
    input.Body.sharedSecretHash == STRING
    input.Body.status == enum_VpnTunnelStatus[_]
    input.Body.targetVpnGateway == STRING
    input.Body.vpnGateway == STRING
    input.Body.vpnGatewayInterface == INTEGER
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.vpnTunnels.list

valid {
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.Qs.filter == STRING
    input.Qs.maxResults == INTEGER
    input.Qs.orderBy == STRING
    input.Qs.pageToken == STRING
    input.Qs.returnPartialSuccess == BOOLEAN
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.vpnTunnels.setLabels

valid {
    input.Body.labelFingerprint == STRING
    input.Body.labels.STRING == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.region == STRING
    input.ReqMap.resource == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.vpnTunnels.testIamPermissions

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

compute.zoneOperations.delete

valid {
    input.ReqMap.operation == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.zone == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.zoneOperations.get

valid {
    input.ReqMap.operation == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.zone == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.zoneOperations.list

valid {
    input.ReqMap.ProjectID == STRING
    input.ReqMap.zone == STRING
    input.Qs.filter == STRING
    input.Qs.maxResults == INTEGER
    input.Qs.orderBy == STRING
    input.Qs.pageToken == STRING
    input.Qs.returnPartialSuccess == BOOLEAN
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.zoneOperations.wait

valid {
    input.ReqMap.operation == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.zone == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.zoneQueuedResources.aggregatedList

valid {
    input.ReqMap.ProjectID == STRING
    input.Qs.filter == STRING
    input.Qs.includeAllScopes == BOOLEAN
    input.Qs.maxResults == INTEGER
    input.Qs.orderBy == STRING
    input.Qs.pageToken == STRING
    input.Qs.returnPartialSuccess == BOOLEAN
    input.Qs.serviceProjectNumber == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.zoneQueuedResources.cancel

valid {
    input.ReqMap.ProjectID == STRING
    input.ReqMap.queuedResource == STRING
    input.ReqMap.zone == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.zoneQueuedResources.delete

valid {
    input.ReqMap.ProjectID == STRING
    input.ReqMap.queuedResource == STRING
    input.ReqMap.zone == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.zoneQueuedResources.get

valid {
    input.ReqMap.ProjectID == STRING
    input.ReqMap.queuedResource == STRING
    input.ReqMap.zone == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.zoneQueuedResources.insert

enum_AccessConfigNetworkTier := [ "FIXED_STANDARD", "PREMIUM", "SELECT", "STANDARD", "STANDARD_OVERRIDES_FIXED_STANDARD" ]
enum_AccessConfigType := [ "DIRECT_IPV6", "ONE_TO_ONE_NAT" ]
enum_AdvancedMachineFeaturesPerformanceMonitoringUnit := [ "ARCHITECTURAL", "ENHANCED", "PERFORMANCE_MONITORING_UNIT_UNSPECIFIED", "STANDARD" ]
enum_AttachedDiskArchitecture := [ "ARCHITECTURE_UNSPECIFIED", "ARM64", "X86_64" ]
enum_AttachedDiskInitializeParamsArchitecture := [ "ARCHITECTURE_UNSPECIFIED", "ARM64", "X86_64" ]
enum_AttachedDiskInitializeParamsInterface := [ "NVME", "SCSI", "UNSPECIFIED" ]
enum_AttachedDiskInitializeParamsOnUpdateAction := [ "RECREATE_DISK", "RECREATE_DISK_IF_SOURCE_CHANGED", "USE_EXISTING_DISK" ]
enum_AttachedDiskInterface := [ "NVDIMM", "NVME", "SCSI" ]
enum_AttachedDiskMode := [ "READ_ONLY", "READ_WRITE" ]
enum_AttachedDiskSavedState := [ "DISK_SAVED_STATE_UNSPECIFIED", "PRESERVED" ]
enum_AttachedDiskType := [ "PERSISTENT", "SCRATCH" ]
enum_ConfidentialInstanceConfigConfidentialInstanceType := [ "CONFIDENTIAL_INSTANCE_TYPE_UNSPECIFIED", "SEV", "SEV_SNP", "TDX" ]
enum_FileContentBufferFileType := [ "BIN", "UNDEFINED", "X509" ]
enum_GuestOsFeatureType := [ "BARE_METAL_LINUX_COMPATIBLE", "FEATURE_TYPE_UNSPECIFIED", "GVNIC", "IDPF", "MULTI_IP_SUBNET", "SECURE_BOOT", "SEV_CAPABLE", "SEV_LIVE_MIGRATABLE", "SEV_LIVE_MIGRATABLE_V2", "SEV_SNP_CAPABLE", "TDX_CAPABLE", "UEFI_COMPATIBLE", "VIRTIO_SCSI_MULTIQUEUE", "WINDOWS" ]
enum_InstancePropertiesKeyRevocationActionType := [ "KEY_REVOCATION_ACTION_TYPE_UNSPECIFIED", "NONE", "STOP" ]
enum_InstancePropertiesPostKeyRevocationActionType := [ "NOOP", "POST_KEY_REVOCATION_ACTION_TYPE_UNSPECIFIED", "SHUTDOWN" ]
enum_InstancePropertiesPrivateIpv6GoogleAccess := [ "ENABLE_BIDIRECTIONAL_ACCESS_TO_GOOGLE", "ENABLE_OUTBOUND_VM_ACCESS_TO_GOOGLE", "INHERIT_FROM_SUBNETWORK" ]
enum_LocationPolicyLocationPreference := [ "ALLOW", "DENY", "PREFERENCE_UNSPECIFIED" ]
enum_LocationPolicyTargetShape := [ "ANY", "ANY_SINGLE_ZONE", "BALANCED" ]
enum_NetworkInterfaceIgmpQuery := [ "IGMP_QUERY_DISABLED", "IGMP_QUERY_V2" ]
enum_NetworkInterfaceIpv6AccessType := [ "EXTERNAL", "INTERNAL" ]
enum_NetworkInterfaceNicType := [ "GVNIC", "IDPF", "UNSPECIFIED_NIC_TYPE", "VIRTIO_NET" ]
enum_NetworkInterfaceStackType := [ "IPV4_IPV6", "IPV4_ONLY", "IPV6_ONLY" ]
enum_NetworkInterfaceSubInterfaceIpAllocationMode := [ "ALLOCATE_IP", "DO_NOT_ALLOCATE_IP", "UNSPECIFIED" ]
enum_NetworkPerformanceConfigExternalIpEgressBandwidthTier := [ "DEFAULT", "TIER_1" ]
enum_NetworkPerformanceConfigTotalEgressBandwidthTier := [ "DEFAULT", "TIER_1" ]
enum_QueuedResourceState := [ "ACCEPTED", "CANCELLED", "CREATING", "DELETING", "FAILED", "PROVISIONING", "STATE_UNSPECIFIED", "SUCCEEDED" ]
enum_QuotaExceededInfoRolloutStatus := [ "IN_PROGRESS", "ROLLOUT_STATUS_UNSPECIFIED" ]
enum_ReservationAffinityConsumeReservationType := [ "ANY_RESERVATION", "NO_RESERVATION", "SPECIFIC_RESERVATION", "SPECIFIC_THEN_ANY_RESERVATION", "SPECIFIC_THEN_NO_RESERVATION", "UNSPECIFIED" ]
enum_SchedulingInstanceTerminationAction := [ "DELETE", "INSTANCE_TERMINATION_ACTION_UNSPECIFIED", "STOP" ]
enum_SchedulingMaintenanceInterval := [ "AS_NEEDED", "PERIODIC", "RECURRENT" ]
enum_SchedulingNodeAffinityOperator := [ "IN", "NOT_IN", "OPERATOR_UNSPECIFIED" ]
enum_SchedulingOnHostMaintenance := [ "MIGRATE", "TERMINATE" ]
enum_SchedulingProvisioningModel := [ "SPOT", "STANDARD" ]

valid {
    input.Body.bulkInsertInstanceResource.count == STRING
    input.Body.bulkInsertInstanceResource.instanceProperties.advancedMachineFeatures.enableNestedVirtualization == BOOLEAN
    input.Body.bulkInsertInstanceResource.instanceProperties.advancedMachineFeatures.enableUefiNetworking == BOOLEAN
    input.Body.bulkInsertInstanceResource.instanceProperties.advancedMachineFeatures.enableWatchdogTimer == BOOLEAN
    input.Body.bulkInsertInstanceResource.instanceProperties.advancedMachineFeatures.numaNodeCount == INTEGER
    input.Body.bulkInsertInstanceResource.instanceProperties.advancedMachineFeatures.performanceMonitoringUnit == enum_AdvancedMachineFeaturesPerformanceMonitoringUnit[_]
    input.Body.bulkInsertInstanceResource.instanceProperties.advancedMachineFeatures.threadsPerCore == INTEGER
    input.Body.bulkInsertInstanceResource.instanceProperties.advancedMachineFeatures.visibleCoreCount == INTEGER
    input.Body.bulkInsertInstanceResource.instanceProperties.canIpForward == BOOLEAN
    input.Body.bulkInsertInstanceResource.instanceProperties.confidentialInstanceConfig.confidentialInstanceType == enum_ConfidentialInstanceConfigConfidentialInstanceType[_]
    input.Body.bulkInsertInstanceResource.instanceProperties.confidentialInstanceConfig.enableConfidentialCompute == BOOLEAN
    input.Body.bulkInsertInstanceResource.instanceProperties.description == STRING
    input.Body.bulkInsertInstanceResource.instanceProperties.disks[_].architecture == enum_AttachedDiskArchitecture[_]
    input.Body.bulkInsertInstanceResource.instanceProperties.disks[_].autoDelete == BOOLEAN
    input.Body.bulkInsertInstanceResource.instanceProperties.disks[_].boot == BOOLEAN
    input.Body.bulkInsertInstanceResource.instanceProperties.disks[_].deviceName == STRING
    input.Body.bulkInsertInstanceResource.instanceProperties.disks[_].diskEncryptionKey.kmsKeyName == STRING
    input.Body.bulkInsertInstanceResource.instanceProperties.disks[_].diskEncryptionKey.kmsKeyServiceAccount == STRING
    input.Body.bulkInsertInstanceResource.instanceProperties.disks[_].diskEncryptionKey.rawKey == STRING
    input.Body.bulkInsertInstanceResource.instanceProperties.disks[_].diskEncryptionKey.rsaEncryptedKey == STRING
    input.Body.bulkInsertInstanceResource.instanceProperties.disks[_].diskEncryptionKey.sha256 == STRING
    input.Body.bulkInsertInstanceResource.instanceProperties.disks[_].diskSizeGb == STRING
    input.Body.bulkInsertInstanceResource.instanceProperties.disks[_].forceAttach == BOOLEAN
    input.Body.bulkInsertInstanceResource.instanceProperties.disks[_].guestOsFeatures[_].type == enum_GuestOsFeatureType[_]
    input.Body.bulkInsertInstanceResource.instanceProperties.disks[_].index == INTEGER
    input.Body.bulkInsertInstanceResource.instanceProperties.disks[_].initializeParams.architecture == enum_AttachedDiskInitializeParamsArchitecture[_]
    input.Body.bulkInsertInstanceResource.instanceProperties.disks[_].initializeParams.description == STRING
    input.Body.bulkInsertInstanceResource.instanceProperties.disks[_].initializeParams.diskName == STRING
    input.Body.bulkInsertInstanceResource.instanceProperties.disks[_].initializeParams.diskSizeGb == STRING
    input.Body.bulkInsertInstanceResource.instanceProperties.disks[_].initializeParams.diskType == STRING
    input.Body.bulkInsertInstanceResource.instanceProperties.disks[_].initializeParams.enableConfidentialCompute == BOOLEAN
    input.Body.bulkInsertInstanceResource.instanceProperties.disks[_].initializeParams.guestOsFeatures[_].type == enum_GuestOsFeatureType[_]
    input.Body.bulkInsertInstanceResource.instanceProperties.disks[_].initializeParams.interface == enum_AttachedDiskInitializeParamsInterface[_]
    input.Body.bulkInsertInstanceResource.instanceProperties.disks[_].initializeParams.labels.STRING == STRING
    input.Body.bulkInsertInstanceResource.instanceProperties.disks[_].initializeParams.licenseCodes[_] == STRING
    input.Body.bulkInsertInstanceResource.instanceProperties.disks[_].initializeParams.licenses[_] == STRING
    input.Body.bulkInsertInstanceResource.instanceProperties.disks[_].initializeParams.multiWriter == BOOLEAN
    input.Body.bulkInsertInstanceResource.instanceProperties.disks[_].initializeParams.onUpdateAction == enum_AttachedDiskInitializeParamsOnUpdateAction[_]
    input.Body.bulkInsertInstanceResource.instanceProperties.disks[_].initializeParams.provisionedIops == STRING
    input.Body.bulkInsertInstanceResource.instanceProperties.disks[_].initializeParams.provisionedThroughput == STRING
    input.Body.bulkInsertInstanceResource.instanceProperties.disks[_].initializeParams.replicaZones[_] == STRING
    input.Body.bulkInsertInstanceResource.instanceProperties.disks[_].initializeParams.resourceManagerTags.STRING == STRING
    input.Body.bulkInsertInstanceResource.instanceProperties.disks[_].initializeParams.resourcePolicies[_] == STRING
    input.Body.bulkInsertInstanceResource.instanceProperties.disks[_].initializeParams.sourceImage == STRING
    input.Body.bulkInsertInstanceResource.instanceProperties.disks[_].initializeParams.sourceImageEncryptionKey.kmsKeyName == STRING
    input.Body.bulkInsertInstanceResource.instanceProperties.disks[_].initializeParams.sourceImageEncryptionKey.kmsKeyServiceAccount == STRING
    input.Body.bulkInsertInstanceResource.instanceProperties.disks[_].initializeParams.sourceImageEncryptionKey.rawKey == STRING
    input.Body.bulkInsertInstanceResource.instanceProperties.disks[_].initializeParams.sourceImageEncryptionKey.rsaEncryptedKey == STRING
    input.Body.bulkInsertInstanceResource.instanceProperties.disks[_].initializeParams.sourceImageEncryptionKey.sha256 == STRING
    input.Body.bulkInsertInstanceResource.instanceProperties.disks[_].initializeParams.sourceInstantSnapshot == STRING
    input.Body.bulkInsertInstanceResource.instanceProperties.disks[_].initializeParams.sourceSnapshot == STRING
    input.Body.bulkInsertInstanceResource.instanceProperties.disks[_].initializeParams.sourceSnapshotEncryptionKey.kmsKeyName == STRING
    input.Body.bulkInsertInstanceResource.instanceProperties.disks[_].initializeParams.sourceSnapshotEncryptionKey.kmsKeyServiceAccount == STRING
    input.Body.bulkInsertInstanceResource.instanceProperties.disks[_].initializeParams.sourceSnapshotEncryptionKey.rawKey == STRING
    input.Body.bulkInsertInstanceResource.instanceProperties.disks[_].initializeParams.sourceSnapshotEncryptionKey.rsaEncryptedKey == STRING
    input.Body.bulkInsertInstanceResource.instanceProperties.disks[_].initializeParams.sourceSnapshotEncryptionKey.sha256 == STRING
    input.Body.bulkInsertInstanceResource.instanceProperties.disks[_].initializeParams.storagePool == STRING
    input.Body.bulkInsertInstanceResource.instanceProperties.disks[_].interface == enum_AttachedDiskInterface[_]
    input.Body.bulkInsertInstanceResource.instanceProperties.disks[_].kind == STRING
    input.Body.bulkInsertInstanceResource.instanceProperties.disks[_].licenses[_] == STRING
    input.Body.bulkInsertInstanceResource.instanceProperties.disks[_].locked == BOOLEAN
    input.Body.bulkInsertInstanceResource.instanceProperties.disks[_].mode == enum_AttachedDiskMode[_]
    input.Body.bulkInsertInstanceResource.instanceProperties.disks[_].savedState == enum_AttachedDiskSavedState[_]
    input.Body.bulkInsertInstanceResource.instanceProperties.disks[_].shieldedInstanceInitialState.dbs[_].content == STRING
    input.Body.bulkInsertInstanceResource.instanceProperties.disks[_].shieldedInstanceInitialState.dbs[_].fileType == enum_FileContentBufferFileType[_]
    input.Body.bulkInsertInstanceResource.instanceProperties.disks[_].shieldedInstanceInitialState.dbxs[_].content == STRING
    input.Body.bulkInsertInstanceResource.instanceProperties.disks[_].shieldedInstanceInitialState.dbxs[_].fileType == enum_FileContentBufferFileType[_]
    input.Body.bulkInsertInstanceResource.instanceProperties.disks[_].shieldedInstanceInitialState.keks[_].content == STRING
    input.Body.bulkInsertInstanceResource.instanceProperties.disks[_].shieldedInstanceInitialState.keks[_].fileType == enum_FileContentBufferFileType[_]
    input.Body.bulkInsertInstanceResource.instanceProperties.disks[_].shieldedInstanceInitialState.pk.content == STRING
    input.Body.bulkInsertInstanceResource.instanceProperties.disks[_].shieldedInstanceInitialState.pk.fileType == enum_FileContentBufferFileType[_]
    input.Body.bulkInsertInstanceResource.instanceProperties.disks[_].source == STRING
    input.Body.bulkInsertInstanceResource.instanceProperties.disks[_].type == enum_AttachedDiskType[_]
    input.Body.bulkInsertInstanceResource.instanceProperties.disks[_].userLicenses[_] == STRING
    input.Body.bulkInsertInstanceResource.instanceProperties.displayDevice.enableDisplay == BOOLEAN
    input.Body.bulkInsertInstanceResource.instanceProperties.guestAccelerators[_].acceleratorCount == INTEGER
    input.Body.bulkInsertInstanceResource.instanceProperties.guestAccelerators[_].acceleratorType == STRING
    input.Body.bulkInsertInstanceResource.instanceProperties.keyRevocationActionType == enum_InstancePropertiesKeyRevocationActionType[_]
    input.Body.bulkInsertInstanceResource.instanceProperties.labels.STRING == STRING
    input.Body.bulkInsertInstanceResource.instanceProperties.machineType == STRING
    input.Body.bulkInsertInstanceResource.instanceProperties.metadata.fingerprint == STRING
    input.Body.bulkInsertInstanceResource.instanceProperties.metadata.items[_].key == STRING
    input.Body.bulkInsertInstanceResource.instanceProperties.metadata.items[_].value == STRING
    input.Body.bulkInsertInstanceResource.instanceProperties.metadata.kind == STRING
    input.Body.bulkInsertInstanceResource.instanceProperties.minCpuPlatform == STRING
    input.Body.bulkInsertInstanceResource.instanceProperties.networkInterfaces[_].accessConfigs[_].externalIpv6 == STRING
    input.Body.bulkInsertInstanceResource.instanceProperties.networkInterfaces[_].accessConfigs[_].externalIpv6PrefixLength == INTEGER
    input.Body.bulkInsertInstanceResource.instanceProperties.networkInterfaces[_].accessConfigs[_].kind == STRING
    input.Body.bulkInsertInstanceResource.instanceProperties.networkInterfaces[_].accessConfigs[_].name == STRING
    input.Body.bulkInsertInstanceResource.instanceProperties.networkInterfaces[_].accessConfigs[_].natIP == STRING
    input.Body.bulkInsertInstanceResource.instanceProperties.networkInterfaces[_].accessConfigs[_].networkTier == enum_AccessConfigNetworkTier[_]
    input.Body.bulkInsertInstanceResource.instanceProperties.networkInterfaces[_].accessConfigs[_].publicDnsName == STRING
    input.Body.bulkInsertInstanceResource.instanceProperties.networkInterfaces[_].accessConfigs[_].publicPtrDomainName == STRING
    input.Body.bulkInsertInstanceResource.instanceProperties.networkInterfaces[_].accessConfigs[_].securityPolicy == STRING
    input.Body.bulkInsertInstanceResource.instanceProperties.networkInterfaces[_].accessConfigs[_].setPublicDns == BOOLEAN
    input.Body.bulkInsertInstanceResource.instanceProperties.networkInterfaces[_].accessConfigs[_].setPublicPtr == BOOLEAN
    input.Body.bulkInsertInstanceResource.instanceProperties.networkInterfaces[_].accessConfigs[_].type == enum_AccessConfigType[_]
    input.Body.bulkInsertInstanceResource.instanceProperties.networkInterfaces[_].aliasIpRanges[_].ipCidrRange == STRING
    input.Body.bulkInsertInstanceResource.instanceProperties.networkInterfaces[_].aliasIpRanges[_].subnetworkRangeName == STRING
    input.Body.bulkInsertInstanceResource.instanceProperties.networkInterfaces[_].fingerprint == STRING
    input.Body.bulkInsertInstanceResource.instanceProperties.networkInterfaces[_].igmpQuery == enum_NetworkInterfaceIgmpQuery[_]
    input.Body.bulkInsertInstanceResource.instanceProperties.networkInterfaces[_].internalIpv6PrefixLength == INTEGER
    input.Body.bulkInsertInstanceResource.instanceProperties.networkInterfaces[_].ipv6AccessConfigs[_].externalIpv6 == STRING
    input.Body.bulkInsertInstanceResource.instanceProperties.networkInterfaces[_].ipv6AccessConfigs[_].externalIpv6PrefixLength == INTEGER
    input.Body.bulkInsertInstanceResource.instanceProperties.networkInterfaces[_].ipv6AccessConfigs[_].kind == STRING
    input.Body.bulkInsertInstanceResource.instanceProperties.networkInterfaces[_].ipv6AccessConfigs[_].name == STRING
    input.Body.bulkInsertInstanceResource.instanceProperties.networkInterfaces[_].ipv6AccessConfigs[_].natIP == STRING
    input.Body.bulkInsertInstanceResource.instanceProperties.networkInterfaces[_].ipv6AccessConfigs[_].networkTier == enum_AccessConfigNetworkTier[_]
    input.Body.bulkInsertInstanceResource.instanceProperties.networkInterfaces[_].ipv6AccessConfigs[_].publicDnsName == STRING
    input.Body.bulkInsertInstanceResource.instanceProperties.networkInterfaces[_].ipv6AccessConfigs[_].publicPtrDomainName == STRING
    input.Body.bulkInsertInstanceResource.instanceProperties.networkInterfaces[_].ipv6AccessConfigs[_].securityPolicy == STRING
    input.Body.bulkInsertInstanceResource.instanceProperties.networkInterfaces[_].ipv6AccessConfigs[_].setPublicDns == BOOLEAN
    input.Body.bulkInsertInstanceResource.instanceProperties.networkInterfaces[_].ipv6AccessConfigs[_].setPublicPtr == BOOLEAN
    input.Body.bulkInsertInstanceResource.instanceProperties.networkInterfaces[_].ipv6AccessConfigs[_].type == enum_AccessConfigType[_]
    input.Body.bulkInsertInstanceResource.instanceProperties.networkInterfaces[_].ipv6AccessType == enum_NetworkInterfaceIpv6AccessType[_]
    input.Body.bulkInsertInstanceResource.instanceProperties.networkInterfaces[_].ipv6Address == STRING
    input.Body.bulkInsertInstanceResource.instanceProperties.networkInterfaces[_].kind == STRING
    input.Body.bulkInsertInstanceResource.instanceProperties.networkInterfaces[_].name == STRING
    input.Body.bulkInsertInstanceResource.instanceProperties.networkInterfaces[_].network == STRING
    input.Body.bulkInsertInstanceResource.instanceProperties.networkInterfaces[_].networkAttachment == STRING
    input.Body.bulkInsertInstanceResource.instanceProperties.networkInterfaces[_].networkIP == STRING
    input.Body.bulkInsertInstanceResource.instanceProperties.networkInterfaces[_].nicType == enum_NetworkInterfaceNicType[_]
    input.Body.bulkInsertInstanceResource.instanceProperties.networkInterfaces[_].parentNicName == STRING
    input.Body.bulkInsertInstanceResource.instanceProperties.networkInterfaces[_].queueCount == INTEGER
    input.Body.bulkInsertInstanceResource.instanceProperties.networkInterfaces[_].stackType == enum_NetworkInterfaceStackType[_]
    input.Body.bulkInsertInstanceResource.instanceProperties.networkInterfaces[_].subinterfaces[_].ipAddress == STRING
    input.Body.bulkInsertInstanceResource.instanceProperties.networkInterfaces[_].subinterfaces[_].ipAllocationMode == enum_NetworkInterfaceSubInterfaceIpAllocationMode[_]
    input.Body.bulkInsertInstanceResource.instanceProperties.networkInterfaces[_].subinterfaces[_].subnetwork == STRING
    input.Body.bulkInsertInstanceResource.instanceProperties.networkInterfaces[_].subinterfaces[_].vlan == INTEGER
    input.Body.bulkInsertInstanceResource.instanceProperties.networkInterfaces[_].subnetwork == STRING
    input.Body.bulkInsertInstanceResource.instanceProperties.networkInterfaces[_].vlan == INTEGER
    input.Body.bulkInsertInstanceResource.instanceProperties.networkPerformanceConfig.externalIpEgressBandwidthTier == enum_NetworkPerformanceConfigExternalIpEgressBandwidthTier[_]
    input.Body.bulkInsertInstanceResource.instanceProperties.networkPerformanceConfig.totalEgressBandwidthTier == enum_NetworkPerformanceConfigTotalEgressBandwidthTier[_]
    input.Body.bulkInsertInstanceResource.instanceProperties.partnerMetadata.STRING.entries.STRING == ANY
    input.Body.bulkInsertInstanceResource.instanceProperties.postKeyRevocationActionType == enum_InstancePropertiesPostKeyRevocationActionType[_]
    input.Body.bulkInsertInstanceResource.instanceProperties.privateIpv6GoogleAccess == enum_InstancePropertiesPrivateIpv6GoogleAccess[_]
    input.Body.bulkInsertInstanceResource.instanceProperties.reservationAffinity.consumeReservationType == enum_ReservationAffinityConsumeReservationType[_]
    input.Body.bulkInsertInstanceResource.instanceProperties.reservationAffinity.key == STRING
    input.Body.bulkInsertInstanceResource.instanceProperties.reservationAffinity.values[_] == STRING
    input.Body.bulkInsertInstanceResource.instanceProperties.resourceManagerTags.STRING == STRING
    input.Body.bulkInsertInstanceResource.instanceProperties.resourcePolicies[_] == STRING
    input.Body.bulkInsertInstanceResource.instanceProperties.scheduling.automaticRestart == BOOLEAN
    input.Body.bulkInsertInstanceResource.instanceProperties.scheduling.availabilityDomain == INTEGER
    input.Body.bulkInsertInstanceResource.instanceProperties.scheduling.currentCpus == INTEGER
    input.Body.bulkInsertInstanceResource.instanceProperties.scheduling.currentMemoryMb == STRING
    input.Body.bulkInsertInstanceResource.instanceProperties.scheduling.gracefulShutdown.enabled == BOOLEAN
    input.Body.bulkInsertInstanceResource.instanceProperties.scheduling.gracefulShutdown.maxDuration.nanos == INTEGER
    input.Body.bulkInsertInstanceResource.instanceProperties.scheduling.gracefulShutdown.maxDuration.seconds == STRING
    input.Body.bulkInsertInstanceResource.instanceProperties.scheduling.hostErrorTimeoutSeconds == INTEGER
    input.Body.bulkInsertInstanceResource.instanceProperties.scheduling.instanceTerminationAction == enum_SchedulingInstanceTerminationAction[_]
    input.Body.bulkInsertInstanceResource.instanceProperties.scheduling.latencyTolerant == BOOLEAN
    input.Body.bulkInsertInstanceResource.instanceProperties.scheduling.localSsdRecoveryTimeout.nanos == INTEGER
    input.Body.bulkInsertInstanceResource.instanceProperties.scheduling.localSsdRecoveryTimeout.seconds == STRING
    input.Body.bulkInsertInstanceResource.instanceProperties.scheduling.locationHint == STRING
    input.Body.bulkInsertInstanceResource.instanceProperties.scheduling.maintenanceFreezeDurationHours == INTEGER
    input.Body.bulkInsertInstanceResource.instanceProperties.scheduling.maintenanceInterval == enum_SchedulingMaintenanceInterval[_]
    input.Body.bulkInsertInstanceResource.instanceProperties.scheduling.maxRunDuration.nanos == INTEGER
    input.Body.bulkInsertInstanceResource.instanceProperties.scheduling.maxRunDuration.seconds == STRING
    input.Body.bulkInsertInstanceResource.instanceProperties.scheduling.minNodeCpus == INTEGER
    input.Body.bulkInsertInstanceResource.instanceProperties.scheduling.nodeAffinities[_].key == STRING
    input.Body.bulkInsertInstanceResource.instanceProperties.scheduling.nodeAffinities[_].operator == enum_SchedulingNodeAffinityOperator[_]
    input.Body.bulkInsertInstanceResource.instanceProperties.scheduling.nodeAffinities[_].values[_] == STRING
    input.Body.bulkInsertInstanceResource.instanceProperties.scheduling.onHostMaintenance == enum_SchedulingOnHostMaintenance[_]
    input.Body.bulkInsertInstanceResource.instanceProperties.scheduling.onInstanceStopAction.discardLocalSsd == BOOLEAN
    input.Body.bulkInsertInstanceResource.instanceProperties.scheduling.preemptible == BOOLEAN
    input.Body.bulkInsertInstanceResource.instanceProperties.scheduling.provisioningModel == enum_SchedulingProvisioningModel[_]
    input.Body.bulkInsertInstanceResource.instanceProperties.scheduling.terminationTime == STRING
    input.Body.bulkInsertInstanceResource.instanceProperties.secureTags[_] == STRING
    input.Body.bulkInsertInstanceResource.instanceProperties.serviceAccounts[_].email == STRING
    input.Body.bulkInsertInstanceResource.instanceProperties.serviceAccounts[_].scopes[_] == STRING
    input.Body.bulkInsertInstanceResource.instanceProperties.serviceIntegrationSpecs.STRING.backupDr.plan == STRING
    input.Body.bulkInsertInstanceResource.instanceProperties.shieldedInstanceConfig.enableIntegrityMonitoring == BOOLEAN
    input.Body.bulkInsertInstanceResource.instanceProperties.shieldedInstanceConfig.enableSecureBoot == BOOLEAN
    input.Body.bulkInsertInstanceResource.instanceProperties.shieldedInstanceConfig.enableVtpm == BOOLEAN
    input.Body.bulkInsertInstanceResource.instanceProperties.shieldedVmConfig.enableIntegrityMonitoring == BOOLEAN
    input.Body.bulkInsertInstanceResource.instanceProperties.shieldedVmConfig.enableSecureBoot == BOOLEAN
    input.Body.bulkInsertInstanceResource.instanceProperties.shieldedVmConfig.enableVtpm == BOOLEAN
    input.Body.bulkInsertInstanceResource.instanceProperties.tags.fingerprint == STRING
    input.Body.bulkInsertInstanceResource.instanceProperties.tags.items[_] == STRING
    input.Body.bulkInsertInstanceResource.locationPolicy.locations.STRING.constraints.maxCount == INTEGER
    input.Body.bulkInsertInstanceResource.locationPolicy.locations.STRING.names[_] == STRING
    input.Body.bulkInsertInstanceResource.locationPolicy.locations.STRING.preference == enum_LocationPolicyLocationPreference[_]
    input.Body.bulkInsertInstanceResource.locationPolicy.targetShape == enum_LocationPolicyTargetShape[_]
    input.Body.bulkInsertInstanceResource.minCount == STRING
    input.Body.bulkInsertInstanceResource.namePattern == STRING
    input.Body.bulkInsertInstanceResource.perInstanceProperties.STRING.hostname == STRING
    input.Body.bulkInsertInstanceResource.perInstanceProperties.STRING.name == STRING
    input.Body.bulkInsertInstanceResource.sourceInstanceTemplate == STRING
    input.Body.creationTimestamp == STRING
    input.Body.description == STRING
    input.Body.id == STRING
    input.Body.kind == STRING
    input.Body.name == STRING
    input.Body.queuingPolicy.validUntilDuration.nanos == INTEGER
    input.Body.queuingPolicy.validUntilDuration.seconds == STRING
    input.Body.queuingPolicy.validUntilTime == STRING
    input.Body.selfLink == STRING
    input.Body.selfLinkWithId == STRING
    input.Body.state == enum_QueuedResourceState[_]
    input.Body.status.failedData.error.errors[_].code == STRING
    input.Body.status.failedData.error.errors[_].errorDetails[_].errorInfo.domain == STRING
    input.Body.status.failedData.error.errors[_].errorDetails[_].errorInfo.metadatas.STRING == STRING
    input.Body.status.failedData.error.errors[_].errorDetails[_].errorInfo.reason == STRING
    input.Body.status.failedData.error.errors[_].errorDetails[_].help.links[_].description == STRING
    input.Body.status.failedData.error.errors[_].errorDetails[_].help.links[_].url == STRING
    input.Body.status.failedData.error.errors[_].errorDetails[_].localizedMessage.locale == STRING
    input.Body.status.failedData.error.errors[_].errorDetails[_].localizedMessage.message == STRING
    input.Body.status.failedData.error.errors[_].errorDetails[_].quotaInfo.dimensions.STRING == STRING
    input.Body.status.failedData.error.errors[_].errorDetails[_].quotaInfo.futureLimit == NUMBER
    input.Body.status.failedData.error.errors[_].errorDetails[_].quotaInfo.limit == NUMBER
    input.Body.status.failedData.error.errors[_].errorDetails[_].quotaInfo.limitName == STRING
    input.Body.status.failedData.error.errors[_].errorDetails[_].quotaInfo.metricName == STRING
    input.Body.status.failedData.error.errors[_].errorDetails[_].quotaInfo.rolloutStatus == enum_QuotaExceededInfoRolloutStatus[_]
    input.Body.status.failedData.error.errors[_].location == STRING
    input.Body.status.failedData.error.errors[_].message == STRING
    input.Body.status.provisioningOperations[_] == STRING
    input.Body.status.queuingPolicy.validUntilDuration.nanos == INTEGER
    input.Body.status.queuingPolicy.validUntilDuration.seconds == STRING
    input.Body.status.queuingPolicy.validUntilTime == STRING
    input.Body.zone == STRING
    input.ReqMap.ProjectID == STRING
    input.ReqMap.zone == STRING
    input.Qs.requestId == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.zoneQueuedResources.list

valid {
    input.ReqMap.ProjectID == STRING
    input.ReqMap.zone == STRING
    input.Qs.filter == STRING
    input.Qs.maxResults == INTEGER
    input.Qs.orderBy == STRING
    input.Qs.pageToken == STRING
    input.Qs.returnPartialSuccess == BOOLEAN
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.zones.get

valid {
    input.ReqMap.ProjectID == STRING
    input.ReqMap.zone == STRING
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}

compute.zones.list

valid {
    input.ReqMap.ProjectID == STRING
    input.Qs.filter == STRING
    input.Qs.maxResults == INTEGER
    input.Qs.orderBy == STRING
    input.Qs.pageToken == STRING
    input.Qs.returnPartialSuccess == BOOLEAN
    input.ProviderMetadata.Region == STRING
    input.ProviderMetadata.ProjectID == STRING
}