xref: /aosp_15_r20/external/googleapis/google/cloud/discoveryengine/v1alpha/document.proto (revision d5c09012810ac0c9f33fe448fb6da8260d444cc9)
1*d5c09012SAndroid Build Coastguard Worker// Copyright 2022 Google LLC
2*d5c09012SAndroid Build Coastguard Worker//
3*d5c09012SAndroid Build Coastguard Worker// Licensed under the Apache License, Version 2.0 (the "License");
4*d5c09012SAndroid Build Coastguard Worker// you may not use this file except in compliance with the License.
5*d5c09012SAndroid Build Coastguard Worker// You may obtain a copy of the License at
6*d5c09012SAndroid Build Coastguard Worker//
7*d5c09012SAndroid Build Coastguard Worker//     http://www.apache.org/licenses/LICENSE-2.0
8*d5c09012SAndroid Build Coastguard Worker//
9*d5c09012SAndroid Build Coastguard Worker// Unless required by applicable law or agreed to in writing, software
10*d5c09012SAndroid Build Coastguard Worker// distributed under the License is distributed on an "AS IS" BASIS,
11*d5c09012SAndroid Build Coastguard Worker// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12*d5c09012SAndroid Build Coastguard Worker// See the License for the specific language governing permissions and
13*d5c09012SAndroid Build Coastguard Worker// limitations under the License.
14*d5c09012SAndroid Build Coastguard Worker
15*d5c09012SAndroid Build Coastguard Workersyntax = "proto3";
16*d5c09012SAndroid Build Coastguard Worker
17*d5c09012SAndroid Build Coastguard Workerpackage google.cloud.discoveryengine.v1alpha;
18*d5c09012SAndroid Build Coastguard Worker
19*d5c09012SAndroid Build Coastguard Workerimport "google/api/field_behavior.proto";
20*d5c09012SAndroid Build Coastguard Workerimport "google/api/resource.proto";
21*d5c09012SAndroid Build Coastguard Workerimport "google/cloud/discoveryengine/v1alpha/common.proto";
22*d5c09012SAndroid Build Coastguard Workerimport "google/protobuf/struct.proto";
23*d5c09012SAndroid Build Coastguard Workerimport "google/protobuf/timestamp.proto";
24*d5c09012SAndroid Build Coastguard Worker
25*d5c09012SAndroid Build Coastguard Workeroption csharp_namespace = "Google.Cloud.DiscoveryEngine.V1Alpha";
26*d5c09012SAndroid Build Coastguard Workeroption go_package = "cloud.google.com/go/discoveryengine/apiv1alpha/discoveryenginepb;discoveryenginepb";
27*d5c09012SAndroid Build Coastguard Workeroption java_multiple_files = true;
28*d5c09012SAndroid Build Coastguard Workeroption java_outer_classname = "DocumentProto";
29*d5c09012SAndroid Build Coastguard Workeroption java_package = "com.google.cloud.discoveryengine.v1alpha";
30*d5c09012SAndroid Build Coastguard Workeroption objc_class_prefix = "DISCOVERYENGINE";
31*d5c09012SAndroid Build Coastguard Workeroption php_namespace = "Google\\Cloud\\DiscoveryEngine\\V1alpha";
32*d5c09012SAndroid Build Coastguard Workeroption ruby_package = "Google::Cloud::DiscoveryEngine::V1alpha";
33*d5c09012SAndroid Build Coastguard Worker
34*d5c09012SAndroid Build Coastguard Worker// Document captures all raw metadata information of items to be recommended or
35*d5c09012SAndroid Build Coastguard Worker// searched.
36*d5c09012SAndroid Build Coastguard Workermessage Document {
37*d5c09012SAndroid Build Coastguard Worker  option (google.api.resource) = {
38*d5c09012SAndroid Build Coastguard Worker    type: "discoveryengine.googleapis.com/Document"
39*d5c09012SAndroid Build Coastguard Worker    pattern: "projects/{project}/locations/{location}/dataStores/{data_store}/branches/{branch}/documents/{document}"
40*d5c09012SAndroid Build Coastguard Worker    pattern: "projects/{project}/locations/{location}/collections/{collection}/dataStores/{data_store}/branches/{branch}/documents/{document}"
41*d5c09012SAndroid Build Coastguard Worker  };
42*d5c09012SAndroid Build Coastguard Worker
43*d5c09012SAndroid Build Coastguard Worker  // Unstructured data linked to this document.
44*d5c09012SAndroid Build Coastguard Worker  message Content {
45*d5c09012SAndroid Build Coastguard Worker    oneof content {
46*d5c09012SAndroid Build Coastguard Worker      // The content represented as a stream of bytes. The maximum length is
47*d5c09012SAndroid Build Coastguard Worker      // 1,000,000 bytes (1 MB / ~0.95 MiB).
48*d5c09012SAndroid Build Coastguard Worker      //
49*d5c09012SAndroid Build Coastguard Worker      // Note: As with all `bytes` fields, this field is represented as pure
50*d5c09012SAndroid Build Coastguard Worker      // binary in Protocol Buffers and base64-encoded string in JSON. For
51*d5c09012SAndroid Build Coastguard Worker      // example, `abc123!?$*&()'-=@~` should be represented as
52*d5c09012SAndroid Build Coastguard Worker      // `YWJjMTIzIT8kKiYoKSctPUB+` in JSON. See
53*d5c09012SAndroid Build Coastguard Worker      // https://developers.google.com/protocol-buffers/docs/proto3#json.
54*d5c09012SAndroid Build Coastguard Worker      bytes raw_bytes = 2;
55*d5c09012SAndroid Build Coastguard Worker
56*d5c09012SAndroid Build Coastguard Worker      // The URI of the content. Only Cloud Storage URIs (e.g.
57*d5c09012SAndroid Build Coastguard Worker      // `gs://bucket-name/path/to/file`) are supported. The maximum file size
58*d5c09012SAndroid Build Coastguard Worker      // is 2.5 MB for text-based formats, 100 MB for other formats.
59*d5c09012SAndroid Build Coastguard Worker      string uri = 3;
60*d5c09012SAndroid Build Coastguard Worker    }
61*d5c09012SAndroid Build Coastguard Worker
62*d5c09012SAndroid Build Coastguard Worker    // The MIME type of the content. Supported types:
63*d5c09012SAndroid Build Coastguard Worker    //
64*d5c09012SAndroid Build Coastguard Worker    // * `application/pdf` (PDF, only native PDFs are supported for now)
65*d5c09012SAndroid Build Coastguard Worker    // * `text/html` (HTML)
66*d5c09012SAndroid Build Coastguard Worker    // * `application/vnd.openxmlformats-officedocument.wordprocessingml.document` (DOCX)
67*d5c09012SAndroid Build Coastguard Worker    // * `application/vnd.openxmlformats-officedocument.presentationml.presentation` (PPTX)
68*d5c09012SAndroid Build Coastguard Worker    // * `text/plain` (TXT)
69*d5c09012SAndroid Build Coastguard Worker    //
70*d5c09012SAndroid Build Coastguard Worker    // See https://www.iana.org/assignments/media-types/media-types.xhtml.
71*d5c09012SAndroid Build Coastguard Worker    string mime_type = 1;
72*d5c09012SAndroid Build Coastguard Worker  }
73*d5c09012SAndroid Build Coastguard Worker
74*d5c09012SAndroid Build Coastguard Worker  // ACL Information of the Document.
75*d5c09012SAndroid Build Coastguard Worker  message AclInfo {
76*d5c09012SAndroid Build Coastguard Worker    // AclRestriction to model complex inheritance restrictions.
77*d5c09012SAndroid Build Coastguard Worker    //
78*d5c09012SAndroid Build Coastguard Worker    // Example: Modeling a "Both Permit" inheritance, where to access a
79*d5c09012SAndroid Build Coastguard Worker    // child document, user needs to have access to parent document.
80*d5c09012SAndroid Build Coastguard Worker    //
81*d5c09012SAndroid Build Coastguard Worker    // Document Hierarchy - Space_S --> Page_P.
82*d5c09012SAndroid Build Coastguard Worker    //
83*d5c09012SAndroid Build Coastguard Worker    // Readers:
84*d5c09012SAndroid Build Coastguard Worker    //   Space_S: group_1, user_1
85*d5c09012SAndroid Build Coastguard Worker    //   Page_P: group_2, group_3, user_2
86*d5c09012SAndroid Build Coastguard Worker    //
87*d5c09012SAndroid Build Coastguard Worker    // Space_S ACL Restriction -
88*d5c09012SAndroid Build Coastguard Worker    // {
89*d5c09012SAndroid Build Coastguard Worker    //   "acl_info": {
90*d5c09012SAndroid Build Coastguard Worker    //     "readers": [
91*d5c09012SAndroid Build Coastguard Worker    //       {
92*d5c09012SAndroid Build Coastguard Worker    //         "principals": [
93*d5c09012SAndroid Build Coastguard Worker    //           {
94*d5c09012SAndroid Build Coastguard Worker    //             "group_id": "group_1"
95*d5c09012SAndroid Build Coastguard Worker    //           },
96*d5c09012SAndroid Build Coastguard Worker    //           {
97*d5c09012SAndroid Build Coastguard Worker    //             "user_id": "user_1"
98*d5c09012SAndroid Build Coastguard Worker    //           }
99*d5c09012SAndroid Build Coastguard Worker    //         ]
100*d5c09012SAndroid Build Coastguard Worker    //       }
101*d5c09012SAndroid Build Coastguard Worker    //     ]
102*d5c09012SAndroid Build Coastguard Worker    //   }
103*d5c09012SAndroid Build Coastguard Worker    // }
104*d5c09012SAndroid Build Coastguard Worker    //
105*d5c09012SAndroid Build Coastguard Worker    // Page_P ACL Restriction.
106*d5c09012SAndroid Build Coastguard Worker    // {
107*d5c09012SAndroid Build Coastguard Worker    //   "acl_info": {
108*d5c09012SAndroid Build Coastguard Worker    //     "readers": [
109*d5c09012SAndroid Build Coastguard Worker    //       {
110*d5c09012SAndroid Build Coastguard Worker    //         "principals": [
111*d5c09012SAndroid Build Coastguard Worker    //           {
112*d5c09012SAndroid Build Coastguard Worker    //             "group_id": "group_2"
113*d5c09012SAndroid Build Coastguard Worker    //           },
114*d5c09012SAndroid Build Coastguard Worker    //           {
115*d5c09012SAndroid Build Coastguard Worker    //             "group_id": "group_3"
116*d5c09012SAndroid Build Coastguard Worker    //           },
117*d5c09012SAndroid Build Coastguard Worker    //           {
118*d5c09012SAndroid Build Coastguard Worker    //             "user_id": "user_2"
119*d5c09012SAndroid Build Coastguard Worker    //           }
120*d5c09012SAndroid Build Coastguard Worker    //         ],
121*d5c09012SAndroid Build Coastguard Worker    //       },
122*d5c09012SAndroid Build Coastguard Worker    //       {
123*d5c09012SAndroid Build Coastguard Worker    //         "principals": [
124*d5c09012SAndroid Build Coastguard Worker    //           {
125*d5c09012SAndroid Build Coastguard Worker    //             "group_id": "group_1"
126*d5c09012SAndroid Build Coastguard Worker    //           },
127*d5c09012SAndroid Build Coastguard Worker    //           {
128*d5c09012SAndroid Build Coastguard Worker    //             "user_id": "user_1"
129*d5c09012SAndroid Build Coastguard Worker    //           }
130*d5c09012SAndroid Build Coastguard Worker    //         ],
131*d5c09012SAndroid Build Coastguard Worker    //       }
132*d5c09012SAndroid Build Coastguard Worker    //     ]
133*d5c09012SAndroid Build Coastguard Worker    //   }
134*d5c09012SAndroid Build Coastguard Worker    // }
135*d5c09012SAndroid Build Coastguard Worker    message AccessRestriction {
136*d5c09012SAndroid Build Coastguard Worker      // List of principals.
137*d5c09012SAndroid Build Coastguard Worker      repeated Principal principals = 1;
138*d5c09012SAndroid Build Coastguard Worker    }
139*d5c09012SAndroid Build Coastguard Worker
140*d5c09012SAndroid Build Coastguard Worker    // Readers of the document.
141*d5c09012SAndroid Build Coastguard Worker    repeated AccessRestriction readers = 1;
142*d5c09012SAndroid Build Coastguard Worker  }
143*d5c09012SAndroid Build Coastguard Worker
144*d5c09012SAndroid Build Coastguard Worker  // Data representation. One of
145*d5c09012SAndroid Build Coastguard Worker  // [struct_data][google.cloud.discoveryengine.v1alpha.Document.struct_data] or
146*d5c09012SAndroid Build Coastguard Worker  // [json_data][google.cloud.discoveryengine.v1alpha.Document.json_data] should
147*d5c09012SAndroid Build Coastguard Worker  // be provided otherwise an `INVALID_ARGUMENT` error is thrown.
148*d5c09012SAndroid Build Coastguard Worker  oneof data {
149*d5c09012SAndroid Build Coastguard Worker    // The structured JSON data for the document. It should conform to the
150*d5c09012SAndroid Build Coastguard Worker    // registered [Schema][google.cloud.discoveryengine.v1alpha.Schema] or an
151*d5c09012SAndroid Build Coastguard Worker    // `INVALID_ARGUMENT` error is thrown.
152*d5c09012SAndroid Build Coastguard Worker    google.protobuf.Struct struct_data = 4;
153*d5c09012SAndroid Build Coastguard Worker
154*d5c09012SAndroid Build Coastguard Worker    // The JSON string representation of the document. It should conform to the
155*d5c09012SAndroid Build Coastguard Worker    // registered [Schema][google.cloud.discoveryengine.v1alpha.Schema] or an
156*d5c09012SAndroid Build Coastguard Worker    // `INVALID_ARGUMENT` error is thrown.
157*d5c09012SAndroid Build Coastguard Worker    string json_data = 5;
158*d5c09012SAndroid Build Coastguard Worker  }
159*d5c09012SAndroid Build Coastguard Worker
160*d5c09012SAndroid Build Coastguard Worker  // Immutable. The full resource name of the document.
161*d5c09012SAndroid Build Coastguard Worker  // Format:
162*d5c09012SAndroid Build Coastguard Worker  // `projects/{project}/locations/{location}/collections/{collection}/dataStores/{data_store}/branches/{branch}/documents/{document_id}`.
163*d5c09012SAndroid Build Coastguard Worker  //
164*d5c09012SAndroid Build Coastguard Worker  // This field must be a UTF-8 encoded string with a length limit of 1024
165*d5c09012SAndroid Build Coastguard Worker  // characters.
166*d5c09012SAndroid Build Coastguard Worker  string name = 1 [(google.api.field_behavior) = IMMUTABLE];
167*d5c09012SAndroid Build Coastguard Worker
168*d5c09012SAndroid Build Coastguard Worker  // Immutable. The identifier of the document.
169*d5c09012SAndroid Build Coastguard Worker  //
170*d5c09012SAndroid Build Coastguard Worker  // Id should conform to [RFC-1034](https://tools.ietf.org/html/rfc1034)
171*d5c09012SAndroid Build Coastguard Worker  // standard with a length limit of 63 characters.
172*d5c09012SAndroid Build Coastguard Worker  string id = 2 [(google.api.field_behavior) = IMMUTABLE];
173*d5c09012SAndroid Build Coastguard Worker
174*d5c09012SAndroid Build Coastguard Worker  // The identifier of the schema located in the same data store.
175*d5c09012SAndroid Build Coastguard Worker  string schema_id = 3;
176*d5c09012SAndroid Build Coastguard Worker
177*d5c09012SAndroid Build Coastguard Worker  // The unstructured data linked to this document. Content must be set if this
178*d5c09012SAndroid Build Coastguard Worker  // document is under a
179*d5c09012SAndroid Build Coastguard Worker  // `CONTENT_REQUIRED` data store.
180*d5c09012SAndroid Build Coastguard Worker  Content content = 10;
181*d5c09012SAndroid Build Coastguard Worker
182*d5c09012SAndroid Build Coastguard Worker  // The identifier of the parent document. Currently supports at most two level
183*d5c09012SAndroid Build Coastguard Worker  // document hierarchy.
184*d5c09012SAndroid Build Coastguard Worker  //
185*d5c09012SAndroid Build Coastguard Worker  // Id should conform to [RFC-1034](https://tools.ietf.org/html/rfc1034)
186*d5c09012SAndroid Build Coastguard Worker  // standard with a length limit of 63 characters.
187*d5c09012SAndroid Build Coastguard Worker  string parent_document_id = 7;
188*d5c09012SAndroid Build Coastguard Worker
189*d5c09012SAndroid Build Coastguard Worker  // Output only. This field is OUTPUT_ONLY.
190*d5c09012SAndroid Build Coastguard Worker  // It contains derived data that are not in the original input document.
191*d5c09012SAndroid Build Coastguard Worker  google.protobuf.Struct derived_struct_data = 6
192*d5c09012SAndroid Build Coastguard Worker      [(google.api.field_behavior) = OUTPUT_ONLY];
193*d5c09012SAndroid Build Coastguard Worker
194*d5c09012SAndroid Build Coastguard Worker  // Access control information for the document.
195*d5c09012SAndroid Build Coastguard Worker  AclInfo acl_info = 11;
196*d5c09012SAndroid Build Coastguard Worker
197*d5c09012SAndroid Build Coastguard Worker  // Output only. The last time the document was indexed. If this field is set,
198*d5c09012SAndroid Build Coastguard Worker  // the document could be returned in search results.
199*d5c09012SAndroid Build Coastguard Worker  //
200*d5c09012SAndroid Build Coastguard Worker  // This field is OUTPUT_ONLY. If this field is not populated, it means the
201*d5c09012SAndroid Build Coastguard Worker  // document has never been indexed.
202*d5c09012SAndroid Build Coastguard Worker  google.protobuf.Timestamp index_time = 13
203*d5c09012SAndroid Build Coastguard Worker      [(google.api.field_behavior) = OUTPUT_ONLY];
204*d5c09012SAndroid Build Coastguard Worker}
205*d5c09012SAndroid Build Coastguard Worker
206*d5c09012SAndroid Build Coastguard Worker// Document captures all raw metadata information of items to be recommended or
207*d5c09012SAndroid Build Coastguard Worker// searched.
208*d5c09012SAndroid Build Coastguard Workermessage ProcessedDocument {
209*d5c09012SAndroid Build Coastguard Worker  // Output format of the processed document.
210*d5c09012SAndroid Build Coastguard Worker  oneof processed_data_format {
211*d5c09012SAndroid Build Coastguard Worker    // The JSON string representation of the processed document.
212*d5c09012SAndroid Build Coastguard Worker    string json_data = 2;
213*d5c09012SAndroid Build Coastguard Worker  }
214*d5c09012SAndroid Build Coastguard Worker
215*d5c09012SAndroid Build Coastguard Worker  // Required. Full resource name of the referenced document, in the format
216*d5c09012SAndroid Build Coastguard Worker  // `projects/*/locations/*/collections/*/dataStores/*/branches/*/documents/*`.
217*d5c09012SAndroid Build Coastguard Worker  string document = 1 [
218*d5c09012SAndroid Build Coastguard Worker    (google.api.field_behavior) = REQUIRED,
219*d5c09012SAndroid Build Coastguard Worker    (google.api.resource_reference) = {
220*d5c09012SAndroid Build Coastguard Worker      type: "discoveryengine.googleapis.com/Document"
221*d5c09012SAndroid Build Coastguard Worker    }
222*d5c09012SAndroid Build Coastguard Worker  ];
223*d5c09012SAndroid Build Coastguard Worker}
224