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