SERVICEMANAGEMENT

servicemanagement.operations.get

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

servicemanagement.operations.list

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

servicemanagement.services.configs.create

enum_ApiSyntax := [ "SYNTAX_PROTO2", "SYNTAX_PROTO3", "SYNTAX_EDITIONS" ]
enum_BackendRulePathTranslation := [ "PATH_TRANSLATION_UNSPECIFIED", "CONSTANT_ADDRESS", "APPEND_PATH_TO_ADDRESS" ]
enum_ClientLibrarySettingsLaunchStage := [ "LAUNCH_STAGE_UNSPECIFIED", "UNIMPLEMENTED", "PRELAUNCH", "EARLY_ACCESS", "ALPHA", "BETA", "GA", "DEPRECATED" ]
enum_CommonLanguageSettingsDestinations := [ "CLIENT_LIBRARY_DESTINATION_UNSPECIFIED", "GITHUB", "PACKAGE_MANAGER" ]
enum_EnumSyntax := [ "SYNTAX_PROTO2", "SYNTAX_PROTO3", "SYNTAX_EDITIONS" ]
enum_FieldCardinality := [ "CARDINALITY_UNKNOWN", "CARDINALITY_OPTIONAL", "CARDINALITY_REQUIRED", "CARDINALITY_REPEATED" ]
enum_FieldKind := [ "TYPE_UNKNOWN", "TYPE_DOUBLE", "TYPE_FLOAT", "TYPE_INT64", "TYPE_UINT64", "TYPE_INT32", "TYPE_FIXED64", "TYPE_FIXED32", "TYPE_BOOL", "TYPE_STRING", "TYPE_GROUP", "TYPE_MESSAGE", "TYPE_BYTES", "TYPE_UINT32", "TYPE_ENUM", "TYPE_SFIXED32", "TYPE_SFIXED64", "TYPE_SINT32", "TYPE_SINT64" ]
enum_LabelDescriptorValueType := [ "STRING", "BOOL", "INT64" ]
enum_MethodSyntax := [ "SYNTAX_PROTO2", "SYNTAX_PROTO3", "SYNTAX_EDITIONS" ]
enum_MetricDescriptorLaunchStage := [ "LAUNCH_STAGE_UNSPECIFIED", "UNIMPLEMENTED", "PRELAUNCH", "EARLY_ACCESS", "ALPHA", "BETA", "GA", "DEPRECATED" ]
enum_MetricDescriptorMetadataLaunchStage := [ "LAUNCH_STAGE_UNSPECIFIED", "UNIMPLEMENTED", "PRELAUNCH", "EARLY_ACCESS", "ALPHA", "BETA", "GA", "DEPRECATED" ]
enum_MetricDescriptorMetadataTimeSeriesResourceHierarchyLevel := [ "TIME_SERIES_RESOURCE_HIERARCHY_LEVEL_UNSPECIFIED", "PROJECT", "ORGANIZATION", "FOLDER" ]
enum_MetricDescriptorMetricKind := [ "METRIC_KIND_UNSPECIFIED", "GAUGE", "DELTA", "CUMULATIVE" ]
enum_MetricDescriptorValueType := [ "VALUE_TYPE_UNSPECIFIED", "BOOL", "INT64", "DOUBLE", "STRING", "DISTRIBUTION", "MONEY" ]
enum_MonitoredResourceDescriptorLaunchStage := [ "LAUNCH_STAGE_UNSPECIFIED", "UNIMPLEMENTED", "PRELAUNCH", "EARLY_ACCESS", "ALPHA", "BETA", "GA", "DEPRECATED" ]
enum_PublishingOrganization := [ "CLIENT_LIBRARY_ORGANIZATION_UNSPECIFIED", "CLOUD", "ADS", "PHOTOS", "STREET_VIEW", "SHOPPING", "GEO", "GENERATIVE_AI" ]
enum_TypeSyntax := [ "SYNTAX_PROTO2", "SYNTAX_PROTO3", "SYNTAX_EDITIONS" ]

valid {
    input.Body.apis[_].methods[_].name == STRING
    input.Body.apis[_].methods[_].options[_].name == STRING
    input.Body.apis[_].methods[_].options[_].value.STRING == ANY
    input.Body.apis[_].methods[_].requestStreaming == BOOLEAN
    input.Body.apis[_].methods[_].requestTypeUrl == STRING
    input.Body.apis[_].methods[_].responseStreaming == BOOLEAN
    input.Body.apis[_].methods[_].responseTypeUrl == STRING
    input.Body.apis[_].methods[_].syntax == enum_MethodSyntax[_]
    input.Body.apis[_].mixins[_].name == STRING
    input.Body.apis[_].mixins[_].root == STRING
    input.Body.apis[_].name == STRING
    input.Body.apis[_].options[_].name == STRING
    input.Body.apis[_].options[_].value.STRING == ANY
    input.Body.apis[_].sourceContext.fileName == STRING
    input.Body.apis[_].syntax == enum_ApiSyntax[_]
    input.Body.apis[_].version == STRING
    input.Body.authentication.providers[_].audiences == STRING
    input.Body.authentication.providers[_].authorizationUrl == STRING
    input.Body.authentication.providers[_].id == STRING
    input.Body.authentication.providers[_].issuer == STRING
    input.Body.authentication.providers[_].jwksUri == STRING
    input.Body.authentication.providers[_].jwtLocations[_].cookie == STRING
    input.Body.authentication.providers[_].jwtLocations[_].header == STRING
    input.Body.authentication.providers[_].jwtLocations[_].query == STRING
    input.Body.authentication.providers[_].jwtLocations[_].valuePrefix == STRING
    input.Body.authentication.rules[_].allowWithoutCredential == BOOLEAN
    input.Body.authentication.rules[_].oauth.canonicalScopes == STRING
    input.Body.authentication.rules[_].requirements[_].audiences == STRING
    input.Body.authentication.rules[_].requirements[_].providerId == STRING
    input.Body.authentication.rules[_].selector == STRING
    input.Body.backend.rules[_].address == STRING
    input.Body.backend.rules[_].deadline == NUMBER
    input.Body.backend.rules[_].disableAuth == BOOLEAN
    input.Body.backend.rules[_].jwtAudience == STRING
    input.Body.backend.rules[_].minDeadline == NUMBER
    input.Body.backend.rules[_].operationDeadline == NUMBER
    input.Body.backend.rules[_].overridesByRequestProtocol.STRING == NESTED
    input.Body.backend.rules[_].pathTranslation == enum_BackendRulePathTranslation[_]
    input.Body.backend.rules[_].protocol == STRING
    input.Body.backend.rules[_].selector == STRING
    input.Body.billing.consumerDestinations[_].metrics[_] == STRING
    input.Body.billing.consumerDestinations[_].monitoredResource == STRING
    input.Body.configVersion == INTEGER
    input.Body.context.rules[_].allowedRequestExtensions[_] == STRING
    input.Body.context.rules[_].allowedResponseExtensions[_] == STRING
    input.Body.context.rules[_].provided[_] == STRING
    input.Body.context.rules[_].requested[_] == STRING
    input.Body.context.rules[_].selector == STRING
    input.Body.control.environment == STRING
    input.Body.control.methodPolicies[_].requestPolicies[_].resourcePermission == STRING
    input.Body.control.methodPolicies[_].requestPolicies[_].resourceType == STRING
    input.Body.control.methodPolicies[_].requestPolicies[_].selector == STRING
    input.Body.control.methodPolicies[_].selector == STRING
    input.Body.customError.rules[_].isErrorType == BOOLEAN
    input.Body.customError.rules[_].selector == STRING
    input.Body.customError.types[_] == STRING
    input.Body.documentation.documentationRootUrl == STRING
    input.Body.documentation.overview == STRING
    input.Body.documentation.pages[_].content == STRING
    input.Body.documentation.pages[_].name == STRING
    input.Body.documentation.pages[_].subpages[_] == NESTED
    input.Body.documentation.rules[_].deprecationDescription == STRING
    input.Body.documentation.rules[_].description == STRING
    input.Body.documentation.rules[_].disableReplacementWords == STRING
    input.Body.documentation.rules[_].selector == STRING
    input.Body.documentation.sectionOverrides[_].content == STRING
    input.Body.documentation.sectionOverrides[_].name == STRING
    input.Body.documentation.sectionOverrides[_].subpages[_] == NESTED
    input.Body.documentation.serviceRootUrl == STRING
    input.Body.documentation.summary == STRING
    input.Body.endpoints[_].aliases[_] == STRING
    input.Body.endpoints[_].allowCors == BOOLEAN
    input.Body.endpoints[_].name == STRING
    input.Body.endpoints[_].target == STRING
    input.Body.enums[_].edition == STRING
    input.Body.enums[_].enumvalue[_].name == STRING
    input.Body.enums[_].enumvalue[_].number == INTEGER
    input.Body.enums[_].enumvalue[_].options[_].name == STRING
    input.Body.enums[_].enumvalue[_].options[_].value.STRING == ANY
    input.Body.enums[_].name == STRING
    input.Body.enums[_].options[_].name == STRING
    input.Body.enums[_].options[_].value.STRING == ANY
    input.Body.enums[_].sourceContext.fileName == STRING
    input.Body.enums[_].syntax == enum_EnumSyntax[_]
    input.Body.http.fullyDecodeReservedExpansion == BOOLEAN
    input.Body.http.rules[_].additionalBindings[_] == NESTED
    input.Body.http.rules[_].body == STRING
    input.Body.http.rules[_].custom.kind == STRING
    input.Body.http.rules[_].custom.path == STRING
    input.Body.http.rules[_].delete == STRING
    input.Body.http.rules[_].get == STRING
    input.Body.http.rules[_].patch == STRING
    input.Body.http.rules[_].post == STRING
    input.Body.http.rules[_].put == STRING
    input.Body.http.rules[_].responseBody == STRING
    input.Body.http.rules[_].selector == STRING
    input.Body.id == STRING
    input.Body.logging.consumerDestinations[_].logs[_] == STRING
    input.Body.logging.consumerDestinations[_].monitoredResource == STRING
    input.Body.logging.producerDestinations[_].logs[_] == STRING
    input.Body.logging.producerDestinations[_].monitoredResource == STRING
    input.Body.logs[_].description == STRING
    input.Body.logs[_].displayName == STRING
    input.Body.logs[_].labels[_].description == STRING
    input.Body.logs[_].labels[_].key == STRING
    input.Body.logs[_].labels[_].valueType == enum_LabelDescriptorValueType[_]
    input.Body.logs[_].name == STRING
    input.Body.metrics[_].description == STRING
    input.Body.metrics[_].displayName == STRING
    input.Body.metrics[_].labels[_].description == STRING
    input.Body.metrics[_].labels[_].key == STRING
    input.Body.metrics[_].labels[_].valueType == enum_LabelDescriptorValueType[_]
    input.Body.metrics[_].launchStage == enum_MetricDescriptorLaunchStage[_]
    input.Body.metrics[_].metadata.ingestDelay == STRING
    input.Body.metrics[_].metadata.launchStage == enum_MetricDescriptorMetadataLaunchStage[_]
    input.Body.metrics[_].metadata.samplePeriod == STRING
    input.Body.metrics[_].metadata.timeSeriesResourceHierarchyLevel[_] == enum_MetricDescriptorMetadataTimeSeriesResourceHierarchyLevel[_]
    input.Body.metrics[_].metricKind == enum_MetricDescriptorMetricKind[_]
    input.Body.metrics[_].monitoredResourceTypes[_] == STRING
    input.Body.metrics[_].name == STRING
    input.Body.metrics[_].type == STRING
    input.Body.metrics[_].unit == STRING
    input.Body.metrics[_].valueType == enum_MetricDescriptorValueType[_]
    input.Body.monitoredResources[_].description == STRING
    input.Body.monitoredResources[_].displayName == STRING
    input.Body.monitoredResources[_].labels[_].description == STRING
    input.Body.monitoredResources[_].labels[_].key == STRING
    input.Body.monitoredResources[_].labels[_].valueType == enum_LabelDescriptorValueType[_]
    input.Body.monitoredResources[_].launchStage == enum_MonitoredResourceDescriptorLaunchStage[_]
    input.Body.monitoredResources[_].name == STRING
    input.Body.monitoredResources[_].type == STRING
    input.Body.monitoring.consumerDestinations[_].metrics[_] == STRING
    input.Body.monitoring.consumerDestinations[_].monitoredResource == STRING
    input.Body.monitoring.producerDestinations[_].metrics[_] == STRING
    input.Body.monitoring.producerDestinations[_].monitoredResource == STRING
    input.Body.name == STRING
    input.Body.producerProjectId == STRING
    input.Body.publishing.apiShortName == STRING
    input.Body.publishing.codeownerGithubTeams[_] == STRING
    input.Body.publishing.docTagPrefix == STRING
    input.Body.publishing.documentationUri == STRING
    input.Body.publishing.githubLabel == STRING
    input.Body.publishing.librarySettings[_].cppSettings.common.destinations[_] == enum_CommonLanguageSettingsDestinations[_]
    input.Body.publishing.librarySettings[_].cppSettings.common.referenceDocsUri == STRING
    input.Body.publishing.librarySettings[_].cppSettings.common.selectiveGapicGeneration.methods[_] == STRING
    input.Body.publishing.librarySettings[_].dotnetSettings.common.destinations[_] == enum_CommonLanguageSettingsDestinations[_]
    input.Body.publishing.librarySettings[_].dotnetSettings.common.referenceDocsUri == STRING
    input.Body.publishing.librarySettings[_].dotnetSettings.common.selectiveGapicGeneration.methods[_] == STRING
    input.Body.publishing.librarySettings[_].dotnetSettings.forcedNamespaceAliases[_] == STRING
    input.Body.publishing.librarySettings[_].dotnetSettings.handwrittenSignatures[_] == STRING
    input.Body.publishing.librarySettings[_].dotnetSettings.ignoredResources[_] == STRING
    input.Body.publishing.librarySettings[_].dotnetSettings.renamedResources.STRING == STRING
    input.Body.publishing.librarySettings[_].dotnetSettings.renamedServices.STRING == STRING
    input.Body.publishing.librarySettings[_].goSettings.common.destinations[_] == enum_CommonLanguageSettingsDestinations[_]
    input.Body.publishing.librarySettings[_].goSettings.common.referenceDocsUri == STRING
    input.Body.publishing.librarySettings[_].goSettings.common.selectiveGapicGeneration.methods[_] == STRING
    input.Body.publishing.librarySettings[_].javaSettings.common.destinations[_] == enum_CommonLanguageSettingsDestinations[_]
    input.Body.publishing.librarySettings[_].javaSettings.common.referenceDocsUri == STRING
    input.Body.publishing.librarySettings[_].javaSettings.common.selectiveGapicGeneration.methods[_] == STRING
    input.Body.publishing.librarySettings[_].javaSettings.libraryPackage == STRING
    input.Body.publishing.librarySettings[_].javaSettings.serviceClassNames.STRING == STRING
    input.Body.publishing.librarySettings[_].launchStage == enum_ClientLibrarySettingsLaunchStage[_]
    input.Body.publishing.librarySettings[_].nodeSettings.common.destinations[_] == enum_CommonLanguageSettingsDestinations[_]
    input.Body.publishing.librarySettings[_].nodeSettings.common.referenceDocsUri == STRING
    input.Body.publishing.librarySettings[_].nodeSettings.common.selectiveGapicGeneration.methods[_] == STRING
    input.Body.publishing.librarySettings[_].phpSettings.common.destinations[_] == enum_CommonLanguageSettingsDestinations[_]
    input.Body.publishing.librarySettings[_].phpSettings.common.referenceDocsUri == STRING
    input.Body.publishing.librarySettings[_].phpSettings.common.selectiveGapicGeneration.methods[_] == STRING
    input.Body.publishing.librarySettings[_].pythonSettings.common.destinations[_] == enum_CommonLanguageSettingsDestinations[_]
    input.Body.publishing.librarySettings[_].pythonSettings.common.referenceDocsUri == STRING
    input.Body.publishing.librarySettings[_].pythonSettings.common.selectiveGapicGeneration.methods[_] == STRING
    input.Body.publishing.librarySettings[_].pythonSettings.experimentalFeatures.restAsyncIoEnabled == BOOLEAN
    input.Body.publishing.librarySettings[_].restNumericEnums == BOOLEAN
    input.Body.publishing.librarySettings[_].rubySettings.common.destinations[_] == enum_CommonLanguageSettingsDestinations[_]
    input.Body.publishing.librarySettings[_].rubySettings.common.referenceDocsUri == STRING
    input.Body.publishing.librarySettings[_].rubySettings.common.selectiveGapicGeneration.methods[_] == STRING
    input.Body.publishing.librarySettings[_].version == STRING
    input.Body.publishing.methodSettings[_].autoPopulatedFields[_] == STRING
    input.Body.publishing.methodSettings[_].longRunning.initialPollDelay == STRING
    input.Body.publishing.methodSettings[_].longRunning.maxPollDelay == STRING
    input.Body.publishing.methodSettings[_].longRunning.pollDelayMultiplier == NUMBER
    input.Body.publishing.methodSettings[_].longRunning.totalPollTimeout == STRING
    input.Body.publishing.methodSettings[_].selector == STRING
    input.Body.publishing.newIssueUri == STRING
    input.Body.publishing.organization == enum_PublishingOrganization[_]
    input.Body.publishing.protoReferenceDocumentationUri == STRING
    input.Body.publishing.restReferenceDocumentationUri == STRING
    input.Body.quota.limits[_].defaultLimit == STRING
    input.Body.quota.limits[_].description == STRING
    input.Body.quota.limits[_].displayName == STRING
    input.Body.quota.limits[_].duration == STRING
    input.Body.quota.limits[_].freeTier == STRING
    input.Body.quota.limits[_].maxLimit == STRING
    input.Body.quota.limits[_].metric == STRING
    input.Body.quota.limits[_].name == STRING
    input.Body.quota.limits[_].unit == STRING
    input.Body.quota.limits[_].values.STRING == STRING
    input.Body.quota.metricRules[_].metricCosts.STRING == STRING
    input.Body.quota.metricRules[_].selector == STRING
    input.Body.sourceInfo.sourceFiles[_].STRING == ANY
    input.Body.systemParameters.rules[_].parameters[_].httpHeader == STRING
    input.Body.systemParameters.rules[_].parameters[_].name == STRING
    input.Body.systemParameters.rules[_].parameters[_].urlQueryParameter == STRING
    input.Body.systemParameters.rules[_].selector == STRING
    input.Body.systemTypes[_].edition == STRING
    input.Body.systemTypes[_].fields[_].cardinality == enum_FieldCardinality[_]
    input.Body.systemTypes[_].fields[_].defaultValue == STRING
    input.Body.systemTypes[_].fields[_].jsonName == STRING
    input.Body.systemTypes[_].fields[_].kind == enum_FieldKind[_]
    input.Body.systemTypes[_].fields[_].name == STRING
    input.Body.systemTypes[_].fields[_].number == INTEGER
    input.Body.systemTypes[_].fields[_].oneofIndex == INTEGER
    input.Body.systemTypes[_].fields[_].options[_].name == STRING
    input.Body.systemTypes[_].fields[_].options[_].value.STRING == ANY
    input.Body.systemTypes[_].fields[_].packed == BOOLEAN
    input.Body.systemTypes[_].fields[_].typeUrl == STRING
    input.Body.systemTypes[_].name == STRING
    input.Body.systemTypes[_].oneofs[_] == STRING
    input.Body.systemTypes[_].options[_].name == STRING
    input.Body.systemTypes[_].options[_].value.STRING == ANY
    input.Body.systemTypes[_].sourceContext.fileName == STRING
    input.Body.systemTypes[_].syntax == enum_TypeSyntax[_]
    input.Body.title == STRING
    input.Body.types[_].edition == STRING
    input.Body.types[_].fields[_].cardinality == enum_FieldCardinality[_]
    input.Body.types[_].fields[_].defaultValue == STRING
    input.Body.types[_].fields[_].jsonName == STRING
    input.Body.types[_].fields[_].kind == enum_FieldKind[_]
    input.Body.types[_].fields[_].name == STRING
    input.Body.types[_].fields[_].number == INTEGER
    input.Body.types[_].fields[_].oneofIndex == INTEGER
    input.Body.types[_].fields[_].options[_].name == STRING
    input.Body.types[_].fields[_].options[_].value.STRING == ANY
    input.Body.types[_].fields[_].packed == BOOLEAN
    input.Body.types[_].fields[_].typeUrl == STRING
    input.Body.types[_].name == STRING
    input.Body.types[_].oneofs[_] == STRING
    input.Body.types[_].options[_].name == STRING
    input.Body.types[_].options[_].value.STRING == ANY
    input.Body.types[_].sourceContext.fileName == STRING
    input.Body.types[_].syntax == enum_TypeSyntax[_]
    input.Body.usage.producerNotificationChannel == STRING
    input.Body.usage.requirements[_] == STRING
    input.Body.usage.rules[_].allowUnregisteredCalls == BOOLEAN
    input.Body.usage.rules[_].selector == STRING
    input.Body.usage.rules[_].skipServiceControl == BOOLEAN
    input.ReqMap.serviceName == STRING
    input.ProviderMetadata.Region == STRING
}

servicemanagement.services.configs.get

enum_ViewParameter := [ "BASIC", "FULL" ]

valid {
    input.ReqMap.configId == STRING
    input.ReqMap.serviceName == STRING
    input.Qs.view == enum_ViewParameter[_]
    input.ProviderMetadata.Region == STRING
}

servicemanagement.services.configs.list

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

servicemanagement.services.configs.submit

enum_ConfigFileFileType := [ "FILE_TYPE_UNSPECIFIED", "SERVICE_CONFIG_YAML", "OPEN_API_JSON", "OPEN_API_YAML", "FILE_DESCRIPTOR_SET_PROTO", "PROTO_FILE" ]

valid {
    input.Body.configSource.files[_].fileContents == STRING
    input.Body.configSource.files[_].filePath == STRING
    input.Body.configSource.files[_].fileType == enum_ConfigFileFileType[_]
    input.Body.configSource.id == STRING
    input.Body.validateOnly == BOOLEAN
    input.ReqMap.serviceName == STRING
    input.ProviderMetadata.Region == STRING
}

servicemanagement.services.consumers.getIamPolicy

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

servicemanagement.services.consumers.setIamPolicy

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

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

servicemanagement.services.consumers.testIamPermissions

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

servicemanagement.services.create

valid {
    input.Body.producerProjectId == STRING
    input.Body.serviceName == STRING
    input.ProviderMetadata.Region == STRING
}

servicemanagement.services.delete

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

servicemanagement.services.generateConfigReport

valid {
    input.Body.newConfig.STRING == ANY
    input.Body.oldConfig.STRING == ANY
    input.ProviderMetadata.Region == STRING
}

servicemanagement.services.get

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

servicemanagement.services.getConfig

enum_ViewParameter := [ "BASIC", "FULL" ]

valid {
    input.ReqMap.serviceName == STRING
    input.Qs.configId == STRING
    input.Qs.view == enum_ViewParameter[_]
    input.ProviderMetadata.Region == STRING
}

servicemanagement.services.getIamPolicy

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

servicemanagement.services.list

valid {
    input.Qs.consumerId == STRING
    input.Qs.pageSize == INTEGER
    input.Qs.pageToken == STRING
    input.Qs.producerProjectId == STRING
    input.ProviderMetadata.Region == STRING
}

servicemanagement.services.rollouts.create

enum_RolloutStatus := [ "ROLLOUT_STATUS_UNSPECIFIED", "IN_PROGRESS", "SUCCESS", "CANCELLED", "FAILED", "PENDING", "FAILED_ROLLED_BACK" ]

valid {
    input.Body.createTime == STRING
    input.Body.createdBy == STRING
    input.Body.deleteServiceStrategy.STRING == STRING
    input.Body.rolloutId == STRING
    input.Body.serviceName == STRING
    input.Body.status == enum_RolloutStatus[_]
    input.Body.trafficPercentStrategy.percentages.STRING == NUMBER
    input.ReqMap.serviceName == STRING
    input.ProviderMetadata.Region == STRING
}

servicemanagement.services.rollouts.get

valid {
    input.ReqMap.rolloutId == STRING
    input.ReqMap.serviceName == STRING
    input.ProviderMetadata.Region == STRING
}

servicemanagement.services.rollouts.list

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

servicemanagement.services.setIamPolicy

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

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

servicemanagement.services.testIamPermissions

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

servicemanagement.services.undelete

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