# -*- coding: utf-8 -*-
# Generated by the protocol buffer compiler.  DO NOT EDIT!
# source: api/v3/api_proto/users.proto

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 google.api import field_behavior_pb2 as google_dot_api_dot_field__behavior__pb2
from google.api import resource_pb2 as google_dot_api_dot_resource__pb2
from api.v3.api_proto import user_objects_pb2 as api_dot_v3_dot_api__proto_dot_user__objects__pb2
from google.protobuf import empty_pb2 as google_dot_protobuf_dot_empty__pb2
from google.protobuf import field_mask_pb2 as google_dot_protobuf_dot_field__mask__pb2


DESCRIPTOR = _descriptor.FileDescriptor(
  name='api/v3/api_proto/users.proto',
  package='monorail.v3',
  syntax='proto3',
  serialized_options=b'Z\020api/v3/api_proto',
  create_key=_descriptor._internal_create_key,
  serialized_pb=b'\n\x1c\x61pi/v3/api_proto/users.proto\x12\x0bmonorail.v3\x1a\x1fgoogle/api/field_behavior.proto\x1a\x19google/api/resource.proto\x1a#api/v3/api_proto/user_objects.proto\x1a\x1bgoogle/protobuf/empty.proto\x1a google/protobuf/field_mask.proto\":\n\x0eGetUserRequest\x12(\n\x04name\x18\x01 \x01(\tB\x1a\xfa\x41\x14\n\x12\x61pi.crbug.com/User\xe0\x41\x02\"A\n\x14\x42\x61tchGetUsersRequest\x12)\n\x05names\x18\x01 \x03(\tB\x1a\xfa\x41\x14\n\x12\x61pi.crbug.com/User\xe0\x41\x02\"9\n\x15\x42\x61tchGetUsersResponse\x12 \n\x05users\x18\x01 \x03(\x0b\x32\x11.monorail.v3.User\"\x86\x01\n\x11UpdateUserRequest\x12;\n\x04user\x18\x01 \x01(\x0b\x32\x11.monorail.v3.UserB\x1a\xe0\x41\x02\xfa\x41\x14\n\x12\x61pi.crbug.com/User\x12\x34\n\x0bupdate_mask\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.FieldMaskB\x03\xe0\x41\x02\"D\n\x12StarProjectRequest\x12.\n\x07project\x18\x01 \x01(\tB\x1d\xfa\x41\x17\n\x15\x61pi.crbug.com/Project\xe0\x41\x02\"F\n\x14UnStarProjectRequest\x12.\n\x07project\x18\x01 \x01(\tB\x1d\xfa\x41\x17\n\x15\x61pi.crbug.com/Project\xe0\x41\x02\"l\n\x17ListProjectStarsRequest\x12*\n\x06parent\x18\x01 \x01(\tB\x1a\xfa\x41\x14\n\x12\x61pi.crbug.com/User\xe0\x41\x02\x12\x11\n\tpage_size\x18\x02 \x01(\x05\x12\x12\n\npage_token\x18\x03 \x01(\t\"d\n\x18ListProjectStarsResponse\x12/\n\rproject_stars\x18\x01 \x03(\x0b\x32\x18.monorail.v3.ProjectStar\x12\x17\n\x0fnext_page_token\x18\x02 \x01(\t2\xde\x03\n\x05Users\x12;\n\x07GetUser\x12\x1b.monorail.v3.GetUserRequest\x1a\x11.monorail.v3.User\"\x00\x12X\n\rBatchGetUsers\x12!.monorail.v3.BatchGetUsersRequest\x1a\".monorail.v3.BatchGetUsersResponse\"\x00\x12\x41\n\nUpdateUser\x12\x1e.monorail.v3.UpdateUserRequest\x1a\x11.monorail.v3.User\"\x00\x12J\n\x0bStarProject\x12\x1f.monorail.v3.StarProjectRequest\x1a\x18.monorail.v3.ProjectStar\"\x00\x12L\n\rUnStarProject\x12!.monorail.v3.UnStarProjectRequest\x1a\x16.google.protobuf.Empty\"\x00\x12\x61\n\x10ListProjectStars\x12$.monorail.v3.ListProjectStarsRequest\x1a%.monorail.v3.ListProjectStarsResponse\"\x00\x42\x12Z\x10\x61pi/v3/api_protob\x06proto3'
  ,
  dependencies=[google_dot_api_dot_field__behavior__pb2.DESCRIPTOR,google_dot_api_dot_resource__pb2.DESCRIPTOR,api_dot_v3_dot_api__proto_dot_user__objects__pb2.DESCRIPTOR,google_dot_protobuf_dot_empty__pb2.DESCRIPTOR,google_dot_protobuf_dot_field__mask__pb2.DESCRIPTOR,])




_GETUSERREQUEST = _descriptor.Descriptor(
  name='GetUserRequest',
  full_name='monorail.v3.GetUserRequest',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  create_key=_descriptor._internal_create_key,
  fields=[
    _descriptor.FieldDescriptor(
      name='name', full_name='monorail.v3.GetUserRequest.name', 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=b'\372A\024\n\022api.crbug.com/User\340A\002', 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=205,
  serialized_end=263,
)


_BATCHGETUSERSREQUEST = _descriptor.Descriptor(
  name='BatchGetUsersRequest',
  full_name='monorail.v3.BatchGetUsersRequest',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  create_key=_descriptor._internal_create_key,
  fields=[
    _descriptor.FieldDescriptor(
      name='names', full_name='monorail.v3.BatchGetUsersRequest.names', index=0,
      number=1, 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=b'\372A\024\n\022api.crbug.com/User\340A\002', 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=265,
  serialized_end=330,
)


_BATCHGETUSERSRESPONSE = _descriptor.Descriptor(
  name='BatchGetUsersResponse',
  full_name='monorail.v3.BatchGetUsersResponse',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  create_key=_descriptor._internal_create_key,
  fields=[
    _descriptor.FieldDescriptor(
      name='users', full_name='monorail.v3.BatchGetUsersResponse.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=332,
  serialized_end=389,
)


_UPDATEUSERREQUEST = _descriptor.Descriptor(
  name='UpdateUserRequest',
  full_name='monorail.v3.UpdateUserRequest',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  create_key=_descriptor._internal_create_key,
  fields=[
    _descriptor.FieldDescriptor(
      name='user', full_name='monorail.v3.UpdateUserRequest.user', index=0,
      number=1, 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=b'\340A\002\372A\024\n\022api.crbug.com/User', file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
    _descriptor.FieldDescriptor(
      name='update_mask', full_name='monorail.v3.UpdateUserRequest.update_mask', index=1,
      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=b'\340A\002', 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=392,
  serialized_end=526,
)


_STARPROJECTREQUEST = _descriptor.Descriptor(
  name='StarProjectRequest',
  full_name='monorail.v3.StarProjectRequest',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  create_key=_descriptor._internal_create_key,
  fields=[
    _descriptor.FieldDescriptor(
      name='project', full_name='monorail.v3.StarProjectRequest.project', 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=b'\372A\027\n\025api.crbug.com/Project\340A\002', 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=528,
  serialized_end=596,
)


_UNSTARPROJECTREQUEST = _descriptor.Descriptor(
  name='UnStarProjectRequest',
  full_name='monorail.v3.UnStarProjectRequest',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  create_key=_descriptor._internal_create_key,
  fields=[
    _descriptor.FieldDescriptor(
      name='project', full_name='monorail.v3.UnStarProjectRequest.project', 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=b'\372A\027\n\025api.crbug.com/Project\340A\002', 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=598,
  serialized_end=668,
)


_LISTPROJECTSTARSREQUEST = _descriptor.Descriptor(
  name='ListProjectStarsRequest',
  full_name='monorail.v3.ListProjectStarsRequest',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  create_key=_descriptor._internal_create_key,
  fields=[
    _descriptor.FieldDescriptor(
      name='parent', full_name='monorail.v3.ListProjectStarsRequest.parent', 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=b'\372A\024\n\022api.crbug.com/User\340A\002', file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
    _descriptor.FieldDescriptor(
      name='page_size', full_name='monorail.v3.ListProjectStarsRequest.page_size', index=1,
      number=2, type=5, cpp_type=1, 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),
    _descriptor.FieldDescriptor(
      name='page_token', full_name='monorail.v3.ListProjectStarsRequest.page_token', index=2,
      number=3, 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=670,
  serialized_end=778,
)


_LISTPROJECTSTARSRESPONSE = _descriptor.Descriptor(
  name='ListProjectStarsResponse',
  full_name='monorail.v3.ListProjectStarsResponse',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  create_key=_descriptor._internal_create_key,
  fields=[
    _descriptor.FieldDescriptor(
      name='project_stars', full_name='monorail.v3.ListProjectStarsResponse.project_stars', 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),
    _descriptor.FieldDescriptor(
      name='next_page_token', full_name='monorail.v3.ListProjectStarsResponse.next_page_token', index=1,
      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=780,
  serialized_end=880,
)

_BATCHGETUSERSRESPONSE.fields_by_name['users'].message_type = api_dot_v3_dot_api__proto_dot_user__objects__pb2._USER
_UPDATEUSERREQUEST.fields_by_name['user'].message_type = api_dot_v3_dot_api__proto_dot_user__objects__pb2._USER
_UPDATEUSERREQUEST.fields_by_name['update_mask'].message_type = google_dot_protobuf_dot_field__mask__pb2._FIELDMASK
_LISTPROJECTSTARSRESPONSE.fields_by_name['project_stars'].message_type = api_dot_v3_dot_api__proto_dot_user__objects__pb2._PROJECTSTAR
DESCRIPTOR.message_types_by_name['GetUserRequest'] = _GETUSERREQUEST
DESCRIPTOR.message_types_by_name['BatchGetUsersRequest'] = _BATCHGETUSERSREQUEST
DESCRIPTOR.message_types_by_name['BatchGetUsersResponse'] = _BATCHGETUSERSRESPONSE
DESCRIPTOR.message_types_by_name['UpdateUserRequest'] = _UPDATEUSERREQUEST
DESCRIPTOR.message_types_by_name['StarProjectRequest'] = _STARPROJECTREQUEST
DESCRIPTOR.message_types_by_name['UnStarProjectRequest'] = _UNSTARPROJECTREQUEST
DESCRIPTOR.message_types_by_name['ListProjectStarsRequest'] = _LISTPROJECTSTARSREQUEST
DESCRIPTOR.message_types_by_name['ListProjectStarsResponse'] = _LISTPROJECTSTARSRESPONSE
_sym_db.RegisterFileDescriptor(DESCRIPTOR)

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

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

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

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

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

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

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

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


DESCRIPTOR._options = None
_GETUSERREQUEST.fields_by_name['name']._options = None
_BATCHGETUSERSREQUEST.fields_by_name['names']._options = None
_UPDATEUSERREQUEST.fields_by_name['user']._options = None
_UPDATEUSERREQUEST.fields_by_name['update_mask']._options = None
_STARPROJECTREQUEST.fields_by_name['project']._options = None
_UNSTARPROJECTREQUEST.fields_by_name['project']._options = None
_LISTPROJECTSTARSREQUEST.fields_by_name['parent']._options = None

_USERS = _descriptor.ServiceDescriptor(
  name='Users',
  full_name='monorail.v3.Users',
  file=DESCRIPTOR,
  index=0,
  serialized_options=None,
  create_key=_descriptor._internal_create_key,
  serialized_start=883,
  serialized_end=1361,
  methods=[
  _descriptor.MethodDescriptor(
    name='GetUser',
    full_name='monorail.v3.Users.GetUser',
    index=0,
    containing_service=None,
    input_type=_GETUSERREQUEST,
    output_type=api_dot_v3_dot_api__proto_dot_user__objects__pb2._USER,
    serialized_options=None,
    create_key=_descriptor._internal_create_key,
  ),
  _descriptor.MethodDescriptor(
    name='BatchGetUsers',
    full_name='monorail.v3.Users.BatchGetUsers',
    index=1,
    containing_service=None,
    input_type=_BATCHGETUSERSREQUEST,
    output_type=_BATCHGETUSERSRESPONSE,
    serialized_options=None,
    create_key=_descriptor._internal_create_key,
  ),
  _descriptor.MethodDescriptor(
    name='UpdateUser',
    full_name='monorail.v3.Users.UpdateUser',
    index=2,
    containing_service=None,
    input_type=_UPDATEUSERREQUEST,
    output_type=api_dot_v3_dot_api__proto_dot_user__objects__pb2._USER,
    serialized_options=None,
    create_key=_descriptor._internal_create_key,
  ),
  _descriptor.MethodDescriptor(
    name='StarProject',
    full_name='monorail.v3.Users.StarProject',
    index=3,
    containing_service=None,
    input_type=_STARPROJECTREQUEST,
    output_type=api_dot_v3_dot_api__proto_dot_user__objects__pb2._PROJECTSTAR,
    serialized_options=None,
    create_key=_descriptor._internal_create_key,
  ),
  _descriptor.MethodDescriptor(
    name='UnStarProject',
    full_name='monorail.v3.Users.UnStarProject',
    index=4,
    containing_service=None,
    input_type=_UNSTARPROJECTREQUEST,
    output_type=google_dot_protobuf_dot_empty__pb2._EMPTY,
    serialized_options=None,
    create_key=_descriptor._internal_create_key,
  ),
  _descriptor.MethodDescriptor(
    name='ListProjectStars',
    full_name='monorail.v3.Users.ListProjectStars',
    index=5,
    containing_service=None,
    input_type=_LISTPROJECTSTARSREQUEST,
    output_type=_LISTPROJECTSTARSRESPONSE,
    serialized_options=None,
    create_key=_descriptor._internal_create_key,
  ),
])
_sym_db.RegisterServiceDescriptor(_USERS)

DESCRIPTOR.services_by_name['Users'] = _USERS

# @@protoc_insertion_point(module_scope)
