# -*- coding: utf-8 -*-
# Generated by the protocol buffer compiler.  DO NOT EDIT!
# source: api/api_proto/users.proto
"""Generated protocol buffer code."""
from google.protobuf import descriptor as _descriptor
from google.protobuf import message as _message
from google.protobuf import reflection as _reflection
from google.protobuf import symbol_database as _symbol_database
# @@protoc_insertion_point(imports)

_sym_db = _symbol_database.Default()


from api.api_proto import user_objects_pb2 as api_dot_api__proto_dot_user__objects__pb2
from api.api_proto import common_pb2 as api_dot_api__proto_dot_common__pb2


DESCRIPTOR = _descriptor.FileDescriptor(
  name='api/api_proto/users.proto',
  package='monorail',
  syntax='proto3',
  serialized_options=b'Z\'infra/monorailv2/api/api_proto;monorail',
  create_key=_descriptor._internal_create_key,
  serialized_pb=b'\n\x19\x61pi/api_proto/users.proto\x12\x08monorail\x1a api/api_proto/user_objects.proto\x1a\x1a\x61pi/api_proto/common.proto\"R\n\x1aListReferencedUsersRequest\x12\x0e\n\x06\x65mails\x18\x02 \x03(\t\x12$\n\tuser_refs\x18\x03 \x03(\x0b\x32\x11.monorail.UserRef\"<\n\x1bListReferencedUsersResponse\x12\x1d\n\x05users\x18\x01 \x03(\x0b\x32\x0e.monorail.User\"5\n\x0eGetUserRequest\x12#\n\x08user_ref\x18\x02 \x01(\x0b\x32\x11.monorail.UserRef\"<\n\x15GetMembershipsRequest\x12#\n\x08user_ref\x18\x02 \x01(\x0b\x32\x11.monorail.UserRef\"?\n\x16GetMembershipsResponse\x12%\n\ngroup_refs\x18\x01 \x03(\x0b\x32\x11.monorail.UserRef\"=\n\x16GetSavedQueriesRequest\x12#\n\x08user_ref\x18\x02 \x01(\x0b\x32\x11.monorail.UserRef\"F\n\x17GetSavedQueriesResponse\x12+\n\rsaved_queries\x18\x01 \x03(\x0b\x32\x14.monorail.SavedQuery\">\n\x17GetUserStarCountRequest\x12#\n\x08user_ref\x18\x02 \x01(\x0b\x32\x11.monorail.UserRef\".\n\x18GetUserStarCountResponse\x12\x12\n\nstar_count\x18\x01 \x01(\r\"G\n\x0fStarUserRequest\x12#\n\x08user_ref\x18\x02 \x01(\x0b\x32\x11.monorail.UserRef\x12\x0f\n\x07starred\x18\x03 \x01(\x08\"&\n\x10StarUserResponse\x12\x12\n\nstar_count\x18\x01 \x01(\r\"7\n\x1fSetExpandPermsPreferenceRequest\x12\x14\n\x0c\x65xpand_perms\x18\x02 \x01(\x08\"\"\n SetExpandPermsPreferenceResponse\":\n\x13GetUserPrefsRequest\x12#\n\x08user_ref\x18\x02 \x01(\x0b\x32\x11.monorail.UserRef\">\n\x14GetUserPrefsResponse\x12&\n\x05prefs\x18\x01 \x03(\x0b\x32\x17.monorail.UserPrefValue\"b\n\x13SetUserPrefsRequest\x12#\n\x08user_ref\x18\x02 \x01(\x0b\x32\x11.monorail.UserRef\x12&\n\x05prefs\x18\x03 \x03(\x0b\x32\x17.monorail.UserPrefValue\"\x16\n\x14SetUserPrefsResponse\"*\n\x19InviteLinkedParentRequest\x12\r\n\x05\x65mail\x18\x02 \x01(\t\"\x1c\n\x1aInviteLinkedParentResponse\")\n\x18\x41\x63\x63\x65ptLinkedChildRequest\x12\r\n\x05\x65mail\x18\x02 \x01(\t\"\x1b\n\x19\x41\x63\x63\x65ptLinkedChildResponse\"\\\n\x15UnlinkAccountsRequest\x12!\n\x06parent\x18\x02 \x01(\x0b\x32\x11.monorail.UserRef\x12 \n\x05\x63hild\x18\x03 \x01(\x0b\x32\x11.monorail.UserRef\"\x18\n\x16UnlinkAccountsResponse\"?\n\x17GetUsersProjectsRequest\x12$\n\tuser_refs\x18\x01 \x03(\x0b\x32\x11.monorail.UserRef\"J\n\x18GetUsersProjectsResponse\x12.\n\x0eusers_projects\x18\x01 \x03(\x0b\x32\x16.monorail.UserProjects\"#\n\x12\x45xpungeUserRequest\x12\r\n\x05\x65mail\x18\x01 \x01(\t\"\x15\n\x13\x45xpungeUserResponse2\xd3\t\n\x05Users\x12\x35\n\x07GetUser\x12\x18.monorail.GetUserRequest\x1a\x0e.monorail.User\"\x00\x12\x64\n\x13ListReferencedUsers\x12$.monorail.ListReferencedUsersRequest\x1a%.monorail.ListReferencedUsersResponse\"\x00\x12U\n\x0eGetMemberships\x12\x1f.monorail.GetMembershipsRequest\x1a .monorail.GetMembershipsResponse\"\x00\x12X\n\x0fGetSavedQueries\x12 .monorail.GetSavedQueriesRequest\x1a!.monorail.GetSavedQueriesResponse\"\x00\x12[\n\x10GetUserStarCount\x12!.monorail.GetUserStarCountRequest\x1a\".monorail.GetUserStarCountResponse\"\x00\x12\x43\n\x08StarUser\x12\x19.monorail.StarUserRequest\x1a\x1a.monorail.StarUserResponse\"\x00\x12O\n\x0cGetUserPrefs\x12\x1d.monorail.GetUserPrefsRequest\x1a\x1e.monorail.GetUserPrefsResponse\"\x00\x12O\n\x0cSetUserPrefs\x12\x1d.monorail.SetUserPrefsRequest\x1a\x1e.monorail.SetUserPrefsResponse\"\x00\x12s\n\x18SetExpandPermsPreference\x12).monorail.SetExpandPermsPreferenceRequest\x1a*.monorail.SetExpandPermsPreferenceResponse\"\x00\x12\x61\n\x12InviteLinkedParent\x12#.monorail.InviteLinkedParentRequest\x1a$.monorail.InviteLinkedParentResponse\"\x00\x12^\n\x11\x41\x63\x63\x65ptLinkedChild\x12\".monorail.AcceptLinkedChildRequest\x1a#.monorail.AcceptLinkedChildResponse\"\x00\x12U\n\x0eUnlinkAccounts\x12\x1f.monorail.UnlinkAccountsRequest\x1a .monorail.UnlinkAccountsResponse\"\x00\x12[\n\x10GetUsersProjects\x12!.monorail.GetUsersProjectsRequest\x1a\".monorail.GetUsersProjectsResponse\"\x00\x12L\n\x0b\x45xpungeUser\x12\x1c.monorail.ExpungeUserRequest\x1a\x1d.monorail.ExpungeUserResponse\"\x00\x42)Z\'infra/monorailv2/api/api_proto;monorailb\x06proto3'
  ,
  dependencies=[api_dot_api__proto_dot_user__objects__pb2.DESCRIPTOR,api_dot_api__proto_dot_common__pb2.DESCRIPTOR,])




_LISTREFERENCEDUSERSREQUEST = _descriptor.Descriptor(
  name='ListReferencedUsersRequest',
  full_name='monorail.ListReferencedUsersRequest',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  create_key=_descriptor._internal_create_key,
  fields=[
    _descriptor.FieldDescriptor(
      name='emails', full_name='monorail.ListReferencedUsersRequest.emails', index=0,
      number=2, type=9, cpp_type=9, label=3,
      has_default_value=False, default_value=[],
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
    _descriptor.FieldDescriptor(
      name='user_refs', full_name='monorail.ListReferencedUsersRequest.user_refs', index=1,
      number=3, type=11, cpp_type=10, label=3,
      has_default_value=False, default_value=[],
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  serialized_options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=101,
  serialized_end=183,
)


_LISTREFERENCEDUSERSRESPONSE = _descriptor.Descriptor(
  name='ListReferencedUsersResponse',
  full_name='monorail.ListReferencedUsersResponse',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  create_key=_descriptor._internal_create_key,
  fields=[
    _descriptor.FieldDescriptor(
      name='users', full_name='monorail.ListReferencedUsersResponse.users', index=0,
      number=1, type=11, cpp_type=10, label=3,
      has_default_value=False, default_value=[],
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  serialized_options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=185,
  serialized_end=245,
)


_GETUSERREQUEST = _descriptor.Descriptor(
  name='GetUserRequest',
  full_name='monorail.GetUserRequest',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  create_key=_descriptor._internal_create_key,
  fields=[
    _descriptor.FieldDescriptor(
      name='user_ref', full_name='monorail.GetUserRequest.user_ref', index=0,
      number=2, type=11, cpp_type=10, label=1,
      has_default_value=False, default_value=None,
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  serialized_options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=247,
  serialized_end=300,
)


_GETMEMBERSHIPSREQUEST = _descriptor.Descriptor(
  name='GetMembershipsRequest',
  full_name='monorail.GetMembershipsRequest',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  create_key=_descriptor._internal_create_key,
  fields=[
    _descriptor.FieldDescriptor(
      name='user_ref', full_name='monorail.GetMembershipsRequest.user_ref', index=0,
      number=2, type=11, cpp_type=10, label=1,
      has_default_value=False, default_value=None,
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  serialized_options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=302,
  serialized_end=362,
)


_GETMEMBERSHIPSRESPONSE = _descriptor.Descriptor(
  name='GetMembershipsResponse',
  full_name='monorail.GetMembershipsResponse',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  create_key=_descriptor._internal_create_key,
  fields=[
    _descriptor.FieldDescriptor(
      name='group_refs', full_name='monorail.GetMembershipsResponse.group_refs', index=0,
      number=1, type=11, cpp_type=10, label=3,
      has_default_value=False, default_value=[],
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  serialized_options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=364,
  serialized_end=427,
)


_GETSAVEDQUERIESREQUEST = _descriptor.Descriptor(
  name='GetSavedQueriesRequest',
  full_name='monorail.GetSavedQueriesRequest',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  create_key=_descriptor._internal_create_key,
  fields=[
    _descriptor.FieldDescriptor(
      name='user_ref', full_name='monorail.GetSavedQueriesRequest.user_ref', index=0,
      number=2, type=11, cpp_type=10, label=1,
      has_default_value=False, default_value=None,
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  serialized_options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=429,
  serialized_end=490,
)


_GETSAVEDQUERIESRESPONSE = _descriptor.Descriptor(
  name='GetSavedQueriesResponse',
  full_name='monorail.GetSavedQueriesResponse',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  create_key=_descriptor._internal_create_key,
  fields=[
    _descriptor.FieldDescriptor(
      name='saved_queries', full_name='monorail.GetSavedQueriesResponse.saved_queries', index=0,
      number=1, type=11, cpp_type=10, label=3,
      has_default_value=False, default_value=[],
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  serialized_options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=492,
  serialized_end=562,
)


_GETUSERSTARCOUNTREQUEST = _descriptor.Descriptor(
  name='GetUserStarCountRequest',
  full_name='monorail.GetUserStarCountRequest',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  create_key=_descriptor._internal_create_key,
  fields=[
    _descriptor.FieldDescriptor(
      name='user_ref', full_name='monorail.GetUserStarCountRequest.user_ref', index=0,
      number=2, type=11, cpp_type=10, label=1,
      has_default_value=False, default_value=None,
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  serialized_options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=564,
  serialized_end=626,
)


_GETUSERSTARCOUNTRESPONSE = _descriptor.Descriptor(
  name='GetUserStarCountResponse',
  full_name='monorail.GetUserStarCountResponse',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  create_key=_descriptor._internal_create_key,
  fields=[
    _descriptor.FieldDescriptor(
      name='star_count', full_name='monorail.GetUserStarCountResponse.star_count', index=0,
      number=1, type=13, cpp_type=3, label=1,
      has_default_value=False, default_value=0,
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  serialized_options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=628,
  serialized_end=674,
)


_STARUSERREQUEST = _descriptor.Descriptor(
  name='StarUserRequest',
  full_name='monorail.StarUserRequest',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  create_key=_descriptor._internal_create_key,
  fields=[
    _descriptor.FieldDescriptor(
      name='user_ref', full_name='monorail.StarUserRequest.user_ref', index=0,
      number=2, type=11, cpp_type=10, label=1,
      has_default_value=False, default_value=None,
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
    _descriptor.FieldDescriptor(
      name='starred', full_name='monorail.StarUserRequest.starred', index=1,
      number=3, type=8, cpp_type=7, label=1,
      has_default_value=False, default_value=False,
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  serialized_options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=676,
  serialized_end=747,
)


_STARUSERRESPONSE = _descriptor.Descriptor(
  name='StarUserResponse',
  full_name='monorail.StarUserResponse',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  create_key=_descriptor._internal_create_key,
  fields=[
    _descriptor.FieldDescriptor(
      name='star_count', full_name='monorail.StarUserResponse.star_count', index=0,
      number=1, type=13, cpp_type=3, label=1,
      has_default_value=False, default_value=0,
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  serialized_options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=749,
  serialized_end=787,
)


_SETEXPANDPERMSPREFERENCEREQUEST = _descriptor.Descriptor(
  name='SetExpandPermsPreferenceRequest',
  full_name='monorail.SetExpandPermsPreferenceRequest',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  create_key=_descriptor._internal_create_key,
  fields=[
    _descriptor.FieldDescriptor(
      name='expand_perms', full_name='monorail.SetExpandPermsPreferenceRequest.expand_perms', index=0,
      number=2, type=8, cpp_type=7, label=1,
      has_default_value=False, default_value=False,
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  serialized_options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=789,
  serialized_end=844,
)


_SETEXPANDPERMSPREFERENCERESPONSE = _descriptor.Descriptor(
  name='SetExpandPermsPreferenceResponse',
  full_name='monorail.SetExpandPermsPreferenceResponse',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  create_key=_descriptor._internal_create_key,
  fields=[
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  serialized_options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=846,
  serialized_end=880,
)


_GETUSERPREFSREQUEST = _descriptor.Descriptor(
  name='GetUserPrefsRequest',
  full_name='monorail.GetUserPrefsRequest',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  create_key=_descriptor._internal_create_key,
  fields=[
    _descriptor.FieldDescriptor(
      name='user_ref', full_name='monorail.GetUserPrefsRequest.user_ref', index=0,
      number=2, type=11, cpp_type=10, label=1,
      has_default_value=False, default_value=None,
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  serialized_options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=882,
  serialized_end=940,
)


_GETUSERPREFSRESPONSE = _descriptor.Descriptor(
  name='GetUserPrefsResponse',
  full_name='monorail.GetUserPrefsResponse',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  create_key=_descriptor._internal_create_key,
  fields=[
    _descriptor.FieldDescriptor(
      name='prefs', full_name='monorail.GetUserPrefsResponse.prefs', index=0,
      number=1, type=11, cpp_type=10, label=3,
      has_default_value=False, default_value=[],
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  serialized_options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=942,
  serialized_end=1004,
)


_SETUSERPREFSREQUEST = _descriptor.Descriptor(
  name='SetUserPrefsRequest',
  full_name='monorail.SetUserPrefsRequest',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  create_key=_descriptor._internal_create_key,
  fields=[
    _descriptor.FieldDescriptor(
      name='user_ref', full_name='monorail.SetUserPrefsRequest.user_ref', index=0,
      number=2, type=11, cpp_type=10, label=1,
      has_default_value=False, default_value=None,
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
    _descriptor.FieldDescriptor(
      name='prefs', full_name='monorail.SetUserPrefsRequest.prefs', index=1,
      number=3, type=11, cpp_type=10, label=3,
      has_default_value=False, default_value=[],
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  serialized_options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=1006,
  serialized_end=1104,
)


_SETUSERPREFSRESPONSE = _descriptor.Descriptor(
  name='SetUserPrefsResponse',
  full_name='monorail.SetUserPrefsResponse',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  create_key=_descriptor._internal_create_key,
  fields=[
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  serialized_options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=1106,
  serialized_end=1128,
)


_INVITELINKEDPARENTREQUEST = _descriptor.Descriptor(
  name='InviteLinkedParentRequest',
  full_name='monorail.InviteLinkedParentRequest',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  create_key=_descriptor._internal_create_key,
  fields=[
    _descriptor.FieldDescriptor(
      name='email', full_name='monorail.InviteLinkedParentRequest.email', index=0,
      number=2, type=9, cpp_type=9, label=1,
      has_default_value=False, default_value=b"".decode('utf-8'),
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  serialized_options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=1130,
  serialized_end=1172,
)


_INVITELINKEDPARENTRESPONSE = _descriptor.Descriptor(
  name='InviteLinkedParentResponse',
  full_name='monorail.InviteLinkedParentResponse',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  create_key=_descriptor._internal_create_key,
  fields=[
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  serialized_options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=1174,
  serialized_end=1202,
)


_ACCEPTLINKEDCHILDREQUEST = _descriptor.Descriptor(
  name='AcceptLinkedChildRequest',
  full_name='monorail.AcceptLinkedChildRequest',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  create_key=_descriptor._internal_create_key,
  fields=[
    _descriptor.FieldDescriptor(
      name='email', full_name='monorail.AcceptLinkedChildRequest.email', index=0,
      number=2, type=9, cpp_type=9, label=1,
      has_default_value=False, default_value=b"".decode('utf-8'),
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  serialized_options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=1204,
  serialized_end=1245,
)


_ACCEPTLINKEDCHILDRESPONSE = _descriptor.Descriptor(
  name='AcceptLinkedChildResponse',
  full_name='monorail.AcceptLinkedChildResponse',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  create_key=_descriptor._internal_create_key,
  fields=[
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  serialized_options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=1247,
  serialized_end=1274,
)


_UNLINKACCOUNTSREQUEST = _descriptor.Descriptor(
  name='UnlinkAccountsRequest',
  full_name='monorail.UnlinkAccountsRequest',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  create_key=_descriptor._internal_create_key,
  fields=[
    _descriptor.FieldDescriptor(
      name='parent', full_name='monorail.UnlinkAccountsRequest.parent', index=0,
      number=2, type=11, cpp_type=10, label=1,
      has_default_value=False, default_value=None,
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
    _descriptor.FieldDescriptor(
      name='child', full_name='monorail.UnlinkAccountsRequest.child', index=1,
      number=3, type=11, cpp_type=10, label=1,
      has_default_value=False, default_value=None,
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  serialized_options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=1276,
  serialized_end=1368,
)


_UNLINKACCOUNTSRESPONSE = _descriptor.Descriptor(
  name='UnlinkAccountsResponse',
  full_name='monorail.UnlinkAccountsResponse',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  create_key=_descriptor._internal_create_key,
  fields=[
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  serialized_options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=1370,
  serialized_end=1394,
)


_GETUSERSPROJECTSREQUEST = _descriptor.Descriptor(
  name='GetUsersProjectsRequest',
  full_name='monorail.GetUsersProjectsRequest',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  create_key=_descriptor._internal_create_key,
  fields=[
    _descriptor.FieldDescriptor(
      name='user_refs', full_name='monorail.GetUsersProjectsRequest.user_refs', index=0,
      number=1, type=11, cpp_type=10, label=3,
      has_default_value=False, default_value=[],
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  serialized_options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=1396,
  serialized_end=1459,
)


_GETUSERSPROJECTSRESPONSE = _descriptor.Descriptor(
  name='GetUsersProjectsResponse',
  full_name='monorail.GetUsersProjectsResponse',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  create_key=_descriptor._internal_create_key,
  fields=[
    _descriptor.FieldDescriptor(
      name='users_projects', full_name='monorail.GetUsersProjectsResponse.users_projects', index=0,
      number=1, type=11, cpp_type=10, label=3,
      has_default_value=False, default_value=[],
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  serialized_options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=1461,
  serialized_end=1535,
)


_EXPUNGEUSERREQUEST = _descriptor.Descriptor(
  name='ExpungeUserRequest',
  full_name='monorail.ExpungeUserRequest',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  create_key=_descriptor._internal_create_key,
  fields=[
    _descriptor.FieldDescriptor(
      name='email', full_name='monorail.ExpungeUserRequest.email', index=0,
      number=1, type=9, cpp_type=9, label=1,
      has_default_value=False, default_value=b"".decode('utf-8'),
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  serialized_options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=1537,
  serialized_end=1572,
)


_EXPUNGEUSERRESPONSE = _descriptor.Descriptor(
  name='ExpungeUserResponse',
  full_name='monorail.ExpungeUserResponse',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  create_key=_descriptor._internal_create_key,
  fields=[
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  serialized_options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=1574,
  serialized_end=1595,
)

_LISTREFERENCEDUSERSREQUEST.fields_by_name['user_refs'].message_type = api_dot_api__proto_dot_common__pb2._USERREF
_LISTREFERENCEDUSERSRESPONSE.fields_by_name['users'].message_type = api_dot_api__proto_dot_user__objects__pb2._USER
_GETUSERREQUEST.fields_by_name['user_ref'].message_type = api_dot_api__proto_dot_common__pb2._USERREF
_GETMEMBERSHIPSREQUEST.fields_by_name['user_ref'].message_type = api_dot_api__proto_dot_common__pb2._USERREF
_GETMEMBERSHIPSRESPONSE.fields_by_name['group_refs'].message_type = api_dot_api__proto_dot_common__pb2._USERREF
_GETSAVEDQUERIESREQUEST.fields_by_name['user_ref'].message_type = api_dot_api__proto_dot_common__pb2._USERREF
_GETSAVEDQUERIESRESPONSE.fields_by_name['saved_queries'].message_type = api_dot_api__proto_dot_common__pb2._SAVEDQUERY
_GETUSERSTARCOUNTREQUEST.fields_by_name['user_ref'].message_type = api_dot_api__proto_dot_common__pb2._USERREF
_STARUSERREQUEST.fields_by_name['user_ref'].message_type = api_dot_api__proto_dot_common__pb2._USERREF
_GETUSERPREFSREQUEST.fields_by_name['user_ref'].message_type = api_dot_api__proto_dot_common__pb2._USERREF
_GETUSERPREFSRESPONSE.fields_by_name['prefs'].message_type = api_dot_api__proto_dot_user__objects__pb2._USERPREFVALUE
_SETUSERPREFSREQUEST.fields_by_name['user_ref'].message_type = api_dot_api__proto_dot_common__pb2._USERREF
_SETUSERPREFSREQUEST.fields_by_name['prefs'].message_type = api_dot_api__proto_dot_user__objects__pb2._USERPREFVALUE
_UNLINKACCOUNTSREQUEST.fields_by_name['parent'].message_type = api_dot_api__proto_dot_common__pb2._USERREF
_UNLINKACCOUNTSREQUEST.fields_by_name['child'].message_type = api_dot_api__proto_dot_common__pb2._USERREF
_GETUSERSPROJECTSREQUEST.fields_by_name['user_refs'].message_type = api_dot_api__proto_dot_common__pb2._USERREF
_GETUSERSPROJECTSRESPONSE.fields_by_name['users_projects'].message_type = api_dot_api__proto_dot_user__objects__pb2._USERPROJECTS
DESCRIPTOR.message_types_by_name['ListReferencedUsersRequest'] = _LISTREFERENCEDUSERSREQUEST
DESCRIPTOR.message_types_by_name['ListReferencedUsersResponse'] = _LISTREFERENCEDUSERSRESPONSE
DESCRIPTOR.message_types_by_name['GetUserRequest'] = _GETUSERREQUEST
DESCRIPTOR.message_types_by_name['GetMembershipsRequest'] = _GETMEMBERSHIPSREQUEST
DESCRIPTOR.message_types_by_name['GetMembershipsResponse'] = _GETMEMBERSHIPSRESPONSE
DESCRIPTOR.message_types_by_name['GetSavedQueriesRequest'] = _GETSAVEDQUERIESREQUEST
DESCRIPTOR.message_types_by_name['GetSavedQueriesResponse'] = _GETSAVEDQUERIESRESPONSE
DESCRIPTOR.message_types_by_name['GetUserStarCountRequest'] = _GETUSERSTARCOUNTREQUEST
DESCRIPTOR.message_types_by_name['GetUserStarCountResponse'] = _GETUSERSTARCOUNTRESPONSE
DESCRIPTOR.message_types_by_name['StarUserRequest'] = _STARUSERREQUEST
DESCRIPTOR.message_types_by_name['StarUserResponse'] = _STARUSERRESPONSE
DESCRIPTOR.message_types_by_name['SetExpandPermsPreferenceRequest'] = _SETEXPANDPERMSPREFERENCEREQUEST
DESCRIPTOR.message_types_by_name['SetExpandPermsPreferenceResponse'] = _SETEXPANDPERMSPREFERENCERESPONSE
DESCRIPTOR.message_types_by_name['GetUserPrefsRequest'] = _GETUSERPREFSREQUEST
DESCRIPTOR.message_types_by_name['GetUserPrefsResponse'] = _GETUSERPREFSRESPONSE
DESCRIPTOR.message_types_by_name['SetUserPrefsRequest'] = _SETUSERPREFSREQUEST
DESCRIPTOR.message_types_by_name['SetUserPrefsResponse'] = _SETUSERPREFSRESPONSE
DESCRIPTOR.message_types_by_name['InviteLinkedParentRequest'] = _INVITELINKEDPARENTREQUEST
DESCRIPTOR.message_types_by_name['InviteLinkedParentResponse'] = _INVITELINKEDPARENTRESPONSE
DESCRIPTOR.message_types_by_name['AcceptLinkedChildRequest'] = _ACCEPTLINKEDCHILDREQUEST
DESCRIPTOR.message_types_by_name['AcceptLinkedChildResponse'] = _ACCEPTLINKEDCHILDRESPONSE
DESCRIPTOR.message_types_by_name['UnlinkAccountsRequest'] = _UNLINKACCOUNTSREQUEST
DESCRIPTOR.message_types_by_name['UnlinkAccountsResponse'] = _UNLINKACCOUNTSRESPONSE
DESCRIPTOR.message_types_by_name['GetUsersProjectsRequest'] = _GETUSERSPROJECTSREQUEST
DESCRIPTOR.message_types_by_name['GetUsersProjectsResponse'] = _GETUSERSPROJECTSRESPONSE
DESCRIPTOR.message_types_by_name['ExpungeUserRequest'] = _EXPUNGEUSERREQUEST
DESCRIPTOR.message_types_by_name['ExpungeUserResponse'] = _EXPUNGEUSERRESPONSE
_sym_db.RegisterFileDescriptor(DESCRIPTOR)

ListReferencedUsersRequest = _reflection.GeneratedProtocolMessageType('ListReferencedUsersRequest', (_message.Message,), {
  'DESCRIPTOR' : _LISTREFERENCEDUSERSREQUEST,
  '__module__' : 'api.api_proto.users_pb2'
  # @@protoc_insertion_point(class_scope:monorail.ListReferencedUsersRequest)
  })
_sym_db.RegisterMessage(ListReferencedUsersRequest)

ListReferencedUsersResponse = _reflection.GeneratedProtocolMessageType('ListReferencedUsersResponse', (_message.Message,), {
  'DESCRIPTOR' : _LISTREFERENCEDUSERSRESPONSE,
  '__module__' : 'api.api_proto.users_pb2'
  # @@protoc_insertion_point(class_scope:monorail.ListReferencedUsersResponse)
  })
_sym_db.RegisterMessage(ListReferencedUsersResponse)

GetUserRequest = _reflection.GeneratedProtocolMessageType('GetUserRequest', (_message.Message,), {
  'DESCRIPTOR' : _GETUSERREQUEST,
  '__module__' : 'api.api_proto.users_pb2'
  # @@protoc_insertion_point(class_scope:monorail.GetUserRequest)
  })
_sym_db.RegisterMessage(GetUserRequest)

GetMembershipsRequest = _reflection.GeneratedProtocolMessageType('GetMembershipsRequest', (_message.Message,), {
  'DESCRIPTOR' : _GETMEMBERSHIPSREQUEST,
  '__module__' : 'api.api_proto.users_pb2'
  # @@protoc_insertion_point(class_scope:monorail.GetMembershipsRequest)
  })
_sym_db.RegisterMessage(GetMembershipsRequest)

GetMembershipsResponse = _reflection.GeneratedProtocolMessageType('GetMembershipsResponse', (_message.Message,), {
  'DESCRIPTOR' : _GETMEMBERSHIPSRESPONSE,
  '__module__' : 'api.api_proto.users_pb2'
  # @@protoc_insertion_point(class_scope:monorail.GetMembershipsResponse)
  })
_sym_db.RegisterMessage(GetMembershipsResponse)

GetSavedQueriesRequest = _reflection.GeneratedProtocolMessageType('GetSavedQueriesRequest', (_message.Message,), {
  'DESCRIPTOR' : _GETSAVEDQUERIESREQUEST,
  '__module__' : 'api.api_proto.users_pb2'
  # @@protoc_insertion_point(class_scope:monorail.GetSavedQueriesRequest)
  })
_sym_db.RegisterMessage(GetSavedQueriesRequest)

GetSavedQueriesResponse = _reflection.GeneratedProtocolMessageType('GetSavedQueriesResponse', (_message.Message,), {
  'DESCRIPTOR' : _GETSAVEDQUERIESRESPONSE,
  '__module__' : 'api.api_proto.users_pb2'
  # @@protoc_insertion_point(class_scope:monorail.GetSavedQueriesResponse)
  })
_sym_db.RegisterMessage(GetSavedQueriesResponse)

GetUserStarCountRequest = _reflection.GeneratedProtocolMessageType('GetUserStarCountRequest', (_message.Message,), {
  'DESCRIPTOR' : _GETUSERSTARCOUNTREQUEST,
  '__module__' : 'api.api_proto.users_pb2'
  # @@protoc_insertion_point(class_scope:monorail.GetUserStarCountRequest)
  })
_sym_db.RegisterMessage(GetUserStarCountRequest)

GetUserStarCountResponse = _reflection.GeneratedProtocolMessageType('GetUserStarCountResponse', (_message.Message,), {
  'DESCRIPTOR' : _GETUSERSTARCOUNTRESPONSE,
  '__module__' : 'api.api_proto.users_pb2'
  # @@protoc_insertion_point(class_scope:monorail.GetUserStarCountResponse)
  })
_sym_db.RegisterMessage(GetUserStarCountResponse)

StarUserRequest = _reflection.GeneratedProtocolMessageType('StarUserRequest', (_message.Message,), {
  'DESCRIPTOR' : _STARUSERREQUEST,
  '__module__' : 'api.api_proto.users_pb2'
  # @@protoc_insertion_point(class_scope:monorail.StarUserRequest)
  })
_sym_db.RegisterMessage(StarUserRequest)

StarUserResponse = _reflection.GeneratedProtocolMessageType('StarUserResponse', (_message.Message,), {
  'DESCRIPTOR' : _STARUSERRESPONSE,
  '__module__' : 'api.api_proto.users_pb2'
  # @@protoc_insertion_point(class_scope:monorail.StarUserResponse)
  })
_sym_db.RegisterMessage(StarUserResponse)

SetExpandPermsPreferenceRequest = _reflection.GeneratedProtocolMessageType('SetExpandPermsPreferenceRequest', (_message.Message,), {
  'DESCRIPTOR' : _SETEXPANDPERMSPREFERENCEREQUEST,
  '__module__' : 'api.api_proto.users_pb2'
  # @@protoc_insertion_point(class_scope:monorail.SetExpandPermsPreferenceRequest)
  })
_sym_db.RegisterMessage(SetExpandPermsPreferenceRequest)

SetExpandPermsPreferenceResponse = _reflection.GeneratedProtocolMessageType('SetExpandPermsPreferenceResponse', (_message.Message,), {
  'DESCRIPTOR' : _SETEXPANDPERMSPREFERENCERESPONSE,
  '__module__' : 'api.api_proto.users_pb2'
  # @@protoc_insertion_point(class_scope:monorail.SetExpandPermsPreferenceResponse)
  })
_sym_db.RegisterMessage(SetExpandPermsPreferenceResponse)

GetUserPrefsRequest = _reflection.GeneratedProtocolMessageType('GetUserPrefsRequest', (_message.Message,), {
  'DESCRIPTOR' : _GETUSERPREFSREQUEST,
  '__module__' : 'api.api_proto.users_pb2'
  # @@protoc_insertion_point(class_scope:monorail.GetUserPrefsRequest)
  })
_sym_db.RegisterMessage(GetUserPrefsRequest)

GetUserPrefsResponse = _reflection.GeneratedProtocolMessageType('GetUserPrefsResponse', (_message.Message,), {
  'DESCRIPTOR' : _GETUSERPREFSRESPONSE,
  '__module__' : 'api.api_proto.users_pb2'
  # @@protoc_insertion_point(class_scope:monorail.GetUserPrefsResponse)
  })
_sym_db.RegisterMessage(GetUserPrefsResponse)

SetUserPrefsRequest = _reflection.GeneratedProtocolMessageType('SetUserPrefsRequest', (_message.Message,), {
  'DESCRIPTOR' : _SETUSERPREFSREQUEST,
  '__module__' : 'api.api_proto.users_pb2'
  # @@protoc_insertion_point(class_scope:monorail.SetUserPrefsRequest)
  })
_sym_db.RegisterMessage(SetUserPrefsRequest)

SetUserPrefsResponse = _reflection.GeneratedProtocolMessageType('SetUserPrefsResponse', (_message.Message,), {
  'DESCRIPTOR' : _SETUSERPREFSRESPONSE,
  '__module__' : 'api.api_proto.users_pb2'
  # @@protoc_insertion_point(class_scope:monorail.SetUserPrefsResponse)
  })
_sym_db.RegisterMessage(SetUserPrefsResponse)

InviteLinkedParentRequest = _reflection.GeneratedProtocolMessageType('InviteLinkedParentRequest', (_message.Message,), {
  'DESCRIPTOR' : _INVITELINKEDPARENTREQUEST,
  '__module__' : 'api.api_proto.users_pb2'
  # @@protoc_insertion_point(class_scope:monorail.InviteLinkedParentRequest)
  })
_sym_db.RegisterMessage(InviteLinkedParentRequest)

InviteLinkedParentResponse = _reflection.GeneratedProtocolMessageType('InviteLinkedParentResponse', (_message.Message,), {
  'DESCRIPTOR' : _INVITELINKEDPARENTRESPONSE,
  '__module__' : 'api.api_proto.users_pb2'
  # @@protoc_insertion_point(class_scope:monorail.InviteLinkedParentResponse)
  })
_sym_db.RegisterMessage(InviteLinkedParentResponse)

AcceptLinkedChildRequest = _reflection.GeneratedProtocolMessageType('AcceptLinkedChildRequest', (_message.Message,), {
  'DESCRIPTOR' : _ACCEPTLINKEDCHILDREQUEST,
  '__module__' : 'api.api_proto.users_pb2'
  # @@protoc_insertion_point(class_scope:monorail.AcceptLinkedChildRequest)
  })
_sym_db.RegisterMessage(AcceptLinkedChildRequest)

AcceptLinkedChildResponse = _reflection.GeneratedProtocolMessageType('AcceptLinkedChildResponse', (_message.Message,), {
  'DESCRIPTOR' : _ACCEPTLINKEDCHILDRESPONSE,
  '__module__' : 'api.api_proto.users_pb2'
  # @@protoc_insertion_point(class_scope:monorail.AcceptLinkedChildResponse)
  })
_sym_db.RegisterMessage(AcceptLinkedChildResponse)

UnlinkAccountsRequest = _reflection.GeneratedProtocolMessageType('UnlinkAccountsRequest', (_message.Message,), {
  'DESCRIPTOR' : _UNLINKACCOUNTSREQUEST,
  '__module__' : 'api.api_proto.users_pb2'
  # @@protoc_insertion_point(class_scope:monorail.UnlinkAccountsRequest)
  })
_sym_db.RegisterMessage(UnlinkAccountsRequest)

UnlinkAccountsResponse = _reflection.GeneratedProtocolMessageType('UnlinkAccountsResponse', (_message.Message,), {
  'DESCRIPTOR' : _UNLINKACCOUNTSRESPONSE,
  '__module__' : 'api.api_proto.users_pb2'
  # @@protoc_insertion_point(class_scope:monorail.UnlinkAccountsResponse)
  })
_sym_db.RegisterMessage(UnlinkAccountsResponse)

GetUsersProjectsRequest = _reflection.GeneratedProtocolMessageType('GetUsersProjectsRequest', (_message.Message,), {
  'DESCRIPTOR' : _GETUSERSPROJECTSREQUEST,
  '__module__' : 'api.api_proto.users_pb2'
  # @@protoc_insertion_point(class_scope:monorail.GetUsersProjectsRequest)
  })
_sym_db.RegisterMessage(GetUsersProjectsRequest)

GetUsersProjectsResponse = _reflection.GeneratedProtocolMessageType('GetUsersProjectsResponse', (_message.Message,), {
  'DESCRIPTOR' : _GETUSERSPROJECTSRESPONSE,
  '__module__' : 'api.api_proto.users_pb2'
  # @@protoc_insertion_point(class_scope:monorail.GetUsersProjectsResponse)
  })
_sym_db.RegisterMessage(GetUsersProjectsResponse)

ExpungeUserRequest = _reflection.GeneratedProtocolMessageType('ExpungeUserRequest', (_message.Message,), {
  'DESCRIPTOR' : _EXPUNGEUSERREQUEST,
  '__module__' : 'api.api_proto.users_pb2'
  # @@protoc_insertion_point(class_scope:monorail.ExpungeUserRequest)
  })
_sym_db.RegisterMessage(ExpungeUserRequest)

ExpungeUserResponse = _reflection.GeneratedProtocolMessageType('ExpungeUserResponse', (_message.Message,), {
  'DESCRIPTOR' : _EXPUNGEUSERRESPONSE,
  '__module__' : 'api.api_proto.users_pb2'
  # @@protoc_insertion_point(class_scope:monorail.ExpungeUserResponse)
  })
_sym_db.RegisterMessage(ExpungeUserResponse)


DESCRIPTOR._options = None

_USERS = _descriptor.ServiceDescriptor(
  name='Users',
  full_name='monorail.Users',
  file=DESCRIPTOR,
  index=0,
  serialized_options=None,
  create_key=_descriptor._internal_create_key,
  serialized_start=1598,
  serialized_end=2833,
  methods=[
  _descriptor.MethodDescriptor(
    name='GetUser',
    full_name='monorail.Users.GetUser',
    index=0,
    containing_service=None,
    input_type=_GETUSERREQUEST,
    output_type=api_dot_api__proto_dot_user__objects__pb2._USER,
    serialized_options=None,
    create_key=_descriptor._internal_create_key,
  ),
  _descriptor.MethodDescriptor(
    name='ListReferencedUsers',
    full_name='monorail.Users.ListReferencedUsers',
    index=1,
    containing_service=None,
    input_type=_LISTREFERENCEDUSERSREQUEST,
    output_type=_LISTREFERENCEDUSERSRESPONSE,
    serialized_options=None,
    create_key=_descriptor._internal_create_key,
  ),
  _descriptor.MethodDescriptor(
    name='GetMemberships',
    full_name='monorail.Users.GetMemberships',
    index=2,
    containing_service=None,
    input_type=_GETMEMBERSHIPSREQUEST,
    output_type=_GETMEMBERSHIPSRESPONSE,
    serialized_options=None,
    create_key=_descriptor._internal_create_key,
  ),
  _descriptor.MethodDescriptor(
    name='GetSavedQueries',
    full_name='monorail.Users.GetSavedQueries',
    index=3,
    containing_service=None,
    input_type=_GETSAVEDQUERIESREQUEST,
    output_type=_GETSAVEDQUERIESRESPONSE,
    serialized_options=None,
    create_key=_descriptor._internal_create_key,
  ),
  _descriptor.MethodDescriptor(
    name='GetUserStarCount',
    full_name='monorail.Users.GetUserStarCount',
    index=4,
    containing_service=None,
    input_type=_GETUSERSTARCOUNTREQUEST,
    output_type=_GETUSERSTARCOUNTRESPONSE,
    serialized_options=None,
    create_key=_descriptor._internal_create_key,
  ),
  _descriptor.MethodDescriptor(
    name='StarUser',
    full_name='monorail.Users.StarUser',
    index=5,
    containing_service=None,
    input_type=_STARUSERREQUEST,
    output_type=_STARUSERRESPONSE,
    serialized_options=None,
    create_key=_descriptor._internal_create_key,
  ),
  _descriptor.MethodDescriptor(
    name='GetUserPrefs',
    full_name='monorail.Users.GetUserPrefs',
    index=6,
    containing_service=None,
    input_type=_GETUSERPREFSREQUEST,
    output_type=_GETUSERPREFSRESPONSE,
    serialized_options=None,
    create_key=_descriptor._internal_create_key,
  ),
  _descriptor.MethodDescriptor(
    name='SetUserPrefs',
    full_name='monorail.Users.SetUserPrefs',
    index=7,
    containing_service=None,
    input_type=_SETUSERPREFSREQUEST,
    output_type=_SETUSERPREFSRESPONSE,
    serialized_options=None,
    create_key=_descriptor._internal_create_key,
  ),
  _descriptor.MethodDescriptor(
    name='SetExpandPermsPreference',
    full_name='monorail.Users.SetExpandPermsPreference',
    index=8,
    containing_service=None,
    input_type=_SETEXPANDPERMSPREFERENCEREQUEST,
    output_type=_SETEXPANDPERMSPREFERENCERESPONSE,
    serialized_options=None,
    create_key=_descriptor._internal_create_key,
  ),
  _descriptor.MethodDescriptor(
    name='InviteLinkedParent',
    full_name='monorail.Users.InviteLinkedParent',
    index=9,
    containing_service=None,
    input_type=_INVITELINKEDPARENTREQUEST,
    output_type=_INVITELINKEDPARENTRESPONSE,
    serialized_options=None,
    create_key=_descriptor._internal_create_key,
  ),
  _descriptor.MethodDescriptor(
    name='AcceptLinkedChild',
    full_name='monorail.Users.AcceptLinkedChild',
    index=10,
    containing_service=None,
    input_type=_ACCEPTLINKEDCHILDREQUEST,
    output_type=_ACCEPTLINKEDCHILDRESPONSE,
    serialized_options=None,
    create_key=_descriptor._internal_create_key,
  ),
  _descriptor.MethodDescriptor(
    name='UnlinkAccounts',
    full_name='monorail.Users.UnlinkAccounts',
    index=11,
    containing_service=None,
    input_type=_UNLINKACCOUNTSREQUEST,
    output_type=_UNLINKACCOUNTSRESPONSE,
    serialized_options=None,
    create_key=_descriptor._internal_create_key,
  ),
  _descriptor.MethodDescriptor(
    name='GetUsersProjects',
    full_name='monorail.Users.GetUsersProjects',
    index=12,
    containing_service=None,
    input_type=_GETUSERSPROJECTSREQUEST,
    output_type=_GETUSERSPROJECTSRESPONSE,
    serialized_options=None,
    create_key=_descriptor._internal_create_key,
  ),
  _descriptor.MethodDescriptor(
    name='ExpungeUser',
    full_name='monorail.Users.ExpungeUser',
    index=13,
    containing_service=None,
    input_type=_EXPUNGEUSERREQUEST,
    output_type=_EXPUNGEUSERRESPONSE,
    serialized_options=None,
    create_key=_descriptor._internal_create_key,
  ),
])
_sym_db.RegisterServiceDescriptor(_USERS)

DESCRIPTOR.services_by_name['Users'] = _USERS

# @@protoc_insertion_point(module_scope)
