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