# Generated by the protocol buffer compiler.  DO NOT EDIT!
# source: grr/proto/api_call_router.proto

import sys
_b=sys.version_info[0]<3 and (lambda x:x) or (lambda x:x.encode('latin1'))
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
from google.protobuf import descriptor_pb2
# @@protoc_insertion_point(imports)

_sym_db = _symbol_database.Default()


from grr.proto import api_utils_pb2 as grr_dot_proto_dot_api__utils__pb2
from grr.proto import semantic_pb2 as grr_dot_proto_dot_semantic__pb2


DESCRIPTOR = _descriptor.FileDescriptor(
  name='grr/proto/api_call_router.proto',
  package='',
  syntax='proto2',
  serialized_pb=_b('\n\x1fgrr/proto/api_call_router.proto\x1a\x19grr/proto/api_utils.proto\x1a\x18grr/proto/semantic.proto\"\x8b\x03\n\x10\x41piAuthorization\x12\x64\n\x06router\x18\x01 \x01(\tBT\xe2\xfc\xe3\xc4\x01N\x12Lapi_call_router.ApiCallRouter class name that this authorization applies to.\x12\x7f\n\rrouter_params\x18\x04 \x01(\x0b\x32\x0e.ApiDataObjectBX\xe2\xfc\xe3\xc4\x01R\x12PRouter configuration. Will be passed to router constructor as keyword arguments.\x12\x46\n\x05users\x18\x02 \x03(\tB7\xe2\xfc\xe3\xc4\x01\x31\x12/List of users that will use a given API router.\x12H\n\x06groups\x18\x03 \x03(\tB8\xe2\xfc\xe3\xc4\x01\x32\x12\x30List of groups that will use a given API router.\"\x96\x01\n#ApiLabelsRestrictedCallRouterParams\x12\x18\n\x10labels_whitelist\x18\x01 \x03(\t\x12\x1f\n\x17labels_owners_whitelist\x18\x02 \x03(\t\x12\x1a\n\x12\x61llow_flows_access\x18\x03 \x01(\x08\x12\x18\n\x10\x61llow_vfs_access\x18\x04 \x01(\x08\"1\n\x1eRobotRouterSearchClientsParams\x12\x0f\n\x07\x65nabled\x18\x01 \x01(\x08\"\xef\x06\n\x1fRobotRouterFileFinderFlowParams\x12\x0f\n\x07\x65nabled\x18\x01 \x01(\x08\x12V\n\rglobs_allowed\x18\x02 \x01(\x08\x42?\xe2\xfc\xe3\xc4\x01\x39\x12\x37If false, using \'*\' in FileFinder paths is not allowed.\x12\x64\n\x16interpolations_allowed\x18\x03 \x01(\x08\x42\x44\xe2\xfc\xe3\xc4\x01>\x12<If false, using interpolations in FileFinder is not allowed.\x12\x86\x01\n\x15\x66ile_finder_flow_name\x18\x04 \x01(\tBg\xe2\xfc\xe3\xc4\x01\x61\x12_Name of the flow to use. Must be interface-compatible with FileFinder. Default is \'FileFinder\'.\x12\xa7\x01\n\x1amax_flows_per_client_daily\x18\x05 \x01(\x04\x42\x82\x01\xe2\xfc\xe3\xc4\x01|\x12zMaximum number of FileFinder flows that can be started on a single client within 24 hours. Default is 0, meaning no limit.\x12\xad\x01\n$min_interval_between_duplicate_flows\x18\x06 \x01(\x04\x42\x7f\xe2\xfc\xe3\xc4\x01y\n\x08\x44uration\x12mMinimum time that has to pass between 2 FileFinder flows with same arguments. Default is 0, meaning any time.\x12\x99\x01\n\rmax_file_size\x18\x07 \x01(\x04\x42\x81\x01\xe2\xfc\xe3\xc4\x01{\x12yMaximum file size in bytes. Will be enforced for all FileFinder actions. Files bigger than max_file_size will be skipped.\"\xb5\x05\n&RobotRouterArtifactCollectorFlowParams\x12\x0f\n\x07\x65nabled\x18\x01 \x01(\x08\x12\x89\x01\n\x13\x61rtifacts_whitelist\x18\x02 \x03(\tBl\xe2\xfc\xe3\xc4\x01\x66\x12\x64Only artifacts from this whitelist can be collected. Empty list means no artifacts can be collected.\x12z\n\x1c\x61rtifact_collector_flow_name\x18\x03 \x01(\tBT\xe2\xfc\xe3\xc4\x01N\x12LName of the flow to use. Must be interface-compatible with CollectArtifacts.\x12\xb4\x01\n\x1amax_flows_per_client_daily\x18\x05 \x01(\x04\x42\x8f\x01\xe2\xfc\xe3\xc4\x01\x88\x01\x12\x85\x01Maximum number of ArtifactCollectorFlow flows that can be started on a single client within 24 hours. Default is 0, meaning no limit.\x12\xba\x01\n$min_interval_between_duplicate_flows\x18\x06 \x01(\x04\x42\x8b\x01\xe2\xfc\xe3\xc4\x01\x84\x01\n\x08\x44uration\x12xMinimum time that has to pass between 2 ArtifactCollectorFlow flows with same arguments. Default is 0, meaning any time.\"+\n\x18RobotRouterGetFlowParams\x12\x0f\n\x07\x65nabled\x18\x01 \x01(\x08\"3\n RobotRouterListFlowResultsParams\x12\x0f\n\x07\x65nabled\x18\x01 \x01(\x08\"\xf6\x03\n$RobotRouterGetFlowFilesArchiveParams\x12\x0f\n\x07\x65nabled\x18\x01 \x01(\x08\x12\xe5\x01\n\x14path_globs_blacklist\x18\x02 \x03(\tB\xc6\x01\xe2\xfc\xe3\xc4\x01\xbf\x01\n\x0eGlobExpression\x12\xac\x01Only files not matching these globs will be included into the archive. Blacklist is always applied first. Files not matching the blacklist should still match the whitelist.\x12\xa3\x01\n\x14path_globs_whitelist\x18\x03 \x03(\tB\x84\x01\xe2\xfc\xe3\xc4\x01~\n\x0eGlobExpression\x12lOnly files matching these globs will be included into the archive. Whitelist is applied after the blacklist.\x12/\n\'skip_glob_checks_for_artifact_collector\x18\x04 \x01(\x08\"\x9d\x03\n\x18\x41piCallRobotRouterParams\x12\x37\n\x0esearch_clients\x18\x01 \x01(\x0b\x32\x1f.RobotRouterSearchClientsParams\x12:\n\x10\x66ile_finder_flow\x18\x02 \x01(\x0b\x32 .RobotRouterFileFinderFlowParams\x12H\n\x17\x61rtifact_collector_flow\x18\x03 \x01(\x0b\x32\'.RobotRouterArtifactCollectorFlowParams\x12+\n\x08get_flow\x18\x04 \x01(\x0b\x32\x19.RobotRouterGetFlowParams\x12<\n\x11list_flow_results\x18\x05 \x01(\x0b\x32!.RobotRouterListFlowResultsParams\x12\x45\n\x16get_flow_files_archive\x18\x06 \x01(\x0b\x32%.RobotRouterGetFlowFilesArchiveParams\x12\x10\n\x08robot_id\x18\x07 \x01(\t')
  ,
  dependencies=[grr_dot_proto_dot_api__utils__pb2.DESCRIPTOR,grr_dot_proto_dot_semantic__pb2.DESCRIPTOR,])




_APIAUTHORIZATION = _descriptor.Descriptor(
  name='ApiAuthorization',
  full_name='ApiAuthorization',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  fields=[
    _descriptor.FieldDescriptor(
      name='router', full_name='ApiAuthorization.router', 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,
      options=_descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\342\374\343\304\001N\022Lapi_call_router.ApiCallRouter class name that this authorization applies to.'))),
    _descriptor.FieldDescriptor(
      name='router_params', full_name='ApiAuthorization.router_params', index=1,
      number=4, 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,
      options=_descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\342\374\343\304\001R\022PRouter configuration. Will be passed to router constructor as keyword arguments.'))),
    _descriptor.FieldDescriptor(
      name='users', full_name='ApiAuthorization.users', index=2,
      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,
      options=_descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\342\374\343\304\0011\022/List of users that will use a given API router.'))),
    _descriptor.FieldDescriptor(
      name='groups', full_name='ApiAuthorization.groups', index=3,
      number=3, 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,
      options=_descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\342\374\343\304\0012\0220List of groups that will use a given API router.'))),
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  options=None,
  is_extendable=False,
  syntax='proto2',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=89,
  serialized_end=484,
)


_APILABELSRESTRICTEDCALLROUTERPARAMS = _descriptor.Descriptor(
  name='ApiLabelsRestrictedCallRouterParams',
  full_name='ApiLabelsRestrictedCallRouterParams',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  fields=[
    _descriptor.FieldDescriptor(
      name='labels_whitelist', full_name='ApiLabelsRestrictedCallRouterParams.labels_whitelist', 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,
      options=None),
    _descriptor.FieldDescriptor(
      name='labels_owners_whitelist', full_name='ApiLabelsRestrictedCallRouterParams.labels_owners_whitelist', index=1,
      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,
      options=None),
    _descriptor.FieldDescriptor(
      name='allow_flows_access', full_name='ApiLabelsRestrictedCallRouterParams.allow_flows_access', index=2,
      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,
      options=None),
    _descriptor.FieldDescriptor(
      name='allow_vfs_access', full_name='ApiLabelsRestrictedCallRouterParams.allow_vfs_access', index=3,
      number=4, 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,
      options=None),
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  options=None,
  is_extendable=False,
  syntax='proto2',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=487,
  serialized_end=637,
)


_ROBOTROUTERSEARCHCLIENTSPARAMS = _descriptor.Descriptor(
  name='RobotRouterSearchClientsParams',
  full_name='RobotRouterSearchClientsParams',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  fields=[
    _descriptor.FieldDescriptor(
      name='enabled', full_name='RobotRouterSearchClientsParams.enabled', index=0,
      number=1, 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,
      options=None),
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  options=None,
  is_extendable=False,
  syntax='proto2',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=639,
  serialized_end=688,
)


_ROBOTROUTERFILEFINDERFLOWPARAMS = _descriptor.Descriptor(
  name='RobotRouterFileFinderFlowParams',
  full_name='RobotRouterFileFinderFlowParams',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  fields=[
    _descriptor.FieldDescriptor(
      name='enabled', full_name='RobotRouterFileFinderFlowParams.enabled', index=0,
      number=1, 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,
      options=None),
    _descriptor.FieldDescriptor(
      name='globs_allowed', full_name='RobotRouterFileFinderFlowParams.globs_allowed', index=1,
      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,
      options=_descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\342\374\343\304\0019\0227If false, using \'*\' in FileFinder paths is not allowed.'))),
    _descriptor.FieldDescriptor(
      name='interpolations_allowed', full_name='RobotRouterFileFinderFlowParams.interpolations_allowed', index=2,
      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,
      options=_descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\342\374\343\304\001>\022<If false, using interpolations in FileFinder is not allowed.'))),
    _descriptor.FieldDescriptor(
      name='file_finder_flow_name', full_name='RobotRouterFileFinderFlowParams.file_finder_flow_name', index=3,
      number=4, 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,
      options=_descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\342\374\343\304\001a\022_Name of the flow to use. Must be interface-compatible with FileFinder. Default is \'FileFinder\'.'))),
    _descriptor.FieldDescriptor(
      name='max_flows_per_client_daily', full_name='RobotRouterFileFinderFlowParams.max_flows_per_client_daily', index=4,
      number=5, type=4, cpp_type=4, label=1,
      has_default_value=False, default_value=0,
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=_descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\342\374\343\304\001|\022zMaximum number of FileFinder flows that can be started on a single client within 24 hours. Default is 0, meaning no limit.'))),
    _descriptor.FieldDescriptor(
      name='min_interval_between_duplicate_flows', full_name='RobotRouterFileFinderFlowParams.min_interval_between_duplicate_flows', index=5,
      number=6, type=4, cpp_type=4, label=1,
      has_default_value=False, default_value=0,
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=_descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\342\374\343\304\001y\n\010Duration\022mMinimum time that has to pass between 2 FileFinder flows with same arguments. Default is 0, meaning any time.'))),
    _descriptor.FieldDescriptor(
      name='max_file_size', full_name='RobotRouterFileFinderFlowParams.max_file_size', index=6,
      number=7, type=4, cpp_type=4, label=1,
      has_default_value=False, default_value=0,
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=_descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\342\374\343\304\001{\022yMaximum file size in bytes. Will be enforced for all FileFinder actions. Files bigger than max_file_size will be skipped.'))),
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  options=None,
  is_extendable=False,
  syntax='proto2',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=691,
  serialized_end=1570,
)


_ROBOTROUTERARTIFACTCOLLECTORFLOWPARAMS = _descriptor.Descriptor(
  name='RobotRouterArtifactCollectorFlowParams',
  full_name='RobotRouterArtifactCollectorFlowParams',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  fields=[
    _descriptor.FieldDescriptor(
      name='enabled', full_name='RobotRouterArtifactCollectorFlowParams.enabled', index=0,
      number=1, 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,
      options=None),
    _descriptor.FieldDescriptor(
      name='artifacts_whitelist', full_name='RobotRouterArtifactCollectorFlowParams.artifacts_whitelist', index=1,
      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,
      options=_descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\342\374\343\304\001f\022dOnly artifacts from this whitelist can be collected. Empty list means no artifacts can be collected.'))),
    _descriptor.FieldDescriptor(
      name='artifact_collector_flow_name', full_name='RobotRouterArtifactCollectorFlowParams.artifact_collector_flow_name', 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,
      options=_descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\342\374\343\304\001N\022LName of the flow to use. Must be interface-compatible with CollectArtifacts.'))),
    _descriptor.FieldDescriptor(
      name='max_flows_per_client_daily', full_name='RobotRouterArtifactCollectorFlowParams.max_flows_per_client_daily', index=3,
      number=5, type=4, cpp_type=4, label=1,
      has_default_value=False, default_value=0,
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=_descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\342\374\343\304\001\210\001\022\205\001Maximum number of ArtifactCollectorFlow flows that can be started on a single client within 24 hours. Default is 0, meaning no limit.'))),
    _descriptor.FieldDescriptor(
      name='min_interval_between_duplicate_flows', full_name='RobotRouterArtifactCollectorFlowParams.min_interval_between_duplicate_flows', index=4,
      number=6, type=4, cpp_type=4, label=1,
      has_default_value=False, default_value=0,
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=_descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\342\374\343\304\001\204\001\n\010Duration\022xMinimum time that has to pass between 2 ArtifactCollectorFlow flows with same arguments. Default is 0, meaning any time.'))),
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  options=None,
  is_extendable=False,
  syntax='proto2',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=1573,
  serialized_end=2266,
)


_ROBOTROUTERGETFLOWPARAMS = _descriptor.Descriptor(
  name='RobotRouterGetFlowParams',
  full_name='RobotRouterGetFlowParams',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  fields=[
    _descriptor.FieldDescriptor(
      name='enabled', full_name='RobotRouterGetFlowParams.enabled', index=0,
      number=1, 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,
      options=None),
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  options=None,
  is_extendable=False,
  syntax='proto2',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=2268,
  serialized_end=2311,
)


_ROBOTROUTERLISTFLOWRESULTSPARAMS = _descriptor.Descriptor(
  name='RobotRouterListFlowResultsParams',
  full_name='RobotRouterListFlowResultsParams',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  fields=[
    _descriptor.FieldDescriptor(
      name='enabled', full_name='RobotRouterListFlowResultsParams.enabled', index=0,
      number=1, 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,
      options=None),
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  options=None,
  is_extendable=False,
  syntax='proto2',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=2313,
  serialized_end=2364,
)


_ROBOTROUTERGETFLOWFILESARCHIVEPARAMS = _descriptor.Descriptor(
  name='RobotRouterGetFlowFilesArchiveParams',
  full_name='RobotRouterGetFlowFilesArchiveParams',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  fields=[
    _descriptor.FieldDescriptor(
      name='enabled', full_name='RobotRouterGetFlowFilesArchiveParams.enabled', index=0,
      number=1, 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,
      options=None),
    _descriptor.FieldDescriptor(
      name='path_globs_blacklist', full_name='RobotRouterGetFlowFilesArchiveParams.path_globs_blacklist', index=1,
      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,
      options=_descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\342\374\343\304\001\277\001\n\016GlobExpression\022\254\001Only files not matching these globs will be included into the archive. Blacklist is always applied first. Files not matching the blacklist should still match the whitelist.'))),
    _descriptor.FieldDescriptor(
      name='path_globs_whitelist', full_name='RobotRouterGetFlowFilesArchiveParams.path_globs_whitelist', index=2,
      number=3, 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,
      options=_descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\342\374\343\304\001~\n\016GlobExpression\022lOnly files matching these globs will be included into the archive. Whitelist is applied after the blacklist.'))),
    _descriptor.FieldDescriptor(
      name='skip_glob_checks_for_artifact_collector', full_name='RobotRouterGetFlowFilesArchiveParams.skip_glob_checks_for_artifact_collector', index=3,
      number=4, 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,
      options=None),
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  options=None,
  is_extendable=False,
  syntax='proto2',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=2367,
  serialized_end=2869,
)


_APICALLROBOTROUTERPARAMS = _descriptor.Descriptor(
  name='ApiCallRobotRouterParams',
  full_name='ApiCallRobotRouterParams',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  fields=[
    _descriptor.FieldDescriptor(
      name='search_clients', full_name='ApiCallRobotRouterParams.search_clients', 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,
      options=None),
    _descriptor.FieldDescriptor(
      name='file_finder_flow', full_name='ApiCallRobotRouterParams.file_finder_flow', 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,
      options=None),
    _descriptor.FieldDescriptor(
      name='artifact_collector_flow', full_name='ApiCallRobotRouterParams.artifact_collector_flow', index=2,
      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,
      options=None),
    _descriptor.FieldDescriptor(
      name='get_flow', full_name='ApiCallRobotRouterParams.get_flow', index=3,
      number=4, 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,
      options=None),
    _descriptor.FieldDescriptor(
      name='list_flow_results', full_name='ApiCallRobotRouterParams.list_flow_results', index=4,
      number=5, 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,
      options=None),
    _descriptor.FieldDescriptor(
      name='get_flow_files_archive', full_name='ApiCallRobotRouterParams.get_flow_files_archive', index=5,
      number=6, 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,
      options=None),
    _descriptor.FieldDescriptor(
      name='robot_id', full_name='ApiCallRobotRouterParams.robot_id', index=6,
      number=7, 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,
      options=None),
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  options=None,
  is_extendable=False,
  syntax='proto2',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=2872,
  serialized_end=3285,
)

_APIAUTHORIZATION.fields_by_name['router_params'].message_type = grr_dot_proto_dot_api__utils__pb2._APIDATAOBJECT
_APICALLROBOTROUTERPARAMS.fields_by_name['search_clients'].message_type = _ROBOTROUTERSEARCHCLIENTSPARAMS
_APICALLROBOTROUTERPARAMS.fields_by_name['file_finder_flow'].message_type = _ROBOTROUTERFILEFINDERFLOWPARAMS
_APICALLROBOTROUTERPARAMS.fields_by_name['artifact_collector_flow'].message_type = _ROBOTROUTERARTIFACTCOLLECTORFLOWPARAMS
_APICALLROBOTROUTERPARAMS.fields_by_name['get_flow'].message_type = _ROBOTROUTERGETFLOWPARAMS
_APICALLROBOTROUTERPARAMS.fields_by_name['list_flow_results'].message_type = _ROBOTROUTERLISTFLOWRESULTSPARAMS
_APICALLROBOTROUTERPARAMS.fields_by_name['get_flow_files_archive'].message_type = _ROBOTROUTERGETFLOWFILESARCHIVEPARAMS
DESCRIPTOR.message_types_by_name['ApiAuthorization'] = _APIAUTHORIZATION
DESCRIPTOR.message_types_by_name['ApiLabelsRestrictedCallRouterParams'] = _APILABELSRESTRICTEDCALLROUTERPARAMS
DESCRIPTOR.message_types_by_name['RobotRouterSearchClientsParams'] = _ROBOTROUTERSEARCHCLIENTSPARAMS
DESCRIPTOR.message_types_by_name['RobotRouterFileFinderFlowParams'] = _ROBOTROUTERFILEFINDERFLOWPARAMS
DESCRIPTOR.message_types_by_name['RobotRouterArtifactCollectorFlowParams'] = _ROBOTROUTERARTIFACTCOLLECTORFLOWPARAMS
DESCRIPTOR.message_types_by_name['RobotRouterGetFlowParams'] = _ROBOTROUTERGETFLOWPARAMS
DESCRIPTOR.message_types_by_name['RobotRouterListFlowResultsParams'] = _ROBOTROUTERLISTFLOWRESULTSPARAMS
DESCRIPTOR.message_types_by_name['RobotRouterGetFlowFilesArchiveParams'] = _ROBOTROUTERGETFLOWFILESARCHIVEPARAMS
DESCRIPTOR.message_types_by_name['ApiCallRobotRouterParams'] = _APICALLROBOTROUTERPARAMS
_sym_db.RegisterFileDescriptor(DESCRIPTOR)

ApiAuthorization = _reflection.GeneratedProtocolMessageType('ApiAuthorization', (_message.Message,), dict(
  DESCRIPTOR = _APIAUTHORIZATION,
  __module__ = 'grr.proto.api_call_router_pb2'
  # @@protoc_insertion_point(class_scope:ApiAuthorization)
  ))
_sym_db.RegisterMessage(ApiAuthorization)

ApiLabelsRestrictedCallRouterParams = _reflection.GeneratedProtocolMessageType('ApiLabelsRestrictedCallRouterParams', (_message.Message,), dict(
  DESCRIPTOR = _APILABELSRESTRICTEDCALLROUTERPARAMS,
  __module__ = 'grr.proto.api_call_router_pb2'
  # @@protoc_insertion_point(class_scope:ApiLabelsRestrictedCallRouterParams)
  ))
_sym_db.RegisterMessage(ApiLabelsRestrictedCallRouterParams)

RobotRouterSearchClientsParams = _reflection.GeneratedProtocolMessageType('RobotRouterSearchClientsParams', (_message.Message,), dict(
  DESCRIPTOR = _ROBOTROUTERSEARCHCLIENTSPARAMS,
  __module__ = 'grr.proto.api_call_router_pb2'
  # @@protoc_insertion_point(class_scope:RobotRouterSearchClientsParams)
  ))
_sym_db.RegisterMessage(RobotRouterSearchClientsParams)

RobotRouterFileFinderFlowParams = _reflection.GeneratedProtocolMessageType('RobotRouterFileFinderFlowParams', (_message.Message,), dict(
  DESCRIPTOR = _ROBOTROUTERFILEFINDERFLOWPARAMS,
  __module__ = 'grr.proto.api_call_router_pb2'
  # @@protoc_insertion_point(class_scope:RobotRouterFileFinderFlowParams)
  ))
_sym_db.RegisterMessage(RobotRouterFileFinderFlowParams)

RobotRouterArtifactCollectorFlowParams = _reflection.GeneratedProtocolMessageType('RobotRouterArtifactCollectorFlowParams', (_message.Message,), dict(
  DESCRIPTOR = _ROBOTROUTERARTIFACTCOLLECTORFLOWPARAMS,
  __module__ = 'grr.proto.api_call_router_pb2'
  # @@protoc_insertion_point(class_scope:RobotRouterArtifactCollectorFlowParams)
  ))
_sym_db.RegisterMessage(RobotRouterArtifactCollectorFlowParams)

RobotRouterGetFlowParams = _reflection.GeneratedProtocolMessageType('RobotRouterGetFlowParams', (_message.Message,), dict(
  DESCRIPTOR = _ROBOTROUTERGETFLOWPARAMS,
  __module__ = 'grr.proto.api_call_router_pb2'
  # @@protoc_insertion_point(class_scope:RobotRouterGetFlowParams)
  ))
_sym_db.RegisterMessage(RobotRouterGetFlowParams)

RobotRouterListFlowResultsParams = _reflection.GeneratedProtocolMessageType('RobotRouterListFlowResultsParams', (_message.Message,), dict(
  DESCRIPTOR = _ROBOTROUTERLISTFLOWRESULTSPARAMS,
  __module__ = 'grr.proto.api_call_router_pb2'
  # @@protoc_insertion_point(class_scope:RobotRouterListFlowResultsParams)
  ))
_sym_db.RegisterMessage(RobotRouterListFlowResultsParams)

RobotRouterGetFlowFilesArchiveParams = _reflection.GeneratedProtocolMessageType('RobotRouterGetFlowFilesArchiveParams', (_message.Message,), dict(
  DESCRIPTOR = _ROBOTROUTERGETFLOWFILESARCHIVEPARAMS,
  __module__ = 'grr.proto.api_call_router_pb2'
  # @@protoc_insertion_point(class_scope:RobotRouterGetFlowFilesArchiveParams)
  ))
_sym_db.RegisterMessage(RobotRouterGetFlowFilesArchiveParams)

ApiCallRobotRouterParams = _reflection.GeneratedProtocolMessageType('ApiCallRobotRouterParams', (_message.Message,), dict(
  DESCRIPTOR = _APICALLROBOTROUTERPARAMS,
  __module__ = 'grr.proto.api_call_router_pb2'
  # @@protoc_insertion_point(class_scope:ApiCallRobotRouterParams)
  ))
_sym_db.RegisterMessage(ApiCallRobotRouterParams)


_APIAUTHORIZATION.fields_by_name['router'].has_options = True
_APIAUTHORIZATION.fields_by_name['router']._options = _descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\342\374\343\304\001N\022Lapi_call_router.ApiCallRouter class name that this authorization applies to.'))
_APIAUTHORIZATION.fields_by_name['router_params'].has_options = True
_APIAUTHORIZATION.fields_by_name['router_params']._options = _descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\342\374\343\304\001R\022PRouter configuration. Will be passed to router constructor as keyword arguments.'))
_APIAUTHORIZATION.fields_by_name['users'].has_options = True
_APIAUTHORIZATION.fields_by_name['users']._options = _descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\342\374\343\304\0011\022/List of users that will use a given API router.'))
_APIAUTHORIZATION.fields_by_name['groups'].has_options = True
_APIAUTHORIZATION.fields_by_name['groups']._options = _descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\342\374\343\304\0012\0220List of groups that will use a given API router.'))
_ROBOTROUTERFILEFINDERFLOWPARAMS.fields_by_name['globs_allowed'].has_options = True
_ROBOTROUTERFILEFINDERFLOWPARAMS.fields_by_name['globs_allowed']._options = _descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\342\374\343\304\0019\0227If false, using \'*\' in FileFinder paths is not allowed.'))
_ROBOTROUTERFILEFINDERFLOWPARAMS.fields_by_name['interpolations_allowed'].has_options = True
_ROBOTROUTERFILEFINDERFLOWPARAMS.fields_by_name['interpolations_allowed']._options = _descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\342\374\343\304\001>\022<If false, using interpolations in FileFinder is not allowed.'))
_ROBOTROUTERFILEFINDERFLOWPARAMS.fields_by_name['file_finder_flow_name'].has_options = True
_ROBOTROUTERFILEFINDERFLOWPARAMS.fields_by_name['file_finder_flow_name']._options = _descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\342\374\343\304\001a\022_Name of the flow to use. Must be interface-compatible with FileFinder. Default is \'FileFinder\'.'))
_ROBOTROUTERFILEFINDERFLOWPARAMS.fields_by_name['max_flows_per_client_daily'].has_options = True
_ROBOTROUTERFILEFINDERFLOWPARAMS.fields_by_name['max_flows_per_client_daily']._options = _descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\342\374\343\304\001|\022zMaximum number of FileFinder flows that can be started on a single client within 24 hours. Default is 0, meaning no limit.'))
_ROBOTROUTERFILEFINDERFLOWPARAMS.fields_by_name['min_interval_between_duplicate_flows'].has_options = True
_ROBOTROUTERFILEFINDERFLOWPARAMS.fields_by_name['min_interval_between_duplicate_flows']._options = _descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\342\374\343\304\001y\n\010Duration\022mMinimum time that has to pass between 2 FileFinder flows with same arguments. Default is 0, meaning any time.'))
_ROBOTROUTERFILEFINDERFLOWPARAMS.fields_by_name['max_file_size'].has_options = True
_ROBOTROUTERFILEFINDERFLOWPARAMS.fields_by_name['max_file_size']._options = _descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\342\374\343\304\001{\022yMaximum file size in bytes. Will be enforced for all FileFinder actions. Files bigger than max_file_size will be skipped.'))
_ROBOTROUTERARTIFACTCOLLECTORFLOWPARAMS.fields_by_name['artifacts_whitelist'].has_options = True
_ROBOTROUTERARTIFACTCOLLECTORFLOWPARAMS.fields_by_name['artifacts_whitelist']._options = _descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\342\374\343\304\001f\022dOnly artifacts from this whitelist can be collected. Empty list means no artifacts can be collected.'))
_ROBOTROUTERARTIFACTCOLLECTORFLOWPARAMS.fields_by_name['artifact_collector_flow_name'].has_options = True
_ROBOTROUTERARTIFACTCOLLECTORFLOWPARAMS.fields_by_name['artifact_collector_flow_name']._options = _descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\342\374\343\304\001N\022LName of the flow to use. Must be interface-compatible with CollectArtifacts.'))
_ROBOTROUTERARTIFACTCOLLECTORFLOWPARAMS.fields_by_name['max_flows_per_client_daily'].has_options = True
_ROBOTROUTERARTIFACTCOLLECTORFLOWPARAMS.fields_by_name['max_flows_per_client_daily']._options = _descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\342\374\343\304\001\210\001\022\205\001Maximum number of ArtifactCollectorFlow flows that can be started on a single client within 24 hours. Default is 0, meaning no limit.'))
_ROBOTROUTERARTIFACTCOLLECTORFLOWPARAMS.fields_by_name['min_interval_between_duplicate_flows'].has_options = True
_ROBOTROUTERARTIFACTCOLLECTORFLOWPARAMS.fields_by_name['min_interval_between_duplicate_flows']._options = _descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\342\374\343\304\001\204\001\n\010Duration\022xMinimum time that has to pass between 2 ArtifactCollectorFlow flows with same arguments. Default is 0, meaning any time.'))
_ROBOTROUTERGETFLOWFILESARCHIVEPARAMS.fields_by_name['path_globs_blacklist'].has_options = True
_ROBOTROUTERGETFLOWFILESARCHIVEPARAMS.fields_by_name['path_globs_blacklist']._options = _descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\342\374\343\304\001\277\001\n\016GlobExpression\022\254\001Only files not matching these globs will be included into the archive. Blacklist is always applied first. Files not matching the blacklist should still match the whitelist.'))
_ROBOTROUTERGETFLOWFILESARCHIVEPARAMS.fields_by_name['path_globs_whitelist'].has_options = True
_ROBOTROUTERGETFLOWFILESARCHIVEPARAMS.fields_by_name['path_globs_whitelist']._options = _descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\342\374\343\304\001~\n\016GlobExpression\022lOnly files matching these globs will be included into the archive. Whitelist is applied after the blacklist.'))
# @@protoc_insertion_point(module_scope)
