xref: /aosp_15_r20/external/googleapis/google/apps/meet/v2beta/resource.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.apps.meet.v2beta;
18
19import "google/api/field_behavior.proto";
20import "google/api/resource.proto";
21import "google/protobuf/timestamp.proto";
22
23option csharp_namespace = "Google.Apps.Meet.V2Beta";
24option go_package = "cloud.google.com/go/apps/meet/apiv2beta/meetpb;meetpb";
25option java_multiple_files = true;
26option java_outer_classname = "ResourceProto";
27option java_package = "com.google.apps.meet.v2beta";
28option php_namespace = "Google\\Apps\\Meet\\V2beta";
29option ruby_package = "Google::Apps::Meet::V2beta";
30
31// [Developer Preview](https://developers.google.com/workspace/preview).
32// Virtual place where conferences are held. Only one active conference can be
33// held in one space at any given time.
34message Space {
35  option (google.api.resource) = {
36    type: "meet.googleapis.com/Space"
37    pattern: "spaces/{space}"
38  };
39
40  // Immutable. Resource name of the space.
41  // Format: `spaces/{space}`
42  string name = 1 [(google.api.field_behavior) = IMMUTABLE];
43
44  // Output only. URI used to join meeting, such as
45  // `https://meet.google.com/abc-mnop-xyz`.
46  string meeting_uri = 2 [(google.api.field_behavior) = OUTPUT_ONLY];
47
48  // Output only. Type friendly code to join the meeting. Format:
49  // `[a-z]+-[a-z]+-[a-z]+` such as `abc-mnop-xyz`. The maximum length is 128
50  // characters. Can ONLY be used as alias of the space ID to get the space.
51  string meeting_code = 3 [(google.api.field_behavior) = OUTPUT_ONLY];
52
53  // Configuration pertaining to the meeting space.
54  SpaceConfig config = 5;
55
56  // Active conference if it exists.
57  ActiveConference active_conference = 6;
58}
59
60// Active conference.
61message ActiveConference {
62  // Output only. Reference to 'ConferenceRecord' resource.
63  // Format: `conferenceRecords/{conference_record}` where `{conference_record}`
64  // is a unique id for each instance of a call within a space.
65  string conference_record = 1 [
66    (google.api.field_behavior) = OUTPUT_ONLY,
67    (google.api.resource_reference) = {
68      type: "meet.googleapis.com/ConferenceRecord"
69    }
70  ];
71}
72
73// The configuration pertaining to a meeting space.
74message SpaceConfig {
75  // Possible access types for a meeting space.
76  enum AccessType {
77    // Default value specified by the user's organization.
78    // Note: This is never returned, as the configured access type is
79    // returned instead.
80    ACCESS_TYPE_UNSPECIFIED = 0;
81
82    // Anyone with the join information (for example, the URL or phone access
83    // information) can join without knocking.
84    OPEN = 1;
85
86    // Members of the host's organization, invited external users, and dial-in
87    // users can join without knocking. Everyone else must knock.
88    TRUSTED = 2;
89
90    // Only invitees can join without knocking. Everyone else must knock.
91    RESTRICTED = 3;
92  }
93
94  // Entry points that can be used to join a meeting.  Example:
95  // `meet.google.com`, the Embed SDK Web, or a mobile application.
96  enum EntryPointAccess {
97    // Unused.
98    ENTRY_POINT_ACCESS_UNSPECIFIED = 0;
99
100    // All entry points are allowed.
101    ALL = 1;
102
103    // Only entry points owned by the Google Cloud project that created the
104    // space can be used to join meetings in this space.  Apps can use the Embed
105    // SDK Web or mobile Meet SDKs to create owned entry points.
106    CREATOR_APP_ONLY = 2;
107  }
108
109  // Access type of the meeting space that determines who can join without
110  // knocking. Default: The user's default access settings.  Controlled by the
111  // user's admin for enterprise users or RESTRICTED.
112  AccessType access_type = 1;
113
114  // Defines the entry points that can be used to join meetings hosted in this
115  // meeting space.
116  // Default: EntryPointAccess.ALL
117  EntryPointAccess entry_point_access = 2;
118}
119
120// [Developer Preview](https://developers.google.com/workspace/preview).
121// Single instance of a meeting held in a space.
122message ConferenceRecord {
123  option (google.api.resource) = {
124    type: "meet.googleapis.com/ConferenceRecord"
125    pattern: "conferenceRecords/{conference_record}"
126    plural: "conferenceRecords"
127    singular: "conferenceRecord"
128  };
129
130  // Identifier. Resource name of the conference record.
131  // Format: `conferenceRecords/{conference_record}` where `{conference_record}`
132  // is a unique id for each instance of a call within a space.
133  string name = 1 [(google.api.field_behavior) = IDENTIFIER];
134
135  // Output only. Timestamp when the conference started, always set.
136  google.protobuf.Timestamp start_time = 2
137      [(google.api.field_behavior) = OUTPUT_ONLY];
138
139  // Output only. Timestamp when the conference ended.
140  // Set for past conferences. Unset if the conference is ongoing.
141  google.protobuf.Timestamp end_time = 3
142      [(google.api.field_behavior) = OUTPUT_ONLY];
143
144  // Output only. Server enforced expire time for when this conference record
145  // resource is deleted. The resource is deleted 30 days after the conference
146  // ends.
147  google.protobuf.Timestamp expire_time = 4
148      [(google.api.field_behavior) = OUTPUT_ONLY];
149
150  // Output only. The space where the conference was held.
151  string space = 5 [
152    (google.api.field_behavior) = OUTPUT_ONLY,
153    (google.api.resource_reference) = { type: "meet.googleapis.com/Space" }
154  ];
155}
156
157// [Developer Preview](https://developers.google.com/workspace/preview).
158// User who attended or is attending a conference.
159message Participant {
160  option (google.api.resource) = {
161    type: "meet.googleapis.com/Participant"
162    pattern: "conferenceRecords/{conference_record}/participants/{participant}"
163    plural: "participants"
164    singular: "participant"
165  };
166
167  oneof user {
168    // Signed-in user.
169    SignedinUser signedin_user = 4;
170
171    // Anonymous user.
172    AnonymousUser anonymous_user = 5;
173
174    // User who calls in from their phone.
175    PhoneUser phone_user = 6;
176  }
177
178  // Output only. Resource name of the participant.
179  // Format: `conferenceRecords/{conference_record}/participants/{participant}`
180  string name = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
181
182  // Output only. Time when the participant joined the meeting for the first
183  // time.
184  google.protobuf.Timestamp earliest_start_time = 7
185      [(google.api.field_behavior) = OUTPUT_ONLY];
186
187  // Output only. Time when the participant left the meeting for the last time.
188  // This can be null if it is an active meeting.
189  google.protobuf.Timestamp latest_end_time = 8
190      [(google.api.field_behavior) = OUTPUT_ONLY];
191}
192
193// [Developer Preview](https://developers.google.com/workspace/preview).
194// Refers to each unique join/leave session when a user joins a conference from
195// a device. Note that any time a user joins the conference a new unique ID is
196// assigned. That means if a user joins a space multiple times from the same
197// device, they're assigned different IDs, and are also be treated as different
198// participant sessions.
199message ParticipantSession {
200  option (google.api.resource) = {
201    type: "meet.googleapis.com/ParticipantSession"
202    pattern: "conferenceRecords/{conference_record}/participants/{participant}/participantSessions/{participant_session}"
203    plural: "participantSessions"
204    singular: "participantSession"
205  };
206
207  // Identifier. Session id.
208  string name = 1 [(google.api.field_behavior) = IDENTIFIER];
209
210  // Output only. Timestamp when the user session started.
211  google.protobuf.Timestamp start_time = 2
212      [(google.api.field_behavior) = OUTPUT_ONLY];
213
214  // Output only. Timestamp when the user session ended. Unset if the user
215  // session hasn’t ended.
216  google.protobuf.Timestamp end_time = 3
217      [(google.api.field_behavior) = OUTPUT_ONLY];
218}
219
220// A signed-in user can be:
221// a) An individual joining from a personal computer, mobile device, or through
222// companion mode.
223// b) A robot account used by conference room devices.
224message SignedinUser {
225  // Output only. Unique ID for the user. Interoperable with Admin SDK API and
226  // People API. Format: `users/{user}`
227  string user = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
228
229  // Output only. For a personal device, it's the user's first and last name.
230  // For a robot account, it's the admin specified device name. For example,
231  // "Altostrat Room".
232  string display_name = 2 [(google.api.field_behavior) = OUTPUT_ONLY];
233}
234
235// User who joins anonymously (meaning not signed into a Google Account).
236message AnonymousUser {
237  // Output only. User provided name when they join a conference anonymously.
238  string display_name = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
239}
240
241// User dialing in from a phone where the user's identity is unknown because
242// they haven't signed in with a Google Account.
243message PhoneUser {
244  // Output only. Partially redacted user's phone number when they call in.
245  string display_name = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
246}
247
248// [Developer Preview](https://developers.google.com/workspace/preview).
249// Metadata about a recording created during a conference.
250message Recording {
251  option (google.api.resource) = {
252    type: "meet.googleapis.com/Recording"
253    pattern: "conferenceRecords/{conference_record}/recordings/{recording}"
254    plural: "recordings"
255    singular: "recording"
256  };
257
258  // Current state of the recording session.
259  enum State {
260    // Default, never used.
261    STATE_UNSPECIFIED = 0;
262
263    // An active recording session has started.
264    STARTED = 1;
265
266    // This recording session has ended, but the recording file hasn't been
267    // generated yet.
268    ENDED = 2;
269
270    // Recording file is generated and ready to download.
271    FILE_GENERATED = 3;
272  }
273
274  oneof destination {
275    // Output only. Recording is saved to Google Drive as an mp4 file. The
276    // `drive_destination` includes the Drive `fileId` that can be used to
277    // download the file using the `files.get` method of the Drive API.
278    DriveDestination drive_destination = 6
279        [(google.api.field_behavior) = OUTPUT_ONLY];
280  }
281
282  // Output only. Resource name of the recording.
283  // Format: `conferenceRecords/{conference_record}/recordings/{recording}`
284  // where `{recording}` is a 1:1 mapping to each unique recording session
285  // during the conference.
286  string name = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
287
288  // Output only. Current state.
289  State state = 3 [(google.api.field_behavior) = OUTPUT_ONLY];
290
291  // Output only. Timestamp when the recording started.
292  google.protobuf.Timestamp start_time = 4
293      [(google.api.field_behavior) = OUTPUT_ONLY];
294
295  // Output only. Timestamp when the recording ended.
296  google.protobuf.Timestamp end_time = 5
297      [(google.api.field_behavior) = OUTPUT_ONLY];
298}
299
300// Export location where a recording file is saved in Google Drive.
301message DriveDestination {
302  // Output only. The `fileId` for the underlying MP4 file. For example,
303  // "1kuceFZohVoCh6FulBHxwy6I15Ogpc4hP". Use `$ GET
304  // https://www.googleapis.com/drive/v3/files/{$fileId}?alt=media` to download
305  // the blob. For more information, see
306  // https://developers.google.com/drive/api/v3/reference/files/get.
307  string file = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
308
309  // Output only. Link used to play back the recording file in the browser. For
310  // example, `https://drive.google.com/file/d/{$fileId}/view`.
311  string export_uri = 2 [(google.api.field_behavior) = OUTPUT_ONLY];
312}
313
314// [Developer Preview](https://developers.google.com/workspace/preview).
315// Metadata for a transcript generated from a conference. It refers to the ASR
316// (Automatic Speech Recognition) result of user's speech during the conference.
317message Transcript {
318  option (google.api.resource) = {
319    type: "meet.googleapis.com/Transcript"
320    pattern: "conferenceRecords/{conference_record}/transcripts/{transcript}"
321    plural: "transcripts"
322    singular: "transcript"
323  };
324
325  // Current state of the transcript session.
326  enum State {
327    // Default, never used.
328    STATE_UNSPECIFIED = 0;
329
330    // An active transcript session has started.
331    STARTED = 1;
332
333    // This transcript session has ended, but the transcript file hasn't been
334    // generated yet.
335    ENDED = 2;
336
337    // Transcript file is generated and ready to download.
338    FILE_GENERATED = 3;
339  }
340
341  oneof destination {
342    // Output only. Where the Google Docs transcript is saved.
343    DocsDestination docs_destination = 6
344        [(google.api.field_behavior) = OUTPUT_ONLY];
345  }
346
347  // Output only. Resource name of the transcript.
348  // Format: `conferenceRecords/{conference_record}/transcripts/{transcript}`,
349  // where `{transcript}` is a 1:1 mapping to each unique transcription session
350  // of the conference.
351  string name = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
352
353  // Output only. Current state.
354  State state = 3 [(google.api.field_behavior) = OUTPUT_ONLY];
355
356  // Output only. Timestamp when the transcript started.
357  google.protobuf.Timestamp start_time = 4
358      [(google.api.field_behavior) = OUTPUT_ONLY];
359
360  // Output only. Timestamp when the transcript stopped.
361  google.protobuf.Timestamp end_time = 5
362      [(google.api.field_behavior) = OUTPUT_ONLY];
363}
364
365// Google Docs location where the transcript file is saved.
366message DocsDestination {
367  // Output only. The document ID for the underlying Google Docs transcript
368  // file. For example, "1kuceFZohVoCh6FulBHxwy6I15Ogpc4hP". Use the
369  // `documents.get` method of the Google Docs API
370  // (https://developers.google.com/docs/api/reference/rest/v1/documents/get) to
371  // fetch the content.
372  string document = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
373
374  // Output only. URI for the Google Docs transcript file. Use
375  // `https://docs.google.com/document/d/{$DocumentId}/view` to browse the
376  // transcript in the browser.
377  string export_uri = 2 [(google.api.field_behavior) = OUTPUT_ONLY];
378}
379
380// [Developer Preview](https://developers.google.com/workspace/preview).
381// Single entry for one user’s speech during a transcript session.
382message TranscriptEntry {
383  option (google.api.resource) = {
384    type: "meet.googleapis.com/TranscriptEntry"
385    pattern: "conferenceRecords/{conference_record}/transcripts/{transcript}/entries/{entry}"
386    plural: "transcriptEntries"
387    singular: "transcriptEntry"
388  };
389
390  // Output only. Resource name of the entry. Format:
391  // "conferenceRecords/{conference_record}/transcripts/{transcript}/entries/{entry}"
392  string name = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
393
394  // Output only. Refer to the participant who speaks.
395  string participant = 2 [
396    (google.api.field_behavior) = OUTPUT_ONLY,
397    (google.api.resource_reference) = {
398      type: "meet.googleapis.com/Participant"
399    }
400  ];
401
402  // Output only. The transcribed text of the participant's voice, at maximum
403  // 10K words. Note that the limit is subject to change.
404  string text = 3 [(google.api.field_behavior) = OUTPUT_ONLY];
405
406  // Output only. Language of spoken text, such as "en-US".
407  // IETF BCP 47 syntax (https://tools.ietf.org/html/bcp47)
408  string language_code = 4 [(google.api.field_behavior) = OUTPUT_ONLY];
409
410  // Output only. Timestamp when the transcript entry started.
411  google.protobuf.Timestamp start_time = 5
412      [(google.api.field_behavior) = OUTPUT_ONLY];
413
414  // Output only. Timestamp when the transcript entry ended.
415  google.protobuf.Timestamp end_time = 6
416      [(google.api.field_behavior) = OUTPUT_ONLY];
417}
418