// Copyright 2026 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//     http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

syntax = "proto3";

package google.apps.meet.v2;

import "google/api/annotations.proto";
import "google/api/client.proto";
import "google/api/field_behavior.proto";
import "google/api/resource.proto";
import "google/apps/meet/v2/resource.proto";
import "google/protobuf/empty.proto";
import "google/protobuf/field_mask.proto";

option csharp_namespace = "Google.Apps.Meet.V2";
option go_package = "cloud.google.com/go/apps/meet/apiv2/meetpb;meetpb";
option java_multiple_files = true;
option java_outer_classname = "ServiceProto";
option java_package = "com.google.apps.meet.v2";
option php_namespace = "Google\\Apps\\Meet\\V2";
option ruby_package = "Google::Apps::Meet::V2";

// REST API for services dealing with spaces.
service SpacesService {
  option (google.api.default_host) = "meet.googleapis.com";
  option (google.api.oauth_scopes) =
      "https://www.googleapis.com/auth/meetings.space.created,"
      "https://www.googleapis.com/auth/meetings.space.readonly,"
      "https://www.googleapis.com/auth/meetings.space.settings";

  // Creates a space.
  rpc CreateSpace(CreateSpaceRequest) returns (Space) {
    option (google.api.http) = {
      post: "/v2/spaces"
      body: "space"
    };
    option (google.api.method_signature) = "space";
  }

  // Gets details about a meeting space.
  //
  // For an example, see [Get a meeting
  // space](https://developers.google.com/workspace/meet/api/guides/meeting-spaces#get-meeting-space).
  rpc GetSpace(GetSpaceRequest) returns (Space) {
    option (google.api.http) = {
      get: "/v2/{name=spaces/*}"
    };
    option (google.api.method_signature) = "name";
  }

  // Updates details about a meeting space.
  //
  // For an example, see [Update a meeting
  // space](https://developers.google.com/workspace/meet/api/guides/meeting-spaces#update-meeting-space).
  rpc UpdateSpace(UpdateSpaceRequest) returns (Space) {
    option (google.api.http) = {
      patch: "/v2/{space.name=spaces/*}"
      body: "space"
    };
    option (google.api.method_signature) = "space,update_mask";
  }

  // Ends an active conference (if there's one).
  //
  // For an example, see [End active
  // conference](https://developers.google.com/workspace/meet/api/guides/meeting-spaces#end-active-conference).
  rpc EndActiveConference(EndActiveConferenceRequest)
      returns (google.protobuf.Empty) {
    option (google.api.http) = {
      post: "/v2/{name=spaces/*}:endActiveConference"
      body: "*"
    };
    option (google.api.method_signature) = "name";
  }

  // Creates a member.
  //
  // This API supports the `fields` parameter in
  // [SystemParameterContext](https://cloud.google.com/apis/docs/system-parameters).
  // When the `fields` parameter is omitted, this API response will default to
  // "name,email,role".
  rpc CreateMember(CreateMemberRequest) returns (Member) {
    option (google.api.http) = {
      post: "/v2/{parent=spaces/*}/members"
      body: "member"
    };
    option (google.api.method_signature) = "parent,member";
  }

  // Gets a member.
  //
  // This API supports the `fields` parameter in
  // [SystemParameterContext](https://cloud.google.com/apis/docs/system-parameters).
  // When the `fields` parameter is omitted, this API response will default to
  // "name,email,role".
  rpc GetMember(GetMemberRequest) returns (Member) {
    option (google.api.http) = {
      get: "/v2/{name=spaces/*/members/*}"
    };
    option (google.api.method_signature) = "name";
  }

  // Lists members.
  //
  // This API supports the `fields` parameter in
  // [SystemParameterContext](https://cloud.google.com/apis/docs/system-parameters).
  // When the `fields` parameter is omitted this API response will default to
  // "name,email,role".
  rpc ListMembers(ListMembersRequest) returns (ListMembersResponse) {
    option (google.api.http) = {
      get: "/v2/{parent=spaces/*}/members"
    };
    option (google.api.method_signature) = "parent";
  }

  // Deletes the member who was previously assigned roles in the space.
  rpc DeleteMember(DeleteMemberRequest) returns (google.protobuf.Empty) {
    option (google.api.http) = {
      delete: "/v2/{name=spaces/*/members/*}"
    };
    option (google.api.method_signature) = "name";
  }

  // Updates a member.
  rpc UpdateMember(UpdateMemberRequest) returns (Member) {
    option (google.api.http) = {
      patch: "/v2/{member.name=spaces/*/members/*}"
      body: "member"
    };
    option (google.api.method_signature) = "member,update_mask";
  }

  // Updates members of one space within a batch.
  rpc BatchUpdateMembers(BatchUpdateMembersRequest)
      returns (BatchUpdateMembersResponse) {
    option (google.api.http) = {
      post: "/v2/{parent=spaces/*}/members:batchUpdate"
      body: "*"
    };
  }
}

// REST API for services dealing with conference records.
service ConferenceRecordsService {
  option (google.api.default_host) = "meet.googleapis.com";
  option (google.api.oauth_scopes) =
      "https://www.googleapis.com/auth/meetings.space.created,"
      "https://www.googleapis.com/auth/meetings.space.readonly";

  // Gets a conference record by conference ID.
  rpc GetConferenceRecord(GetConferenceRecordRequest)
      returns (ConferenceRecord) {
    option (google.api.http) = {
      get: "/v2/{name=conferenceRecords/*}"
    };
    option (google.api.method_signature) = "name";
  }

  // Lists the conference records. By default, ordered by start time and in
  // descending order.
  rpc ListConferenceRecords(ListConferenceRecordsRequest)
      returns (ListConferenceRecordsResponse) {
    option (google.api.http) = {
      get: "/v2/conferenceRecords"
    };
  }

  // Gets a participant by participant ID.
  rpc GetParticipant(GetParticipantRequest) returns (Participant) {
    option (google.api.http) = {
      get: "/v2/{name=conferenceRecords/*/participants/*}"
    };
    option (google.api.method_signature) = "name";
  }

  // Lists the participants in a conference record. By default, ordered by join
  // time and in descending order. This API supports `fields` as standard
  // parameters like every other API. However, when the `fields` request
  // parameter is omitted, this API defaults to `'participants/*,
  // next_page_token'`.
  rpc ListParticipants(ListParticipantsRequest)
      returns (ListParticipantsResponse) {
    option (google.api.http) = {
      get: "/v2/{parent=conferenceRecords/*}/participants"
    };
    option (google.api.method_signature) = "parent";
  }

  // Gets a participant session by participant session ID.
  rpc GetParticipantSession(GetParticipantSessionRequest)
      returns (ParticipantSession) {
    option (google.api.http) = {
      get: "/v2/{name=conferenceRecords/*/participants/*/participantSessions/*}"
    };
    option (google.api.method_signature) = "name";
  }

  // Lists the participant sessions of a participant in a conference record. By
  // default, ordered by join time and in descending order. This API supports
  // `fields` as standard parameters like every other API. However, when the
  // `fields` request parameter is omitted this API defaults to
  // `'participantsessions/*, next_page_token'`.
  rpc ListParticipantSessions(ListParticipantSessionsRequest)
      returns (ListParticipantSessionsResponse) {
    option (google.api.http) = {
      get: "/v2/{parent=conferenceRecords/*/participants/*}/participantSessions"
    };
    option (google.api.method_signature) = "parent";
  }

  // Gets a recording by recording ID.
  rpc GetRecording(GetRecordingRequest) returns (Recording) {
    option (google.api.http) = {
      get: "/v2/{name=conferenceRecords/*/recordings/*}"
    };
    option (google.api.method_signature) = "name";
  }

  // Lists the recording resources from the conference record. By default,
  // ordered by start time and in ascending order.
  rpc ListRecordings(ListRecordingsRequest) returns (ListRecordingsResponse) {
    option (google.api.http) = {
      get: "/v2/{parent=conferenceRecords/*}/recordings"
    };
    option (google.api.method_signature) = "parent";
  }

  // Gets a transcript by transcript ID.
  rpc GetTranscript(GetTranscriptRequest) returns (Transcript) {
    option (google.api.http) = {
      get: "/v2/{name=conferenceRecords/*/transcripts/*}"
    };
    option (google.api.method_signature) = "name";
  }

  // Lists the set of transcripts from the conference record. By default,
  // ordered by start time and in ascending order.
  rpc ListTranscripts(ListTranscriptsRequest)
      returns (ListTranscriptsResponse) {
    option (google.api.http) = {
      get: "/v2/{parent=conferenceRecords/*}/transcripts"
    };
    option (google.api.method_signature) = "parent";
  }

  // Gets a `TranscriptEntry` resource by entry ID.
  //
  // Note: The transcript entries returned by the Google Meet API might not
  // match the transcription found in the Google Docs transcript file. This can
  // occur when 1) we have interleaved speakers within milliseconds, or
  // 2) the Google Docs transcript file is modified after generation.
  rpc GetTranscriptEntry(GetTranscriptEntryRequest) returns (TranscriptEntry) {
    option (google.api.http) = {
      get: "/v2/{name=conferenceRecords/*/transcripts/*/entries/*}"
    };
    option (google.api.method_signature) = "name";
  }

  // Lists the structured transcript entries per transcript. By default, ordered
  // by start time and in ascending order.
  //
  // Note: The transcript entries returned by the Google Meet API might not
  // match the transcription found in the Google Docs transcript file. This can
  // occur when 1) we have interleaved speakers within milliseconds, or
  // 2) the Google Docs transcript file is modified after generation.
  rpc ListTranscriptEntries(ListTranscriptEntriesRequest)
      returns (ListTranscriptEntriesResponse) {
    option (google.api.http) = {
      get: "/v2/{parent=conferenceRecords/*/transcripts/*}/entries"
    };
    option (google.api.method_signature) = "parent";
  }

  // Gets smart notes by smart note ID.
  rpc GetSmartNote(GetSmartNoteRequest) returns (SmartNote) {
    option (google.api.http) = {
      get: "/v2/{name=conferenceRecords/*/smartNotes/*}"
    };
    option (google.api.method_signature) = "name";
  }

  // Lists the set of smart notes from the conference record. By default,
  // ordered by start time and in ascending order.
  rpc ListSmartNotes(ListSmartNotesRequest) returns (ListSmartNotesResponse) {
    option (google.api.http) = {
      get: "/v2/{parent=conferenceRecords/*}/smartNotes"
    };
    option (google.api.method_signature) = "parent";
  }
}

// Request to create a space.
message CreateSpaceRequest {
  // Space to be created. As of May 2023, the input space can be empty. Later on
  // the input space can be non-empty when space configuration is introduced.
  Space space = 1;
}

// Request to get a space.
message GetSpaceRequest {
  // Required. Resource name of the space.
  //
  // Format: `spaces/{space}` or `spaces/{meetingCode}`.
  //
  // `{space}` is the resource identifier for the space. It's a unique,
  // server-generated ID and is case sensitive. For example, `jQCFfuBOdN5z`.
  //
  // `{meetingCode}` is an alias for the space. It's a typeable, unique
  // character string and is non-case sensitive. For example, `abc-mnop-xyz`.
  // The maximum length is 128 characters.
  //
  // A `meetingCode` shouldn't be stored long term as it can become
  // dissociated from a meeting space and can be reused for different meeting
  // spaces in the future. Generally, a `meetingCode` expires 365 days after
  // last use. For more information, see [Learn about meeting codes in Google
  // Meet](https://support.google.com/meet/answer/10710509).
  //
  // For more information, see [How Meet identifies a meeting
  // space](https://developers.google.com/workspace/meet/api/guides/meeting-spaces#identify-meeting-space).
  string name = 1 [
    (google.api.field_behavior) = REQUIRED,
    (google.api.resource_reference) = { type: "meet.googleapis.com/Space" }
  ];
}

// Request to update a space.
message UpdateSpaceRequest {
  // Required. Space to be updated.
  Space space = 1 [(google.api.field_behavior) = REQUIRED];

  // Optional. Field mask used to specify the fields to be updated in the space.
  // If update_mask isn't provided(not set, set with empty paths, or only has ""
  // as paths), it defaults to update all fields provided with values in the
  // request.
  // Using "*" as update_mask will update all fields, including deleting fields
  // not set in the request.
  google.protobuf.FieldMask update_mask = 2
      [(google.api.field_behavior) = OPTIONAL];
}

// Request to end an ongoing conference of a space.
message EndActiveConferenceRequest {
  // Required. Resource name of the space.
  //
  // Format: `spaces/{space}`.
  //
  // `{space}` is the resource identifier for the space. It's a unique,
  // server-generated ID and is case sensitive. For example, `jQCFfuBOdN5z`.
  //
  // For more information, see [How Meet identifies a meeting
  // space](https://developers.google.com/workspace/meet/api/guides/meeting-spaces#identify-meeting-space).
  string name = 1 [
    (google.api.field_behavior) = REQUIRED,
    (google.api.resource_reference) = { type: "meet.googleapis.com/Space" }
  ];
}

// Request to create a member for a space.
message CreateMemberRequest {
  // Required. Format: spaces/{space}
  string parent = 1 [
    (google.api.field_behavior) = REQUIRED,
    (google.api.resource_reference) = {
      child_type: "meet.googleapis.com/Member"
    }
  ];

  // Required. The member to be created.
  Member member = 2 [(google.api.field_behavior) = REQUIRED];
}

// Request to get a member from a space.
message GetMemberRequest {
  // Required. Format: “spaces/{space}/members/{member}”
  string name = 1 [
    (google.api.field_behavior) = REQUIRED,
    (google.api.resource_reference) = { type: "meet.googleapis.com/Member" }
  ];
}

// Request to list all members of a space.
message ListMembersRequest {
  // Required. Format: spaces/{space}
  string parent = 1 [
    (google.api.field_behavior) = REQUIRED,
    (google.api.resource_reference) = {
      child_type: "meet.googleapis.com/Member"
    }
  ];

  // Optional. Maximum number of members to return. The service might return
  // fewer than this value. If unspecified or set to 0, at most 250 members are
  // returned. The maximum value is 500; values above 500 are coerced to 500.
  // Maximum might change in the future.
  int32 page_size = 2 [(google.api.field_behavior) = OPTIONAL];

  // Optional. Page token returned from previous List Call.
  string page_token = 3 [(google.api.field_behavior) = OPTIONAL];
}

// Response of list members.
message ListMembersResponse {
  // The list of members for the current page.
  repeated Member members = 1;

  // Token to be circulated back for further list call if current list doesn't
  // include all the members. Unset if all members are returned.
  string next_page_token = 2;
}

// Request to delete a member from a space.
message DeleteMemberRequest {
  // Required. Format: “spaces/{space}/members/{member}”
  string name = 1 [
    (google.api.field_behavior) = REQUIRED,
    (google.api.resource_reference) = { type: "meet.googleapis.com/Member" }
  ];
}

// Request to update a member.
message UpdateMemberRequest {
  // Required. The Member to update.
  // Format: spaces/{space}/members/{member}
  Member member = 1 [(google.api.field_behavior) = REQUIRED];

  // Optional. Field mask used to specify the fields to be updated in the
  // member. If update_mask isn't provided(not set, set with empty paths, or
  // only has "" as paths), it defaults to update all fields provided with
  // values in the request. Using "*" as update_mask will update all fields,
  // including deleting fields not set in the request. In case of BatchUpdate,
  // it must be absent or the same as the update_mask in
  // BatchUpdateMembersRequest when UpdateMemberRequest is built as a child
  // request of BatchUpdateMembersRequest.
  google.protobuf.FieldMask update_mask = 2
      [(google.api.field_behavior) = OPTIONAL];
}

// Request to update members of one space within a batch.
message BatchUpdateMembersRequest {
  // Required. The parent resource shared by all Members being updated.
  // Format: spaces/{space}
  string parent = 1 [
    (google.api.field_behavior) = REQUIRED,
    (google.api.resource_reference) = {
      child_type: "meet.googleapis.com/Member"
    }
  ];

  // Required. The request message specifying the resources to update.
  // A maximum of 500 members can be modified in a batch.
  repeated UpdateMemberRequest requests = 2
      [(google.api.field_behavior) = REQUIRED];

  // Optional. Top-level field mask used to specify the fields to be updated in
  // the member for all UpdateMemberRequests. There are 4 possible scenarios for
  // top-level and child field mask:
  // 1. top-level and child field mask is absent:
  //    All fields provided in the requests are updated, including deleting
  //    fields not set in the requests.
  // 2. top-level field mask is present but child field mask is absent:
  //    The fields specified in the top-level field mask are updated.
  // 3. top-level and child field mask is present:
  //    The child field mask must be the same as the top-level field mask.
  // 4. top-level field mask is absent but child field mask is present:
  //    It isn't supported and will return an error.
  google.protobuf.FieldMask update_mask = 3
      [(google.api.field_behavior) = OPTIONAL];
}

// Response of batch update members.
message BatchUpdateMembersResponse {
  // Members updated.
  repeated Member members = 1;
}

// Request to get a conference record.
message GetConferenceRecordRequest {
  // Required. Resource name of the conference.
  string name = 1 [
    (google.api.field_behavior) = REQUIRED,
    (google.api.resource_reference) = {
      type: "meet.googleapis.com/ConferenceRecord"
    }
  ];
}

// Request to fetch list of conference records per user.
message ListConferenceRecordsRequest {
  // Optional. Maximum number of conference records to return. The service might
  // return fewer than this value. If unspecified, at most 25 conference records
  // are returned. The maximum value is 100; values above 100 are coerced to
  // 100. Maximum might change in the future.
  int32 page_size = 1 [(google.api.field_behavior) = OPTIONAL];

  // Optional. Page token returned from previous List Call.
  string page_token = 2 [(google.api.field_behavior) = OPTIONAL];

  // Optional. User specified filtering condition in [EBNF
  // format](https://en.wikipedia.org/wiki/Extended_Backus%E2%80%93Naur_form).
  // The following are the filterable fields:
  //
  // * `space.meeting_code`
  // * `space.name`
  // * `start_time`
  // * `end_time`
  //
  // For example, consider the following filters:
  //
  // * `space.name = "spaces/NAME"`
  // * `space.meeting_code = "abc-mnop-xyz"`
  // * `start_time>="2024-01-01T00:00:00.000Z" AND
  // start_time<="2024-01-02T00:00:00.000Z"`
  // * `end_time IS NULL`
  string filter = 3 [(google.api.field_behavior) = OPTIONAL];
}

// Response of ListConferenceRecords method.
message ListConferenceRecordsResponse {
  // List of conferences in one page.
  repeated ConferenceRecord conference_records = 1;

  // Token to be circulated back for further List call if current List does NOT
  // include all the Conferences. Unset if all conferences have been returned.
  string next_page_token = 2;
}

// Request to get a participant.
message GetParticipantRequest {
  // Required. Resource name of the participant.
  string name = 1 [
    (google.api.field_behavior) = REQUIRED,
    (google.api.resource_reference) = {
      type: "meet.googleapis.com/Participant"
    }
  ];
}

// Request to fetch list of participants per conference.
message ListParticipantsRequest {
  // Required. Format: `conferenceRecords/{conference_record}`
  string parent = 1 [
    (google.api.field_behavior) = REQUIRED,
    (google.api.resource_reference) = {
      child_type: "meet.googleapis.com/Participant"
    }
  ];

  // Maximum number of participants to return. The service might return fewer
  // than this value.
  // If unspecified, at most 100 participants are returned.
  // The maximum value is 250; values above 250 are coerced to 250.
  // Maximum might change in the future.
  int32 page_size = 2;

  // Page token returned from previous List Call.
  string page_token = 3;

  // Optional. User specified filtering condition in [EBNF
  // format](https://en.wikipedia.org/wiki/Extended_Backus%E2%80%93Naur_form).
  // The following are the filterable fields:
  //
  // * `earliest_start_time`
  // * `latest_end_time`
  //
  // For example, `latest_end_time IS NULL` returns active participants in
  // the conference.
  string filter = 4 [(google.api.field_behavior) = OPTIONAL];
}

// Response of ListParticipants method.
message ListParticipantsResponse {
  // List of participants in one page.
  repeated Participant participants = 1;

  // Token to be circulated back for further List call if current List doesn't
  // include all the participants. Unset if all participants are returned.
  string next_page_token = 2;

  // Total, exact number of `participants`. By default, this field isn't
  // included in the response. Set the field mask in
  // [SystemParameterContext](https://cloud.google.com/apis/docs/system-parameters)
  // to receive this field in the response.
  int32 total_size = 3;
}

// Request to get a participant session.
message GetParticipantSessionRequest {
  // Required. Resource name of the participant.
  string name = 1 [
    (google.api.field_behavior) = REQUIRED,
    (google.api.resource_reference) = {
      type: "meet.googleapis.com/ParticipantSession"
    }
  ];
}

// Request to fetch list of participant sessions per conference record, per
// participant.
message ListParticipantSessionsRequest {
  // Required. Format:
  // `conferenceRecords/{conference_record}/participants/{participant}`
  string parent = 1 [
    (google.api.field_behavior) = REQUIRED,
    (google.api.resource_reference) = {
      child_type: "meet.googleapis.com/ParticipantSession"
    }
  ];

  // Optional. Maximum number of participant sessions to return. The service
  // might return fewer than this value. If unspecified, at most 100
  // participants are returned. The maximum value is 250; values above 250 are
  // coerced to 250. Maximum might change in the future.
  int32 page_size = 2 [(google.api.field_behavior) = OPTIONAL];

  // Optional. Page token returned from previous List Call.
  string page_token = 3 [(google.api.field_behavior) = OPTIONAL];

  // Optional. User specified filtering condition in [EBNF
  // format](https://en.wikipedia.org/wiki/Extended_Backus%E2%80%93Naur_form).
  // The following are the filterable fields:
  //
  // * `start_time`
  // * `end_time`
  //
  // For example, `end_time IS NULL` returns active participant sessions in
  // the conference record.
  string filter = 4 [(google.api.field_behavior) = OPTIONAL];
}

// Response of ListParticipants method.
message ListParticipantSessionsResponse {
  // List of participants in one page.
  repeated ParticipantSession participant_sessions = 1;

  // Token to be circulated back for further List call if current List doesn't
  // include all the participants. Unset if all participants are returned.
  string next_page_token = 2;
}

// Request message for GetRecording method.
message GetRecordingRequest {
  // Required. Resource name of the recording.
  string name = 1 [
    (google.api.field_behavior) = REQUIRED,
    (google.api.resource_reference) = { type: "meet.googleapis.com/Recording" }
  ];
}

// Request for ListRecordings method.
message ListRecordingsRequest {
  // Required. Format: `conferenceRecords/{conference_record}`
  string parent = 1 [
    (google.api.field_behavior) = REQUIRED,
    (google.api.resource_reference) = {
      child_type: "meet.googleapis.com/Recording"
    }
  ];

  // Maximum number of recordings to return. The service might return fewer
  // than this value.
  // If unspecified, at most 10 recordings are returned.
  // The maximum value is 100; values above 100 are coerced to 100.
  // Maximum might change in the future.
  int32 page_size = 2;

  // Page token returned from previous List Call.
  string page_token = 3;
}

// Response for ListRecordings method.
message ListRecordingsResponse {
  // List of recordings in one page.
  repeated Recording recordings = 1;

  // Token to be circulated back for further List call if current List doesn't
  // include all the recordings. Unset if all recordings are returned.
  string next_page_token = 2;
}

// Request for GetTranscript method.
message GetTranscriptRequest {
  // Required. Resource name of the transcript.
  string name = 1 [
    (google.api.field_behavior) = REQUIRED,
    (google.api.resource_reference) = { type: "meet.googleapis.com/Transcript" }
  ];
}

// Request for ListTranscripts method.
message ListTranscriptsRequest {
  // Required. Format: `conferenceRecords/{conference_record}`
  string parent = 1 [
    (google.api.field_behavior) = REQUIRED,
    (google.api.resource_reference) = {
      child_type: "meet.googleapis.com/Transcript"
    }
  ];

  // Maximum number of transcripts to return. The service might return fewer
  // than this value.
  // If unspecified, at most 10 transcripts are returned.
  // The maximum value is 100; values above 100 are coerced to 100.
  // Maximum might change in the future.
  int32 page_size = 2;

  // Page token returned from previous List Call.
  string page_token = 3;
}

// Response for ListTranscripts method.
message ListTranscriptsResponse {
  // List of transcripts in one page.
  repeated Transcript transcripts = 1;

  // Token to be circulated back for further List call if current List doesn't
  // include all the transcripts. Unset if all transcripts are returned.
  string next_page_token = 2;
}

// Request for GetTranscriptEntry method.
message GetTranscriptEntryRequest {
  // Required. Resource name of the `TranscriptEntry`.
  string name = 1 [
    (google.api.field_behavior) = REQUIRED,
    (google.api.resource_reference) = {
      type: "meet.googleapis.com/TranscriptEntry"
    }
  ];
}

// Request for ListTranscriptEntries method.
message ListTranscriptEntriesRequest {
  // Required. Format:
  // `conferenceRecords/{conference_record}/transcripts/{transcript}`
  string parent = 1 [
    (google.api.field_behavior) = REQUIRED,
    (google.api.resource_reference) = {
      child_type: "meet.googleapis.com/TranscriptEntry"
    }
  ];

  // Maximum number of entries to return. The service might return fewer than
  // this value.
  // If unspecified, at most 10 entries are returned.
  // The maximum value is 100; values above 100 are coerced to 100.
  // Maximum might change in the future.
  int32 page_size = 2;

  // Page token returned from previous List Call.
  string page_token = 3;
}

// Response for ListTranscriptEntries method.
message ListTranscriptEntriesResponse {
  // List of TranscriptEntries in one page.
  repeated TranscriptEntry transcript_entries = 1;

  // Token to be circulated back for further List call if current List doesn't
  // include all the transcript entries. Unset if all entries are returned.
  string next_page_token = 2;
}

// Request for GetSmartNote method.
message GetSmartNoteRequest {
  // Required. Resource name of the smart note.
  // Format: conferenceRecords/{conference_record}/smartNotes/{smart_note}
  string name = 1 [
    (google.api.field_behavior) = REQUIRED,
    (google.api.resource_reference) = { type: "meet.googleapis.com/SmartNote" }
  ];
}

// Request for ListSmartNotes method.
message ListSmartNotesRequest {
  // Required. Format: `conferenceRecords/{conference_record}`
  string parent = 1 [
    (google.api.field_behavior) = REQUIRED,
    (google.api.resource_reference) = {
      child_type: "meet.googleapis.com/SmartNote"
    }
  ];

  // Optional. Maximum number of smart notes to return. The service might return
  // fewer than this value. If unspecified, at most 10 smart notes are returned.
  // The maximum value is 100; values above 100 are coerced to 100.
  // Maximum might change in the future.
  int32 page_size = 2 [(google.api.field_behavior) = OPTIONAL];

  // Optional. Page token returned from previous List Call.
  string page_token = 3 [(google.api.field_behavior) = OPTIONAL];
}

// Response for ListSmartNotes method.
message ListSmartNotesResponse {
  // List of smart notes in one page.
  repeated SmartNote smart_notes = 1;

  // Token to be circulated back for further List call if current List doesn't
  // include all the smart notes. Unset if all smart notes are returned.
  string next_page_token = 2;
}
