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