blob: b851818db92040fdf9100bbc1083742f0f9c487d [file] [log] [blame]
// Copyright 2024 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
module data_sharing.mojom;
// Note: Keep these data structures in sync with
// components/data_sharing/public/protocol/group_data.proto.
import "mojo/public/mojom/base/time.mojom";
import "url/mojom/url.mojom";
// Type of group membership role.
enum MemberRole {
kUnspecified,
kOwner,
kMember,
kInvitee,
kFormerMember,
};
// Data representing a member in a group.
struct GroupMember {
// Gaia id of this member.
string gaia_id;
// Display name.
string display_name;
// Email address.
string email;
// Role of this member.
MemberRole role;
// URL of the avatar of this member.
url.mojom.Url avatar_url;
// Given name of the member.
string given_name;
// Creation time of the member.
mojo_base.mojom.JSTime creation_time;
// Last updated time of the member.
mojo_base.mojom.JSTime last_updated_time;
};
// Data representing a group of users.
struct GroupData {
// ID of the group.
string group_id;
// Name of the group.
string display_name;
// A list of members in this group.
array<GroupMember> members;
// A list of former members in this group.
array<GroupMember> former_members;
// Access token to join the group. It could be empty if the token is expired
// and not regenerated.
string access_token;
};