# -*- coding: utf-8 -*-
# Generated by the protocol buffer compiler.  DO NOT EDIT!
# source: api/v3/api_proto/projects.proto
"""Generated protocol buffer code."""
from google.protobuf.internal import builder as _builder
from google.protobuf import descriptor as _descriptor
from google.protobuf import descriptor_pool as _descriptor_pool
from google.protobuf import symbol_database as _symbol_database
# @@protoc_insertion_point(imports)

_sym_db = _symbol_database.Default()


from google.protobuf import empty_pb2 as google_dot_protobuf_dot_empty__pb2
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 project_objects_pb2 as api_dot_v3_dot_api__proto_dot_project__objects__pb2


DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1f\x61pi/v3/api_proto/projects.proto\x12\x0bmonorail.v3\x1a\x1bgoogle/protobuf/empty.proto\x1a\x1fgoogle/api/field_behavior.proto\x1a\x19google/api/resource.proto\x1a&api/v3/api_proto/project_objects.proto\"t\n\x15\x43reateFieldDefRequest\x12-\n\x06parent\x18\x01 \x01(\tB\x1d\xe0\x41\x02\xfa\x41\x17\n\x15\x61pi.crbug.com/Project\x12,\n\x08\x66ielddef\x18\x02 \x01(\x0b\x32\x15.monorail.v3.FieldDefB\x03\xe0\x41\x02\"J\n\x16GetComponentDefRequest\x12\x30\n\x04name\x18\x01 \x01(\tB\"\xfa\x41\x1c\n\x1a\x61pi.crbug.com/ComponentDef\xe0\x41\x02\"\x81\x01\n\x19\x43reateComponentDefRequest\x12-\n\x06parent\x18\x01 \x01(\tB\x1d\xe0\x41\x02\xfa\x41\x17\n\x15\x61pi.crbug.com/Project\x12\x35\n\rcomponent_def\x18\x02 \x01(\x0b\x32\x19.monorail.v3.ComponentDefB\x03\xe0\x41\x02\"M\n\x19\x44\x65leteComponentDefRequest\x12\x30\n\x04name\x18\x01 \x01(\tB\"\xe0\x41\x02\xfa\x41\x1c\n\x1a\x61pi.crbug.com/ComponentDef\"q\n\x19ListIssueTemplatesRequest\x12-\n\x06parent\x18\x01 \x01(\tB\x1d\xfa\x41\x17\n\x15\x61pi.crbug.com/Project\xe0\x41\x02\x12\x11\n\tpage_size\x18\x02 \x01(\x05\x12\x12\n\npage_token\x18\x03 \x01(\t\"d\n\x1aListIssueTemplatesResponse\x12-\n\ttemplates\x18\x01 \x03(\x0b\x32\x1a.monorail.v3.IssueTemplate\x12\x17\n\x0fnext_page_token\x18\x02 \x01(\t\"p\n\x18ListComponentDefsRequest\x12-\n\x06parent\x18\x01 \x01(\tB\x1d\xfa\x41\x17\n\x15\x61pi.crbug.com/Project\xe0\x41\x02\x12\x11\n\tpage_size\x18\x02 \x01(\x05\x12\x12\n\npage_token\x18\x03 \x01(\t\"g\n\x19ListComponentDefsResponse\x12\x31\n\x0e\x63omponent_defs\x18\x01 \x03(\x0b\x32\x19.monorail.v3.ComponentDef\x12\x17\n\x0fnext_page_token\x18\x02 \x01(\t\"<\n\x13ListProjectsRequest\x12\x11\n\tpage_size\x18\x01 \x01(\x05\x12\x12\n\npage_token\x18\x02 \x01(\t\"W\n\x14ListProjectsResponse\x12&\n\x08projects\x18\x01 \x03(\x0b\x32\x14.monorail.v3.Project\x12\x17\n\x0fnext_page_token\x18\x02 \x01(\t2\x87\x05\n\x08Projects\x12M\n\x0e\x43reateFieldDef\x12\".monorail.v3.CreateFieldDefRequest\x1a\x15.monorail.v3.FieldDef\"\x00\x12S\n\x0fGetComponentDef\x12#.monorail.v3.GetComponentDefRequest\x1a\x19.monorail.v3.ComponentDef\"\x00\x12Y\n\x12\x43reateComponentDef\x12&.monorail.v3.CreateComponentDefRequest\x1a\x19.monorail.v3.ComponentDef\"\x00\x12V\n\x12\x44\x65leteComponentDef\x12&.monorail.v3.DeleteComponentDefRequest\x1a\x16.google.protobuf.Empty\"\x00\x12g\n\x12ListIssueTemplates\x12&.monorail.v3.ListIssueTemplatesRequest\x1a\'.monorail.v3.ListIssueTemplatesResponse\"\x00\x12\x64\n\x11ListComponentDefs\x12%.monorail.v3.ListComponentDefsRequest\x1a&.monorail.v3.ListComponentDefsResponse\"\x00\x12U\n\x0cListProjects\x12 .monorail.v3.ListProjectsRequest\x1a!.monorail.v3.ListProjectsResponse\"\x00\x42#Z!infra/monorailv2/api/v3/api_protob\x06proto3')

_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, globals())
_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'api.v3.api_proto.projects_pb2', globals())
if _descriptor._USE_C_DESCRIPTORS == False:

  DESCRIPTOR._options = None
  DESCRIPTOR._serialized_options = b'Z!infra/monorailv2/api/v3/api_proto'
  _CREATEFIELDDEFREQUEST.fields_by_name['parent']._options = None
  _CREATEFIELDDEFREQUEST.fields_by_name['parent']._serialized_options = b'\340A\002\372A\027\n\025api.crbug.com/Project'
  _CREATEFIELDDEFREQUEST.fields_by_name['fielddef']._options = None
  _CREATEFIELDDEFREQUEST.fields_by_name['fielddef']._serialized_options = b'\340A\002'
  _GETCOMPONENTDEFREQUEST.fields_by_name['name']._options = None
  _GETCOMPONENTDEFREQUEST.fields_by_name['name']._serialized_options = b'\372A\034\n\032api.crbug.com/ComponentDef\340A\002'
  _CREATECOMPONENTDEFREQUEST.fields_by_name['parent']._options = None
  _CREATECOMPONENTDEFREQUEST.fields_by_name['parent']._serialized_options = b'\340A\002\372A\027\n\025api.crbug.com/Project'
  _CREATECOMPONENTDEFREQUEST.fields_by_name['component_def']._options = None
  _CREATECOMPONENTDEFREQUEST.fields_by_name['component_def']._serialized_options = b'\340A\002'
  _DELETECOMPONENTDEFREQUEST.fields_by_name['name']._options = None
  _DELETECOMPONENTDEFREQUEST.fields_by_name['name']._serialized_options = b'\340A\002\372A\034\n\032api.crbug.com/ComponentDef'
  _LISTISSUETEMPLATESREQUEST.fields_by_name['parent']._options = None
  _LISTISSUETEMPLATESREQUEST.fields_by_name['parent']._serialized_options = b'\372A\027\n\025api.crbug.com/Project\340A\002'
  _LISTCOMPONENTDEFSREQUEST.fields_by_name['parent']._options = None
  _LISTCOMPONENTDEFSREQUEST.fields_by_name['parent']._serialized_options = b'\372A\027\n\025api.crbug.com/Project\340A\002'
  _CREATEFIELDDEFREQUEST._serialized_start=177
  _CREATEFIELDDEFREQUEST._serialized_end=293
  _GETCOMPONENTDEFREQUEST._serialized_start=295
  _GETCOMPONENTDEFREQUEST._serialized_end=369
  _CREATECOMPONENTDEFREQUEST._serialized_start=372
  _CREATECOMPONENTDEFREQUEST._serialized_end=501
  _DELETECOMPONENTDEFREQUEST._serialized_start=503
  _DELETECOMPONENTDEFREQUEST._serialized_end=580
  _LISTISSUETEMPLATESREQUEST._serialized_start=582
  _LISTISSUETEMPLATESREQUEST._serialized_end=695
  _LISTISSUETEMPLATESRESPONSE._serialized_start=697
  _LISTISSUETEMPLATESRESPONSE._serialized_end=797
  _LISTCOMPONENTDEFSREQUEST._serialized_start=799
  _LISTCOMPONENTDEFSREQUEST._serialized_end=911
  _LISTCOMPONENTDEFSRESPONSE._serialized_start=913
  _LISTCOMPONENTDEFSRESPONSE._serialized_end=1016
  _LISTPROJECTSREQUEST._serialized_start=1018
  _LISTPROJECTSREQUEST._serialized_end=1078
  _LISTPROJECTSRESPONSE._serialized_start=1080
  _LISTPROJECTSRESPONSE._serialized_end=1167
  _PROJECTS._serialized_start=1170
  _PROJECTS._serialized_end=1817
# @@protoc_insertion_point(module_scope)
