// Copyright 2024 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. syntax = "proto3"; package google.cloud.contactcenterinsights.v1; import "google/api/annotations.proto"; import "google/api/client.proto"; import "google/api/field_behavior.proto"; import "google/api/resource.proto"; import "google/cloud/contactcenterinsights/v1/resources.proto"; import "google/longrunning/operations.proto"; import "google/protobuf/duration.proto"; import "google/protobuf/empty.proto"; import "google/protobuf/field_mask.proto"; import "google/protobuf/timestamp.proto"; import "google/rpc/status.proto"; option csharp_namespace = "Google.Cloud.ContactCenterInsights.V1"; option go_package = "cloud.google.com/go/contactcenterinsights/apiv1/contactcenterinsightspb;contactcenterinsightspb"; option java_multiple_files = true; option java_outer_classname = "ContactCenterInsightsProto"; option java_package = "com.google.cloud.contactcenterinsights.v1"; option php_namespace = "Google\\Cloud\\ContactCenterInsights\\V1"; option ruby_package = "Google::Cloud::ContactCenterInsights::V1"; // An API that lets users analyze and explore their business conversation data. service ContactCenterInsights { option (google.api.default_host) = "contactcenterinsights.googleapis.com"; option (google.api.oauth_scopes) = "https://www.googleapis.com/auth/cloud-platform"; // Creates a conversation. rpc CreateConversation(CreateConversationRequest) returns (Conversation) { option (google.api.http) = { post: "/v1/{parent=projects/*/locations/*}/conversations" body: "conversation" }; option (google.api.method_signature) = "parent,conversation,conversation_id"; } // Create a longrunning conversation upload operation. This method differs // from CreateConversation by allowing audio transcription and optional DLP // redaction. rpc UploadConversation(UploadConversationRequest) returns (google.longrunning.Operation) { option (google.api.http) = { post: "/v1/{parent=projects/*/locations/*}/conversations:upload" body: "*" }; option (google.longrunning.operation_info) = { response_type: "Conversation" metadata_type: "UploadConversationMetadata" }; } // Updates a conversation. rpc UpdateConversation(UpdateConversationRequest) returns (Conversation) { option (google.api.http) = { patch: "/v1/{conversation.name=projects/*/locations/*/conversations/*}" body: "conversation" }; option (google.api.method_signature) = "conversation,update_mask"; } // Gets a conversation. rpc GetConversation(GetConversationRequest) returns (Conversation) { option (google.api.http) = { get: "/v1/{name=projects/*/locations/*/conversations/*}" }; option (google.api.method_signature) = "name"; } // Lists conversations. rpc ListConversations(ListConversationsRequest) returns (ListConversationsResponse) { option (google.api.http) = { get: "/v1/{parent=projects/*/locations/*}/conversations" }; option (google.api.method_signature) = "parent"; } // Deletes a conversation. rpc DeleteConversation(DeleteConversationRequest) returns (google.protobuf.Empty) { option (google.api.http) = { delete: "/v1/{name=projects/*/locations/*/conversations/*}" }; option (google.api.method_signature) = "name"; } // Creates an analysis. The long running operation is done when the analysis // has completed. rpc CreateAnalysis(CreateAnalysisRequest) returns (google.longrunning.Operation) { option (google.api.http) = { post: "/v1/{parent=projects/*/locations/*/conversations/*}/analyses" body: "analysis" }; option (google.api.method_signature) = "parent,analysis"; option (google.longrunning.operation_info) = { response_type: "Analysis" metadata_type: "CreateAnalysisOperationMetadata" }; } // Gets an analysis. rpc GetAnalysis(GetAnalysisRequest) returns (Analysis) { option (google.api.http) = { get: "/v1/{name=projects/*/locations/*/conversations/*/analyses/*}" }; option (google.api.method_signature) = "name"; } // Lists analyses. rpc ListAnalyses(ListAnalysesRequest) returns (ListAnalysesResponse) { option (google.api.http) = { get: "/v1/{parent=projects/*/locations/*/conversations/*}/analyses" }; option (google.api.method_signature) = "parent"; } // Deletes an analysis. rpc DeleteAnalysis(DeleteAnalysisRequest) returns (google.protobuf.Empty) { option (google.api.http) = { delete: "/v1/{name=projects/*/locations/*/conversations/*/analyses/*}" }; option (google.api.method_signature) = "name"; } // Analyzes multiple conversations in a single request. rpc BulkAnalyzeConversations(BulkAnalyzeConversationsRequest) returns (google.longrunning.Operation) { option (google.api.http) = { post: "/v1/{parent=projects/*/locations/*}/conversations:bulkAnalyze" body: "*" }; option (google.api.method_signature) = "parent,filter,analysis_percentage"; option (google.longrunning.operation_info) = { response_type: "BulkAnalyzeConversationsResponse" metadata_type: "BulkAnalyzeConversationsMetadata" }; } // Deletes multiple conversations in a single request. rpc BulkDeleteConversations(BulkDeleteConversationsRequest) returns (google.longrunning.Operation) { option (google.api.http) = { post: "/v1/{parent=projects/*/locations/*}/conversations:bulkDelete" body: "*" }; option (google.api.method_signature) = "parent,filter"; option (google.longrunning.operation_info) = { response_type: "BulkDeleteConversationsResponse" metadata_type: "BulkDeleteConversationsMetadata" }; } // Imports conversations and processes them according to the user's // configuration. rpc IngestConversations(IngestConversationsRequest) returns (google.longrunning.Operation) { option (google.api.http) = { post: "/v1/{parent=projects/*/locations/*}/conversations:ingest" body: "*" }; option (google.api.method_signature) = "parent"; option (google.longrunning.operation_info) = { response_type: "IngestConversationsResponse" metadata_type: "IngestConversationsMetadata" }; } // Export insights data to a destination defined in the request body. rpc ExportInsightsData(ExportInsightsDataRequest) returns (google.longrunning.Operation) { option (google.api.http) = { post: "/v1/{parent=projects/*/locations/*}/insightsdata:export" body: "*" }; option (google.api.method_signature) = "parent"; option (google.longrunning.operation_info) = { response_type: "ExportInsightsDataResponse" metadata_type: "ExportInsightsDataMetadata" }; } // Creates an issue model. rpc CreateIssueModel(CreateIssueModelRequest) returns (google.longrunning.Operation) { option (google.api.http) = { post: "/v1/{parent=projects/*/locations/*}/issueModels" body: "issue_model" }; option (google.api.method_signature) = "parent,issue_model"; option (google.longrunning.operation_info) = { response_type: "IssueModel" metadata_type: "CreateIssueModelMetadata" }; } // Updates an issue model. rpc UpdateIssueModel(UpdateIssueModelRequest) returns (IssueModel) { option (google.api.http) = { patch: "/v1/{issue_model.name=projects/*/locations/*/issueModels/*}" body: "issue_model" }; option (google.api.method_signature) = "issue_model,update_mask"; } // Gets an issue model. rpc GetIssueModel(GetIssueModelRequest) returns (IssueModel) { option (google.api.http) = { get: "/v1/{name=projects/*/locations/*/issueModels/*}" }; option (google.api.method_signature) = "name"; } // Lists issue models. rpc ListIssueModels(ListIssueModelsRequest) returns (ListIssueModelsResponse) { option (google.api.http) = { get: "/v1/{parent=projects/*/locations/*}/issueModels" }; option (google.api.method_signature) = "parent"; } // Deletes an issue model. rpc DeleteIssueModel(DeleteIssueModelRequest) returns (google.longrunning.Operation) { option (google.api.http) = { delete: "/v1/{name=projects/*/locations/*/issueModels/*}" }; option (google.api.method_signature) = "name"; option (google.longrunning.operation_info) = { response_type: "google.protobuf.Empty" metadata_type: "DeleteIssueModelMetadata" }; } // Deploys an issue model. Returns an error if a model is already deployed. // An issue model can only be used in analysis after it has been deployed. rpc DeployIssueModel(DeployIssueModelRequest) returns (google.longrunning.Operation) { option (google.api.http) = { post: "/v1/{name=projects/*/locations/*/issueModels/*}:deploy" body: "*" }; option (google.api.method_signature) = "name"; option (google.longrunning.operation_info) = { response_type: "DeployIssueModelResponse" metadata_type: "DeployIssueModelMetadata" }; } // Undeploys an issue model. // An issue model can not be used in analysis after it has been undeployed. rpc UndeployIssueModel(UndeployIssueModelRequest) returns (google.longrunning.Operation) { option (google.api.http) = { post: "/v1/{name=projects/*/locations/*/issueModels/*}:undeploy" body: "*" }; option (google.api.method_signature) = "name"; option (google.longrunning.operation_info) = { response_type: "UndeployIssueModelResponse" metadata_type: "UndeployIssueModelMetadata" }; } // Gets an issue. rpc GetIssue(GetIssueRequest) returns (Issue) { option (google.api.http) = { get: "/v1/{name=projects/*/locations/*/issueModels/*/issues/*}" }; option (google.api.method_signature) = "name"; } // Lists issues. rpc ListIssues(ListIssuesRequest) returns (ListIssuesResponse) { option (google.api.http) = { get: "/v1/{parent=projects/*/locations/*/issueModels/*}/issues" }; option (google.api.method_signature) = "parent"; } // Updates an issue. rpc UpdateIssue(UpdateIssueRequest) returns (Issue) { option (google.api.http) = { patch: "/v1/{issue.name=projects/*/locations/*/issueModels/*/issues/*}" body: "issue" }; option (google.api.method_signature) = "issue,update_mask"; } // Deletes an issue. rpc DeleteIssue(DeleteIssueRequest) returns (google.protobuf.Empty) { option (google.api.http) = { delete: "/v1/{name=projects/*/locations/*/issueModels/*/issues/*}" }; option (google.api.method_signature) = "name"; } // Gets an issue model's statistics. rpc CalculateIssueModelStats(CalculateIssueModelStatsRequest) returns (CalculateIssueModelStatsResponse) { option (google.api.http) = { get: "/v1/{issue_model=projects/*/locations/*/issueModels/*}:calculateIssueModelStats" }; option (google.api.method_signature) = "issue_model"; } // Creates a phrase matcher. rpc CreatePhraseMatcher(CreatePhraseMatcherRequest) returns (PhraseMatcher) { option (google.api.http) = { post: "/v1/{parent=projects/*/locations/*}/phraseMatchers" body: "phrase_matcher" }; option (google.api.method_signature) = "parent,phrase_matcher"; } // Gets a phrase matcher. rpc GetPhraseMatcher(GetPhraseMatcherRequest) returns (PhraseMatcher) { option (google.api.http) = { get: "/v1/{name=projects/*/locations/*/phraseMatchers/*}" }; option (google.api.method_signature) = "name"; } // Lists phrase matchers. rpc ListPhraseMatchers(ListPhraseMatchersRequest) returns (ListPhraseMatchersResponse) { option (google.api.http) = { get: "/v1/{parent=projects/*/locations/*}/phraseMatchers" }; option (google.api.method_signature) = "parent"; } // Deletes a phrase matcher. rpc DeletePhraseMatcher(DeletePhraseMatcherRequest) returns (google.protobuf.Empty) { option (google.api.http) = { delete: "/v1/{name=projects/*/locations/*/phraseMatchers/*}" }; option (google.api.method_signature) = "name"; } // Updates a phrase matcher. rpc UpdatePhraseMatcher(UpdatePhraseMatcherRequest) returns (PhraseMatcher) { option (google.api.http) = { patch: "/v1/{phrase_matcher.name=projects/*/locations/*/phraseMatchers/*}" body: "phrase_matcher" }; option (google.api.method_signature) = "phrase_matcher,update_mask"; } // Gets conversation statistics. rpc CalculateStats(CalculateStatsRequest) returns (CalculateStatsResponse) { option (google.api.http) = { get: "/v1/{location=projects/*/locations/*}/conversations:calculateStats" }; option (google.api.method_signature) = "location"; } // Gets project-level settings. rpc GetSettings(GetSettingsRequest) returns (Settings) { option (google.api.http) = { get: "/v1/{name=projects/*/locations/*/settings}" }; option (google.api.method_signature) = "name"; } // Updates project-level settings. rpc UpdateSettings(UpdateSettingsRequest) returns (Settings) { option (google.api.http) = { patch: "/v1/{settings.name=projects/*/locations/*/settings}" body: "settings" }; option (google.api.method_signature) = "settings,update_mask"; } // Creates a view. rpc CreateView(CreateViewRequest) returns (View) { option (google.api.http) = { post: "/v1/{parent=projects/*/locations/*}/views" body: "view" }; option (google.api.method_signature) = "parent,view"; } // Gets a view. rpc GetView(GetViewRequest) returns (View) { option (google.api.http) = { get: "/v1/{name=projects/*/locations/*/views/*}" }; option (google.api.method_signature) = "name"; } // Lists views. rpc ListViews(ListViewsRequest) returns (ListViewsResponse) { option (google.api.http) = { get: "/v1/{parent=projects/*/locations/*}/views" }; option (google.api.method_signature) = "parent"; } // Updates a view. rpc UpdateView(UpdateViewRequest) returns (View) { option (google.api.http) = { patch: "/v1/{view.name=projects/*/locations/*/views/*}" body: "view" }; option (google.api.method_signature) = "view,update_mask"; } // Deletes a view. rpc DeleteView(DeleteViewRequest) returns (google.protobuf.Empty) { option (google.api.http) = { delete: "/v1/{name=projects/*/locations/*/views/*}" }; option (google.api.method_signature) = "name"; } } // Represents the options for viewing a conversation. enum ConversationView { // The conversation view is not specified. // // * Defaults to `FULL` in `GetConversationRequest`. // * Defaults to `BASIC` in `ListConversationsRequest`. CONVERSATION_VIEW_UNSPECIFIED = 0; // Populates all fields in the conversation. FULL = 2; // Populates all fields in the conversation except the transcript. BASIC = 1; } // The request for calculating conversation statistics. message CalculateStatsRequest { // Required. The location of the conversations. string location = 1 [ (google.api.field_behavior) = REQUIRED, (google.api.resource_reference) = { type: "locations.googleapis.com/Location" } ]; // A filter to reduce results to a specific subset. This field is useful for // getting statistics about conversations with specific properties. string filter = 2; } // The response for calculating conversation statistics. message CalculateStatsResponse { // A time series representing conversations over time. message TimeSeries { // A single interval in a time series. message Interval { // The start time of this interval. google.protobuf.Timestamp start_time = 1; // The number of conversations created in this interval. int32 conversation_count = 2; } // The duration of each interval. google.protobuf.Duration interval_duration = 1; // An ordered list of intervals from earliest to latest, where each interval // represents the number of conversations that transpired during the time // window. repeated Interval points = 2; } // The average duration of all conversations. The average is calculated using // only conversations that have a time duration. google.protobuf.Duration average_duration = 1; // The average number of turns per conversation. int32 average_turn_count = 2; // The total number of conversations. int32 conversation_count = 3; // A map associating each smart highlighter display name with its respective // number of matches in the set of conversations. map smart_highlighter_matches = 4; // A map associating each custom highlighter resource name with its respective // number of matches in the set of conversations. map custom_highlighter_matches = 5; // A map associating each issue resource name with its respective number of // matches in the set of conversations. Key has the format: // `projects//locations//issueModels//issues/` // Deprecated, use `issue_matches_stats` field instead. map issue_matches = 6 [deprecated = true]; // A map associating each issue resource name with its respective number of // matches in the set of conversations. Key has the format: // `projects//locations//issueModels//issues/` map issue_matches_stats = 8; // A time series representing the count of conversations created over time // that match that requested filter criteria. TimeSeries conversation_count_time_series = 7; } // Metadata for a create analysis operation. message CreateAnalysisOperationMetadata { // Output only. The time the operation was created. google.protobuf.Timestamp create_time = 1 [(google.api.field_behavior) = OUTPUT_ONLY]; // Output only. The time the operation finished running. google.protobuf.Timestamp end_time = 2 [(google.api.field_behavior) = OUTPUT_ONLY]; // Output only. The Conversation that this Analysis Operation belongs to. string conversation = 3 [ (google.api.field_behavior) = OUTPUT_ONLY, (google.api.resource_reference) = { type: "contactcenterinsights.googleapis.com/Conversation" } ]; // Output only. The annotator selector used for the analysis (if any). AnnotatorSelector annotator_selector = 4 [(google.api.field_behavior) = OUTPUT_ONLY]; } // Request to create a conversation. message CreateConversationRequest { // Required. The parent resource of the conversation. string parent = 1 [ (google.api.field_behavior) = REQUIRED, (google.api.resource_reference) = { type: "locations.googleapis.com/Location" } ]; // Required. The conversation resource to create. Conversation conversation = 2 [(google.api.field_behavior) = REQUIRED]; // A unique ID for the new conversation. This ID will become the final // component of the conversation's resource name. If no ID is specified, a // server-generated ID will be used. // // This value should be 4-64 characters and must match the regular // expression `^[a-z0-9-]{4,64}$`. Valid characters are `[a-z][0-9]-` string conversation_id = 3; } // Request to upload a conversation. message UploadConversationRequest { // Required. The parent resource of the conversation. string parent = 1 [ (google.api.field_behavior) = REQUIRED, (google.api.resource_reference) = { type: "locations.googleapis.com/Location" } ]; // Required. The conversation resource to create. Conversation conversation = 2 [(google.api.field_behavior) = REQUIRED]; // Optional. A unique ID for the new conversation. This ID will become the // final component of the conversation's resource name. If no ID is specified, // a server-generated ID will be used. // // This value should be 4-64 characters and must match the regular // expression `^[a-z0-9-]{4,64}$`. Valid characters are `[a-z][0-9]-` string conversation_id = 3 [(google.api.field_behavior) = OPTIONAL]; // Optional. DLP settings for transcript redaction. Will default to the config // specified in Settings. RedactionConfig redaction_config = 4 [(google.api.field_behavior) = OPTIONAL]; // Optional. Speech-to-Text configuration. Will default to the config // specified in Settings. SpeechConfig speech_config = 11 [(google.api.field_behavior) = OPTIONAL]; } // The metadata for an UploadConversation operation. message UploadConversationMetadata { // Output only. The time the operation was created. google.protobuf.Timestamp create_time = 1 [(google.api.field_behavior) = OUTPUT_ONLY]; // Output only. The time the operation finished running. google.protobuf.Timestamp end_time = 2 [(google.api.field_behavior) = OUTPUT_ONLY]; // Output only. The original request. UploadConversationRequest request = 3 [(google.api.field_behavior) = OUTPUT_ONLY]; // Output only. The operation name for a successfully created analysis // operation, if any. string analysis_operation = 4 [(google.api.field_behavior) = OUTPUT_ONLY]; // Output only. The redaction config applied to the uploaded conversation. RedactionConfig applied_redaction_config = 5 [(google.api.field_behavior) = OUTPUT_ONLY]; } // Request to list conversations. message ListConversationsRequest { // Required. The parent resource of the conversation. string parent = 1 [ (google.api.field_behavior) = REQUIRED, (google.api.resource_reference) = { type: "locations.googleapis.com/Location" } ]; // The maximum number of conversations to return in the response. A valid page // size ranges from 0 to 1,000 inclusive. If the page size is zero or // unspecified, a default page size of 100 will be chosen. Note that a call // might return fewer results than the requested page size. int32 page_size = 2; // The value returned by the last `ListConversationsResponse`. This value // indicates that this is a continuation of a prior `ListConversations` call // and that the system should return the next page of data. string page_token = 3; // A filter to reduce results to a specific subset. Useful for querying // conversations with specific properties. string filter = 4; // The level of details of the conversation. Default is `BASIC`. ConversationView view = 5; } // The response of listing conversations. message ListConversationsResponse { // The conversations that match the request. repeated Conversation conversations = 1; // A token which can be sent as `page_token` to retrieve the next page. If // this field is set, it means there is another page available. If it is not // set, it means no other pages are available. string next_page_token = 2; } // The request to get a conversation. message GetConversationRequest { // Required. The name of the conversation to get. string name = 1 [ (google.api.field_behavior) = REQUIRED, (google.api.resource_reference) = { type: "contactcenterinsights.googleapis.com/Conversation" } ]; // The level of details of the conversation. Default is `FULL`. ConversationView view = 2; } // The request to update a conversation. message UpdateConversationRequest { // Required. The new values for the conversation. Conversation conversation = 1 [(google.api.field_behavior) = REQUIRED]; // The list of fields to be updated. google.protobuf.FieldMask update_mask = 2; } // The request to delete a conversation. message DeleteConversationRequest { // Required. The name of the conversation to delete. string name = 1 [ (google.api.field_behavior) = REQUIRED, (google.api.resource_reference) = { type: "contactcenterinsights.googleapis.com/Conversation" } ]; // If set to true, all of this conversation's analyses will also be deleted. // Otherwise, the request will only succeed if the conversation has no // analyses. bool force = 2; } // The request to ingest conversations. message IngestConversationsRequest { // Configuration for Cloud Storage bucket sources. message GcsSource { enum BucketObjectType { // The object type is unspecified and will default to `TRANSCRIPT`. BUCKET_OBJECT_TYPE_UNSPECIFIED = 0; // The object is a transcript. TRANSCRIPT = 1; // The object is an audio file. AUDIO = 2; } // Required. The Cloud Storage bucket containing source objects. string bucket_uri = 1 [(google.api.field_behavior) = REQUIRED]; // Optional. Specifies the type of the objects in `bucket_uri`. BucketObjectType bucket_object_type = 2 [(google.api.field_behavior) = OPTIONAL]; } // Configuration for processing transcript objects. message TranscriptObjectConfig { // Required. The medium transcript objects represent. Conversation.Medium medium = 1 [(google.api.field_behavior) = REQUIRED]; } // Configuration that applies to all conversations. message ConversationConfig { // An opaque, user-specified string representing the human agent who handled // the conversations. string agent_id = 1; // Optional. Indicates which of the channels, 1 or 2, contains the agent. // Note that this must be set for conversations to be properly displayed and // analyzed. int32 agent_channel = 2 [(google.api.field_behavior) = OPTIONAL]; // Optional. Indicates which of the channels, 1 or 2, contains the agent. // Note that this must be set for conversations to be properly displayed and // analyzed. int32 customer_channel = 3 [(google.api.field_behavior) = OPTIONAL]; } // Configuration for an external data store containing objects that will // be converted to conversations. oneof source { // A cloud storage bucket source. Note that any previously ingested objects // from the source will be skipped to avoid duplication. GcsSource gcs_source = 2; } // Configuration for converting individual `source` objects to conversations. oneof object_config { // Configuration for when `source` contains conversation transcripts. TranscriptObjectConfig transcript_object_config = 3; } // Required. The parent resource for new conversations. string parent = 1 [ (google.api.field_behavior) = REQUIRED, (google.api.resource_reference) = { type: "locations.googleapis.com/Location" } ]; // Configuration that applies to all conversations. ConversationConfig conversation_config = 4; // Optional. DLP settings for transcript redaction. Optional, will default to // the config specified in Settings. RedactionConfig redaction_config = 5 [(google.api.field_behavior) = OPTIONAL]; // Optional. Default Speech-to-Text configuration. Optional, will default to // the config specified in Settings. SpeechConfig speech_config = 6 [(google.api.field_behavior) = OPTIONAL]; } // The metadata for an IngestConversations operation. message IngestConversationsMetadata { // Statistics for IngestConversations operation. message IngestConversationsStats { // Output only. The number of objects processed during the ingest operation. int32 processed_object_count = 1 [(google.api.field_behavior) = OUTPUT_ONLY]; // Output only. The number of objects skipped because another conversation // with the same transcript uri had already been ingested. int32 duplicates_skipped_count = 2 [(google.api.field_behavior) = OUTPUT_ONLY]; // Output only. The number of new conversations added during this ingest // operation. int32 successful_ingest_count = 3 [(google.api.field_behavior) = OUTPUT_ONLY]; // Output only. The number of objects which were unable to be ingested due // to errors. The errors are populated in the partial_errors field. int32 failed_ingest_count = 4 [(google.api.field_behavior) = OUTPUT_ONLY]; } // Output only. The time the operation was created. google.protobuf.Timestamp create_time = 1 [(google.api.field_behavior) = OUTPUT_ONLY]; // Output only. The time the operation finished running. google.protobuf.Timestamp end_time = 2 [(google.api.field_behavior) = OUTPUT_ONLY]; // Output only. The original request for ingest. IngestConversationsRequest request = 3 [(google.api.field_behavior) = OUTPUT_ONLY]; // Output only. Partial errors during ingest operation that might cause the // operation output to be incomplete. repeated google.rpc.Status partial_errors = 4 [(google.api.field_behavior) = OUTPUT_ONLY]; // Output only. Statistics for IngestConversations operation. IngestConversationsStats ingest_conversations_stats = 5 [(google.api.field_behavior) = OUTPUT_ONLY]; } // The response to an IngestConversations operation. message IngestConversationsResponse {} // The request to create an analysis. message CreateAnalysisRequest { // Required. The parent resource of the analysis. string parent = 1 [ (google.api.field_behavior) = REQUIRED, (google.api.resource_reference) = { type: "contactcenterinsights.googleapis.com/Conversation" } ]; // Required. The analysis to create. Analysis analysis = 2 [(google.api.field_behavior) = REQUIRED]; } // The request to list analyses. message ListAnalysesRequest { // Required. The parent resource of the analyses. string parent = 1 [ (google.api.field_behavior) = REQUIRED, (google.api.resource_reference) = { type: "contactcenterinsights.googleapis.com/Conversation" } ]; // The maximum number of analyses to return in the response. If this // value is zero, the service will select a default size. A call might return // fewer objects than requested. A non-empty `next_page_token` in the response // indicates that more data is available. int32 page_size = 2; // The value returned by the last `ListAnalysesResponse`; indicates // that this is a continuation of a prior `ListAnalyses` call and // the system should return the next page of data. string page_token = 3; // A filter to reduce results to a specific subset. Useful for querying // conversations with specific properties. string filter = 4; } // The response to list analyses. message ListAnalysesResponse { // The analyses that match the request. repeated Analysis analyses = 1; // A token, which can be sent as `page_token` to retrieve the next page. // If this field is omitted, there are no subsequent pages. string next_page_token = 2; } // The request to get an analysis. message GetAnalysisRequest { // Required. The name of the analysis to get. string name = 1 [ (google.api.field_behavior) = REQUIRED, (google.api.resource_reference) = { type: "contactcenterinsights.googleapis.com/Analysis" } ]; } // The request to delete an analysis. message DeleteAnalysisRequest { // Required. The name of the analysis to delete. string name = 1 [ (google.api.field_behavior) = REQUIRED, (google.api.resource_reference) = { type: "contactcenterinsights.googleapis.com/Analysis" } ]; } // The request to analyze conversations in bulk. message BulkAnalyzeConversationsRequest { // Required. The parent resource to create analyses in. string parent = 1 [ (google.api.field_behavior) = REQUIRED, (google.api.resource_reference) = { type: "locations.googleapis.com/Location" } ]; // Required. Filter used to select the subset of conversations to analyze. string filter = 2 [(google.api.field_behavior) = REQUIRED]; // Required. Percentage of selected conversation to analyze, between // [0, 100]. float analysis_percentage = 3 [(google.api.field_behavior) = REQUIRED]; // To select the annotators to run and the phrase matchers to use // (if any). If not specified, all annotators will be run. AnnotatorSelector annotator_selector = 8; } // The metadata for a bulk analyze conversations operation. message BulkAnalyzeConversationsMetadata { // The time the operation was created. google.protobuf.Timestamp create_time = 1; // The time the operation finished running. google.protobuf.Timestamp end_time = 2; // The original request for bulk analyze. BulkAnalyzeConversationsRequest request = 3; // The number of requested analyses that have completed successfully so far. int32 completed_analyses_count = 4; // The number of requested analyses that have failed so far. int32 failed_analyses_count = 5; // Total number of analyses requested. Computed by the number of conversations // returned by `filter` multiplied by `analysis_percentage` in the request. int32 total_requested_analyses_count = 6; // Output only. Partial errors during bulk analyze operation that might cause // the operation output to be incomplete. repeated google.rpc.Status partial_errors = 7 [(google.api.field_behavior) = OUTPUT_ONLY]; } // The response for a bulk analyze conversations operation. message BulkAnalyzeConversationsResponse { // Count of successful analyses. int32 successful_analysis_count = 1; // Count of failed analyses. int32 failed_analysis_count = 2; } // The request to delete conversations in bulk. message BulkDeleteConversationsRequest { // Required. The parent resource to delete conversations from. // Format: // projects/{project}/locations/{location} string parent = 1 [ (google.api.field_behavior) = REQUIRED, (google.api.resource_reference) = { type: "locations.googleapis.com/Location" } ]; // Filter used to select the subset of conversations to delete. string filter = 2; // Maximum number of conversations to delete. int32 max_delete_count = 3; // If set to true, all of this conversation's analyses will also be deleted. // Otherwise, the request will only succeed if the conversation has no // analyses. bool force = 4; } // The metadata for a bulk delete conversations operation. message BulkDeleteConversationsMetadata { // The time the operation was created. google.protobuf.Timestamp create_time = 1; // The time the operation finished running. google.protobuf.Timestamp end_time = 2; // The original request for bulk delete. BulkDeleteConversationsRequest request = 3; // Partial errors during bulk delete conversations operation that might cause // the operation output to be incomplete. repeated google.rpc.Status partial_errors = 4; } // The response for a bulk delete conversations operation. message BulkDeleteConversationsResponse {} // The request to export insights. message ExportInsightsDataRequest { // A BigQuery Table Reference. message BigQueryDestination { // A project ID or number. If specified, then export will attempt to // write data to this project instead of the resource project. Otherwise, // the resource project will be used. string project_id = 3; // Required. The name of the BigQuery dataset that the snapshot result // should be exported to. If this dataset does not exist, the export call // returns an INVALID_ARGUMENT error. string dataset = 1 [(google.api.field_behavior) = REQUIRED]; // The BigQuery table name to which the insights data should be written. // If this table does not exist, the export call returns an INVALID_ARGUMENT // error. string table = 2; } // Specifies the action that occurs if the destination table already exists. enum WriteDisposition { // Write disposition is not specified. Defaults to WRITE_TRUNCATE. WRITE_DISPOSITION_UNSPECIFIED = 0; // If the table already exists, BigQuery will overwrite the table data and // use the schema from the load. WRITE_TRUNCATE = 1; // If the table already exists, BigQuery will append data to the table. WRITE_APPEND = 2; } // Exporter destination. oneof destination { // Specified if sink is a BigQuery table. BigQueryDestination big_query_destination = 2; } // Required. The parent resource to export data from. string parent = 1 [ (google.api.field_behavior) = REQUIRED, (google.api.resource_reference) = { type: "locations.googleapis.com/Location" } ]; // A filter to reduce results to a specific subset. Useful for exporting // conversations with specific properties. string filter = 3; // A fully qualified KMS key name for BigQuery tables protected by CMEK. // Format: // projects/{project}/locations/{location}/keyRings/{keyring}/cryptoKeys/{key}/cryptoKeyVersions/{version} string kms_key = 4; // Options for what to do if the destination table already exists. WriteDisposition write_disposition = 5; } // Metadata for an export insights operation. message ExportInsightsDataMetadata { // Output only. The time the operation was created. google.protobuf.Timestamp create_time = 1 [(google.api.field_behavior) = OUTPUT_ONLY]; // Output only. The time the operation finished running. google.protobuf.Timestamp end_time = 2 [(google.api.field_behavior) = OUTPUT_ONLY]; // The original request for export. ExportInsightsDataRequest request = 3; // Partial errors during export operation that might cause the operation // output to be incomplete. repeated google.rpc.Status partial_errors = 4; } // Response for an export insights operation. message ExportInsightsDataResponse {} // The request to create an issue model. message CreateIssueModelRequest { // Required. The parent resource of the issue model. string parent = 1 [ (google.api.field_behavior) = REQUIRED, (google.api.resource_reference) = { type: "locations.googleapis.com/Location" } ]; // Required. The issue model to create. IssueModel issue_model = 2 [(google.api.field_behavior) = REQUIRED]; } // Metadata for creating an issue model. message CreateIssueModelMetadata { // Output only. The time the operation was created. google.protobuf.Timestamp create_time = 1 [(google.api.field_behavior) = OUTPUT_ONLY]; // Output only. The time the operation finished running. google.protobuf.Timestamp end_time = 2 [(google.api.field_behavior) = OUTPUT_ONLY]; // The original request for creation. CreateIssueModelRequest request = 3; } // The request to update an issue model. message UpdateIssueModelRequest { // Required. The new values for the issue model. IssueModel issue_model = 1 [(google.api.field_behavior) = REQUIRED]; // The list of fields to be updated. google.protobuf.FieldMask update_mask = 2; } // Request to list issue models. message ListIssueModelsRequest { // Required. The parent resource of the issue model. string parent = 1 [ (google.api.field_behavior) = REQUIRED, (google.api.resource_reference) = { type: "locations.googleapis.com/Location" } ]; } // The response of listing issue models. message ListIssueModelsResponse { // The issue models that match the request. repeated IssueModel issue_models = 1; } // The request to get an issue model. message GetIssueModelRequest { // Required. The name of the issue model to get. string name = 1 [ (google.api.field_behavior) = REQUIRED, (google.api.resource_reference) = { type: "contactcenterinsights.googleapis.com/IssueModel" } ]; } // The request to delete an issue model. message DeleteIssueModelRequest { // Required. The name of the issue model to delete. string name = 1 [ (google.api.field_behavior) = REQUIRED, (google.api.resource_reference) = { type: "contactcenterinsights.googleapis.com/IssueModel" } ]; } // Metadata for deleting an issue model. message DeleteIssueModelMetadata { // Output only. The time the operation was created. google.protobuf.Timestamp create_time = 1 [(google.api.field_behavior) = OUTPUT_ONLY]; // Output only. The time the operation finished running. google.protobuf.Timestamp end_time = 2 [(google.api.field_behavior) = OUTPUT_ONLY]; // The original request for deletion. DeleteIssueModelRequest request = 3; } // The request to deploy an issue model. message DeployIssueModelRequest { // Required. The issue model to deploy. string name = 1 [ (google.api.field_behavior) = REQUIRED, (google.api.resource_reference) = { type: "contactcenterinsights.googleapis.com/IssueModel" } ]; } // The response to deploy an issue model. message DeployIssueModelResponse {} // Metadata for deploying an issue model. message DeployIssueModelMetadata { // Output only. The time the operation was created. google.protobuf.Timestamp create_time = 1 [(google.api.field_behavior) = OUTPUT_ONLY]; // Output only. The time the operation finished running. google.protobuf.Timestamp end_time = 2 [(google.api.field_behavior) = OUTPUT_ONLY]; // The original request for deployment. DeployIssueModelRequest request = 3; } // The request to undeploy an issue model. message UndeployIssueModelRequest { // Required. The issue model to undeploy. string name = 1 [ (google.api.field_behavior) = REQUIRED, (google.api.resource_reference) = { type: "contactcenterinsights.googleapis.com/IssueModel" } ]; } // The response to undeploy an issue model. message UndeployIssueModelResponse {} // Metadata for undeploying an issue model. message UndeployIssueModelMetadata { // Output only. The time the operation was created. google.protobuf.Timestamp create_time = 1 [(google.api.field_behavior) = OUTPUT_ONLY]; // Output only. The time the operation finished running. google.protobuf.Timestamp end_time = 2 [(google.api.field_behavior) = OUTPUT_ONLY]; // The original request for undeployment. UndeployIssueModelRequest request = 3; } // The request to get an issue. message GetIssueRequest { // Required. The name of the issue to get. string name = 1 [ (google.api.field_behavior) = REQUIRED, (google.api.resource_reference) = { type: "contactcenterinsights.googleapis.com/Issue" } ]; } // Request to list issues. message ListIssuesRequest { // Required. The parent resource of the issue. string parent = 1 [ (google.api.field_behavior) = REQUIRED, (google.api.resource_reference) = { type: "contactcenterinsights.googleapis.com/IssueModel" } ]; } // The response of listing issues. message ListIssuesResponse { // The issues that match the request. repeated Issue issues = 1; } // The request to update an issue. message UpdateIssueRequest { // Required. The new values for the issue. Issue issue = 1 [(google.api.field_behavior) = REQUIRED]; // The list of fields to be updated. google.protobuf.FieldMask update_mask = 2; } // The request to delete an issue. message DeleteIssueRequest { // Required. The name of the issue to delete. string name = 1 [ (google.api.field_behavior) = REQUIRED, (google.api.resource_reference) = { type: "contactcenterinsights.googleapis.com/Issue" } ]; } // Request to get statistics of an issue model. message CalculateIssueModelStatsRequest { // Required. The resource name of the issue model to query against. string issue_model = 1 [ (google.api.field_behavior) = REQUIRED, (google.api.resource_reference) = { type: "contactcenterinsights.googleapis.com/IssueModel" } ]; } // Response of querying an issue model's statistics. message CalculateIssueModelStatsResponse { // The latest label statistics for the queried issue model. Includes results // on both training data and data labeled after deployment. IssueModelLabelStats current_stats = 4; } // Request to create a phrase matcher. message CreatePhraseMatcherRequest { // Required. The parent resource of the phrase matcher. Required. The location // to create a phrase matcher for. Format: `projects//locations/` or `projects//locations/` string parent = 1 [ (google.api.field_behavior) = REQUIRED, (google.api.resource_reference) = { type: "locations.googleapis.com/Location" } ]; // Required. The phrase matcher resource to create. PhraseMatcher phrase_matcher = 2 [(google.api.field_behavior) = REQUIRED]; } // Request to list phrase matchers. message ListPhraseMatchersRequest { // Required. The parent resource of the phrase matcher. string parent = 1 [ (google.api.field_behavior) = REQUIRED, (google.api.resource_reference) = { type: "locations.googleapis.com/Location" } ]; // The maximum number of phrase matchers to return in the response. If this // value is zero, the service will select a default size. A call might return // fewer objects than requested. A non-empty `next_page_token` in the response // indicates that more data is available. int32 page_size = 2; // The value returned by the last `ListPhraseMatchersResponse`. This value // indicates that this is a continuation of a prior `ListPhraseMatchers` call // and that the system should return the next page of data. string page_token = 3; // A filter to reduce results to a specific subset. Useful for querying // phrase matchers with specific properties. string filter = 4; } // The response of listing phrase matchers. message ListPhraseMatchersResponse { // The phrase matchers that match the request. repeated PhraseMatcher phrase_matchers = 1; // A token, which can be sent as `page_token` to retrieve the next page. // If this field is omitted, there are no subsequent pages. string next_page_token = 2; } // The request to get a a phrase matcher. message GetPhraseMatcherRequest { // Required. The name of the phrase matcher to get. string name = 1 [ (google.api.field_behavior) = REQUIRED, (google.api.resource_reference) = { type: "contactcenterinsights.googleapis.com/PhraseMatcher" } ]; } // The request to delete a phrase matcher. message DeletePhraseMatcherRequest { // Required. The name of the phrase matcher to delete. string name = 1 [ (google.api.field_behavior) = REQUIRED, (google.api.resource_reference) = { type: "contactcenterinsights.googleapis.com/PhraseMatcher" } ]; } // The request to update a phrase matcher. message UpdatePhraseMatcherRequest { // Required. The new values for the phrase matcher. PhraseMatcher phrase_matcher = 1 [(google.api.field_behavior) = REQUIRED]; // The list of fields to be updated. google.protobuf.FieldMask update_mask = 2; } // The request to get project-level settings. message GetSettingsRequest { // Required. The name of the settings resource to get. string name = 1 [ (google.api.field_behavior) = REQUIRED, (google.api.resource_reference) = { type: "contactcenterinsights.googleapis.com/Settings" } ]; } // The request to update project-level settings. message UpdateSettingsRequest { // Required. The new settings values. Settings settings = 1 [(google.api.field_behavior) = REQUIRED]; // Required. The list of fields to be updated. google.protobuf.FieldMask update_mask = 2 [(google.api.field_behavior) = REQUIRED]; } // The request to create a view. message CreateViewRequest { // Required. The parent resource of the view. Required. The location to create // a view for. // Format: `projects//locations/` or // `projects//locations/` string parent = 1 [ (google.api.field_behavior) = REQUIRED, (google.api.resource_reference) = { type: "locations.googleapis.com/Location" } ]; // Required. The view resource to create. View view = 2 [(google.api.field_behavior) = REQUIRED]; } // The request to get a view. message GetViewRequest { // Required. The name of the view to get. string name = 1 [ (google.api.field_behavior) = REQUIRED, (google.api.resource_reference) = { type: "contactcenterinsights.googleapis.com/View" } ]; } // The request to list views. message ListViewsRequest { // Required. The parent resource of the views. string parent = 1 [ (google.api.field_behavior) = REQUIRED, (google.api.resource_reference) = { type: "locations.googleapis.com/Location" } ]; // The maximum number of views to return in the response. If this // value is zero, the service will select a default size. A call may return // fewer objects than requested. A non-empty `next_page_token` in the response // indicates that more data is available. int32 page_size = 2; // The value returned by the last `ListViewsResponse`; indicates // that this is a continuation of a prior `ListViews` call and // the system should return the next page of data. string page_token = 3; } // The response of listing views. message ListViewsResponse { // The views that match the request. repeated View views = 1; // A token, which can be sent as `page_token` to retrieve the next page. // If this field is omitted, there are no subsequent pages. string next_page_token = 2; } // The request to update a view. message UpdateViewRequest { // Required. The new view. View view = 1 [(google.api.field_behavior) = REQUIRED]; // The list of fields to be updated. google.protobuf.FieldMask update_mask = 2; } // The request to delete a view. message DeleteViewRequest { // Required. The name of the view to delete. string name = 1 [ (google.api.field_behavior) = REQUIRED, (google.api.resource_reference) = { type: "contactcenterinsights.googleapis.com/View" } ]; }