DISCOVERYENGINE

discoveryengine.locations.lookupWidgetConfig

valid {
    input.Body.widgetConfigId == STRING
    input.ReqMap.location == STRING
    input.ProviderMetadata.Region == STRING
}

discoveryengine.locations.widgetCompleteQuery

valid {
    input.Body.additionalParams.token == STRING
    input.Body.completeQueryRequest.dataStore == STRING
    input.Body.completeQueryRequest.includeTailSuggestions == BOOLEAN
    input.Body.completeQueryRequest.query == STRING
    input.Body.completeQueryRequest.queryModel == STRING
    input.Body.completeQueryRequest.userPseudoId == STRING
    input.Body.configId == STRING
    input.ReqMap.location == STRING
    input.ProviderMetadata.Region == STRING
}

discoveryengine.locations.widgetConverseConversation

enum_GoogleCloudDiscoveryengineV1alphaConversationState := [ "STATE_UNSPECIFIED", "IN_PROGRESS", "COMPLETED" ]
enum_GoogleCloudDiscoveryengineV1alphaSearchResponseSummarySummarySkippedReasons := [ "SUMMARY_SKIPPED_REASON_UNSPECIFIED", "ADVERSARIAL_QUERY_IGNORED", "NON_SUMMARY_SEEKING_QUERY_IGNORED", "OUT_OF_DOMAIN_QUERY_IGNORED", "POTENTIAL_POLICY_VIOLATION", "LLM_ADDON_NOT_ENABLED" ]

valid {
    input.Body.additionalParams.token == STRING
    input.Body.configId == STRING
    input.Body.conversationId == STRING
    input.Body.converseConversationRequest.conversation.messages[_].reply.references[_].anchorText == STRING
    input.Body.converseConversationRequest.conversation.messages[_].reply.references[_].end == INTEGER
    input.Body.converseConversationRequest.conversation.messages[_].reply.references[_].start == INTEGER
    input.Body.converseConversationRequest.conversation.messages[_].reply.references[_].uri == STRING
    input.Body.converseConversationRequest.conversation.messages[_].reply.reply == STRING
    input.Body.converseConversationRequest.conversation.messages[_].reply.summary.safetyAttributes.categories[_] == STRING
    input.Body.converseConversationRequest.conversation.messages[_].reply.summary.safetyAttributes.scores[_] == NUMBER
    input.Body.converseConversationRequest.conversation.messages[_].reply.summary.summarySkippedReasons[_] == enum_GoogleCloudDiscoveryengineV1alphaSearchResponseSummarySummarySkippedReasons[_]
    input.Body.converseConversationRequest.conversation.messages[_].reply.summary.summaryText == STRING
    input.Body.converseConversationRequest.conversation.messages[_].reply.summary.summaryWithMetadata.citationMetadata.citations[_].endIndex == STRING
    input.Body.converseConversationRequest.conversation.messages[_].reply.summary.summaryWithMetadata.citationMetadata.citations[_].sources[_].referenceIndex == STRING
    input.Body.converseConversationRequest.conversation.messages[_].reply.summary.summaryWithMetadata.citationMetadata.citations[_].startIndex == STRING
    input.Body.converseConversationRequest.conversation.messages[_].reply.summary.summaryWithMetadata.references[_].document == STRING
    input.Body.converseConversationRequest.conversation.messages[_].reply.summary.summaryWithMetadata.references[_].title == STRING
    input.Body.converseConversationRequest.conversation.messages[_].reply.summary.summaryWithMetadata.references[_].uri == STRING
    input.Body.converseConversationRequest.conversation.messages[_].reply.summary.summaryWithMetadata.summary == STRING
    input.Body.converseConversationRequest.conversation.messages[_].userInput.context.activeDocument == STRING
    input.Body.converseConversationRequest.conversation.messages[_].userInput.context.contextDocuments[_] == STRING
    input.Body.converseConversationRequest.conversation.messages[_].userInput.input == STRING
    input.Body.converseConversationRequest.conversation.name == STRING
    input.Body.converseConversationRequest.conversation.state == enum_GoogleCloudDiscoveryengineV1alphaConversationState[_]
    input.Body.converseConversationRequest.conversation.userPseudoId == STRING
    input.Body.converseConversationRequest.filter == STRING
    input.Body.converseConversationRequest.name == STRING
    input.Body.converseConversationRequest.query.context.activeDocument == STRING
    input.Body.converseConversationRequest.query.context.contextDocuments[_] == STRING
    input.Body.converseConversationRequest.query.input == STRING
    input.Body.converseConversationRequest.safeSearch == BOOLEAN
    input.Body.converseConversationRequest.servingConfig == STRING
    input.Body.converseConversationRequest.summarySpec.ignoreAdversarialQuery == BOOLEAN
    input.Body.converseConversationRequest.summarySpec.ignoreNonSummarySeekingQuery == BOOLEAN
    input.Body.converseConversationRequest.summarySpec.includeCitations == BOOLEAN
    input.Body.converseConversationRequest.summarySpec.languageCode == STRING
    input.Body.converseConversationRequest.summarySpec.modelPromptSpec.preamble == STRING
    input.Body.converseConversationRequest.summarySpec.modelSpec.version == STRING
    input.Body.converseConversationRequest.summarySpec.summaryResultCount == INTEGER
    input.Body.converseConversationRequest.userLabels.STRING == STRING
    input.ReqMap.location == STRING
    input.ProviderMetadata.Region == STRING
}

discoveryengine.locations.widgetSearch

enum_GoogleCloudDiscoveryengineV1alphaSearchRequestQueryExpansionSpecCondition := [ "CONDITION_UNSPECIFIED", "DISABLED", "AUTO" ]
enum_GoogleCloudDiscoveryengineV1alphaSearchRequestSpellCorrectionSpecMode := [ "MODE_UNSPECIFIED", "SUGGESTION_ONLY", "AUTO" ]

valid {
    input.Body.additionalParams.token == STRING
    input.Body.configId == STRING
    input.Body.searchRequest.boostSpec.conditionBoostSpecs[_].boost == NUMBER
    input.Body.searchRequest.boostSpec.conditionBoostSpecs[_].condition == STRING
    input.Body.searchRequest.branch == STRING
    input.Body.searchRequest.canonicalFilter == STRING
    input.Body.searchRequest.contentSearchSpec.extractiveContentSpec.maxExtractiveAnswerCount == INTEGER
    input.Body.searchRequest.contentSearchSpec.extractiveContentSpec.maxExtractiveSegmentCount == INTEGER
    input.Body.searchRequest.contentSearchSpec.extractiveContentSpec.numNextSegments == INTEGER
    input.Body.searchRequest.contentSearchSpec.extractiveContentSpec.numPreviousSegments == INTEGER
    input.Body.searchRequest.contentSearchSpec.snippetSpec.maxSnippetCount == INTEGER
    input.Body.searchRequest.contentSearchSpec.snippetSpec.referenceOnly == BOOLEAN
    input.Body.searchRequest.contentSearchSpec.snippetSpec.returnSnippet == BOOLEAN
    input.Body.searchRequest.contentSearchSpec.summarySpec.ignoreAdversarialQuery == BOOLEAN
    input.Body.searchRequest.contentSearchSpec.summarySpec.ignoreNonSummarySeekingQuery == BOOLEAN
    input.Body.searchRequest.contentSearchSpec.summarySpec.includeCitations == BOOLEAN
    input.Body.searchRequest.contentSearchSpec.summarySpec.languageCode == STRING
    input.Body.searchRequest.contentSearchSpec.summarySpec.modelPromptSpec.preamble == STRING
    input.Body.searchRequest.contentSearchSpec.summarySpec.modelSpec.version == STRING
    input.Body.searchRequest.contentSearchSpec.summarySpec.summaryResultCount == INTEGER
    input.Body.searchRequest.embeddingSpec.embeddingVectors[_].fieldPath == STRING
    input.Body.searchRequest.embeddingSpec.embeddingVectors[_].vector[_] == NUMBER
    input.Body.searchRequest.facetSpecs[_].enableDynamicPosition == BOOLEAN
    input.Body.searchRequest.facetSpecs[_].excludedFilterKeys[_] == STRING
    input.Body.searchRequest.facetSpecs[_].facetKey.caseInsensitive == BOOLEAN
    input.Body.searchRequest.facetSpecs[_].facetKey.contains[_] == STRING
    input.Body.searchRequest.facetSpecs[_].facetKey.intervals[_].exclusiveMaximum == NUMBER
    input.Body.searchRequest.facetSpecs[_].facetKey.intervals[_].exclusiveMinimum == NUMBER
    input.Body.searchRequest.facetSpecs[_].facetKey.intervals[_].maximum == NUMBER
    input.Body.searchRequest.facetSpecs[_].facetKey.intervals[_].minimum == NUMBER
    input.Body.searchRequest.facetSpecs[_].facetKey.key == STRING
    input.Body.searchRequest.facetSpecs[_].facetKey.orderBy == STRING
    input.Body.searchRequest.facetSpecs[_].facetKey.prefixes[_] == STRING
    input.Body.searchRequest.facetSpecs[_].facetKey.restrictedValues[_] == STRING
    input.Body.searchRequest.facetSpecs[_].limit == INTEGER
    input.Body.searchRequest.filter == STRING
    input.Body.searchRequest.imageQuery.imageBytes == STRING
    input.Body.searchRequest.offset == INTEGER
    input.Body.searchRequest.orderBy == STRING
    input.Body.searchRequest.pageSize == INTEGER
    input.Body.searchRequest.pageToken == STRING
    input.Body.searchRequest.params.STRING == ANY
    input.Body.searchRequest.query == STRING
    input.Body.searchRequest.queryExpansionSpec.condition == enum_GoogleCloudDiscoveryengineV1alphaSearchRequestQueryExpansionSpecCondition[_]
    input.Body.searchRequest.queryExpansionSpec.pinUnexpandedResults == BOOLEAN
    input.Body.searchRequest.rankingExpression == STRING
    input.Body.searchRequest.safeSearch == BOOLEAN
    input.Body.searchRequest.servingConfig == STRING
    input.Body.searchRequest.spellCorrectionSpec.mode == enum_GoogleCloudDiscoveryengineV1alphaSearchRequestSpellCorrectionSpecMode[_]
    input.Body.searchRequest.userInfo.userAgent == STRING
    input.Body.searchRequest.userInfo.userId == STRING
    input.Body.searchRequest.userLabels.STRING == STRING
    input.Body.searchRequest.userPseudoId == STRING
    input.ReqMap.location == STRING
    input.ProviderMetadata.Region == STRING
}

discoveryengine.projects.locations.collections.dataConnector.operations.get

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

discoveryengine.projects.locations.collections.dataConnector.operations.list

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

discoveryengine.projects.locations.collections.dataStores.branches.documents.create

valid {
    input.Body.content.mimeType == STRING
    input.Body.content.rawBytes == STRING
    input.Body.content.uri == STRING
    input.Body.id == STRING
    input.Body.jsonData == STRING
    input.Body.name == STRING
    input.Body.parentDocumentId == STRING
    input.Body.schemaId == STRING
    input.Body.structData.STRING == ANY
    input.ReqMap.parent == STRING
    input.Qs.documentId == STRING
    input.ProviderMetadata.Region == STRING
}

discoveryengine.projects.locations.collections.dataStores.branches.documents.delete

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

discoveryengine.projects.locations.collections.dataStores.branches.documents.get

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

discoveryengine.projects.locations.collections.dataStores.branches.documents.import

enum_GoogleCloudDiscoveryengineV1betaImportDocumentsRequestReconciliationMode := [ "RECONCILIATION_MODE_UNSPECIFIED", "INCREMENTAL", "FULL" ]

valid {
    input.Body.autoGenerateIds == BOOLEAN
    input.Body.bigquerySource.dataSchema == STRING
    input.Body.bigquerySource.datasetId == STRING
    input.Body.bigquerySource.gcsStagingDir == STRING
    input.Body.bigquerySource.partitionDate.day == INTEGER
    input.Body.bigquerySource.partitionDate.month == INTEGER
    input.Body.bigquerySource.partitionDate.year == INTEGER
    input.Body.bigquerySource.projectId == STRING
    input.Body.bigquerySource.tableId == STRING
    input.Body.errorConfig.gcsPrefix == STRING
    input.Body.gcsSource.dataSchema == STRING
    input.Body.gcsSource.inputUris[_] == STRING
    input.Body.idField == STRING
    input.Body.inlineSource.documents[_].content.mimeType == STRING
    input.Body.inlineSource.documents[_].content.rawBytes == STRING
    input.Body.inlineSource.documents[_].content.uri == STRING
    input.Body.inlineSource.documents[_].id == STRING
    input.Body.inlineSource.documents[_].jsonData == STRING
    input.Body.inlineSource.documents[_].name == STRING
    input.Body.inlineSource.documents[_].parentDocumentId == STRING
    input.Body.inlineSource.documents[_].schemaId == STRING
    input.Body.inlineSource.documents[_].structData.STRING == ANY
    input.Body.reconciliationMode == enum_GoogleCloudDiscoveryengineV1betaImportDocumentsRequestReconciliationMode[_]
    input.ReqMap.parent == STRING
    input.ProviderMetadata.Region == STRING
}

discoveryengine.projects.locations.collections.dataStores.branches.documents.list

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

discoveryengine.projects.locations.collections.dataStores.branches.documents.patch

valid {
    input.Body.content.mimeType == STRING
    input.Body.content.rawBytes == STRING
    input.Body.content.uri == STRING
    input.Body.id == STRING
    input.Body.jsonData == STRING
    input.Body.name == STRING
    input.Body.parentDocumentId == STRING
    input.Body.schemaId == STRING
    input.Body.structData.STRING == ANY
    input.ReqMap.name == STRING
    input.Qs.allowMissing == BOOLEAN
    input.ProviderMetadata.Region == STRING
}

discoveryengine.projects.locations.collections.dataStores.branches.documents.purge

valid {
    input.Body.filter == STRING
    input.Body.force == BOOLEAN
    input.ReqMap.parent == STRING
    input.ProviderMetadata.Region == STRING
}

discoveryengine.projects.locations.collections.dataStores.branches.operations.get

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

discoveryengine.projects.locations.collections.dataStores.branches.operations.list

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

discoveryengine.projects.locations.collections.dataStores.completeQuery

valid {
    input.ReqMap.dataStore == STRING
    input.Qs.includeTailSuggestions == BOOLEAN
    input.Qs.query == STRING
    input.Qs.queryModel == STRING
    input.Qs.userPseudoId == STRING
    input.ProviderMetadata.Region == STRING
}

discoveryengine.projects.locations.collections.dataStores.conversations.converse

enum_GoogleCloudDiscoveryengineV1betaConversationState := [ "STATE_UNSPECIFIED", "IN_PROGRESS", "COMPLETED" ]
enum_GoogleCloudDiscoveryengineV1betaSearchResponseSummarySummarySkippedReasons := [ "SUMMARY_SKIPPED_REASON_UNSPECIFIED", "ADVERSARIAL_QUERY_IGNORED", "NON_SUMMARY_SEEKING_QUERY_IGNORED", "OUT_OF_DOMAIN_QUERY_IGNORED", "POTENTIAL_POLICY_VIOLATION", "LLM_ADDON_NOT_ENABLED" ]

valid {
    input.Body.conversation.messages[_].reply.references[_].anchorText == STRING
    input.Body.conversation.messages[_].reply.references[_].end == INTEGER
    input.Body.conversation.messages[_].reply.references[_].start == INTEGER
    input.Body.conversation.messages[_].reply.references[_].uri == STRING
    input.Body.conversation.messages[_].reply.reply == STRING
    input.Body.conversation.messages[_].reply.summary.safetyAttributes.categories[_] == STRING
    input.Body.conversation.messages[_].reply.summary.safetyAttributes.scores[_] == NUMBER
    input.Body.conversation.messages[_].reply.summary.summarySkippedReasons[_] == enum_GoogleCloudDiscoveryengineV1betaSearchResponseSummarySummarySkippedReasons[_]
    input.Body.conversation.messages[_].reply.summary.summaryText == STRING
    input.Body.conversation.messages[_].reply.summary.summaryWithMetadata.citationMetadata.citations[_].endIndex == STRING
    input.Body.conversation.messages[_].reply.summary.summaryWithMetadata.citationMetadata.citations[_].sources[_].referenceIndex == STRING
    input.Body.conversation.messages[_].reply.summary.summaryWithMetadata.citationMetadata.citations[_].startIndex == STRING
    input.Body.conversation.messages[_].reply.summary.summaryWithMetadata.references[_].document == STRING
    input.Body.conversation.messages[_].reply.summary.summaryWithMetadata.references[_].title == STRING
    input.Body.conversation.messages[_].reply.summary.summaryWithMetadata.references[_].uri == STRING
    input.Body.conversation.messages[_].reply.summary.summaryWithMetadata.summary == STRING
    input.Body.conversation.messages[_].userInput.context.activeDocument == STRING
    input.Body.conversation.messages[_].userInput.context.contextDocuments[_] == STRING
    input.Body.conversation.messages[_].userInput.input == STRING
    input.Body.conversation.name == STRING
    input.Body.conversation.state == enum_GoogleCloudDiscoveryengineV1betaConversationState[_]
    input.Body.conversation.userPseudoId == STRING
    input.Body.filter == STRING
    input.Body.query.context.activeDocument == STRING
    input.Body.query.context.contextDocuments[_] == STRING
    input.Body.query.input == STRING
    input.Body.safeSearch == BOOLEAN
    input.Body.servingConfig == STRING
    input.Body.summarySpec.ignoreAdversarialQuery == BOOLEAN
    input.Body.summarySpec.ignoreNonSummarySeekingQuery == BOOLEAN
    input.Body.summarySpec.includeCitations == BOOLEAN
    input.Body.summarySpec.languageCode == STRING
    input.Body.summarySpec.modelPromptSpec.preamble == STRING
    input.Body.summarySpec.modelSpec.version == STRING
    input.Body.summarySpec.summaryResultCount == INTEGER
    input.Body.userLabels.STRING == STRING
    input.ReqMap.name == STRING
    input.ProviderMetadata.Region == STRING
}

discoveryengine.projects.locations.collections.dataStores.conversations.create

enum_GoogleCloudDiscoveryengineV1betaConversationState := [ "STATE_UNSPECIFIED", "IN_PROGRESS", "COMPLETED" ]
enum_GoogleCloudDiscoveryengineV1betaSearchResponseSummarySummarySkippedReasons := [ "SUMMARY_SKIPPED_REASON_UNSPECIFIED", "ADVERSARIAL_QUERY_IGNORED", "NON_SUMMARY_SEEKING_QUERY_IGNORED", "OUT_OF_DOMAIN_QUERY_IGNORED", "POTENTIAL_POLICY_VIOLATION", "LLM_ADDON_NOT_ENABLED" ]

valid {
    input.Body.messages[_].reply.references[_].anchorText == STRING
    input.Body.messages[_].reply.references[_].end == INTEGER
    input.Body.messages[_].reply.references[_].start == INTEGER
    input.Body.messages[_].reply.references[_].uri == STRING
    input.Body.messages[_].reply.reply == STRING
    input.Body.messages[_].reply.summary.safetyAttributes.categories[_] == STRING
    input.Body.messages[_].reply.summary.safetyAttributes.scores[_] == NUMBER
    input.Body.messages[_].reply.summary.summarySkippedReasons[_] == enum_GoogleCloudDiscoveryengineV1betaSearchResponseSummarySummarySkippedReasons[_]
    input.Body.messages[_].reply.summary.summaryText == STRING
    input.Body.messages[_].reply.summary.summaryWithMetadata.citationMetadata.citations[_].endIndex == STRING
    input.Body.messages[_].reply.summary.summaryWithMetadata.citationMetadata.citations[_].sources[_].referenceIndex == STRING
    input.Body.messages[_].reply.summary.summaryWithMetadata.citationMetadata.citations[_].startIndex == STRING
    input.Body.messages[_].reply.summary.summaryWithMetadata.references[_].document == STRING
    input.Body.messages[_].reply.summary.summaryWithMetadata.references[_].title == STRING
    input.Body.messages[_].reply.summary.summaryWithMetadata.references[_].uri == STRING
    input.Body.messages[_].reply.summary.summaryWithMetadata.summary == STRING
    input.Body.messages[_].userInput.context.activeDocument == STRING
    input.Body.messages[_].userInput.context.contextDocuments[_] == STRING
    input.Body.messages[_].userInput.input == STRING
    input.Body.name == STRING
    input.Body.state == enum_GoogleCloudDiscoveryengineV1betaConversationState[_]
    input.Body.userPseudoId == STRING
    input.ReqMap.parent == STRING
    input.ProviderMetadata.Region == STRING
}

discoveryengine.projects.locations.collections.dataStores.conversations.delete

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

discoveryengine.projects.locations.collections.dataStores.conversations.get

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

discoveryengine.projects.locations.collections.dataStores.conversations.list

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

discoveryengine.projects.locations.collections.dataStores.conversations.patch

enum_GoogleCloudDiscoveryengineV1betaConversationState := [ "STATE_UNSPECIFIED", "IN_PROGRESS", "COMPLETED" ]
enum_GoogleCloudDiscoveryengineV1betaSearchResponseSummarySummarySkippedReasons := [ "SUMMARY_SKIPPED_REASON_UNSPECIFIED", "ADVERSARIAL_QUERY_IGNORED", "NON_SUMMARY_SEEKING_QUERY_IGNORED", "OUT_OF_DOMAIN_QUERY_IGNORED", "POTENTIAL_POLICY_VIOLATION", "LLM_ADDON_NOT_ENABLED" ]

valid {
    input.Body.messages[_].reply.references[_].anchorText == STRING
    input.Body.messages[_].reply.references[_].end == INTEGER
    input.Body.messages[_].reply.references[_].start == INTEGER
    input.Body.messages[_].reply.references[_].uri == STRING
    input.Body.messages[_].reply.reply == STRING
    input.Body.messages[_].reply.summary.safetyAttributes.categories[_] == STRING
    input.Body.messages[_].reply.summary.safetyAttributes.scores[_] == NUMBER
    input.Body.messages[_].reply.summary.summarySkippedReasons[_] == enum_GoogleCloudDiscoveryengineV1betaSearchResponseSummarySummarySkippedReasons[_]
    input.Body.messages[_].reply.summary.summaryText == STRING
    input.Body.messages[_].reply.summary.summaryWithMetadata.citationMetadata.citations[_].endIndex == STRING
    input.Body.messages[_].reply.summary.summaryWithMetadata.citationMetadata.citations[_].sources[_].referenceIndex == STRING
    input.Body.messages[_].reply.summary.summaryWithMetadata.citationMetadata.citations[_].startIndex == STRING
    input.Body.messages[_].reply.summary.summaryWithMetadata.references[_].document == STRING
    input.Body.messages[_].reply.summary.summaryWithMetadata.references[_].title == STRING
    input.Body.messages[_].reply.summary.summaryWithMetadata.references[_].uri == STRING
    input.Body.messages[_].reply.summary.summaryWithMetadata.summary == STRING
    input.Body.messages[_].userInput.context.activeDocument == STRING
    input.Body.messages[_].userInput.context.contextDocuments[_] == STRING
    input.Body.messages[_].userInput.input == STRING
    input.Body.name == STRING
    input.Body.state == enum_GoogleCloudDiscoveryengineV1betaConversationState[_]
    input.Body.userPseudoId == STRING
    input.ReqMap.name == STRING
    input.Qs.updateMask == STRING
    input.ProviderMetadata.Region == STRING
}

discoveryengine.projects.locations.collections.dataStores.create

enum_GoogleCloudDiscoveryengineV1betaDataStoreContentConfig := [ "CONTENT_CONFIG_UNSPECIFIED", "NO_CONTENT", "CONTENT_REQUIRED", "PUBLIC_WEBSITE" ]
enum_GoogleCloudDiscoveryengineV1betaDataStoreIndustryVertical := [ "INDUSTRY_VERTICAL_UNSPECIFIED", "GENERIC", "MEDIA" ]
enum_GoogleCloudDiscoveryengineV1betaDataStoreSolutionTypes := [ "SOLUTION_TYPE_UNSPECIFIED", "SOLUTION_TYPE_RECOMMENDATION", "SOLUTION_TYPE_SEARCH", "SOLUTION_TYPE_CHAT" ]

valid {
    input.Body.contentConfig == enum_GoogleCloudDiscoveryengineV1betaDataStoreContentConfig[_]
    input.Body.displayName == STRING
    input.Body.industryVertical == enum_GoogleCloudDiscoveryengineV1betaDataStoreIndustryVertical[_]
    input.Body.name == STRING
    input.Body.solutionTypes[_] == enum_GoogleCloudDiscoveryengineV1betaDataStoreSolutionTypes[_]
    input.ReqMap.parent == STRING
    input.Qs.createAdvancedSiteSearch == BOOLEAN
    input.Qs.dataStoreId == STRING
    input.ProviderMetadata.Region == STRING
}

discoveryengine.projects.locations.collections.dataStores.delete

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

discoveryengine.projects.locations.collections.dataStores.get

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

discoveryengine.projects.locations.collections.dataStores.getDocumentProcessingConfig

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

discoveryengine.projects.locations.collections.dataStores.getSiteSearchEngine

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

discoveryengine.projects.locations.collections.dataStores.list

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

discoveryengine.projects.locations.collections.dataStores.models.operations.get

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

discoveryengine.projects.locations.collections.dataStores.models.operations.list

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

discoveryengine.projects.locations.collections.dataStores.operations.get

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

discoveryengine.projects.locations.collections.dataStores.operations.list

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

discoveryengine.projects.locations.collections.dataStores.patch

enum_GoogleCloudDiscoveryengineV1betaDataStoreContentConfig := [ "CONTENT_CONFIG_UNSPECIFIED", "NO_CONTENT", "CONTENT_REQUIRED", "PUBLIC_WEBSITE" ]
enum_GoogleCloudDiscoveryengineV1betaDataStoreIndustryVertical := [ "INDUSTRY_VERTICAL_UNSPECIFIED", "GENERIC", "MEDIA" ]
enum_GoogleCloudDiscoveryengineV1betaDataStoreSolutionTypes := [ "SOLUTION_TYPE_UNSPECIFIED", "SOLUTION_TYPE_RECOMMENDATION", "SOLUTION_TYPE_SEARCH", "SOLUTION_TYPE_CHAT" ]

valid {
    input.Body.contentConfig == enum_GoogleCloudDiscoveryengineV1betaDataStoreContentConfig[_]
    input.Body.displayName == STRING
    input.Body.industryVertical == enum_GoogleCloudDiscoveryengineV1betaDataStoreIndustryVertical[_]
    input.Body.name == STRING
    input.Body.solutionTypes[_] == enum_GoogleCloudDiscoveryengineV1betaDataStoreSolutionTypes[_]
    input.ReqMap.name == STRING
    input.Qs.updateMask == STRING
    input.ProviderMetadata.Region == STRING
}

discoveryengine.projects.locations.collections.dataStores.schemas.create

valid {
    input.Body.jsonSchema == STRING
    input.Body.name == STRING
    input.Body.structSchema.STRING == ANY
    input.ReqMap.parent == STRING
    input.Qs.schemaId == STRING
    input.ProviderMetadata.Region == STRING
}

discoveryengine.projects.locations.collections.dataStores.schemas.delete

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

discoveryengine.projects.locations.collections.dataStores.schemas.get

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

discoveryengine.projects.locations.collections.dataStores.schemas.list

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

discoveryengine.projects.locations.collections.dataStores.schemas.operations.get

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

discoveryengine.projects.locations.collections.dataStores.schemas.operations.list

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

discoveryengine.projects.locations.collections.dataStores.schemas.patch

valid {
    input.Body.jsonSchema == STRING
    input.Body.name == STRING
    input.Body.structSchema.STRING == ANY
    input.ReqMap.name == STRING
    input.Qs.allowMissing == BOOLEAN
    input.ProviderMetadata.Region == STRING
}

discoveryengine.projects.locations.collections.dataStores.servingConfigs.get

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

discoveryengine.projects.locations.collections.dataStores.servingConfigs.list

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

discoveryengine.projects.locations.collections.dataStores.servingConfigs.patch

enum_GoogleCloudDiscoveryengineV1betaServingConfigSolutionType := [ "SOLUTION_TYPE_UNSPECIFIED", "SOLUTION_TYPE_RECOMMENDATION", "SOLUTION_TYPE_SEARCH", "SOLUTION_TYPE_CHAT" ]

valid {
    input.Body.boostControlIds[_] == STRING
    input.Body.displayName == STRING
    input.Body.dissociateControlIds[_] == STRING
    input.Body.diversityLevel == STRING
    input.Body.embeddingConfig.fieldPath == STRING
    input.Body.filterControlIds[_] == STRING
    input.Body.genericConfig.contentSearchSpec.extractiveContentSpec.maxExtractiveAnswerCount == INTEGER
    input.Body.genericConfig.contentSearchSpec.extractiveContentSpec.maxExtractiveSegmentCount == INTEGER
    input.Body.genericConfig.contentSearchSpec.extractiveContentSpec.numNextSegments == INTEGER
    input.Body.genericConfig.contentSearchSpec.extractiveContentSpec.numPreviousSegments == INTEGER
    input.Body.genericConfig.contentSearchSpec.snippetSpec.maxSnippetCount == INTEGER
    input.Body.genericConfig.contentSearchSpec.snippetSpec.referenceOnly == BOOLEAN
    input.Body.genericConfig.contentSearchSpec.snippetSpec.returnSnippet == BOOLEAN
    input.Body.genericConfig.contentSearchSpec.summarySpec.ignoreAdversarialQuery == BOOLEAN
    input.Body.genericConfig.contentSearchSpec.summarySpec.ignoreNonSummarySeekingQuery == BOOLEAN
    input.Body.genericConfig.contentSearchSpec.summarySpec.includeCitations == BOOLEAN
    input.Body.genericConfig.contentSearchSpec.summarySpec.languageCode == STRING
    input.Body.genericConfig.contentSearchSpec.summarySpec.modelPromptSpec.preamble == STRING
    input.Body.genericConfig.contentSearchSpec.summarySpec.modelSpec.version == STRING
    input.Body.genericConfig.contentSearchSpec.summarySpec.summaryResultCount == INTEGER
    input.Body.ignoreControlIds[_] == STRING
    input.Body.mediaConfig.contentFreshnessCutoffDays == INTEGER
    input.Body.mediaConfig.contentWatchedMinutesThreshold == NUMBER
    input.Body.mediaConfig.contentWatchedPercentageThreshold == NUMBER
    input.Body.mediaConfig.contentWatchedSecondsThreshold == NUMBER
    input.Body.mediaConfig.demotionEventType == STRING
    input.Body.modelId == STRING
    input.Body.name == STRING
    input.Body.onewaySynonymsControlIds[_] == STRING
    input.Body.rankingExpression == STRING
    input.Body.redirectControlIds[_] == STRING
    input.Body.replacementControlIds[_] == STRING
    input.Body.solutionType == enum_GoogleCloudDiscoveryengineV1betaServingConfigSolutionType[_]
    input.Body.synonymsControlIds[_] == STRING
    input.ReqMap.name == STRING
    input.Qs.updateMask == STRING
    input.ProviderMetadata.Region == STRING
}

discoveryengine.projects.locations.collections.dataStores.servingConfigs.recommend

valid {
    input.Body.filter == STRING
    input.Body.pageSize == INTEGER
    input.Body.params.STRING == ANY
    input.Body.userEvent.attributes.STRING.numbers[_] == NUMBER
    input.Body.userEvent.attributes.STRING.text[_] == STRING
    input.Body.userEvent.attributionToken == STRING
    input.Body.userEvent.completionInfo.selectedPosition == INTEGER
    input.Body.userEvent.completionInfo.selectedSuggestion == STRING
    input.Body.userEvent.directUserRequest == BOOLEAN
    input.Body.userEvent.documents[_].id == STRING
    input.Body.userEvent.documents[_].name == STRING
    input.Body.userEvent.documents[_].promotionIds[_] == STRING
    input.Body.userEvent.documents[_].quantity == INTEGER
    input.Body.userEvent.documents[_].uri == STRING
    input.Body.userEvent.eventTime == STRING
    input.Body.userEvent.eventType == STRING
    input.Body.userEvent.filter == STRING
    input.Body.userEvent.mediaInfo.mediaProgressDuration == STRING
    input.Body.userEvent.mediaInfo.mediaProgressPercentage == NUMBER
    input.Body.userEvent.pageInfo.pageCategory == STRING
    input.Body.userEvent.pageInfo.pageviewId == STRING
    input.Body.userEvent.pageInfo.referrerUri == STRING
    input.Body.userEvent.pageInfo.uri == STRING
    input.Body.userEvent.panel.displayName == STRING
    input.Body.userEvent.panel.panelId == STRING
    input.Body.userEvent.panel.panelPosition == INTEGER
    input.Body.userEvent.panel.totalPanels == INTEGER
    input.Body.userEvent.promotionIds[_] == STRING
    input.Body.userEvent.searchInfo.offset == INTEGER
    input.Body.userEvent.searchInfo.orderBy == STRING
    input.Body.userEvent.searchInfo.searchQuery == STRING
    input.Body.userEvent.sessionId == STRING
    input.Body.userEvent.tagIds[_] == STRING
    input.Body.userEvent.transactionInfo.cost == NUMBER
    input.Body.userEvent.transactionInfo.currency == STRING
    input.Body.userEvent.transactionInfo.discountValue == NUMBER
    input.Body.userEvent.transactionInfo.tax == NUMBER
    input.Body.userEvent.transactionInfo.transactionId == STRING
    input.Body.userEvent.transactionInfo.value == NUMBER
    input.Body.userEvent.userInfo.userAgent == STRING
    input.Body.userEvent.userInfo.userId == STRING
    input.Body.userEvent.userPseudoId == STRING
    input.Body.userLabels.STRING == STRING
    input.Body.validateOnly == BOOLEAN
    input.ReqMap.servingConfig == STRING
    input.ProviderMetadata.Region == STRING
}

discoveryengine.projects.locations.collections.dataStores.servingConfigs.search

enum_GoogleCloudDiscoveryengineV1betaSearchRequestQueryExpansionSpecCondition := [ "CONDITION_UNSPECIFIED", "DISABLED", "AUTO" ]
enum_GoogleCloudDiscoveryengineV1betaSearchRequestSpellCorrectionSpecMode := [ "MODE_UNSPECIFIED", "SUGGESTION_ONLY", "AUTO" ]

valid {
    input.Body.boostSpec.conditionBoostSpecs[_].boost == NUMBER
    input.Body.boostSpec.conditionBoostSpecs[_].condition == STRING
    input.Body.branch == STRING
    input.Body.canonicalFilter == STRING
    input.Body.contentSearchSpec.extractiveContentSpec.maxExtractiveAnswerCount == INTEGER
    input.Body.contentSearchSpec.extractiveContentSpec.maxExtractiveSegmentCount == INTEGER
    input.Body.contentSearchSpec.extractiveContentSpec.numNextSegments == INTEGER
    input.Body.contentSearchSpec.extractiveContentSpec.numPreviousSegments == INTEGER
    input.Body.contentSearchSpec.snippetSpec.maxSnippetCount == INTEGER
    input.Body.contentSearchSpec.snippetSpec.referenceOnly == BOOLEAN
    input.Body.contentSearchSpec.snippetSpec.returnSnippet == BOOLEAN
    input.Body.contentSearchSpec.summarySpec.ignoreAdversarialQuery == BOOLEAN
    input.Body.contentSearchSpec.summarySpec.ignoreNonSummarySeekingQuery == BOOLEAN
    input.Body.contentSearchSpec.summarySpec.includeCitations == BOOLEAN
    input.Body.contentSearchSpec.summarySpec.languageCode == STRING
    input.Body.contentSearchSpec.summarySpec.modelPromptSpec.preamble == STRING
    input.Body.contentSearchSpec.summarySpec.modelSpec.version == STRING
    input.Body.contentSearchSpec.summarySpec.summaryResultCount == INTEGER
    input.Body.embeddingSpec.embeddingVectors[_].fieldPath == STRING
    input.Body.embeddingSpec.embeddingVectors[_].vector[_] == NUMBER
    input.Body.facetSpecs[_].enableDynamicPosition == BOOLEAN
    input.Body.facetSpecs[_].excludedFilterKeys[_] == STRING
    input.Body.facetSpecs[_].facetKey.caseInsensitive == BOOLEAN
    input.Body.facetSpecs[_].facetKey.contains[_] == STRING
    input.Body.facetSpecs[_].facetKey.intervals[_].exclusiveMaximum == NUMBER
    input.Body.facetSpecs[_].facetKey.intervals[_].exclusiveMinimum == NUMBER
    input.Body.facetSpecs[_].facetKey.intervals[_].maximum == NUMBER
    input.Body.facetSpecs[_].facetKey.intervals[_].minimum == NUMBER
    input.Body.facetSpecs[_].facetKey.key == STRING
    input.Body.facetSpecs[_].facetKey.orderBy == STRING
    input.Body.facetSpecs[_].facetKey.prefixes[_] == STRING
    input.Body.facetSpecs[_].facetKey.restrictedValues[_] == STRING
    input.Body.facetSpecs[_].limit == INTEGER
    input.Body.filter == STRING
    input.Body.imageQuery.imageBytes == STRING
    input.Body.offset == INTEGER
    input.Body.orderBy == STRING
    input.Body.pageSize == INTEGER
    input.Body.pageToken == STRING
    input.Body.params.STRING == ANY
    input.Body.query == STRING
    input.Body.queryExpansionSpec.condition == enum_GoogleCloudDiscoveryengineV1betaSearchRequestQueryExpansionSpecCondition[_]
    input.Body.queryExpansionSpec.pinUnexpandedResults == BOOLEAN
    input.Body.rankingExpression == STRING
    input.Body.safeSearch == BOOLEAN
    input.Body.spellCorrectionSpec.mode == enum_GoogleCloudDiscoveryengineV1betaSearchRequestSpellCorrectionSpecMode[_]
    input.Body.userInfo.userAgent == STRING
    input.Body.userInfo.userId == STRING
    input.Body.userLabels.STRING == STRING
    input.Body.userPseudoId == STRING
    input.ReqMap.servingConfig == STRING
    input.ProviderMetadata.Region == STRING
}

discoveryengine.projects.locations.collections.dataStores.siteSearchEngine.batchVerifyTargetSites

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

discoveryengine.projects.locations.collections.dataStores.siteSearchEngine.disableAdvancedSiteSearch

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

discoveryengine.projects.locations.collections.dataStores.siteSearchEngine.enableAdvancedSiteSearch

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

discoveryengine.projects.locations.collections.dataStores.siteSearchEngine.fetchDomainVerificationStatus

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

discoveryengine.projects.locations.collections.dataStores.siteSearchEngine.operations.get

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

discoveryengine.projects.locations.collections.dataStores.siteSearchEngine.operations.list

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

discoveryengine.projects.locations.collections.dataStores.siteSearchEngine.recrawlUris

valid {
    input.Body.uris[_] == STRING
    input.ReqMap.siteSearchEngine == STRING
    input.ProviderMetadata.Region == STRING
}

discoveryengine.projects.locations.collections.dataStores.siteSearchEngine.targetSites.batchCreate

enum_GoogleCloudDiscoveryengineV1betaTargetSiteType := [ "TYPE_UNSPECIFIED", "INCLUDE", "EXCLUDE" ]

valid {
    input.Body.requests[_].parent == STRING
    input.Body.requests[_].targetSite.exactMatch == BOOLEAN
    input.Body.requests[_].targetSite.providedUriPattern == STRING
    input.Body.requests[_].targetSite.type == enum_GoogleCloudDiscoveryengineV1betaTargetSiteType[_]
    input.ReqMap.parent == STRING
    input.ProviderMetadata.Region == STRING
}

discoveryengine.projects.locations.collections.dataStores.siteSearchEngine.targetSites.create

enum_GoogleCloudDiscoveryengineV1betaTargetSiteType := [ "TYPE_UNSPECIFIED", "INCLUDE", "EXCLUDE" ]

valid {
    input.Body.exactMatch == BOOLEAN
    input.Body.providedUriPattern == STRING
    input.Body.type == enum_GoogleCloudDiscoveryengineV1betaTargetSiteType[_]
    input.ReqMap.parent == STRING
    input.ProviderMetadata.Region == STRING
}

discoveryengine.projects.locations.collections.dataStores.siteSearchEngine.targetSites.delete

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

discoveryengine.projects.locations.collections.dataStores.siteSearchEngine.targetSites.get

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

discoveryengine.projects.locations.collections.dataStores.siteSearchEngine.targetSites.list

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

discoveryengine.projects.locations.collections.dataStores.siteSearchEngine.targetSites.operations.get

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

discoveryengine.projects.locations.collections.dataStores.siteSearchEngine.targetSites.operations.list

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

discoveryengine.projects.locations.collections.dataStores.siteSearchEngine.targetSites.patch

enum_GoogleCloudDiscoveryengineV1betaTargetSiteType := [ "TYPE_UNSPECIFIED", "INCLUDE", "EXCLUDE" ]

valid {
    input.Body.exactMatch == BOOLEAN
    input.Body.providedUriPattern == STRING
    input.Body.type == enum_GoogleCloudDiscoveryengineV1betaTargetSiteType[_]
    input.ReqMap.name == STRING
    input.ProviderMetadata.Region == STRING
}

discoveryengine.projects.locations.collections.dataStores.suggestionDenyListEntries.import

enum_GoogleCloudDiscoveryengineV1betaSuggestionDenyListEntryMatchOperator := [ "MATCH_OPERATOR_UNSPECIFIED", "EXACT_MATCH", "CONTAINS" ]

valid {
    input.Body.gcsSource.dataSchema == STRING
    input.Body.gcsSource.inputUris[_] == STRING
    input.Body.inlineSource.entries[_].blockPhrase == STRING
    input.Body.inlineSource.entries[_].matchOperator == enum_GoogleCloudDiscoveryengineV1betaSuggestionDenyListEntryMatchOperator[_]
    input.ReqMap.parent == STRING
    input.ProviderMetadata.Region == STRING
}

discoveryengine.projects.locations.collections.dataStores.suggestionDenyListEntries.purge

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

discoveryengine.projects.locations.collections.dataStores.trainCustomModel

valid {
    input.Body.errorConfig.gcsPrefix == STRING
    input.Body.gcsTrainingInput.corpusDataPath == STRING
    input.Body.gcsTrainingInput.queryDataPath == STRING
    input.Body.gcsTrainingInput.testDataPath == STRING
    input.Body.gcsTrainingInput.trainDataPath == STRING
    input.Body.modelType == STRING
    input.ReqMap.dataStore == STRING
    input.ProviderMetadata.Region == STRING
}

discoveryengine.projects.locations.collections.dataStores.updateDocumentProcessingConfig

valid {
    input.Body.defaultParsingConfig.digitalParsingConfig.STRING == STRING
    input.Body.defaultParsingConfig.layoutParsingConfig.STRING == STRING
    input.Body.defaultParsingConfig.ocrParsingConfig.enhancedDocumentElements[_] == STRING
    input.Body.defaultParsingConfig.ocrParsingConfig.useNativeText == BOOLEAN
    input.Body.name == STRING
    input.Body.ocrConfig.enabled == BOOLEAN
    input.Body.ocrConfig.enhancedDocumentElements[_] == STRING
    input.Body.ocrConfig.useNativeText == BOOLEAN
    input.Body.parsingConfigOverrides.STRING.digitalParsingConfig.STRING == STRING
    input.Body.parsingConfigOverrides.STRING.layoutParsingConfig.STRING == STRING
    input.Body.parsingConfigOverrides.STRING.ocrParsingConfig.enhancedDocumentElements[_] == STRING
    input.Body.parsingConfigOverrides.STRING.ocrParsingConfig.useNativeText == BOOLEAN
    input.ReqMap.name == STRING
    input.Qs.updateMask == STRING
    input.ProviderMetadata.Region == STRING
}

discoveryengine.projects.locations.collections.dataStores.userEvents.collect

valid {
    input.ReqMap.parent == STRING
    input.Qs.ets == STRING
    input.Qs.uri == STRING
    input.Qs.userEvent == STRING
    input.ProviderMetadata.Region == STRING
}

discoveryengine.projects.locations.collections.dataStores.userEvents.import

valid {
    input.Body.bigquerySource.dataSchema == STRING
    input.Body.bigquerySource.datasetId == STRING
    input.Body.bigquerySource.gcsStagingDir == STRING
    input.Body.bigquerySource.partitionDate.day == INTEGER
    input.Body.bigquerySource.partitionDate.month == INTEGER
    input.Body.bigquerySource.partitionDate.year == INTEGER
    input.Body.bigquerySource.projectId == STRING
    input.Body.bigquerySource.tableId == STRING
    input.Body.errorConfig.gcsPrefix == STRING
    input.Body.gcsSource.dataSchema == STRING
    input.Body.gcsSource.inputUris[_] == STRING
    input.Body.inlineSource.userEvents[_].attributes.STRING.numbers[_] == NUMBER
    input.Body.inlineSource.userEvents[_].attributes.STRING.text[_] == STRING
    input.Body.inlineSource.userEvents[_].attributionToken == STRING
    input.Body.inlineSource.userEvents[_].completionInfo.selectedPosition == INTEGER
    input.Body.inlineSource.userEvents[_].completionInfo.selectedSuggestion == STRING
    input.Body.inlineSource.userEvents[_].directUserRequest == BOOLEAN
    input.Body.inlineSource.userEvents[_].documents[_].id == STRING
    input.Body.inlineSource.userEvents[_].documents[_].name == STRING
    input.Body.inlineSource.userEvents[_].documents[_].promotionIds[_] == STRING
    input.Body.inlineSource.userEvents[_].documents[_].quantity == INTEGER
    input.Body.inlineSource.userEvents[_].documents[_].uri == STRING
    input.Body.inlineSource.userEvents[_].eventTime == STRING
    input.Body.inlineSource.userEvents[_].eventType == STRING
    input.Body.inlineSource.userEvents[_].filter == STRING
    input.Body.inlineSource.userEvents[_].mediaInfo.mediaProgressDuration == STRING
    input.Body.inlineSource.userEvents[_].mediaInfo.mediaProgressPercentage == NUMBER
    input.Body.inlineSource.userEvents[_].pageInfo.pageCategory == STRING
    input.Body.inlineSource.userEvents[_].pageInfo.pageviewId == STRING
    input.Body.inlineSource.userEvents[_].pageInfo.referrerUri == STRING
    input.Body.inlineSource.userEvents[_].pageInfo.uri == STRING
    input.Body.inlineSource.userEvents[_].panel.displayName == STRING
    input.Body.inlineSource.userEvents[_].panel.panelId == STRING
    input.Body.inlineSource.userEvents[_].panel.panelPosition == INTEGER
    input.Body.inlineSource.userEvents[_].panel.totalPanels == INTEGER
    input.Body.inlineSource.userEvents[_].promotionIds[_] == STRING
    input.Body.inlineSource.userEvents[_].searchInfo.offset == INTEGER
    input.Body.inlineSource.userEvents[_].searchInfo.orderBy == STRING
    input.Body.inlineSource.userEvents[_].searchInfo.searchQuery == STRING
    input.Body.inlineSource.userEvents[_].sessionId == STRING
    input.Body.inlineSource.userEvents[_].tagIds[_] == STRING
    input.Body.inlineSource.userEvents[_].transactionInfo.cost == NUMBER
    input.Body.inlineSource.userEvents[_].transactionInfo.currency == STRING
    input.Body.inlineSource.userEvents[_].transactionInfo.discountValue == NUMBER
    input.Body.inlineSource.userEvents[_].transactionInfo.tax == NUMBER
    input.Body.inlineSource.userEvents[_].transactionInfo.transactionId == STRING
    input.Body.inlineSource.userEvents[_].transactionInfo.value == NUMBER
    input.Body.inlineSource.userEvents[_].userInfo.userAgent == STRING
    input.Body.inlineSource.userEvents[_].userInfo.userId == STRING
    input.Body.inlineSource.userEvents[_].userPseudoId == STRING
    input.ReqMap.parent == STRING
    input.ProviderMetadata.Region == STRING
}

discoveryengine.projects.locations.collections.dataStores.userEvents.purge

valid {
    input.Body.filter == STRING
    input.Body.force == BOOLEAN
    input.ReqMap.parent == STRING
    input.ProviderMetadata.Region == STRING
}

discoveryengine.projects.locations.collections.dataStores.userEvents.write

valid {
    input.Body.attributes.STRING.numbers[_] == NUMBER
    input.Body.attributes.STRING.text[_] == STRING
    input.Body.attributionToken == STRING
    input.Body.completionInfo.selectedPosition == INTEGER
    input.Body.completionInfo.selectedSuggestion == STRING
    input.Body.directUserRequest == BOOLEAN
    input.Body.documents[_].id == STRING
    input.Body.documents[_].name == STRING
    input.Body.documents[_].promotionIds[_] == STRING
    input.Body.documents[_].quantity == INTEGER
    input.Body.documents[_].uri == STRING
    input.Body.eventTime == STRING
    input.Body.eventType == STRING
    input.Body.filter == STRING
    input.Body.mediaInfo.mediaProgressDuration == STRING
    input.Body.mediaInfo.mediaProgressPercentage == NUMBER
    input.Body.pageInfo.pageCategory == STRING
    input.Body.pageInfo.pageviewId == STRING
    input.Body.pageInfo.referrerUri == STRING
    input.Body.pageInfo.uri == STRING
    input.Body.panel.displayName == STRING
    input.Body.panel.panelId == STRING
    input.Body.panel.panelPosition == INTEGER
    input.Body.panel.totalPanels == INTEGER
    input.Body.promotionIds[_] == STRING
    input.Body.searchInfo.offset == INTEGER
    input.Body.searchInfo.orderBy == STRING
    input.Body.searchInfo.searchQuery == STRING
    input.Body.sessionId == STRING
    input.Body.tagIds[_] == STRING
    input.Body.transactionInfo.cost == NUMBER
    input.Body.transactionInfo.currency == STRING
    input.Body.transactionInfo.discountValue == NUMBER
    input.Body.transactionInfo.tax == NUMBER
    input.Body.transactionInfo.transactionId == STRING
    input.Body.transactionInfo.value == NUMBER
    input.Body.userInfo.userAgent == STRING
    input.Body.userInfo.userId == STRING
    input.Body.userPseudoId == STRING
    input.ReqMap.parent == STRING
    input.ProviderMetadata.Region == STRING
}

discoveryengine.projects.locations.collections.engines.conversations.converse

enum_GoogleCloudDiscoveryengineV1betaConversationState := [ "STATE_UNSPECIFIED", "IN_PROGRESS", "COMPLETED" ]
enum_GoogleCloudDiscoveryengineV1betaSearchResponseSummarySummarySkippedReasons := [ "SUMMARY_SKIPPED_REASON_UNSPECIFIED", "ADVERSARIAL_QUERY_IGNORED", "NON_SUMMARY_SEEKING_QUERY_IGNORED", "OUT_OF_DOMAIN_QUERY_IGNORED", "POTENTIAL_POLICY_VIOLATION", "LLM_ADDON_NOT_ENABLED" ]

valid {
    input.Body.conversation.messages[_].reply.references[_].anchorText == STRING
    input.Body.conversation.messages[_].reply.references[_].end == INTEGER
    input.Body.conversation.messages[_].reply.references[_].start == INTEGER
    input.Body.conversation.messages[_].reply.references[_].uri == STRING
    input.Body.conversation.messages[_].reply.reply == STRING
    input.Body.conversation.messages[_].reply.summary.safetyAttributes.categories[_] == STRING
    input.Body.conversation.messages[_].reply.summary.safetyAttributes.scores[_] == NUMBER
    input.Body.conversation.messages[_].reply.summary.summarySkippedReasons[_] == enum_GoogleCloudDiscoveryengineV1betaSearchResponseSummarySummarySkippedReasons[_]
    input.Body.conversation.messages[_].reply.summary.summaryText == STRING
    input.Body.conversation.messages[_].reply.summary.summaryWithMetadata.citationMetadata.citations[_].endIndex == STRING
    input.Body.conversation.messages[_].reply.summary.summaryWithMetadata.citationMetadata.citations[_].sources[_].referenceIndex == STRING
    input.Body.conversation.messages[_].reply.summary.summaryWithMetadata.citationMetadata.citations[_].startIndex == STRING
    input.Body.conversation.messages[_].reply.summary.summaryWithMetadata.references[_].document == STRING
    input.Body.conversation.messages[_].reply.summary.summaryWithMetadata.references[_].title == STRING
    input.Body.conversation.messages[_].reply.summary.summaryWithMetadata.references[_].uri == STRING
    input.Body.conversation.messages[_].reply.summary.summaryWithMetadata.summary == STRING
    input.Body.conversation.messages[_].userInput.context.activeDocument == STRING
    input.Body.conversation.messages[_].userInput.context.contextDocuments[_] == STRING
    input.Body.conversation.messages[_].userInput.input == STRING
    input.Body.conversation.name == STRING
    input.Body.conversation.state == enum_GoogleCloudDiscoveryengineV1betaConversationState[_]
    input.Body.conversation.userPseudoId == STRING
    input.Body.filter == STRING
    input.Body.query.context.activeDocument == STRING
    input.Body.query.context.contextDocuments[_] == STRING
    input.Body.query.input == STRING
    input.Body.safeSearch == BOOLEAN
    input.Body.servingConfig == STRING
    input.Body.summarySpec.ignoreAdversarialQuery == BOOLEAN
    input.Body.summarySpec.ignoreNonSummarySeekingQuery == BOOLEAN
    input.Body.summarySpec.includeCitations == BOOLEAN
    input.Body.summarySpec.languageCode == STRING
    input.Body.summarySpec.modelPromptSpec.preamble == STRING
    input.Body.summarySpec.modelSpec.version == STRING
    input.Body.summarySpec.summaryResultCount == INTEGER
    input.Body.userLabels.STRING == STRING
    input.ReqMap.name == STRING
    input.ProviderMetadata.Region == STRING
}

discoveryengine.projects.locations.collections.engines.conversations.create

enum_GoogleCloudDiscoveryengineV1betaConversationState := [ "STATE_UNSPECIFIED", "IN_PROGRESS", "COMPLETED" ]
enum_GoogleCloudDiscoveryengineV1betaSearchResponseSummarySummarySkippedReasons := [ "SUMMARY_SKIPPED_REASON_UNSPECIFIED", "ADVERSARIAL_QUERY_IGNORED", "NON_SUMMARY_SEEKING_QUERY_IGNORED", "OUT_OF_DOMAIN_QUERY_IGNORED", "POTENTIAL_POLICY_VIOLATION", "LLM_ADDON_NOT_ENABLED" ]

valid {
    input.Body.messages[_].reply.references[_].anchorText == STRING
    input.Body.messages[_].reply.references[_].end == INTEGER
    input.Body.messages[_].reply.references[_].start == INTEGER
    input.Body.messages[_].reply.references[_].uri == STRING
    input.Body.messages[_].reply.reply == STRING
    input.Body.messages[_].reply.summary.safetyAttributes.categories[_] == STRING
    input.Body.messages[_].reply.summary.safetyAttributes.scores[_] == NUMBER
    input.Body.messages[_].reply.summary.summarySkippedReasons[_] == enum_GoogleCloudDiscoveryengineV1betaSearchResponseSummarySummarySkippedReasons[_]
    input.Body.messages[_].reply.summary.summaryText == STRING
    input.Body.messages[_].reply.summary.summaryWithMetadata.citationMetadata.citations[_].endIndex == STRING
    input.Body.messages[_].reply.summary.summaryWithMetadata.citationMetadata.citations[_].sources[_].referenceIndex == STRING
    input.Body.messages[_].reply.summary.summaryWithMetadata.citationMetadata.citations[_].startIndex == STRING
    input.Body.messages[_].reply.summary.summaryWithMetadata.references[_].document == STRING
    input.Body.messages[_].reply.summary.summaryWithMetadata.references[_].title == STRING
    input.Body.messages[_].reply.summary.summaryWithMetadata.references[_].uri == STRING
    input.Body.messages[_].reply.summary.summaryWithMetadata.summary == STRING
    input.Body.messages[_].userInput.context.activeDocument == STRING
    input.Body.messages[_].userInput.context.contextDocuments[_] == STRING
    input.Body.messages[_].userInput.input == STRING
    input.Body.name == STRING
    input.Body.state == enum_GoogleCloudDiscoveryengineV1betaConversationState[_]
    input.Body.userPseudoId == STRING
    input.ReqMap.parent == STRING
    input.ProviderMetadata.Region == STRING
}

discoveryengine.projects.locations.collections.engines.conversations.delete

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

discoveryengine.projects.locations.collections.engines.conversations.get

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

discoveryengine.projects.locations.collections.engines.conversations.list

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

discoveryengine.projects.locations.collections.engines.conversations.patch

enum_GoogleCloudDiscoveryengineV1betaConversationState := [ "STATE_UNSPECIFIED", "IN_PROGRESS", "COMPLETED" ]
enum_GoogleCloudDiscoveryengineV1betaSearchResponseSummarySummarySkippedReasons := [ "SUMMARY_SKIPPED_REASON_UNSPECIFIED", "ADVERSARIAL_QUERY_IGNORED", "NON_SUMMARY_SEEKING_QUERY_IGNORED", "OUT_OF_DOMAIN_QUERY_IGNORED", "POTENTIAL_POLICY_VIOLATION", "LLM_ADDON_NOT_ENABLED" ]

valid {
    input.Body.messages[_].reply.references[_].anchorText == STRING
    input.Body.messages[_].reply.references[_].end == INTEGER
    input.Body.messages[_].reply.references[_].start == INTEGER
    input.Body.messages[_].reply.references[_].uri == STRING
    input.Body.messages[_].reply.reply == STRING
    input.Body.messages[_].reply.summary.safetyAttributes.categories[_] == STRING
    input.Body.messages[_].reply.summary.safetyAttributes.scores[_] == NUMBER
    input.Body.messages[_].reply.summary.summarySkippedReasons[_] == enum_GoogleCloudDiscoveryengineV1betaSearchResponseSummarySummarySkippedReasons[_]
    input.Body.messages[_].reply.summary.summaryText == STRING
    input.Body.messages[_].reply.summary.summaryWithMetadata.citationMetadata.citations[_].endIndex == STRING
    input.Body.messages[_].reply.summary.summaryWithMetadata.citationMetadata.citations[_].sources[_].referenceIndex == STRING
    input.Body.messages[_].reply.summary.summaryWithMetadata.citationMetadata.citations[_].startIndex == STRING
    input.Body.messages[_].reply.summary.summaryWithMetadata.references[_].document == STRING
    input.Body.messages[_].reply.summary.summaryWithMetadata.references[_].title == STRING
    input.Body.messages[_].reply.summary.summaryWithMetadata.references[_].uri == STRING
    input.Body.messages[_].reply.summary.summaryWithMetadata.summary == STRING
    input.Body.messages[_].userInput.context.activeDocument == STRING
    input.Body.messages[_].userInput.context.contextDocuments[_] == STRING
    input.Body.messages[_].userInput.input == STRING
    input.Body.name == STRING
    input.Body.state == enum_GoogleCloudDiscoveryengineV1betaConversationState[_]
    input.Body.userPseudoId == STRING
    input.ReqMap.name == STRING
    input.Qs.updateMask == STRING
    input.ProviderMetadata.Region == STRING
}

discoveryengine.projects.locations.collections.engines.create

enum_GoogleCloudDiscoveryengineV1betaEngineIndustryVertical := [ "INDUSTRY_VERTICAL_UNSPECIFIED", "GENERIC", "MEDIA" ]
enum_GoogleCloudDiscoveryengineV1betaEngineSearchEngineConfigSearchAddOns := [ "SEARCH_ADD_ON_UNSPECIFIED", "SEARCH_ADD_ON_LLM" ]
enum_GoogleCloudDiscoveryengineV1betaEngineSearchEngineConfigSearchTier := [ "SEARCH_TIER_UNSPECIFIED", "SEARCH_TIER_STANDARD", "SEARCH_TIER_ENTERPRISE" ]
enum_GoogleCloudDiscoveryengineV1betaEngineSolutionType := [ "SOLUTION_TYPE_UNSPECIFIED", "SOLUTION_TYPE_RECOMMENDATION", "SOLUTION_TYPE_SEARCH", "SOLUTION_TYPE_CHAT" ]

valid {
    input.Body.chatEngineConfig.agentCreationConfig.business == STRING
    input.Body.chatEngineConfig.agentCreationConfig.defaultLanguageCode == STRING
    input.Body.chatEngineConfig.agentCreationConfig.location == STRING
    input.Body.chatEngineConfig.agentCreationConfig.timeZone == STRING
    input.Body.chatEngineConfig.dialogflowAgentToLink == STRING
    input.Body.commonConfig.companyName == STRING
    input.Body.dataStoreIds[_] == STRING
    input.Body.displayName == STRING
    input.Body.industryVertical == enum_GoogleCloudDiscoveryengineV1betaEngineIndustryVertical[_]
    input.Body.name == STRING
    input.Body.searchEngineConfig.searchAddOns[_] == enum_GoogleCloudDiscoveryengineV1betaEngineSearchEngineConfigSearchAddOns[_]
    input.Body.searchEngineConfig.searchTier == enum_GoogleCloudDiscoveryengineV1betaEngineSearchEngineConfigSearchTier[_]
    input.Body.solutionType == enum_GoogleCloudDiscoveryengineV1betaEngineSolutionType[_]
    input.ReqMap.parent == STRING
    input.Qs.engineId == STRING
    input.ProviderMetadata.Region == STRING
}

discoveryengine.projects.locations.collections.engines.delete

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

discoveryengine.projects.locations.collections.engines.get

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

discoveryengine.projects.locations.collections.engines.list

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

discoveryengine.projects.locations.collections.engines.operations.get

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

discoveryengine.projects.locations.collections.engines.operations.list

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

discoveryengine.projects.locations.collections.engines.patch

enum_GoogleCloudDiscoveryengineV1betaEngineIndustryVertical := [ "INDUSTRY_VERTICAL_UNSPECIFIED", "GENERIC", "MEDIA" ]
enum_GoogleCloudDiscoveryengineV1betaEngineSearchEngineConfigSearchAddOns := [ "SEARCH_ADD_ON_UNSPECIFIED", "SEARCH_ADD_ON_LLM" ]
enum_GoogleCloudDiscoveryengineV1betaEngineSearchEngineConfigSearchTier := [ "SEARCH_TIER_UNSPECIFIED", "SEARCH_TIER_STANDARD", "SEARCH_TIER_ENTERPRISE" ]
enum_GoogleCloudDiscoveryengineV1betaEngineSolutionType := [ "SOLUTION_TYPE_UNSPECIFIED", "SOLUTION_TYPE_RECOMMENDATION", "SOLUTION_TYPE_SEARCH", "SOLUTION_TYPE_CHAT" ]

valid {
    input.Body.chatEngineConfig.agentCreationConfig.business == STRING
    input.Body.chatEngineConfig.agentCreationConfig.defaultLanguageCode == STRING
    input.Body.chatEngineConfig.agentCreationConfig.location == STRING
    input.Body.chatEngineConfig.agentCreationConfig.timeZone == STRING
    input.Body.chatEngineConfig.dialogflowAgentToLink == STRING
    input.Body.commonConfig.companyName == STRING
    input.Body.dataStoreIds[_] == STRING
    input.Body.displayName == STRING
    input.Body.industryVertical == enum_GoogleCloudDiscoveryengineV1betaEngineIndustryVertical[_]
    input.Body.name == STRING
    input.Body.searchEngineConfig.searchAddOns[_] == enum_GoogleCloudDiscoveryengineV1betaEngineSearchEngineConfigSearchAddOns[_]
    input.Body.searchEngineConfig.searchTier == enum_GoogleCloudDiscoveryengineV1betaEngineSearchEngineConfigSearchTier[_]
    input.Body.solutionType == enum_GoogleCloudDiscoveryengineV1betaEngineSolutionType[_]
    input.ReqMap.name == STRING
    input.Qs.updateMask == STRING
    input.ProviderMetadata.Region == STRING
}

discoveryengine.projects.locations.collections.engines.pause

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

discoveryengine.projects.locations.collections.engines.resume

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

discoveryengine.projects.locations.collections.engines.servingConfigs.get

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

discoveryengine.projects.locations.collections.engines.servingConfigs.list

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

discoveryengine.projects.locations.collections.engines.servingConfigs.patch

enum_GoogleCloudDiscoveryengineV1betaServingConfigSolutionType := [ "SOLUTION_TYPE_UNSPECIFIED", "SOLUTION_TYPE_RECOMMENDATION", "SOLUTION_TYPE_SEARCH", "SOLUTION_TYPE_CHAT" ]

valid {
    input.Body.boostControlIds[_] == STRING
    input.Body.displayName == STRING
    input.Body.dissociateControlIds[_] == STRING
    input.Body.diversityLevel == STRING
    input.Body.embeddingConfig.fieldPath == STRING
    input.Body.filterControlIds[_] == STRING
    input.Body.genericConfig.contentSearchSpec.extractiveContentSpec.maxExtractiveAnswerCount == INTEGER
    input.Body.genericConfig.contentSearchSpec.extractiveContentSpec.maxExtractiveSegmentCount == INTEGER
    input.Body.genericConfig.contentSearchSpec.extractiveContentSpec.numNextSegments == INTEGER
    input.Body.genericConfig.contentSearchSpec.extractiveContentSpec.numPreviousSegments == INTEGER
    input.Body.genericConfig.contentSearchSpec.snippetSpec.maxSnippetCount == INTEGER
    input.Body.genericConfig.contentSearchSpec.snippetSpec.referenceOnly == BOOLEAN
    input.Body.genericConfig.contentSearchSpec.snippetSpec.returnSnippet == BOOLEAN
    input.Body.genericConfig.contentSearchSpec.summarySpec.ignoreAdversarialQuery == BOOLEAN
    input.Body.genericConfig.contentSearchSpec.summarySpec.ignoreNonSummarySeekingQuery == BOOLEAN
    input.Body.genericConfig.contentSearchSpec.summarySpec.includeCitations == BOOLEAN
    input.Body.genericConfig.contentSearchSpec.summarySpec.languageCode == STRING
    input.Body.genericConfig.contentSearchSpec.summarySpec.modelPromptSpec.preamble == STRING
    input.Body.genericConfig.contentSearchSpec.summarySpec.modelSpec.version == STRING
    input.Body.genericConfig.contentSearchSpec.summarySpec.summaryResultCount == INTEGER
    input.Body.ignoreControlIds[_] == STRING
    input.Body.mediaConfig.contentFreshnessCutoffDays == INTEGER
    input.Body.mediaConfig.contentWatchedMinutesThreshold == NUMBER
    input.Body.mediaConfig.contentWatchedPercentageThreshold == NUMBER
    input.Body.mediaConfig.contentWatchedSecondsThreshold == NUMBER
    input.Body.mediaConfig.demotionEventType == STRING
    input.Body.modelId == STRING
    input.Body.name == STRING
    input.Body.onewaySynonymsControlIds[_] == STRING
    input.Body.rankingExpression == STRING
    input.Body.redirectControlIds[_] == STRING
    input.Body.replacementControlIds[_] == STRING
    input.Body.solutionType == enum_GoogleCloudDiscoveryengineV1betaServingConfigSolutionType[_]
    input.Body.synonymsControlIds[_] == STRING
    input.ReqMap.name == STRING
    input.Qs.updateMask == STRING
    input.ProviderMetadata.Region == STRING
}

discoveryengine.projects.locations.collections.engines.servingConfigs.recommend

valid {
    input.Body.filter == STRING
    input.Body.pageSize == INTEGER
    input.Body.params.STRING == ANY
    input.Body.userEvent.attributes.STRING.numbers[_] == NUMBER
    input.Body.userEvent.attributes.STRING.text[_] == STRING
    input.Body.userEvent.attributionToken == STRING
    input.Body.userEvent.completionInfo.selectedPosition == INTEGER
    input.Body.userEvent.completionInfo.selectedSuggestion == STRING
    input.Body.userEvent.directUserRequest == BOOLEAN
    input.Body.userEvent.documents[_].id == STRING
    input.Body.userEvent.documents[_].name == STRING
    input.Body.userEvent.documents[_].promotionIds[_] == STRING
    input.Body.userEvent.documents[_].quantity == INTEGER
    input.Body.userEvent.documents[_].uri == STRING
    input.Body.userEvent.eventTime == STRING
    input.Body.userEvent.eventType == STRING
    input.Body.userEvent.filter == STRING
    input.Body.userEvent.mediaInfo.mediaProgressDuration == STRING
    input.Body.userEvent.mediaInfo.mediaProgressPercentage == NUMBER
    input.Body.userEvent.pageInfo.pageCategory == STRING
    input.Body.userEvent.pageInfo.pageviewId == STRING
    input.Body.userEvent.pageInfo.referrerUri == STRING
    input.Body.userEvent.pageInfo.uri == STRING
    input.Body.userEvent.panel.displayName == STRING
    input.Body.userEvent.panel.panelId == STRING
    input.Body.userEvent.panel.panelPosition == INTEGER
    input.Body.userEvent.panel.totalPanels == INTEGER
    input.Body.userEvent.promotionIds[_] == STRING
    input.Body.userEvent.searchInfo.offset == INTEGER
    input.Body.userEvent.searchInfo.orderBy == STRING
    input.Body.userEvent.searchInfo.searchQuery == STRING
    input.Body.userEvent.sessionId == STRING
    input.Body.userEvent.tagIds[_] == STRING
    input.Body.userEvent.transactionInfo.cost == NUMBER
    input.Body.userEvent.transactionInfo.currency == STRING
    input.Body.userEvent.transactionInfo.discountValue == NUMBER
    input.Body.userEvent.transactionInfo.tax == NUMBER
    input.Body.userEvent.transactionInfo.transactionId == STRING
    input.Body.userEvent.transactionInfo.value == NUMBER
    input.Body.userEvent.userInfo.userAgent == STRING
    input.Body.userEvent.userInfo.userId == STRING
    input.Body.userEvent.userPseudoId == STRING
    input.Body.userLabels.STRING == STRING
    input.Body.validateOnly == BOOLEAN
    input.ReqMap.servingConfig == STRING
    input.ProviderMetadata.Region == STRING
}

discoveryengine.projects.locations.collections.engines.servingConfigs.search

enum_GoogleCloudDiscoveryengineV1betaSearchRequestQueryExpansionSpecCondition := [ "CONDITION_UNSPECIFIED", "DISABLED", "AUTO" ]
enum_GoogleCloudDiscoveryengineV1betaSearchRequestSpellCorrectionSpecMode := [ "MODE_UNSPECIFIED", "SUGGESTION_ONLY", "AUTO" ]

valid {
    input.Body.boostSpec.conditionBoostSpecs[_].boost == NUMBER
    input.Body.boostSpec.conditionBoostSpecs[_].condition == STRING
    input.Body.branch == STRING
    input.Body.canonicalFilter == STRING
    input.Body.contentSearchSpec.extractiveContentSpec.maxExtractiveAnswerCount == INTEGER
    input.Body.contentSearchSpec.extractiveContentSpec.maxExtractiveSegmentCount == INTEGER
    input.Body.contentSearchSpec.extractiveContentSpec.numNextSegments == INTEGER
    input.Body.contentSearchSpec.extractiveContentSpec.numPreviousSegments == INTEGER
    input.Body.contentSearchSpec.snippetSpec.maxSnippetCount == INTEGER
    input.Body.contentSearchSpec.snippetSpec.referenceOnly == BOOLEAN
    input.Body.contentSearchSpec.snippetSpec.returnSnippet == BOOLEAN
    input.Body.contentSearchSpec.summarySpec.ignoreAdversarialQuery == BOOLEAN
    input.Body.contentSearchSpec.summarySpec.ignoreNonSummarySeekingQuery == BOOLEAN
    input.Body.contentSearchSpec.summarySpec.includeCitations == BOOLEAN
    input.Body.contentSearchSpec.summarySpec.languageCode == STRING
    input.Body.contentSearchSpec.summarySpec.modelPromptSpec.preamble == STRING
    input.Body.contentSearchSpec.summarySpec.modelSpec.version == STRING
    input.Body.contentSearchSpec.summarySpec.summaryResultCount == INTEGER
    input.Body.embeddingSpec.embeddingVectors[_].fieldPath == STRING
    input.Body.embeddingSpec.embeddingVectors[_].vector[_] == NUMBER
    input.Body.facetSpecs[_].enableDynamicPosition == BOOLEAN
    input.Body.facetSpecs[_].excludedFilterKeys[_] == STRING
    input.Body.facetSpecs[_].facetKey.caseInsensitive == BOOLEAN
    input.Body.facetSpecs[_].facetKey.contains[_] == STRING
    input.Body.facetSpecs[_].facetKey.intervals[_].exclusiveMaximum == NUMBER
    input.Body.facetSpecs[_].facetKey.intervals[_].exclusiveMinimum == NUMBER
    input.Body.facetSpecs[_].facetKey.intervals[_].maximum == NUMBER
    input.Body.facetSpecs[_].facetKey.intervals[_].minimum == NUMBER
    input.Body.facetSpecs[_].facetKey.key == STRING
    input.Body.facetSpecs[_].facetKey.orderBy == STRING
    input.Body.facetSpecs[_].facetKey.prefixes[_] == STRING
    input.Body.facetSpecs[_].facetKey.restrictedValues[_] == STRING
    input.Body.facetSpecs[_].limit == INTEGER
    input.Body.filter == STRING
    input.Body.imageQuery.imageBytes == STRING
    input.Body.offset == INTEGER
    input.Body.orderBy == STRING
    input.Body.pageSize == INTEGER
    input.Body.pageToken == STRING
    input.Body.params.STRING == ANY
    input.Body.query == STRING
    input.Body.queryExpansionSpec.condition == enum_GoogleCloudDiscoveryengineV1betaSearchRequestQueryExpansionSpecCondition[_]
    input.Body.queryExpansionSpec.pinUnexpandedResults == BOOLEAN
    input.Body.rankingExpression == STRING
    input.Body.safeSearch == BOOLEAN
    input.Body.spellCorrectionSpec.mode == enum_GoogleCloudDiscoveryengineV1betaSearchRequestSpellCorrectionSpecMode[_]
    input.Body.userInfo.userAgent == STRING
    input.Body.userInfo.userId == STRING
    input.Body.userLabels.STRING == STRING
    input.Body.userPseudoId == STRING
    input.ReqMap.servingConfig == STRING
    input.ProviderMetadata.Region == STRING
}

discoveryengine.projects.locations.collections.engines.tune

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

discoveryengine.projects.locations.collections.operations.get

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

discoveryengine.projects.locations.collections.operations.list

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

discoveryengine.projects.locations.dataStores.branches.documents.create

valid {
    input.Body.content.mimeType == STRING
    input.Body.content.rawBytes == STRING
    input.Body.content.uri == STRING
    input.Body.id == STRING
    input.Body.jsonData == STRING
    input.Body.name == STRING
    input.Body.parentDocumentId == STRING
    input.Body.schemaId == STRING
    input.Body.structData.STRING == ANY
    input.ReqMap.parent == STRING
    input.Qs.documentId == STRING
    input.ProviderMetadata.Region == STRING
}

discoveryengine.projects.locations.dataStores.branches.documents.delete

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

discoveryengine.projects.locations.dataStores.branches.documents.get

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

discoveryengine.projects.locations.dataStores.branches.documents.import

enum_GoogleCloudDiscoveryengineV1betaImportDocumentsRequestReconciliationMode := [ "RECONCILIATION_MODE_UNSPECIFIED", "INCREMENTAL", "FULL" ]

valid {
    input.Body.autoGenerateIds == BOOLEAN
    input.Body.bigquerySource.dataSchema == STRING
    input.Body.bigquerySource.datasetId == STRING
    input.Body.bigquerySource.gcsStagingDir == STRING
    input.Body.bigquerySource.partitionDate.day == INTEGER
    input.Body.bigquerySource.partitionDate.month == INTEGER
    input.Body.bigquerySource.partitionDate.year == INTEGER
    input.Body.bigquerySource.projectId == STRING
    input.Body.bigquerySource.tableId == STRING
    input.Body.errorConfig.gcsPrefix == STRING
    input.Body.gcsSource.dataSchema == STRING
    input.Body.gcsSource.inputUris[_] == STRING
    input.Body.idField == STRING
    input.Body.inlineSource.documents[_].content.mimeType == STRING
    input.Body.inlineSource.documents[_].content.rawBytes == STRING
    input.Body.inlineSource.documents[_].content.uri == STRING
    input.Body.inlineSource.documents[_].id == STRING
    input.Body.inlineSource.documents[_].jsonData == STRING
    input.Body.inlineSource.documents[_].name == STRING
    input.Body.inlineSource.documents[_].parentDocumentId == STRING
    input.Body.inlineSource.documents[_].schemaId == STRING
    input.Body.inlineSource.documents[_].structData.STRING == ANY
    input.Body.reconciliationMode == enum_GoogleCloudDiscoveryengineV1betaImportDocumentsRequestReconciliationMode[_]
    input.ReqMap.parent == STRING
    input.ProviderMetadata.Region == STRING
}

discoveryengine.projects.locations.dataStores.branches.documents.list

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

discoveryengine.projects.locations.dataStores.branches.documents.patch

valid {
    input.Body.content.mimeType == STRING
    input.Body.content.rawBytes == STRING
    input.Body.content.uri == STRING
    input.Body.id == STRING
    input.Body.jsonData == STRING
    input.Body.name == STRING
    input.Body.parentDocumentId == STRING
    input.Body.schemaId == STRING
    input.Body.structData.STRING == ANY
    input.ReqMap.name == STRING
    input.Qs.allowMissing == BOOLEAN
    input.ProviderMetadata.Region == STRING
}

discoveryengine.projects.locations.dataStores.branches.documents.purge

valid {
    input.Body.filter == STRING
    input.Body.force == BOOLEAN
    input.ReqMap.parent == STRING
    input.ProviderMetadata.Region == STRING
}

discoveryengine.projects.locations.dataStores.branches.operations.get

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

discoveryengine.projects.locations.dataStores.branches.operations.list

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

discoveryengine.projects.locations.dataStores.completeQuery

valid {
    input.ReqMap.dataStore == STRING
    input.Qs.includeTailSuggestions == BOOLEAN
    input.Qs.query == STRING
    input.Qs.queryModel == STRING
    input.Qs.userPseudoId == STRING
    input.ProviderMetadata.Region == STRING
}

discoveryengine.projects.locations.dataStores.conversations.converse

enum_GoogleCloudDiscoveryengineV1betaConversationState := [ "STATE_UNSPECIFIED", "IN_PROGRESS", "COMPLETED" ]
enum_GoogleCloudDiscoveryengineV1betaSearchResponseSummarySummarySkippedReasons := [ "SUMMARY_SKIPPED_REASON_UNSPECIFIED", "ADVERSARIAL_QUERY_IGNORED", "NON_SUMMARY_SEEKING_QUERY_IGNORED", "OUT_OF_DOMAIN_QUERY_IGNORED", "POTENTIAL_POLICY_VIOLATION", "LLM_ADDON_NOT_ENABLED" ]

valid {
    input.Body.conversation.messages[_].reply.references[_].anchorText == STRING
    input.Body.conversation.messages[_].reply.references[_].end == INTEGER
    input.Body.conversation.messages[_].reply.references[_].start == INTEGER
    input.Body.conversation.messages[_].reply.references[_].uri == STRING
    input.Body.conversation.messages[_].reply.reply == STRING
    input.Body.conversation.messages[_].reply.summary.safetyAttributes.categories[_] == STRING
    input.Body.conversation.messages[_].reply.summary.safetyAttributes.scores[_] == NUMBER
    input.Body.conversation.messages[_].reply.summary.summarySkippedReasons[_] == enum_GoogleCloudDiscoveryengineV1betaSearchResponseSummarySummarySkippedReasons[_]
    input.Body.conversation.messages[_].reply.summary.summaryText == STRING
    input.Body.conversation.messages[_].reply.summary.summaryWithMetadata.citationMetadata.citations[_].endIndex == STRING
    input.Body.conversation.messages[_].reply.summary.summaryWithMetadata.citationMetadata.citations[_].sources[_].referenceIndex == STRING
    input.Body.conversation.messages[_].reply.summary.summaryWithMetadata.citationMetadata.citations[_].startIndex == STRING
    input.Body.conversation.messages[_].reply.summary.summaryWithMetadata.references[_].document == STRING
    input.Body.conversation.messages[_].reply.summary.summaryWithMetadata.references[_].title == STRING
    input.Body.conversation.messages[_].reply.summary.summaryWithMetadata.references[_].uri == STRING
    input.Body.conversation.messages[_].reply.summary.summaryWithMetadata.summary == STRING
    input.Body.conversation.messages[_].userInput.context.activeDocument == STRING
    input.Body.conversation.messages[_].userInput.context.contextDocuments[_] == STRING
    input.Body.conversation.messages[_].userInput.input == STRING
    input.Body.conversation.name == STRING
    input.Body.conversation.state == enum_GoogleCloudDiscoveryengineV1betaConversationState[_]
    input.Body.conversation.userPseudoId == STRING
    input.Body.filter == STRING
    input.Body.query.context.activeDocument == STRING
    input.Body.query.context.contextDocuments[_] == STRING
    input.Body.query.input == STRING
    input.Body.safeSearch == BOOLEAN
    input.Body.servingConfig == STRING
    input.Body.summarySpec.ignoreAdversarialQuery == BOOLEAN
    input.Body.summarySpec.ignoreNonSummarySeekingQuery == BOOLEAN
    input.Body.summarySpec.includeCitations == BOOLEAN
    input.Body.summarySpec.languageCode == STRING
    input.Body.summarySpec.modelPromptSpec.preamble == STRING
    input.Body.summarySpec.modelSpec.version == STRING
    input.Body.summarySpec.summaryResultCount == INTEGER
    input.Body.userLabels.STRING == STRING
    input.ReqMap.name == STRING
    input.ProviderMetadata.Region == STRING
}

discoveryengine.projects.locations.dataStores.conversations.create

enum_GoogleCloudDiscoveryengineV1betaConversationState := [ "STATE_UNSPECIFIED", "IN_PROGRESS", "COMPLETED" ]
enum_GoogleCloudDiscoveryengineV1betaSearchResponseSummarySummarySkippedReasons := [ "SUMMARY_SKIPPED_REASON_UNSPECIFIED", "ADVERSARIAL_QUERY_IGNORED", "NON_SUMMARY_SEEKING_QUERY_IGNORED", "OUT_OF_DOMAIN_QUERY_IGNORED", "POTENTIAL_POLICY_VIOLATION", "LLM_ADDON_NOT_ENABLED" ]

valid {
    input.Body.messages[_].reply.references[_].anchorText == STRING
    input.Body.messages[_].reply.references[_].end == INTEGER
    input.Body.messages[_].reply.references[_].start == INTEGER
    input.Body.messages[_].reply.references[_].uri == STRING
    input.Body.messages[_].reply.reply == STRING
    input.Body.messages[_].reply.summary.safetyAttributes.categories[_] == STRING
    input.Body.messages[_].reply.summary.safetyAttributes.scores[_] == NUMBER
    input.Body.messages[_].reply.summary.summarySkippedReasons[_] == enum_GoogleCloudDiscoveryengineV1betaSearchResponseSummarySummarySkippedReasons[_]
    input.Body.messages[_].reply.summary.summaryText == STRING
    input.Body.messages[_].reply.summary.summaryWithMetadata.citationMetadata.citations[_].endIndex == STRING
    input.Body.messages[_].reply.summary.summaryWithMetadata.citationMetadata.citations[_].sources[_].referenceIndex == STRING
    input.Body.messages[_].reply.summary.summaryWithMetadata.citationMetadata.citations[_].startIndex == STRING
    input.Body.messages[_].reply.summary.summaryWithMetadata.references[_].document == STRING
    input.Body.messages[_].reply.summary.summaryWithMetadata.references[_].title == STRING
    input.Body.messages[_].reply.summary.summaryWithMetadata.references[_].uri == STRING
    input.Body.messages[_].reply.summary.summaryWithMetadata.summary == STRING
    input.Body.messages[_].userInput.context.activeDocument == STRING
    input.Body.messages[_].userInput.context.contextDocuments[_] == STRING
    input.Body.messages[_].userInput.input == STRING
    input.Body.name == STRING
    input.Body.state == enum_GoogleCloudDiscoveryengineV1betaConversationState[_]
    input.Body.userPseudoId == STRING
    input.ReqMap.parent == STRING
    input.ProviderMetadata.Region == STRING
}

discoveryengine.projects.locations.dataStores.conversations.delete

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

discoveryengine.projects.locations.dataStores.conversations.get

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

discoveryengine.projects.locations.dataStores.conversations.list

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

discoveryengine.projects.locations.dataStores.conversations.patch

enum_GoogleCloudDiscoveryengineV1betaConversationState := [ "STATE_UNSPECIFIED", "IN_PROGRESS", "COMPLETED" ]
enum_GoogleCloudDiscoveryengineV1betaSearchResponseSummarySummarySkippedReasons := [ "SUMMARY_SKIPPED_REASON_UNSPECIFIED", "ADVERSARIAL_QUERY_IGNORED", "NON_SUMMARY_SEEKING_QUERY_IGNORED", "OUT_OF_DOMAIN_QUERY_IGNORED", "POTENTIAL_POLICY_VIOLATION", "LLM_ADDON_NOT_ENABLED" ]

valid {
    input.Body.messages[_].reply.references[_].anchorText == STRING
    input.Body.messages[_].reply.references[_].end == INTEGER
    input.Body.messages[_].reply.references[_].start == INTEGER
    input.Body.messages[_].reply.references[_].uri == STRING
    input.Body.messages[_].reply.reply == STRING
    input.Body.messages[_].reply.summary.safetyAttributes.categories[_] == STRING
    input.Body.messages[_].reply.summary.safetyAttributes.scores[_] == NUMBER
    input.Body.messages[_].reply.summary.summarySkippedReasons[_] == enum_GoogleCloudDiscoveryengineV1betaSearchResponseSummarySummarySkippedReasons[_]
    input.Body.messages[_].reply.summary.summaryText == STRING
    input.Body.messages[_].reply.summary.summaryWithMetadata.citationMetadata.citations[_].endIndex == STRING
    input.Body.messages[_].reply.summary.summaryWithMetadata.citationMetadata.citations[_].sources[_].referenceIndex == STRING
    input.Body.messages[_].reply.summary.summaryWithMetadata.citationMetadata.citations[_].startIndex == STRING
    input.Body.messages[_].reply.summary.summaryWithMetadata.references[_].document == STRING
    input.Body.messages[_].reply.summary.summaryWithMetadata.references[_].title == STRING
    input.Body.messages[_].reply.summary.summaryWithMetadata.references[_].uri == STRING
    input.Body.messages[_].reply.summary.summaryWithMetadata.summary == STRING
    input.Body.messages[_].userInput.context.activeDocument == STRING
    input.Body.messages[_].userInput.context.contextDocuments[_] == STRING
    input.Body.messages[_].userInput.input == STRING
    input.Body.name == STRING
    input.Body.state == enum_GoogleCloudDiscoveryengineV1betaConversationState[_]
    input.Body.userPseudoId == STRING
    input.ReqMap.name == STRING
    input.Qs.updateMask == STRING
    input.ProviderMetadata.Region == STRING
}

discoveryengine.projects.locations.dataStores.create

enum_GoogleCloudDiscoveryengineV1betaDataStoreContentConfig := [ "CONTENT_CONFIG_UNSPECIFIED", "NO_CONTENT", "CONTENT_REQUIRED", "PUBLIC_WEBSITE" ]
enum_GoogleCloudDiscoveryengineV1betaDataStoreIndustryVertical := [ "INDUSTRY_VERTICAL_UNSPECIFIED", "GENERIC", "MEDIA" ]
enum_GoogleCloudDiscoveryengineV1betaDataStoreSolutionTypes := [ "SOLUTION_TYPE_UNSPECIFIED", "SOLUTION_TYPE_RECOMMENDATION", "SOLUTION_TYPE_SEARCH", "SOLUTION_TYPE_CHAT" ]

valid {
    input.Body.contentConfig == enum_GoogleCloudDiscoveryengineV1betaDataStoreContentConfig[_]
    input.Body.displayName == STRING
    input.Body.industryVertical == enum_GoogleCloudDiscoveryengineV1betaDataStoreIndustryVertical[_]
    input.Body.name == STRING
    input.Body.solutionTypes[_] == enum_GoogleCloudDiscoveryengineV1betaDataStoreSolutionTypes[_]
    input.ReqMap.parent == STRING
    input.Qs.createAdvancedSiteSearch == BOOLEAN
    input.Qs.dataStoreId == STRING
    input.ProviderMetadata.Region == STRING
}

discoveryengine.projects.locations.dataStores.delete

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

discoveryengine.projects.locations.dataStores.get

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

discoveryengine.projects.locations.dataStores.getDocumentProcessingConfig

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

discoveryengine.projects.locations.dataStores.getSiteSearchEngine

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

discoveryengine.projects.locations.dataStores.list

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

discoveryengine.projects.locations.dataStores.models.operations.get

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

discoveryengine.projects.locations.dataStores.models.operations.list

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

discoveryengine.projects.locations.dataStores.operations.get

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

discoveryengine.projects.locations.dataStores.operations.list

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

discoveryengine.projects.locations.dataStores.patch

enum_GoogleCloudDiscoveryengineV1betaDataStoreContentConfig := [ "CONTENT_CONFIG_UNSPECIFIED", "NO_CONTENT", "CONTENT_REQUIRED", "PUBLIC_WEBSITE" ]
enum_GoogleCloudDiscoveryengineV1betaDataStoreIndustryVertical := [ "INDUSTRY_VERTICAL_UNSPECIFIED", "GENERIC", "MEDIA" ]
enum_GoogleCloudDiscoveryengineV1betaDataStoreSolutionTypes := [ "SOLUTION_TYPE_UNSPECIFIED", "SOLUTION_TYPE_RECOMMENDATION", "SOLUTION_TYPE_SEARCH", "SOLUTION_TYPE_CHAT" ]

valid {
    input.Body.contentConfig == enum_GoogleCloudDiscoveryengineV1betaDataStoreContentConfig[_]
    input.Body.displayName == STRING
    input.Body.industryVertical == enum_GoogleCloudDiscoveryengineV1betaDataStoreIndustryVertical[_]
    input.Body.name == STRING
    input.Body.solutionTypes[_] == enum_GoogleCloudDiscoveryengineV1betaDataStoreSolutionTypes[_]
    input.ReqMap.name == STRING
    input.Qs.updateMask == STRING
    input.ProviderMetadata.Region == STRING
}

discoveryengine.projects.locations.dataStores.schemas.create

valid {
    input.Body.jsonSchema == STRING
    input.Body.name == STRING
    input.Body.structSchema.STRING == ANY
    input.ReqMap.parent == STRING
    input.Qs.schemaId == STRING
    input.ProviderMetadata.Region == STRING
}

discoveryengine.projects.locations.dataStores.schemas.delete

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

discoveryengine.projects.locations.dataStores.schemas.get

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

discoveryengine.projects.locations.dataStores.schemas.list

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

discoveryengine.projects.locations.dataStores.schemas.patch

valid {
    input.Body.jsonSchema == STRING
    input.Body.name == STRING
    input.Body.structSchema.STRING == ANY
    input.ReqMap.name == STRING
    input.Qs.allowMissing == BOOLEAN
    input.ProviderMetadata.Region == STRING
}

discoveryengine.projects.locations.dataStores.servingConfigs.get

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

discoveryengine.projects.locations.dataStores.servingConfigs.list

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

discoveryengine.projects.locations.dataStores.servingConfigs.patch

enum_GoogleCloudDiscoveryengineV1betaServingConfigSolutionType := [ "SOLUTION_TYPE_UNSPECIFIED", "SOLUTION_TYPE_RECOMMENDATION", "SOLUTION_TYPE_SEARCH", "SOLUTION_TYPE_CHAT" ]

valid {
    input.Body.boostControlIds[_] == STRING
    input.Body.displayName == STRING
    input.Body.dissociateControlIds[_] == STRING
    input.Body.diversityLevel == STRING
    input.Body.embeddingConfig.fieldPath == STRING
    input.Body.filterControlIds[_] == STRING
    input.Body.genericConfig.contentSearchSpec.extractiveContentSpec.maxExtractiveAnswerCount == INTEGER
    input.Body.genericConfig.contentSearchSpec.extractiveContentSpec.maxExtractiveSegmentCount == INTEGER
    input.Body.genericConfig.contentSearchSpec.extractiveContentSpec.numNextSegments == INTEGER
    input.Body.genericConfig.contentSearchSpec.extractiveContentSpec.numPreviousSegments == INTEGER
    input.Body.genericConfig.contentSearchSpec.snippetSpec.maxSnippetCount == INTEGER
    input.Body.genericConfig.contentSearchSpec.snippetSpec.referenceOnly == BOOLEAN
    input.Body.genericConfig.contentSearchSpec.snippetSpec.returnSnippet == BOOLEAN
    input.Body.genericConfig.contentSearchSpec.summarySpec.ignoreAdversarialQuery == BOOLEAN
    input.Body.genericConfig.contentSearchSpec.summarySpec.ignoreNonSummarySeekingQuery == BOOLEAN
    input.Body.genericConfig.contentSearchSpec.summarySpec.includeCitations == BOOLEAN
    input.Body.genericConfig.contentSearchSpec.summarySpec.languageCode == STRING
    input.Body.genericConfig.contentSearchSpec.summarySpec.modelPromptSpec.preamble == STRING
    input.Body.genericConfig.contentSearchSpec.summarySpec.modelSpec.version == STRING
    input.Body.genericConfig.contentSearchSpec.summarySpec.summaryResultCount == INTEGER
    input.Body.ignoreControlIds[_] == STRING
    input.Body.mediaConfig.contentFreshnessCutoffDays == INTEGER
    input.Body.mediaConfig.contentWatchedMinutesThreshold == NUMBER
    input.Body.mediaConfig.contentWatchedPercentageThreshold == NUMBER
    input.Body.mediaConfig.contentWatchedSecondsThreshold == NUMBER
    input.Body.mediaConfig.demotionEventType == STRING
    input.Body.modelId == STRING
    input.Body.name == STRING
    input.Body.onewaySynonymsControlIds[_] == STRING
    input.Body.rankingExpression == STRING
    input.Body.redirectControlIds[_] == STRING
    input.Body.replacementControlIds[_] == STRING
    input.Body.solutionType == enum_GoogleCloudDiscoveryengineV1betaServingConfigSolutionType[_]
    input.Body.synonymsControlIds[_] == STRING
    input.ReqMap.name == STRING
    input.Qs.updateMask == STRING
    input.ProviderMetadata.Region == STRING
}

discoveryengine.projects.locations.dataStores.servingConfigs.recommend

valid {
    input.Body.filter == STRING
    input.Body.pageSize == INTEGER
    input.Body.params.STRING == ANY
    input.Body.userEvent.attributes.STRING.numbers[_] == NUMBER
    input.Body.userEvent.attributes.STRING.text[_] == STRING
    input.Body.userEvent.attributionToken == STRING
    input.Body.userEvent.completionInfo.selectedPosition == INTEGER
    input.Body.userEvent.completionInfo.selectedSuggestion == STRING
    input.Body.userEvent.directUserRequest == BOOLEAN
    input.Body.userEvent.documents[_].id == STRING
    input.Body.userEvent.documents[_].name == STRING
    input.Body.userEvent.documents[_].promotionIds[_] == STRING
    input.Body.userEvent.documents[_].quantity == INTEGER
    input.Body.userEvent.documents[_].uri == STRING
    input.Body.userEvent.eventTime == STRING
    input.Body.userEvent.eventType == STRING
    input.Body.userEvent.filter == STRING
    input.Body.userEvent.mediaInfo.mediaProgressDuration == STRING
    input.Body.userEvent.mediaInfo.mediaProgressPercentage == NUMBER
    input.Body.userEvent.pageInfo.pageCategory == STRING
    input.Body.userEvent.pageInfo.pageviewId == STRING
    input.Body.userEvent.pageInfo.referrerUri == STRING
    input.Body.userEvent.pageInfo.uri == STRING
    input.Body.userEvent.panel.displayName == STRING
    input.Body.userEvent.panel.panelId == STRING
    input.Body.userEvent.panel.panelPosition == INTEGER
    input.Body.userEvent.panel.totalPanels == INTEGER
    input.Body.userEvent.promotionIds[_] == STRING
    input.Body.userEvent.searchInfo.offset == INTEGER
    input.Body.userEvent.searchInfo.orderBy == STRING
    input.Body.userEvent.searchInfo.searchQuery == STRING
    input.Body.userEvent.sessionId == STRING
    input.Body.userEvent.tagIds[_] == STRING
    input.Body.userEvent.transactionInfo.cost == NUMBER
    input.Body.userEvent.transactionInfo.currency == STRING
    input.Body.userEvent.transactionInfo.discountValue == NUMBER
    input.Body.userEvent.transactionInfo.tax == NUMBER
    input.Body.userEvent.transactionInfo.transactionId == STRING
    input.Body.userEvent.transactionInfo.value == NUMBER
    input.Body.userEvent.userInfo.userAgent == STRING
    input.Body.userEvent.userInfo.userId == STRING
    input.Body.userEvent.userPseudoId == STRING
    input.Body.userLabels.STRING == STRING
    input.Body.validateOnly == BOOLEAN
    input.ReqMap.servingConfig == STRING
    input.ProviderMetadata.Region == STRING
}

discoveryengine.projects.locations.dataStores.servingConfigs.search

enum_GoogleCloudDiscoveryengineV1betaSearchRequestQueryExpansionSpecCondition := [ "CONDITION_UNSPECIFIED", "DISABLED", "AUTO" ]
enum_GoogleCloudDiscoveryengineV1betaSearchRequestSpellCorrectionSpecMode := [ "MODE_UNSPECIFIED", "SUGGESTION_ONLY", "AUTO" ]

valid {
    input.Body.boostSpec.conditionBoostSpecs[_].boost == NUMBER
    input.Body.boostSpec.conditionBoostSpecs[_].condition == STRING
    input.Body.branch == STRING
    input.Body.canonicalFilter == STRING
    input.Body.contentSearchSpec.extractiveContentSpec.maxExtractiveAnswerCount == INTEGER
    input.Body.contentSearchSpec.extractiveContentSpec.maxExtractiveSegmentCount == INTEGER
    input.Body.contentSearchSpec.extractiveContentSpec.numNextSegments == INTEGER
    input.Body.contentSearchSpec.extractiveContentSpec.numPreviousSegments == INTEGER
    input.Body.contentSearchSpec.snippetSpec.maxSnippetCount == INTEGER
    input.Body.contentSearchSpec.snippetSpec.referenceOnly == BOOLEAN
    input.Body.contentSearchSpec.snippetSpec.returnSnippet == BOOLEAN
    input.Body.contentSearchSpec.summarySpec.ignoreAdversarialQuery == BOOLEAN
    input.Body.contentSearchSpec.summarySpec.ignoreNonSummarySeekingQuery == BOOLEAN
    input.Body.contentSearchSpec.summarySpec.includeCitations == BOOLEAN
    input.Body.contentSearchSpec.summarySpec.languageCode == STRING
    input.Body.contentSearchSpec.summarySpec.modelPromptSpec.preamble == STRING
    input.Body.contentSearchSpec.summarySpec.modelSpec.version == STRING
    input.Body.contentSearchSpec.summarySpec.summaryResultCount == INTEGER
    input.Body.embeddingSpec.embeddingVectors[_].fieldPath == STRING
    input.Body.embeddingSpec.embeddingVectors[_].vector[_] == NUMBER
    input.Body.facetSpecs[_].enableDynamicPosition == BOOLEAN
    input.Body.facetSpecs[_].excludedFilterKeys[_] == STRING
    input.Body.facetSpecs[_].facetKey.caseInsensitive == BOOLEAN
    input.Body.facetSpecs[_].facetKey.contains[_] == STRING
    input.Body.facetSpecs[_].facetKey.intervals[_].exclusiveMaximum == NUMBER
    input.Body.facetSpecs[_].facetKey.intervals[_].exclusiveMinimum == NUMBER
    input.Body.facetSpecs[_].facetKey.intervals[_].maximum == NUMBER
    input.Body.facetSpecs[_].facetKey.intervals[_].minimum == NUMBER
    input.Body.facetSpecs[_].facetKey.key == STRING
    input.Body.facetSpecs[_].facetKey.orderBy == STRING
    input.Body.facetSpecs[_].facetKey.prefixes[_] == STRING
    input.Body.facetSpecs[_].facetKey.restrictedValues[_] == STRING
    input.Body.facetSpecs[_].limit == INTEGER
    input.Body.filter == STRING
    input.Body.imageQuery.imageBytes == STRING
    input.Body.offset == INTEGER
    input.Body.orderBy == STRING
    input.Body.pageSize == INTEGER
    input.Body.pageToken == STRING
    input.Body.params.STRING == ANY
    input.Body.query == STRING
    input.Body.queryExpansionSpec.condition == enum_GoogleCloudDiscoveryengineV1betaSearchRequestQueryExpansionSpecCondition[_]
    input.Body.queryExpansionSpec.pinUnexpandedResults == BOOLEAN
    input.Body.rankingExpression == STRING
    input.Body.safeSearch == BOOLEAN
    input.Body.spellCorrectionSpec.mode == enum_GoogleCloudDiscoveryengineV1betaSearchRequestSpellCorrectionSpecMode[_]
    input.Body.userInfo.userAgent == STRING
    input.Body.userInfo.userId == STRING
    input.Body.userLabels.STRING == STRING
    input.Body.userPseudoId == STRING
    input.ReqMap.servingConfig == STRING
    input.ProviderMetadata.Region == STRING
}

discoveryengine.projects.locations.dataStores.siteSearchEngine.disableAdvancedSiteSearch

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

discoveryengine.projects.locations.dataStores.siteSearchEngine.enableAdvancedSiteSearch

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

discoveryengine.projects.locations.dataStores.siteSearchEngine.recrawlUris

valid {
    input.Body.uris[_] == STRING
    input.ReqMap.siteSearchEngine == STRING
    input.ProviderMetadata.Region == STRING
}

discoveryengine.projects.locations.dataStores.siteSearchEngine.targetSites.batchCreate

enum_GoogleCloudDiscoveryengineV1betaTargetSiteType := [ "TYPE_UNSPECIFIED", "INCLUDE", "EXCLUDE" ]

valid {
    input.Body.requests[_].parent == STRING
    input.Body.requests[_].targetSite.exactMatch == BOOLEAN
    input.Body.requests[_].targetSite.providedUriPattern == STRING
    input.Body.requests[_].targetSite.type == enum_GoogleCloudDiscoveryengineV1betaTargetSiteType[_]
    input.ReqMap.parent == STRING
    input.ProviderMetadata.Region == STRING
}

discoveryengine.projects.locations.dataStores.siteSearchEngine.targetSites.create

enum_GoogleCloudDiscoveryengineV1betaTargetSiteType := [ "TYPE_UNSPECIFIED", "INCLUDE", "EXCLUDE" ]

valid {
    input.Body.exactMatch == BOOLEAN
    input.Body.providedUriPattern == STRING
    input.Body.type == enum_GoogleCloudDiscoveryengineV1betaTargetSiteType[_]
    input.ReqMap.parent == STRING
    input.ProviderMetadata.Region == STRING
}

discoveryengine.projects.locations.dataStores.siteSearchEngine.targetSites.delete

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

discoveryengine.projects.locations.dataStores.siteSearchEngine.targetSites.get

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

discoveryengine.projects.locations.dataStores.siteSearchEngine.targetSites.list

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

discoveryengine.projects.locations.dataStores.siteSearchEngine.targetSites.patch

enum_GoogleCloudDiscoveryengineV1betaTargetSiteType := [ "TYPE_UNSPECIFIED", "INCLUDE", "EXCLUDE" ]

valid {
    input.Body.exactMatch == BOOLEAN
    input.Body.providedUriPattern == STRING
    input.Body.type == enum_GoogleCloudDiscoveryengineV1betaTargetSiteType[_]
    input.ReqMap.name == STRING
    input.ProviderMetadata.Region == STRING
}

discoveryengine.projects.locations.dataStores.suggestionDenyListEntries.import

enum_GoogleCloudDiscoveryengineV1betaSuggestionDenyListEntryMatchOperator := [ "MATCH_OPERATOR_UNSPECIFIED", "EXACT_MATCH", "CONTAINS" ]

valid {
    input.Body.gcsSource.dataSchema == STRING
    input.Body.gcsSource.inputUris[_] == STRING
    input.Body.inlineSource.entries[_].blockPhrase == STRING
    input.Body.inlineSource.entries[_].matchOperator == enum_GoogleCloudDiscoveryengineV1betaSuggestionDenyListEntryMatchOperator[_]
    input.ReqMap.parent == STRING
    input.ProviderMetadata.Region == STRING
}

discoveryengine.projects.locations.dataStores.suggestionDenyListEntries.purge

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

discoveryengine.projects.locations.dataStores.updateDocumentProcessingConfig

valid {
    input.Body.defaultParsingConfig.digitalParsingConfig.STRING == STRING
    input.Body.defaultParsingConfig.layoutParsingConfig.STRING == STRING
    input.Body.defaultParsingConfig.ocrParsingConfig.enhancedDocumentElements[_] == STRING
    input.Body.defaultParsingConfig.ocrParsingConfig.useNativeText == BOOLEAN
    input.Body.name == STRING
    input.Body.ocrConfig.enabled == BOOLEAN
    input.Body.ocrConfig.enhancedDocumentElements[_] == STRING
    input.Body.ocrConfig.useNativeText == BOOLEAN
    input.Body.parsingConfigOverrides.STRING.digitalParsingConfig.STRING == STRING
    input.Body.parsingConfigOverrides.STRING.layoutParsingConfig.STRING == STRING
    input.Body.parsingConfigOverrides.STRING.ocrParsingConfig.enhancedDocumentElements[_] == STRING
    input.Body.parsingConfigOverrides.STRING.ocrParsingConfig.useNativeText == BOOLEAN
    input.ReqMap.name == STRING
    input.Qs.updateMask == STRING
    input.ProviderMetadata.Region == STRING
}

discoveryengine.projects.locations.dataStores.userEvents.collect

valid {
    input.ReqMap.parent == STRING
    input.Qs.ets == STRING
    input.Qs.uri == STRING
    input.Qs.userEvent == STRING
    input.ProviderMetadata.Region == STRING
}

discoveryengine.projects.locations.dataStores.userEvents.import

valid {
    input.Body.bigquerySource.dataSchema == STRING
    input.Body.bigquerySource.datasetId == STRING
    input.Body.bigquerySource.gcsStagingDir == STRING
    input.Body.bigquerySource.partitionDate.day == INTEGER
    input.Body.bigquerySource.partitionDate.month == INTEGER
    input.Body.bigquerySource.partitionDate.year == INTEGER
    input.Body.bigquerySource.projectId == STRING
    input.Body.bigquerySource.tableId == STRING
    input.Body.errorConfig.gcsPrefix == STRING
    input.Body.gcsSource.dataSchema == STRING
    input.Body.gcsSource.inputUris[_] == STRING
    input.Body.inlineSource.userEvents[_].attributes.STRING.numbers[_] == NUMBER
    input.Body.inlineSource.userEvents[_].attributes.STRING.text[_] == STRING
    input.Body.inlineSource.userEvents[_].attributionToken == STRING
    input.Body.inlineSource.userEvents[_].completionInfo.selectedPosition == INTEGER
    input.Body.inlineSource.userEvents[_].completionInfo.selectedSuggestion == STRING
    input.Body.inlineSource.userEvents[_].directUserRequest == BOOLEAN
    input.Body.inlineSource.userEvents[_].documents[_].id == STRING
    input.Body.inlineSource.userEvents[_].documents[_].name == STRING
    input.Body.inlineSource.userEvents[_].documents[_].promotionIds[_] == STRING
    input.Body.inlineSource.userEvents[_].documents[_].quantity == INTEGER
    input.Body.inlineSource.userEvents[_].documents[_].uri == STRING
    input.Body.inlineSource.userEvents[_].eventTime == STRING
    input.Body.inlineSource.userEvents[_].eventType == STRING
    input.Body.inlineSource.userEvents[_].filter == STRING
    input.Body.inlineSource.userEvents[_].mediaInfo.mediaProgressDuration == STRING
    input.Body.inlineSource.userEvents[_].mediaInfo.mediaProgressPercentage == NUMBER
    input.Body.inlineSource.userEvents[_].pageInfo.pageCategory == STRING
    input.Body.inlineSource.userEvents[_].pageInfo.pageviewId == STRING
    input.Body.inlineSource.userEvents[_].pageInfo.referrerUri == STRING
    input.Body.inlineSource.userEvents[_].pageInfo.uri == STRING
    input.Body.inlineSource.userEvents[_].panel.displayName == STRING
    input.Body.inlineSource.userEvents[_].panel.panelId == STRING
    input.Body.inlineSource.userEvents[_].panel.panelPosition == INTEGER
    input.Body.inlineSource.userEvents[_].panel.totalPanels == INTEGER
    input.Body.inlineSource.userEvents[_].promotionIds[_] == STRING
    input.Body.inlineSource.userEvents[_].searchInfo.offset == INTEGER
    input.Body.inlineSource.userEvents[_].searchInfo.orderBy == STRING
    input.Body.inlineSource.userEvents[_].searchInfo.searchQuery == STRING
    input.Body.inlineSource.userEvents[_].sessionId == STRING
    input.Body.inlineSource.userEvents[_].tagIds[_] == STRING
    input.Body.inlineSource.userEvents[_].transactionInfo.cost == NUMBER
    input.Body.inlineSource.userEvents[_].transactionInfo.currency == STRING
    input.Body.inlineSource.userEvents[_].transactionInfo.discountValue == NUMBER
    input.Body.inlineSource.userEvents[_].transactionInfo.tax == NUMBER
    input.Body.inlineSource.userEvents[_].transactionInfo.transactionId == STRING
    input.Body.inlineSource.userEvents[_].transactionInfo.value == NUMBER
    input.Body.inlineSource.userEvents[_].userInfo.userAgent == STRING
    input.Body.inlineSource.userEvents[_].userInfo.userId == STRING
    input.Body.inlineSource.userEvents[_].userPseudoId == STRING
    input.ReqMap.parent == STRING
    input.ProviderMetadata.Region == STRING
}

discoveryengine.projects.locations.dataStores.userEvents.purge

valid {
    input.Body.filter == STRING
    input.Body.force == BOOLEAN
    input.ReqMap.parent == STRING
    input.ProviderMetadata.Region == STRING
}

discoveryengine.projects.locations.dataStores.userEvents.write

valid {
    input.Body.attributes.STRING.numbers[_] == NUMBER
    input.Body.attributes.STRING.text[_] == STRING
    input.Body.attributionToken == STRING
    input.Body.completionInfo.selectedPosition == INTEGER
    input.Body.completionInfo.selectedSuggestion == STRING
    input.Body.directUserRequest == BOOLEAN
    input.Body.documents[_].id == STRING
    input.Body.documents[_].name == STRING
    input.Body.documents[_].promotionIds[_] == STRING
    input.Body.documents[_].quantity == INTEGER
    input.Body.documents[_].uri == STRING
    input.Body.eventTime == STRING
    input.Body.eventType == STRING
    input.Body.filter == STRING
    input.Body.mediaInfo.mediaProgressDuration == STRING
    input.Body.mediaInfo.mediaProgressPercentage == NUMBER
    input.Body.pageInfo.pageCategory == STRING
    input.Body.pageInfo.pageviewId == STRING
    input.Body.pageInfo.referrerUri == STRING
    input.Body.pageInfo.uri == STRING
    input.Body.panel.displayName == STRING
    input.Body.panel.panelId == STRING
    input.Body.panel.panelPosition == INTEGER
    input.Body.panel.totalPanels == INTEGER
    input.Body.promotionIds[_] == STRING
    input.Body.searchInfo.offset == INTEGER
    input.Body.searchInfo.orderBy == STRING
    input.Body.searchInfo.searchQuery == STRING
    input.Body.sessionId == STRING
    input.Body.tagIds[_] == STRING
    input.Body.transactionInfo.cost == NUMBER
    input.Body.transactionInfo.currency == STRING
    input.Body.transactionInfo.discountValue == NUMBER
    input.Body.transactionInfo.tax == NUMBER
    input.Body.transactionInfo.transactionId == STRING
    input.Body.transactionInfo.value == NUMBER
    input.Body.userInfo.userAgent == STRING
    input.Body.userInfo.userId == STRING
    input.Body.userPseudoId == STRING
    input.ReqMap.parent == STRING
    input.ProviderMetadata.Region == STRING
}

discoveryengine.projects.locations.estimateDataSize

valid {
    input.Body.fileDataSource.bigquerySource.dataSchema == STRING
    input.Body.fileDataSource.bigquerySource.datasetId == STRING
    input.Body.fileDataSource.bigquerySource.gcsStagingDir == STRING
    input.Body.fileDataSource.bigquerySource.partitionDate.day == INTEGER
    input.Body.fileDataSource.bigquerySource.partitionDate.month == INTEGER
    input.Body.fileDataSource.bigquerySource.partitionDate.year == INTEGER
    input.Body.fileDataSource.bigquerySource.projectId == STRING
    input.Body.fileDataSource.bigquerySource.tableId == STRING
    input.Body.fileDataSource.gcsSource.dataSchema == STRING
    input.Body.fileDataSource.gcsSource.inputUris[_] == STRING
    input.Body.websiteDataSource.estimatorUriPatterns[_].exactMatch == BOOLEAN
    input.Body.websiteDataSource.estimatorUriPatterns[_].exclusive == BOOLEAN
    input.Body.websiteDataSource.estimatorUriPatterns[_].providedUriPattern == STRING
    input.ReqMap.location == STRING
    input.ProviderMetadata.Region == STRING
}

discoveryengine.projects.locations.operations.get

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

discoveryengine.projects.locations.operations.list

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

discoveryengine.projects.operations.get

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

discoveryengine.projects.operations.list

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