xref: /aosp_15_r20/external/googleapis/google/apps/meet/v2/service.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.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