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/annotations.proto"; 20import "google/api/client.proto"; 21import "google/api/field_behavior.proto"; 22import "google/api/resource.proto"; 23import "google/apps/meet/v2beta/resource.proto"; 24import "google/protobuf/empty.proto"; 25import "google/protobuf/field_mask.proto"; 26 27option csharp_namespace = "Google.Apps.Meet.V2Beta"; 28option go_package = "cloud.google.com/go/apps/meet/apiv2beta/meetpb;meetpb"; 29option java_multiple_files = true; 30option java_outer_classname = "ServiceProto"; 31option java_package = "com.google.apps.meet.v2beta"; 32option php_namespace = "Google\\Apps\\Meet\\V2beta"; 33option ruby_package = "Google::Apps::Meet::V2beta"; 34 35// REST API for services dealing with spaces. 36service SpacesService { 37 option (google.api.default_host) = "meet.googleapis.com"; 38 39 // [Developer Preview](https://developers.google.com/workspace/preview). 40 // Creates a space. 41 rpc CreateSpace(CreateSpaceRequest) returns (Space) { 42 option (google.api.http) = { 43 post: "/v2beta/spaces" 44 body: "space" 45 }; 46 option (google.api.method_signature) = "space"; 47 } 48 49 // [Developer Preview](https://developers.google.com/workspace/preview). 50 // Gets a space by `space_id` or `meeting_code`. 51 rpc GetSpace(GetSpaceRequest) returns (Space) { 52 option (google.api.http) = { 53 get: "/v2beta/{name=spaces/*}" 54 }; 55 option (google.api.method_signature) = "name"; 56 } 57 58 // [Developer Preview](https://developers.google.com/workspace/preview). 59 // Updates a space. 60 rpc UpdateSpace(UpdateSpaceRequest) returns (Space) { 61 option (google.api.http) = { 62 patch: "/v2beta/{space.name=spaces/*}" 63 body: "space" 64 }; 65 option (google.api.method_signature) = "space,update_mask"; 66 } 67 68 // [Developer Preview](https://developers.google.com/workspace/preview). 69 // Ends an active conference (if there is one). 70 rpc EndActiveConference(EndActiveConferenceRequest) 71 returns (google.protobuf.Empty) { 72 option (google.api.http) = { 73 post: "/v2beta/{name=spaces/*}:endActiveConference" 74 body: "*" 75 }; 76 option (google.api.method_signature) = "name"; 77 } 78} 79 80// REST API for services dealing with conference records. 81service ConferenceRecordsService { 82 option (google.api.default_host) = "meet.googleapis.com"; 83 84 // [Developer Preview](https://developers.google.com/workspace/preview). 85 // Gets a conference record by conference ID. 86 rpc GetConferenceRecord(GetConferenceRecordRequest) 87 returns (ConferenceRecord) { 88 option (google.api.http) = { 89 get: "/v2beta/{name=conferenceRecords/*}" 90 }; 91 option (google.api.method_signature) = "name"; 92 } 93 94 // [Developer Preview](https://developers.google.com/workspace/preview). 95 // Lists the conference records by start time and in descending order. 96 rpc ListConferenceRecords(ListConferenceRecordsRequest) 97 returns (ListConferenceRecordsResponse) { 98 option (google.api.http) = { 99 get: "/v2beta/conferenceRecords" 100 }; 101 } 102 103 // [Developer Preview](https://developers.google.com/workspace/preview). 104 // Gets a participant by participant ID. 105 rpc GetParticipant(GetParticipantRequest) returns (Participant) { 106 option (google.api.http) = { 107 get: "/v2beta/{name=conferenceRecords/*/participants/*}" 108 }; 109 option (google.api.method_signature) = "name"; 110 } 111 112 // [Developer Preview](https://developers.google.com/workspace/preview). 113 // Lists the participants in a conference record, by default ordered by join 114 // time and in descending order. This API supports `fields` as standard 115 // parameters like every other API. However, when the `fields` request 116 // parameter is omitted, this API defaults to `'participants/*, 117 // next_page_token'`. 118 rpc ListParticipants(ListParticipantsRequest) 119 returns (ListParticipantsResponse) { 120 option (google.api.http) = { 121 get: "/v2beta/{parent=conferenceRecords/*}/participants" 122 }; 123 option (google.api.method_signature) = "parent"; 124 } 125 126 // [Developer Preview](https://developers.google.com/workspace/preview). 127 // Gets a participant session by participant session ID. 128 rpc GetParticipantSession(GetParticipantSessionRequest) 129 returns (ParticipantSession) { 130 option (google.api.http) = { 131 get: "/v2beta/{name=conferenceRecords/*/participants/*/participantSessions/*}" 132 }; 133 option (google.api.method_signature) = "name"; 134 } 135 136 // [Developer Preview](https://developers.google.com/workspace/preview). 137 // Lists the participant sessions of a participant in a conference record, by 138 // default ordered by join time and in descending order. This API supports 139 // `fields` as standard parameters like every other API. However, when the 140 // `fields` request parameter is omitted this API defaults to 141 // `'participantsessions/*, next_page_token'`. 142 rpc ListParticipantSessions(ListParticipantSessionsRequest) 143 returns (ListParticipantSessionsResponse) { 144 option (google.api.http) = { 145 get: "/v2beta/{parent=conferenceRecords/*/participants/*}/participantSessions" 146 }; 147 option (google.api.method_signature) = "parent"; 148 } 149 150 // [Developer Preview](https://developers.google.com/workspace/preview). 151 // Gets a recording by recording ID. 152 rpc GetRecording(GetRecordingRequest) returns (Recording) { 153 option (google.api.http) = { 154 get: "/v2beta/{name=conferenceRecords/*/recordings/*}" 155 }; 156 option (google.api.method_signature) = "name"; 157 } 158 159 // [Developer Preview](https://developers.google.com/workspace/preview). 160 // Lists the recording resources from the conference record. 161 rpc ListRecordings(ListRecordingsRequest) returns (ListRecordingsResponse) { 162 option (google.api.http) = { 163 get: "/v2beta/{parent=conferenceRecords/*}/recordings" 164 }; 165 option (google.api.method_signature) = "parent"; 166 } 167 168 // [Developer Preview](https://developers.google.com/workspace/preview). 169 // Gets a transcript by transcript ID. 170 rpc GetTranscript(GetTranscriptRequest) returns (Transcript) { 171 option (google.api.http) = { 172 get: "/v2beta/{name=conferenceRecords/*/transcripts/*}" 173 }; 174 option (google.api.method_signature) = "name"; 175 } 176 177 // [Developer Preview](https://developers.google.com/workspace/preview). 178 // Lists the set of transcripts from the conference record. 179 rpc ListTranscripts(ListTranscriptsRequest) 180 returns (ListTranscriptsResponse) { 181 option (google.api.http) = { 182 get: "/v2beta/{parent=conferenceRecords/*}/transcripts" 183 }; 184 option (google.api.method_signature) = "parent"; 185 } 186 187 // [Developer Preview](https://developers.google.com/workspace/preview). 188 // Gets a `TranscriptEntry` resource by entry ID. 189 // 190 // Note: The transcript entries returned by the Google Meet API might not 191 // match the transcription found in the Google Docs transcript file. This can 192 // occur when the Google Docs transcript file is modified after generation. 193 rpc GetTranscriptEntry(GetTranscriptEntryRequest) returns (TranscriptEntry) { 194 option (google.api.http) = { 195 get: "/v2beta/{name=conferenceRecords/*/transcripts/*/entries/*}" 196 }; 197 option (google.api.method_signature) = "name"; 198 } 199 200 // [Developer Preview](https://developers.google.com/workspace/preview). 201 // Lists the structured transcript entries per transcript. By default, ordered 202 // by start time and in ascending order. 203 // 204 // Note: The transcript entries returned by the Google Meet API might not 205 // match the transcription found in the Google Docs transcript file. This can 206 // occur when the Google Docs transcript file is modified after generation. 207 rpc ListTranscriptEntries(ListTranscriptEntriesRequest) 208 returns (ListTranscriptEntriesResponse) { 209 option (google.api.http) = { 210 get: "/v2beta/{parent=conferenceRecords/*/transcripts/*}/entries" 211 }; 212 option (google.api.method_signature) = "parent"; 213 } 214} 215 216// Request to create a space. 217message CreateSpaceRequest { 218 // Space to be created. As of May 2023, the input space can be empty. Later on 219 // the input space can be non-empty when space configuration is introduced. 220 Space space = 1; 221} 222 223// Request to get a space. 224message GetSpaceRequest { 225 // Required. Resource name of the space. 226 string name = 1 [ 227 (google.api.field_behavior) = REQUIRED, 228 (google.api.resource_reference) = { type: "meet.googleapis.com/Space" } 229 ]; 230} 231 232// Request to update a space. 233message UpdateSpaceRequest { 234 // Required. Space to be updated. 235 Space space = 1 [(google.api.field_behavior) = REQUIRED]; 236 237 // Optional. Field mask used to specify the fields to be updated in the space. 238 // If update_mask isn't provided, it defaults to '*' and updates all 239 // fields provided in the request, including deleting fields not set in the 240 // request. 241 google.protobuf.FieldMask update_mask = 2 242 [(google.api.field_behavior) = OPTIONAL]; 243} 244 245// Request to end an ongoing conference of a space. 246message EndActiveConferenceRequest { 247 // Required. Resource name of the space. 248 string name = 1 [ 249 (google.api.field_behavior) = REQUIRED, 250 (google.api.resource_reference) = { type: "meet.googleapis.com/Space" } 251 ]; 252} 253 254// Request to get a conference record. 255message GetConferenceRecordRequest { 256 // Required. Resource name of the conference. 257 string name = 1 [ 258 (google.api.field_behavior) = REQUIRED, 259 (google.api.resource_reference) = { 260 type: "meet.googleapis.com/ConferenceRecord" 261 } 262 ]; 263} 264 265// Request to fetch list of conference records per user. 266message ListConferenceRecordsRequest { 267 // Optional. Maximum number of conference records to return. The service might 268 // return fewer than this value. If unspecified, at most 25 conference records 269 // are returned. The maximum value is 100; values above 100 are coerced to 270 // 100. Maximum might change in the future. 271 int32 page_size = 1 [(google.api.field_behavior) = OPTIONAL]; 272 273 // Optional. Page token returned from previous List Call. 274 string page_token = 2 [(google.api.field_behavior) = OPTIONAL]; 275 276 // Optional. User specified filtering condition in EBNF format. The following 277 // are the filterable fields: 278 // 279 // * `space.meeting_code` 280 // * `space.name` 281 // * `start_time` 282 // * `end_time` 283 // 284 // For example, `space.meeting_code = "abc-mnop-xyz"`. 285 string filter = 3 [(google.api.field_behavior) = OPTIONAL]; 286} 287 288// Response of ListConferenceRecords method. 289message ListConferenceRecordsResponse { 290 // List of conferences in one page. 291 repeated ConferenceRecord conference_records = 1; 292 293 // Token to be circulated back for further List call if current List does NOT 294 // include all the Conferences. Unset if all conferences have been returned. 295 string next_page_token = 2; 296} 297 298// Request to get a Participant. 299message GetParticipantRequest { 300 // Required. Resource name of the participant. 301 string name = 1 [ 302 (google.api.field_behavior) = REQUIRED, 303 (google.api.resource_reference) = { 304 type: "meet.googleapis.com/Participant" 305 } 306 ]; 307} 308 309// Request to fetch list of participant per conference. 310message ListParticipantsRequest { 311 // Required. Format: `conferenceRecords/{conference_record}` 312 string parent = 1 [ 313 (google.api.field_behavior) = REQUIRED, 314 (google.api.resource_reference) = { 315 child_type: "meet.googleapis.com/Participant" 316 } 317 ]; 318 319 // Maximum number of participants to return. The service might return fewer 320 // than this value. 321 // If unspecified, at most 100 participants are returned. 322 // The maximum value is 250; values above 250 are coerced to 250. 323 // Maximum might change in the future. 324 int32 page_size = 2; 325 326 // Page token returned from previous List Call. 327 string page_token = 3; 328 329 // Optional. User specified filtering condition in EBNF format. The following 330 // are the filterable fields: 331 // 332 // * `earliest_start_time` 333 // * `latest_end_time` 334 // 335 // For example, `latest_end_time IS NULL` returns active participants in 336 // the conference. 337 string filter = 4 [(google.api.field_behavior) = OPTIONAL]; 338} 339 340// Response of ListParticipants method. 341message ListParticipantsResponse { 342 // List of participants in one page. 343 repeated Participant participants = 1; 344 345 // Token to be circulated back for further List call if current List doesn't 346 // include all the participants. Unset if all participants are returned. 347 string next_page_token = 2; 348 349 // Total, exact number of `participants`. By default, this field isn't 350 // included in the response. Set the field mask in 351 // [SystemParameterContext](https://cloud.google.com/apis/docs/system-parameters) 352 // to receive this field in the response. 353 int32 total_size = 3; 354} 355 356// Request to get a participant session. 357message GetParticipantSessionRequest { 358 // Required. Resource name of the participant. 359 string name = 1 [ 360 (google.api.field_behavior) = REQUIRED, 361 (google.api.resource_reference) = { 362 type: "meet.googleapis.com/ParticipantSession" 363 } 364 ]; 365} 366 367// Request to fetch list of participant sessions per conference record per 368// participant. 369message ListParticipantSessionsRequest { 370 // Required. Format: 371 // `conferenceRecords/{conference_record}/participants/{participant}` 372 string parent = 1 [ 373 (google.api.field_behavior) = REQUIRED, 374 (google.api.resource_reference) = { 375 child_type: "meet.googleapis.com/ParticipantSession" 376 } 377 ]; 378 379 // Optional. Maximum number of participant sessions to return. The service 380 // might return fewer than this value. If unspecified, at most 100 381 // participants are returned. The maximum value is 250; values above 250 are 382 // coerced to 250. Maximum might change in the future. 383 int32 page_size = 2 [(google.api.field_behavior) = OPTIONAL]; 384 385 // Optional. Page token returned from previous List Call. 386 string page_token = 3 [(google.api.field_behavior) = OPTIONAL]; 387 388 // Optional. User specified filtering condition in EBNF format. The following 389 // are the filterable fields: 390 // 391 // * `start_time` 392 // * `end_time` 393 // 394 // For example, `end_time IS NULL` returns active participant sessions in 395 // the conference record. 396 string filter = 4 [(google.api.field_behavior) = OPTIONAL]; 397} 398 399// Response of ListParticipants method. 400message ListParticipantSessionsResponse { 401 // List of participants in one page. 402 repeated ParticipantSession participant_sessions = 1; 403 404 // Token to be circulated back for further List call if current List doesn't 405 // include all the participants. Unset if all participants are returned. 406 string next_page_token = 2; 407} 408 409// Request message for GetRecording method. 410message GetRecordingRequest { 411 // Required. Resource name of the recording. 412 string name = 1 [ 413 (google.api.field_behavior) = REQUIRED, 414 (google.api.resource_reference) = { type: "meet.googleapis.com/Recording" } 415 ]; 416} 417 418// Request for ListRecordings method. 419message ListRecordingsRequest { 420 // Required. Format: `conferenceRecords/{conference_record}` 421 string parent = 1 [ 422 (google.api.field_behavior) = REQUIRED, 423 (google.api.resource_reference) = { 424 child_type: "meet.googleapis.com/Recording" 425 } 426 ]; 427 428 // Maximum number of recordings to return. The service might return fewer 429 // than this value. 430 // If unspecified, at most 10 recordings are returned. 431 // The maximum value is 100; values above 100 are coerced to 100. 432 // Maximum might change in the future. 433 int32 page_size = 2; 434 435 // Page token returned from previous List Call. 436 string page_token = 3; 437} 438 439// Response for ListRecordings method. 440message ListRecordingsResponse { 441 // List of recordings in one page. 442 repeated Recording recordings = 1; 443 444 // Token to be circulated back for further List call if current List doesn't 445 // include all the recordings. Unset if all recordings are returned. 446 string next_page_token = 2; 447} 448 449// Request for GetTranscript method. 450message GetTranscriptRequest { 451 // Required. Resource name of the transcript. 452 string name = 1 [ 453 (google.api.field_behavior) = REQUIRED, 454 (google.api.resource_reference) = { type: "meet.googleapis.com/Transcript" } 455 ]; 456} 457 458// Request for ListTranscripts method. 459message ListTranscriptsRequest { 460 // Required. Format: `conferenceRecords/{conference_record}` 461 string parent = 1 [ 462 (google.api.field_behavior) = REQUIRED, 463 (google.api.resource_reference) = { 464 child_type: "meet.googleapis.com/Transcript" 465 } 466 ]; 467 468 // Maximum number of transcripts to return. The service might return fewer 469 // than this value. 470 // If unspecified, at most 10 transcripts are returned. 471 // The maximum value is 100; values above 100 are coerced to 100. 472 // Maximum might change in the future. 473 int32 page_size = 2; 474 475 // Page token returned from previous List Call. 476 string page_token = 3; 477} 478 479// Response for ListTranscripts method. 480message ListTranscriptsResponse { 481 // List of transcripts in one page. 482 repeated Transcript transcripts = 1; 483 484 // Token to be circulated back for further List call if current List doesn't 485 // include all the transcripts. Unset if all transcripts are returned. 486 string next_page_token = 2; 487} 488 489// Request for GetTranscriptEntry method. 490message GetTranscriptEntryRequest { 491 // Required. Resource name of the `TranscriptEntry`. 492 string name = 1 [ 493 (google.api.field_behavior) = REQUIRED, 494 (google.api.resource_reference) = { 495 type: "meet.googleapis.com/TranscriptEntry" 496 } 497 ]; 498} 499 500// Request for ListTranscriptEntries method. 501message ListTranscriptEntriesRequest { 502 // Required. Format: 503 // `conferenceRecords/{conference_record}/transcripts/{transcript}` 504 string parent = 1 [ 505 (google.api.field_behavior) = REQUIRED, 506 (google.api.resource_reference) = { 507 child_type: "meet.googleapis.com/TranscriptEntry" 508 } 509 ]; 510 511 // Maximum number of entries to return. The service might return fewer than 512 // this value. 513 // If unspecified, at most 10 entries are returned. 514 // The maximum value is 100; values above 100 are coerced to 100. 515 // Maximum might change in the future. 516 int32 page_size = 2; 517 518 // Page token returned from previous List Call. 519 string page_token = 3; 520} 521 522// Response for ListTranscriptEntries method 523message ListTranscriptEntriesResponse { 524 // List of TranscriptEntries in one page. 525 repeated TranscriptEntry transcript_entries = 1; 526 527 // Token to be circulated back for further List call if current List doesn't 528 // include all the transcript entries. Unset if all entries are returned. 529 string next_page_token = 2; 530} 531