xref: /aosp_15_r20/external/googleapis/google/cloud/dialogflow/v2/knowledge_base.proto (revision d5c09012810ac0c9f33fe448fb6da8260d444cc9)
1// Copyright 2023 Google LLC
2//
3// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
6//
7//     http://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS,
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
14
15syntax = "proto3";
16
17package google.cloud.dialogflow.v2;
18
19import "google/api/annotations.proto";
20import "google/api/client.proto";
21import "google/api/field_behavior.proto";
22import "google/api/resource.proto";
23import "google/protobuf/empty.proto";
24import "google/protobuf/field_mask.proto";
25
26option cc_enable_arenas = true;
27option csharp_namespace = "Google.Cloud.Dialogflow.V2";
28option go_package = "cloud.google.com/go/dialogflow/apiv2/dialogflowpb;dialogflowpb";
29option java_multiple_files = true;
30option java_outer_classname = "KnowledgeBaseProto";
31option java_package = "com.google.cloud.dialogflow.v2";
32option objc_class_prefix = "DF";
33
34// Service for managing
35// [KnowledgeBases][google.cloud.dialogflow.v2.KnowledgeBase].
36service KnowledgeBases {
37  option (google.api.default_host) = "dialogflow.googleapis.com";
38  option (google.api.oauth_scopes) =
39      "https://www.googleapis.com/auth/cloud-platform,"
40      "https://www.googleapis.com/auth/dialogflow";
41
42  // Returns the list of all knowledge bases of the specified agent.
43  rpc ListKnowledgeBases(ListKnowledgeBasesRequest)
44      returns (ListKnowledgeBasesResponse) {
45    option (google.api.http) = {
46      get: "/v2/{parent=projects/*}/knowledgeBases"
47      additional_bindings {
48        get: "/v2/{parent=projects/*/locations/*}/knowledgeBases"
49      }
50      additional_bindings {
51        get: "/v2/{parent=projects/*/agent}/knowledgeBases"
52      }
53    };
54    option (google.api.method_signature) = "parent";
55  }
56
57  // Retrieves the specified knowledge base.
58  rpc GetKnowledgeBase(GetKnowledgeBaseRequest) returns (KnowledgeBase) {
59    option (google.api.http) = {
60      get: "/v2/{name=projects/*/knowledgeBases/*}"
61      additional_bindings {
62        get: "/v2/{name=projects/*/locations/*/knowledgeBases/*}"
63      }
64      additional_bindings {
65        get: "/v2/{name=projects/*/agent/knowledgeBases/*}"
66      }
67    };
68    option (google.api.method_signature) = "name";
69  }
70
71  // Creates a knowledge base.
72  rpc CreateKnowledgeBase(CreateKnowledgeBaseRequest) returns (KnowledgeBase) {
73    option (google.api.http) = {
74      post: "/v2/{parent=projects/*}/knowledgeBases"
75      body: "knowledge_base"
76      additional_bindings {
77        post: "/v2/{parent=projects/*/locations/*}/knowledgeBases"
78        body: "knowledge_base"
79      }
80      additional_bindings {
81        post: "/v2/{parent=projects/*/agent}/knowledgeBases"
82        body: "knowledge_base"
83      }
84    };
85    option (google.api.method_signature) = "parent,knowledge_base";
86  }
87
88  // Deletes the specified knowledge base.
89  rpc DeleteKnowledgeBase(DeleteKnowledgeBaseRequest)
90      returns (google.protobuf.Empty) {
91    option (google.api.http) = {
92      delete: "/v2/{name=projects/*/knowledgeBases/*}"
93      additional_bindings {
94        delete: "/v2/{name=projects/*/locations/*/knowledgeBases/*}"
95      }
96      additional_bindings {
97        delete: "/v2/{name=projects/*/agent/knowledgeBases/*}"
98      }
99    };
100    option (google.api.method_signature) = "name";
101  }
102
103  // Updates the specified knowledge base.
104  rpc UpdateKnowledgeBase(UpdateKnowledgeBaseRequest) returns (KnowledgeBase) {
105    option (google.api.http) = {
106      patch: "/v2/{knowledge_base.name=projects/*/knowledgeBases/*}"
107      body: "knowledge_base"
108      additional_bindings {
109        patch: "/v2/{knowledge_base.name=projects/*/locations/*/knowledgeBases/*}"
110        body: "knowledge_base"
111      }
112      additional_bindings {
113        patch: "/v2/{knowledge_base.name=projects/*/agent/knowledgeBases/*}"
114        body: "knowledge_base"
115      }
116    };
117    option (google.api.method_signature) = "knowledge_base,update_mask";
118  }
119}
120
121// A knowledge base represents a collection of knowledge documents that you
122// provide to Dialogflow. Your knowledge documents contain information that may
123// be useful during conversations with end-users. Some Dialogflow features use
124// knowledge bases when looking for a response to an end-user input.
125//
126// For more information, see the [knowledge base
127// guide](https://cloud.google.com/dialogflow/docs/how/knowledge-bases).
128//
129// Note: The `projects.agent.knowledgeBases` resource is deprecated;
130// only use `projects.knowledgeBases`.
131message KnowledgeBase {
132  option (google.api.resource) = {
133    type: "dialogflow.googleapis.com/KnowledgeBase"
134    pattern: "projects/{project}/knowledgeBases/{knowledge_base}"
135    pattern: "projects/{project}/locations/{location}/knowledgeBases/{knowledge_base}"
136  };
137
138  // The knowledge base resource name.
139  // The name must be empty when creating a knowledge base.
140  // Format: `projects/<Project ID>/locations/<Location
141  // ID>/knowledgeBases/<Knowledge Base ID>`.
142  string name = 1;
143
144  // Required. The display name of the knowledge base. The name must be 1024
145  // bytes or less; otherwise, the creation request fails.
146  string display_name = 2 [(google.api.field_behavior) = REQUIRED];
147
148  // Language which represents the KnowledgeBase. When the KnowledgeBase is
149  // created/updated, expect this to be present for non en-us languages. When
150  // unspecified, the default language code en-us applies.
151  string language_code = 4;
152}
153
154// Request message for
155// [KnowledgeBases.ListKnowledgeBases][google.cloud.dialogflow.v2.KnowledgeBases.ListKnowledgeBases].
156message ListKnowledgeBasesRequest {
157  // Required. The project to list of knowledge bases for.
158  // Format: `projects/<Project ID>/locations/<Location ID>`.
159  string parent = 1 [
160    (google.api.field_behavior) = REQUIRED,
161    (google.api.resource_reference) = {
162      child_type: "dialogflow.googleapis.com/KnowledgeBase"
163    }
164  ];
165
166  // The maximum number of items to return in a single page. By
167  // default 10 and at most 100.
168  int32 page_size = 2;
169
170  // The next_page_token value returned from a previous list request.
171  string page_token = 3;
172
173  // The filter expression used to filter knowledge bases returned by the list
174  // method. The expression has the following syntax:
175  //
176  //   <field> <operator> <value> [AND <field> <operator> <value>] ...
177  //
178  // The following fields and operators are supported:
179  //
180  // * display_name with has(:) operator
181  // * language_code with equals(=) operator
182  //
183  // Examples:
184  //
185  // * 'language_code=en-us' matches knowledge bases with en-us language code.
186  // * 'display_name:articles' matches knowledge bases whose display name
187  //   contains "articles".
188  // * 'display_name:"Best Articles"' matches knowledge bases whose display
189  //   name contains "Best Articles".
190  // * 'language_code=en-gb AND display_name=articles' matches all knowledge
191  //   bases whose display name contains "articles" and whose language code is
192  //   "en-gb".
193  //
194  // Note: An empty filter string (i.e. "") is a no-op and will result in no
195  // filtering.
196  //
197  // For more information about filtering, see
198  // [API Filtering](https://aip.dev/160).
199  string filter = 4;
200}
201
202// Response message for
203// [KnowledgeBases.ListKnowledgeBases][google.cloud.dialogflow.v2.KnowledgeBases.ListKnowledgeBases].
204message ListKnowledgeBasesResponse {
205  // The list of knowledge bases.
206  repeated KnowledgeBase knowledge_bases = 1;
207
208  // Token to retrieve the next page of results, or empty if there are no
209  // more results in the list.
210  string next_page_token = 2;
211}
212
213// Request message for
214// [KnowledgeBases.GetKnowledgeBase][google.cloud.dialogflow.v2.KnowledgeBases.GetKnowledgeBase].
215message GetKnowledgeBaseRequest {
216  // Required. The name of the knowledge base to retrieve.
217  // Format `projects/<Project ID>/locations/<Location
218  // ID>/knowledgeBases/<Knowledge Base ID>`.
219  string name = 1 [
220    (google.api.field_behavior) = REQUIRED,
221    (google.api.resource_reference) = {
222      type: "dialogflow.googleapis.com/KnowledgeBase"
223    }
224  ];
225}
226
227// Request message for
228// [KnowledgeBases.CreateKnowledgeBase][google.cloud.dialogflow.v2.KnowledgeBases.CreateKnowledgeBase].
229message CreateKnowledgeBaseRequest {
230  // Required. The project to create a knowledge base for.
231  // Format: `projects/<Project ID>/locations/<Location ID>`.
232  string parent = 1 [
233    (google.api.field_behavior) = REQUIRED,
234    (google.api.resource_reference) = {
235      child_type: "dialogflow.googleapis.com/KnowledgeBase"
236    }
237  ];
238
239  // Required. The knowledge base to create.
240  KnowledgeBase knowledge_base = 2 [(google.api.field_behavior) = REQUIRED];
241}
242
243// Request message for
244// [KnowledgeBases.DeleteKnowledgeBase][google.cloud.dialogflow.v2.KnowledgeBases.DeleteKnowledgeBase].
245message DeleteKnowledgeBaseRequest {
246  // Required. The name of the knowledge base to delete.
247  // Format: `projects/<Project ID>/locations/<Location
248  // ID>/knowledgeBases/<Knowledge Base ID>`.
249  string name = 1 [
250    (google.api.field_behavior) = REQUIRED,
251    (google.api.resource_reference) = {
252      type: "dialogflow.googleapis.com/KnowledgeBase"
253    }
254  ];
255
256  // Optional. Force deletes the knowledge base. When set to true, any documents
257  // in the knowledge base are also deleted.
258  bool force = 2 [(google.api.field_behavior) = OPTIONAL];
259}
260
261// Request message for
262// [KnowledgeBases.UpdateKnowledgeBase][google.cloud.dialogflow.v2.KnowledgeBases.UpdateKnowledgeBase].
263message UpdateKnowledgeBaseRequest {
264  // Required. The knowledge base to update.
265  KnowledgeBase knowledge_base = 1 [(google.api.field_behavior) = REQUIRED];
266
267  // Optional. Not specified means `update all`.
268  // Currently, only `display_name` can be updated, an InvalidArgument will be
269  // returned for attempting to update other fields.
270  google.protobuf.FieldMask update_mask = 2
271      [(google.api.field_behavior) = OPTIONAL];
272}
273