sift-stack-py 0.8.3__tar.gz → 0.8.5.dev1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (484) hide show
  1. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/PKG-INFO +1 -1
  2. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/protobuf_descriptors/v2/protobuf_descriptors_pb2.py +12 -12
  3. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/protobuf_descriptors/v2/protobuf_descriptors_pb2.pyi +4 -1
  4. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/rule_evaluation/v1/rule_evaluation_pb2.py +13 -5
  5. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/rule_evaluation/v1/rule_evaluation_pb2.pyi +38 -1
  6. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/rules/v1/rules_pb2.py +50 -36
  7. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/rules/v1/rules_pb2.pyi +49 -3
  8. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift_py/error.py +19 -0
  9. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift_py/ingestion/_internal/ingest.py +113 -14
  10. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift_py/ingestion/_internal/ingestion_config.py +9 -0
  11. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift_py/ingestion/_service_test.py +310 -1
  12. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift_py/ingestion/service.py +14 -1
  13. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift_stack_py.egg-info/PKG-INFO +1 -1
  14. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/pyproject.toml +1 -1
  15. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/LICENSE +0 -0
  16. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/README.md +0 -0
  17. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/google/__init__.py +0 -0
  18. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/google/api/__init__.py +0 -0
  19. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/google/api/annotations_pb2.py +0 -0
  20. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/google/api/annotations_pb2.pyi +0 -0
  21. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/google/api/annotations_pb2_grpc.py +0 -0
  22. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/google/api/annotations_pb2_grpc.pyi +0 -0
  23. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/google/api/field_behavior_pb2.py +0 -0
  24. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/google/api/field_behavior_pb2.pyi +0 -0
  25. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/google/api/field_behavior_pb2_grpc.py +0 -0
  26. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/google/api/field_behavior_pb2_grpc.pyi +0 -0
  27. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/google/api/http_pb2.py +0 -0
  28. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/google/api/http_pb2.pyi +0 -0
  29. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/google/api/http_pb2_grpc.py +0 -0
  30. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/google/api/http_pb2_grpc.pyi +0 -0
  31. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/protoc_gen_openapiv2/__init__.py +0 -0
  32. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/protoc_gen_openapiv2/options/__init__.py +0 -0
  33. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/protoc_gen_openapiv2/options/annotations_pb2.py +0 -0
  34. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/protoc_gen_openapiv2/options/annotations_pb2.pyi +0 -0
  35. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/protoc_gen_openapiv2/options/annotations_pb2_grpc.py +0 -0
  36. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/protoc_gen_openapiv2/options/annotations_pb2_grpc.pyi +0 -0
  37. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/protoc_gen_openapiv2/options/openapiv2_pb2.py +0 -0
  38. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/protoc_gen_openapiv2/options/openapiv2_pb2.pyi +0 -0
  39. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/protoc_gen_openapiv2/options/openapiv2_pb2_grpc.py +0 -0
  40. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/protoc_gen_openapiv2/options/openapiv2_pb2_grpc.pyi +0 -0
  41. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/__init__.py +0 -0
  42. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/annotation_logs/__init__.py +0 -0
  43. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/annotation_logs/v1/__init__.py +0 -0
  44. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/annotation_logs/v1/annotation_logs_pb2.py +0 -0
  45. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/annotation_logs/v1/annotation_logs_pb2.pyi +0 -0
  46. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/annotation_logs/v1/annotation_logs_pb2_grpc.py +0 -0
  47. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/annotation_logs/v1/annotation_logs_pb2_grpc.pyi +0 -0
  48. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/annotations/__init__.py +0 -0
  49. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/annotations/v1/__init__.py +0 -0
  50. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/annotations/v1/annotations_pb2.py +0 -0
  51. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/annotations/v1/annotations_pb2.pyi +0 -0
  52. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/annotations/v1/annotations_pb2_grpc.py +0 -0
  53. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/annotations/v1/annotations_pb2_grpc.pyi +0 -0
  54. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/api_keys/__init__.py +0 -0
  55. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/api_keys/v2/__init__.py +0 -0
  56. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/api_keys/v2/api_keys_pb2.py +0 -0
  57. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/api_keys/v2/api_keys_pb2.pyi +0 -0
  58. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/api_keys/v2/api_keys_pb2_grpc.py +0 -0
  59. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/api_keys/v2/api_keys_pb2_grpc.pyi +0 -0
  60. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/assets/__init__.py +0 -0
  61. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/assets/v1/__init__.py +0 -0
  62. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/assets/v1/assets_pb2.py +0 -0
  63. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/assets/v1/assets_pb2.pyi +0 -0
  64. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/assets/v1/assets_pb2_grpc.py +0 -0
  65. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/assets/v1/assets_pb2_grpc.pyi +0 -0
  66. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/calculated_channels/__init__.py +0 -0
  67. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/calculated_channels/v1/__init__.py +0 -0
  68. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/calculated_channels/v1/calculated_channels_pb2.py +0 -0
  69. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/calculated_channels/v1/calculated_channels_pb2.pyi +0 -0
  70. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/calculated_channels/v1/calculated_channels_pb2_grpc.py +0 -0
  71. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/calculated_channels/v1/calculated_channels_pb2_grpc.pyi +0 -0
  72. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/calculated_channels/v2/__init__.py +0 -0
  73. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/calculated_channels/v2/calculated_channels_pb2.py +0 -0
  74. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/calculated_channels/v2/calculated_channels_pb2.pyi +0 -0
  75. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/calculated_channels/v2/calculated_channels_pb2_grpc.py +0 -0
  76. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/calculated_channels/v2/calculated_channels_pb2_grpc.pyi +0 -0
  77. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/campaigns/__init__.py +0 -0
  78. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/campaigns/v1/__init__.py +0 -0
  79. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/campaigns/v1/campaigns_pb2.py +0 -0
  80. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/campaigns/v1/campaigns_pb2.pyi +0 -0
  81. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/campaigns/v1/campaigns_pb2_grpc.py +0 -0
  82. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/campaigns/v1/campaigns_pb2_grpc.pyi +0 -0
  83. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/channel_schemas/__init__.py +0 -0
  84. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/channel_schemas/v1/__init__.py +0 -0
  85. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/channel_schemas/v1/channel_schemas_pb2.py +0 -0
  86. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/channel_schemas/v1/channel_schemas_pb2.pyi +0 -0
  87. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/channel_schemas/v1/channel_schemas_pb2_grpc.py +0 -0
  88. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/channel_schemas/v1/channel_schemas_pb2_grpc.pyi +0 -0
  89. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/channel_schemas/v2/__init__.py +0 -0
  90. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/channel_schemas/v2/channel_schemas_pb2.py +0 -0
  91. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/channel_schemas/v2/channel_schemas_pb2.pyi +0 -0
  92. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/channel_schemas/v2/channel_schemas_pb2_grpc.py +0 -0
  93. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/channel_schemas/v2/channel_schemas_pb2_grpc.pyi +0 -0
  94. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/channels/__init__.py +0 -0
  95. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/channels/v2/__init__.py +0 -0
  96. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/channels/v2/channels_pb2.py +0 -0
  97. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/channels/v2/channels_pb2.pyi +0 -0
  98. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/channels/v2/channels_pb2_grpc.py +0 -0
  99. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/channels/v2/channels_pb2_grpc.pyi +0 -0
  100. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/channels/v3/__init__.py +0 -0
  101. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/channels/v3/channels_pb2.py +0 -0
  102. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/channels/v3/channels_pb2.pyi +0 -0
  103. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/channels/v3/channels_pb2_grpc.py +0 -0
  104. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/channels/v3/channels_pb2_grpc.pyi +0 -0
  105. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/common/__init__.py +0 -0
  106. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/common/type/__init__.py +0 -0
  107. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/common/type/v1/__init__.py +0 -0
  108. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/common/type/v1/channel_bit_field_element_pb2.py +0 -0
  109. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/common/type/v1/channel_bit_field_element_pb2.pyi +0 -0
  110. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/common/type/v1/channel_bit_field_element_pb2_grpc.py +0 -0
  111. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/common/type/v1/channel_bit_field_element_pb2_grpc.pyi +0 -0
  112. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/common/type/v1/channel_config_pb2.py +0 -0
  113. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/common/type/v1/channel_config_pb2.pyi +0 -0
  114. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/common/type/v1/channel_config_pb2_grpc.py +0 -0
  115. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/common/type/v1/channel_config_pb2_grpc.pyi +0 -0
  116. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/common/type/v1/channel_data_type_pb2.py +0 -0
  117. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/common/type/v1/channel_data_type_pb2.pyi +0 -0
  118. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/common/type/v1/channel_data_type_pb2_grpc.py +0 -0
  119. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/common/type/v1/channel_data_type_pb2_grpc.pyi +0 -0
  120. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/common/type/v1/channel_enum_type_pb2.py +0 -0
  121. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/common/type/v1/channel_enum_type_pb2.pyi +0 -0
  122. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/common/type/v1/channel_enum_type_pb2_grpc.py +0 -0
  123. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/common/type/v1/channel_enum_type_pb2_grpc.pyi +0 -0
  124. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/common/type/v1/organization_pb2.py +0 -0
  125. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/common/type/v1/organization_pb2.pyi +0 -0
  126. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/common/type/v1/organization_pb2_grpc.py +0 -0
  127. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/common/type/v1/organization_pb2_grpc.pyi +0 -0
  128. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/common/type/v1/resource_identifier_pb2.py +0 -0
  129. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/common/type/v1/resource_identifier_pb2.pyi +0 -0
  130. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/common/type/v1/resource_identifier_pb2_grpc.py +0 -0
  131. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/common/type/v1/resource_identifier_pb2_grpc.pyi +0 -0
  132. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/common/type/v1/resource_ref_pb2.py +0 -0
  133. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/common/type/v1/resource_ref_pb2.pyi +0 -0
  134. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/common/type/v1/resource_ref_pb2_grpc.py +0 -0
  135. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/common/type/v1/resource_ref_pb2_grpc.pyi +0 -0
  136. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/common/type/v1/user_defined_functions_pb2.py +0 -0
  137. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/common/type/v1/user_defined_functions_pb2.pyi +0 -0
  138. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/common/type/v1/user_defined_functions_pb2_grpc.py +0 -0
  139. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/common/type/v1/user_defined_functions_pb2_grpc.pyi +0 -0
  140. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/common/type/v1/user_pb2.py +0 -0
  141. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/common/type/v1/user_pb2.pyi +0 -0
  142. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/common/type/v1/user_pb2_grpc.py +0 -0
  143. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/common/type/v1/user_pb2_grpc.pyi +0 -0
  144. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/data/__init__.py +0 -0
  145. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/data/v1/__init__.py +0 -0
  146. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/data/v1/data_pb2.py +0 -0
  147. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/data/v1/data_pb2.pyi +0 -0
  148. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/data/v1/data_pb2_grpc.py +0 -0
  149. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/data/v1/data_pb2_grpc.pyi +0 -0
  150. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/data/v2/__init__.py +0 -0
  151. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/data/v2/data_pb2.py +0 -0
  152. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/data/v2/data_pb2.pyi +0 -0
  153. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/data/v2/data_pb2_grpc.py +0 -0
  154. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/data/v2/data_pb2_grpc.pyi +0 -0
  155. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/data_imports/__init__.py +0 -0
  156. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/data_imports/v2/__init__.py +0 -0
  157. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/data_imports/v2/data_imports_pb2.py +0 -0
  158. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/data_imports/v2/data_imports_pb2.pyi +0 -0
  159. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/data_imports/v2/data_imports_pb2_grpc.py +0 -0
  160. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/data_imports/v2/data_imports_pb2_grpc.pyi +0 -0
  161. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/dlq_errors/__init__.py +0 -0
  162. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/dlq_errors/v2/__init__.py +0 -0
  163. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/dlq_errors/v2/dlq_errors_pb2.py +0 -0
  164. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/dlq_errors/v2/dlq_errors_pb2.pyi +0 -0
  165. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/dlq_errors/v2/dlq_errors_pb2_grpc.py +0 -0
  166. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/dlq_errors/v2/dlq_errors_pb2_grpc.pyi +0 -0
  167. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/ingest/__init__.py +0 -0
  168. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/ingest/v1/__init__.py +0 -0
  169. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/ingest/v1/ingest_pb2.py +0 -0
  170. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/ingest/v1/ingest_pb2.pyi +0 -0
  171. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/ingest/v1/ingest_pb2_grpc.py +0 -0
  172. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/ingest/v1/ingest_pb2_grpc.pyi +0 -0
  173. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/ingestion_configs/__init__.py +0 -0
  174. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/ingestion_configs/v1/__init__.py +0 -0
  175. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/ingestion_configs/v1/ingestion_configs_pb2.py +0 -0
  176. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/ingestion_configs/v1/ingestion_configs_pb2.pyi +0 -0
  177. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/ingestion_configs/v1/ingestion_configs_pb2_grpc.py +0 -0
  178. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/ingestion_configs/v1/ingestion_configs_pb2_grpc.pyi +0 -0
  179. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/ingestion_configs/v2/__init__.py +0 -0
  180. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/ingestion_configs/v2/ingestion_configs_pb2.py +0 -0
  181. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/ingestion_configs/v2/ingestion_configs_pb2.pyi +0 -0
  182. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/ingestion_configs/v2/ingestion_configs_pb2_grpc.py +0 -0
  183. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/ingestion_configs/v2/ingestion_configs_pb2_grpc.pyi +0 -0
  184. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/jobs/__init__.py +0 -0
  185. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/jobs/v1/__init__.py +0 -0
  186. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/jobs/v1/jobs_pb2.py +0 -0
  187. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/jobs/v1/jobs_pb2.pyi +0 -0
  188. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/jobs/v1/jobs_pb2_grpc.py +0 -0
  189. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/jobs/v1/jobs_pb2_grpc.pyi +0 -0
  190. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/me/__init__.py +0 -0
  191. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/me/v2/__init__.py +0 -0
  192. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/me/v2/me_pb2.py +0 -0
  193. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/me/v2/me_pb2.pyi +0 -0
  194. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/me/v2/me_pb2_grpc.py +0 -0
  195. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/me/v2/me_pb2_grpc.pyi +0 -0
  196. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/metadata/__init__.py +0 -0
  197. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/metadata/v1/__init__.py +0 -0
  198. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/metadata/v1/metadata_pb2.py +0 -0
  199. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/metadata/v1/metadata_pb2.pyi +0 -0
  200. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/metadata/v1/metadata_pb2_grpc.py +0 -0
  201. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/metadata/v1/metadata_pb2_grpc.pyi +0 -0
  202. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/notifications/__init__.py +0 -0
  203. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/notifications/v1/__init__.py +0 -0
  204. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/notifications/v1/notifications_pb2.py +0 -0
  205. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/notifications/v1/notifications_pb2.pyi +0 -0
  206. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/notifications/v1/notifications_pb2_grpc.py +0 -0
  207. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/notifications/v1/notifications_pb2_grpc.pyi +0 -0
  208. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/ping/__init__.py +0 -0
  209. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/ping/v1/__init__.py +0 -0
  210. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/ping/v1/ping_pb2.py +0 -0
  211. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/ping/v1/ping_pb2.pyi +0 -0
  212. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/ping/v1/ping_pb2_grpc.py +0 -0
  213. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/ping/v1/ping_pb2_grpc.pyi +0 -0
  214. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/protobuf_descriptors/__init__.py +0 -0
  215. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/protobuf_descriptors/v2/__init__.py +0 -0
  216. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/protobuf_descriptors/v2/channel_parsing_options_pb2.py +0 -0
  217. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/protobuf_descriptors/v2/channel_parsing_options_pb2.pyi +0 -0
  218. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/protobuf_descriptors/v2/channel_parsing_options_pb2_grpc.py +0 -0
  219. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/protobuf_descriptors/v2/channel_parsing_options_pb2_grpc.pyi +0 -0
  220. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/protobuf_descriptors/v2/protobuf_descriptors_pb2_grpc.py +0 -0
  221. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/protobuf_descriptors/v2/protobuf_descriptors_pb2_grpc.pyi +0 -0
  222. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/remote_files/__init__.py +0 -0
  223. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/remote_files/v1/__init__.py +0 -0
  224. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/remote_files/v1/remote_files_pb2.py +0 -0
  225. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/remote_files/v1/remote_files_pb2.pyi +0 -0
  226. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/remote_files/v1/remote_files_pb2_grpc.py +0 -0
  227. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/remote_files/v1/remote_files_pb2_grpc.pyi +0 -0
  228. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/report_templates/__init__.py +0 -0
  229. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/report_templates/v1/__init__.py +0 -0
  230. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/report_templates/v1/report_templates_pb2.py +0 -0
  231. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/report_templates/v1/report_templates_pb2.pyi +0 -0
  232. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/report_templates/v1/report_templates_pb2_grpc.py +0 -0
  233. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/report_templates/v1/report_templates_pb2_grpc.pyi +0 -0
  234. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/reports/__init__.py +0 -0
  235. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/reports/v1/__init__.py +0 -0
  236. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/reports/v1/reports_pb2.py +0 -0
  237. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/reports/v1/reports_pb2.pyi +0 -0
  238. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/reports/v1/reports_pb2_grpc.py +0 -0
  239. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/reports/v1/reports_pb2_grpc.pyi +0 -0
  240. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/roles/__init__.py +0 -0
  241. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/roles/v2/__init__.py +0 -0
  242. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/roles/v2/roles_pb2.py +0 -0
  243. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/roles/v2/roles_pb2.pyi +0 -0
  244. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/roles/v2/roles_pb2_grpc.py +0 -0
  245. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/roles/v2/roles_pb2_grpc.pyi +0 -0
  246. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/rule_evaluation/__init__.py +0 -0
  247. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/rule_evaluation/v1/__init__.py +0 -0
  248. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/rule_evaluation/v1/rule_evaluation_pb2_grpc.py +0 -0
  249. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/rule_evaluation/v1/rule_evaluation_pb2_grpc.pyi +0 -0
  250. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/rules/__init__.py +0 -0
  251. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/rules/v1/__init__.py +0 -0
  252. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/rules/v1/rules_pb2_grpc.py +0 -0
  253. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/rules/v1/rules_pb2_grpc.pyi +0 -0
  254. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/runs/__init__.py +0 -0
  255. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/runs/v2/__init__.py +0 -0
  256. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/runs/v2/runs_pb2.py +0 -0
  257. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/runs/v2/runs_pb2.pyi +0 -0
  258. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/runs/v2/runs_pb2_grpc.py +0 -0
  259. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/runs/v2/runs_pb2_grpc.pyi +0 -0
  260. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/saved_searches/__init__.py +0 -0
  261. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/saved_searches/v1/__init__.py +0 -0
  262. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/saved_searches/v1/saved_searches_pb2.py +0 -0
  263. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/saved_searches/v1/saved_searches_pb2.pyi +0 -0
  264. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/saved_searches/v1/saved_searches_pb2_grpc.py +0 -0
  265. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/saved_searches/v1/saved_searches_pb2_grpc.pyi +0 -0
  266. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/tags/__init__.py +0 -0
  267. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/tags/v1/__init__.py +0 -0
  268. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/tags/v1/tags_pb2.py +0 -0
  269. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/tags/v1/tags_pb2.pyi +0 -0
  270. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/tags/v1/tags_pb2_grpc.py +0 -0
  271. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/tags/v1/tags_pb2_grpc.pyi +0 -0
  272. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/tags/v2/__init__.py +0 -0
  273. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/tags/v2/tags_pb2.py +0 -0
  274. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/tags/v2/tags_pb2.pyi +0 -0
  275. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/tags/v2/tags_pb2_grpc.py +0 -0
  276. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/tags/v2/tags_pb2_grpc.pyi +0 -0
  277. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/unit/__init__.py +0 -0
  278. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/unit/v2/__init__.py +0 -0
  279. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/unit/v2/unit_pb2.py +0 -0
  280. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/unit/v2/unit_pb2.pyi +0 -0
  281. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/unit/v2/unit_pb2_grpc.py +0 -0
  282. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/unit/v2/unit_pb2_grpc.pyi +0 -0
  283. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/user_defined_functions/__init__.py +0 -0
  284. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/user_defined_functions/v1/__init__.py +0 -0
  285. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/user_defined_functions/v1/user_defined_functions_pb2.py +0 -0
  286. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/user_defined_functions/v1/user_defined_functions_pb2.pyi +0 -0
  287. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/user_defined_functions/v1/user_defined_functions_pb2_grpc.py +0 -0
  288. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/user_defined_functions/v1/user_defined_functions_pb2_grpc.pyi +0 -0
  289. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/user_groups/__init__.py +0 -0
  290. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/user_groups/v2/__init__.py +0 -0
  291. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/user_groups/v2/user_groups_pb2.py +0 -0
  292. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/user_groups/v2/user_groups_pb2.pyi +0 -0
  293. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/user_groups/v2/user_groups_pb2_grpc.py +0 -0
  294. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/user_groups/v2/user_groups_pb2_grpc.pyi +0 -0
  295. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/users/__init__.py +0 -0
  296. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/users/v2/__init__.py +0 -0
  297. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/users/v2/users_pb2.py +0 -0
  298. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/users/v2/users_pb2.pyi +0 -0
  299. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/users/v2/users_pb2_grpc.py +0 -0
  300. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/users/v2/users_pb2_grpc.pyi +0 -0
  301. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/views/__init__.py +0 -0
  302. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/views/v1/__init__.py +0 -0
  303. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/views/v1/views_pb2.py +0 -0
  304. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/views/v1/views_pb2.pyi +0 -0
  305. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/views/v1/views_pb2_grpc.py +0 -0
  306. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/views/v1/views_pb2_grpc.pyi +0 -0
  307. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/views/v2/__init__.py +0 -0
  308. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/views/v2/views_pb2.py +0 -0
  309. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/views/v2/views_pb2.pyi +0 -0
  310. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/views/v2/views_pb2_grpc.py +0 -0
  311. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift/views/v2/views_pb2_grpc.pyi +0 -0
  312. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift_client/__init__.py +0 -0
  313. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift_client/_internal/__init__.py +0 -0
  314. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift_client/_internal/gen_pyi.py +0 -0
  315. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift_client/_internal/low_level_wrappers/__init__.py +0 -0
  316. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift_client/_internal/low_level_wrappers/assets.py +0 -0
  317. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift_client/_internal/low_level_wrappers/base.py +0 -0
  318. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift_client/_internal/low_level_wrappers/calculated_channels.py +0 -0
  319. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift_client/_internal/low_level_wrappers/ping.py +0 -0
  320. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift_client/_internal/low_level_wrappers/runs.py +0 -0
  321. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift_client/_internal/sync_wrapper.py +0 -0
  322. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift_client/_internal/utils/__init__.py +0 -0
  323. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift_client/client.py +0 -0
  324. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift_client/errors.py +0 -0
  325. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift_client/resources/__init__.py +0 -0
  326. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift_client/resources/_base.py +0 -0
  327. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift_client/resources/assets.py +0 -0
  328. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift_client/resources/calculated_channels.py +0 -0
  329. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift_client/resources/ping.py +0 -0
  330. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift_client/resources/runs.py +0 -0
  331. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift_client/resources/sync_stubs/__init__.py +0 -0
  332. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift_client/resources/sync_stubs/__init__.pyi +0 -0
  333. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift_client/resources/sync_stubs/py.typed +0 -0
  334. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift_client/tests/__init__.py +0 -0
  335. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift_client/tests/_internal/__init__.py +0 -0
  336. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift_client/tests/_internal/test_gen_pyi.py +0 -0
  337. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift_client/tests/_internal/test_stub_module/__init__.py +0 -0
  338. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift_client/tests/_internal/test_stub_module/test_py.py +0 -0
  339. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift_client/tests/_internal/test_sync_wrapper.py +0 -0
  340. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift_client/tests/integrated/calculated_channels.py +0 -0
  341. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift_client/tests/integrated/channels.py +0 -0
  342. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift_client/tests/integrated/runs.py +0 -0
  343. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift_client/tests/util/__init__.py +0 -0
  344. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift_client/tests/util/test_cel_utils.py +0 -0
  345. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift_client/transport/__init__.py +0 -0
  346. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift_client/transport/base_connection.py +0 -0
  347. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift_client/transport/grpc_transport.py +0 -0
  348. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift_client/transport/rest_transport.py +0 -0
  349. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift_client/types/__init__.py +0 -0
  350. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift_client/types/_base.py +0 -0
  351. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift_client/types/asset.py +0 -0
  352. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift_client/types/calculated_channel.py +0 -0
  353. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift_client/types/channel.py +0 -0
  354. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift_client/types/run.py +0 -0
  355. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift_client/util/__init__.py +0 -0
  356. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift_client/util/cel_utils.py +0 -0
  357. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift_client/util/metadata.py +0 -0
  358. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift_client/util/timestamp.py +0 -0
  359. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift_grafana/py.typed +0 -0
  360. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift_grafana/sift_query_model.py +0 -0
  361. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift_py/__init__.py +0 -0
  362. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift_py/_internal/__init__.py +0 -0
  363. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift_py/_internal/cel.py +0 -0
  364. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift_py/_internal/channel.py +0 -0
  365. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift_py/_internal/convert/__init__.py +0 -0
  366. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift_py/_internal/convert/json.py +0 -0
  367. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift_py/_internal/convert/protobuf.py +0 -0
  368. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift_py/_internal/convert/timestamp.py +0 -0
  369. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift_py/_internal/metadata.py +0 -0
  370. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift_py/_internal/metadata_test.py +0 -0
  371. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift_py/_internal/test_util/__init__.py +0 -0
  372. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift_py/_internal/test_util/channel.py +0 -0
  373. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift_py/_internal/test_util/fn.py +0 -0
  374. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift_py/_internal/test_util/server_interceptor.py +0 -0
  375. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift_py/_internal/time.py +0 -0
  376. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift_py/_internal/user.py +0 -0
  377. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift_py/_rest_test.py +0 -0
  378. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift_py/asset/__init__.py +0 -0
  379. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift_py/asset/_config_test.py +0 -0
  380. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift_py/asset/_internal/shared.py +0 -0
  381. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift_py/asset/_service_test.py +0 -0
  382. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift_py/asset/config.py +0 -0
  383. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift_py/asset/service.py +0 -0
  384. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift_py/calculated_channels/__init__.py +0 -0
  385. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift_py/calculated_channels/_service_test.py +0 -0
  386. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift_py/calculated_channels/config.py +0 -0
  387. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift_py/calculated_channels/service.py +0 -0
  388. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift_py/data/__init__.py +0 -0
  389. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift_py/data/_channel.py +0 -0
  390. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift_py/data/_deserialize.py +0 -0
  391. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift_py/data/_deserialize_test.py +0 -0
  392. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift_py/data/_service_test.py +0 -0
  393. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift_py/data/_validate.py +0 -0
  394. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift_py/data/error.py +0 -0
  395. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift_py/data/query.py +0 -0
  396. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift_py/data/service.py +0 -0
  397. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift_py/data_import/__init__.py +0 -0
  398. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift_py/data_import/_config.py +0 -0
  399. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift_py/data_import/_config_test.py +0 -0
  400. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift_py/data_import/_csv_test.py +0 -0
  401. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift_py/data_import/_hdf5_test.py +0 -0
  402. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift_py/data_import/_ros_channel.py +0 -0
  403. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift_py/data_import/_rosbag_test.py +0 -0
  404. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift_py/data_import/_status_test.py +0 -0
  405. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift_py/data_import/_tdms_test.py +0 -0
  406. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift_py/data_import/ch10.py +0 -0
  407. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift_py/data_import/config.py +0 -0
  408. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift_py/data_import/csv.py +0 -0
  409. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift_py/data_import/hdf5.py +0 -0
  410. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift_py/data_import/rosbags.py +0 -0
  411. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift_py/data_import/status.py +0 -0
  412. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift_py/data_import/tdms.py +0 -0
  413. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift_py/data_import/tempfile.py +0 -0
  414. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift_py/data_import/time_format.py +0 -0
  415. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift_py/file_attachment/__init__.py +0 -0
  416. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift_py/file_attachment/_internal/__init__.py +0 -0
  417. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift_py/file_attachment/_internal/download.py +0 -0
  418. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift_py/file_attachment/_internal/upload.py +0 -0
  419. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift_py/file_attachment/_service_test.py +0 -0
  420. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift_py/file_attachment/entity.py +0 -0
  421. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift_py/file_attachment/metadata.py +0 -0
  422. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift_py/file_attachment/service.py +0 -0
  423. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift_py/grpc/__init__.py +0 -0
  424. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift_py/grpc/_async_interceptors/__init__.py +0 -0
  425. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift_py/grpc/_async_interceptors/base.py +0 -0
  426. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift_py/grpc/_async_interceptors/metadata.py +0 -0
  427. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift_py/grpc/_interceptors/__init__.py +0 -0
  428. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift_py/grpc/_interceptors/base.py +0 -0
  429. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift_py/grpc/_interceptors/context.py +0 -0
  430. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift_py/grpc/_interceptors/metadata.py +0 -0
  431. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift_py/grpc/_retry.py +0 -0
  432. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift_py/grpc/keepalive.py +0 -0
  433. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift_py/grpc/transport.py +0 -0
  434. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift_py/grpc/transport_test.py +0 -0
  435. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift_py/ingestion/__init__.py +0 -0
  436. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift_py/ingestion/_internal/__init__.py +0 -0
  437. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift_py/ingestion/_internal/channel.py +0 -0
  438. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift_py/ingestion/_internal/error.py +0 -0
  439. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift_py/ingestion/_internal/ingest_test.py +0 -0
  440. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift_py/ingestion/_internal/run.py +0 -0
  441. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift_py/ingestion/buffer.py +0 -0
  442. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift_py/ingestion/channel.py +0 -0
  443. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift_py/ingestion/config/__init__.py +0 -0
  444. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift_py/ingestion/config/_telemetry_test.py +0 -0
  445. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift_py/ingestion/config/telemetry.py +0 -0
  446. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift_py/ingestion/config/yaml/__init__.py +0 -0
  447. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift_py/ingestion/config/yaml/error.py +0 -0
  448. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift_py/ingestion/config/yaml/load.py +0 -0
  449. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift_py/ingestion/config/yaml/spec.py +0 -0
  450. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift_py/ingestion/config/yaml/test_load.py +0 -0
  451. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift_py/ingestion/flow.py +0 -0
  452. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift_py/ingestion/manager.py +0 -0
  453. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift_py/ingestion/rule/__init__.py +0 -0
  454. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift_py/ingestion/rule/config.py +0 -0
  455. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift_py/py.typed +0 -0
  456. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift_py/report/_report_test.py +0 -0
  457. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift_py/report/service.py +0 -0
  458. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift_py/report_templates/__init__.py +0 -0
  459. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift_py/report_templates/_config_test.py +0 -0
  460. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift_py/report_templates/_service_test.py +0 -0
  461. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift_py/report_templates/config.py +0 -0
  462. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift_py/report_templates/service.py +0 -0
  463. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift_py/rest.py +0 -0
  464. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift_py/rule/__init__.py +0 -0
  465. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift_py/rule/_config_test.py +0 -0
  466. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift_py/rule/_service_test.py +0 -0
  467. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift_py/rule/config.py +0 -0
  468. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift_py/rule/service.py +0 -0
  469. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift_py/rule_evaluation/_service_test.py +0 -0
  470. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift_py/rule_evaluation/service.py +0 -0
  471. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift_py/yaml/__init__.py +0 -0
  472. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift_py/yaml/_channel_test.py +0 -0
  473. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift_py/yaml/_rule_test.py +0 -0
  474. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift_py/yaml/calculated_channels.py +0 -0
  475. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift_py/yaml/channel.py +0 -0
  476. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift_py/yaml/report_templates.py +0 -0
  477. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift_py/yaml/rule.py +0 -0
  478. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift_py/yaml/utils.py +0 -0
  479. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift_stack_py.egg-info/SOURCES.txt +0 -0
  480. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift_stack_py.egg-info/dependency_links.txt +0 -0
  481. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift_stack_py.egg-info/requires.txt +0 -0
  482. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/lib/sift_stack_py.egg-info/top_level.txt +0 -0
  483. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/setup.cfg +0 -0
  484. {sift_stack_py-0.8.3 → sift_stack_py-0.8.5.dev1}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: sift_stack_py
3
- Version: 0.8.3
3
+ Version: 0.8.5.dev1
4
4
  Summary: Python client library for the Sift API
5
5
  Maintainer-email: Sift Software Engineers <engineering@siftstack.com>
6
6
  License: Copyright (c) 2024 Azimuth Industries Inc.
@@ -18,7 +18,7 @@ from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__
18
18
  from protoc_gen_openapiv2.options import annotations_pb2 as protoc__gen__openapiv2_dot_options_dot_annotations__pb2
19
19
 
20
20
 
21
- DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n7sift/protobuf_descriptors/v2/protobuf_descriptors.proto\x12\x1csift.protobuf_descriptors.v2\x1a\x1cgoogle/api/annotations.proto\x1a\x1fgoogle/api/field_behavior.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a.protoc-gen-openapiv2/options/annotations.proto\"\xdc\x01\n DeleteProtobufDescriptorsRequest\x12\x37\n\x16message_type_full_name\x18\x01 \x01(\tB\x02\x18\x01R\x13messageTypeFullName\x12 \n\tnamespace\x18\x02 \x01(\tB\x02\x18\x01R\tnamespace\x12\'\n\x0forganization_id\x18\x03 \x01(\tR\x0eorganizationId\x12\x34\n\x16protobuf_descriptor_id\x18\x04 \x01(\tR\x14protobufDescriptorId\"#\n!DeleteProtobufDescriptorsResponse\"\xc3\x01\n\x1c\x41\x64\x64ProtobufDescriptorRequest\x12\x61\n\x13protobuf_descriptor\x18\x01 \x01(\x0b\x32\x30.sift.protobuf_descriptors.v2.ProtobufDescriptorR\x12protobufDescriptor\x12@\n\x1c\x66orce_duplicate_registration\x18\x02 \x01(\x08R\x1a\x66orceDuplicateRegistration\"\x82\x01\n\x1d\x41\x64\x64ProtobufDescriptorResponse\x12\x61\n\x13protobuf_descriptor\x18\x01 \x01(\x0b\x32\x30.sift.protobuf_descriptors.v2.ProtobufDescriptorR\x12protobufDescriptor\"\x90\x01\n+CheckProtobufDescriptorCompatibilityRequest\x12\x61\n\x13protobuf_descriptor\x18\x01 \x01(\x0b\x32\x30.sift.protobuf_descriptors.v2.ProtobufDescriptorR\x12protobufDescriptor\"\xae\x02\n\x19IncompatibleProtobufField\x12\x34\n\x16protobuf_descriptor_id\x18\x01 \x01(\tR\x14protobufDescriptorId\x12*\n\x11message_full_name\x18\x02 \x01(\tR\x0fmessageFullName\x12,\n\x12\x64\x65sired_field_name\x18\x03 \x01(\tR\x10\x64\x65siredFieldName\x12,\n\x12\x63urrent_field_name\x18\x04 \x01(\tR\x10\x63urrentFieldName\x12!\n\x0c\x66ield_number\x18\x05 \x01(\tR\x0b\x66ieldNumber\x12\x16\n\x06reason\x18\x06 \x01(\tR\x06reason\x12\x18\n\x07\x64\x65tails\x18\x07 \x01(\tR\x07\x64\x65tails\"\xda\x01\n,CheckProtobufDescriptorCompatibilityResponse\x12\x19\n\x08is_valid\x18\x01 \x01(\x08R\x07isValid\x12\x8e\x01\n\'incompatible_protobuf_descriptor_fields\x18\x02 \x03(\x0b\x32\x37.sift.protobuf_descriptors.v2.IncompatibleProtobufFieldR$incompatibleProtobufDescriptorFields\"\xb9\x02\n\x12ProtobufDescriptor\x12\x33\n\x16message_type_full_name\x18\x01 \x01(\tR\x13messageTypeFullName\x12.\n\x13\x66ile_descriptor_set\x18\x02 \x01(\x0cR\x11\x66ileDescriptorSet\x12&\n\x0fproto_file_name\x18\x03 \x01(\tR\rprotoFileName\x12\x1c\n\tnamespace\x18\x04 \x01(\tR\tnamespace\x12\x34\n\x16protobuf_descriptor_id\x18\x05 \x01(\tR\x14protobufDescriptorId\x12\x42\n\x0c\x63reated_date\x18\x06 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\x03\xe0\x41\x03R\x0b\x63reatedDate\"\xa3\x01\n\x1eListProtobufDescriptorsRequest\x12 \n\tpage_size\x18\x01 \x01(\rB\x03\xe0\x41\x01R\x08pageSize\x12\"\n\npage_token\x18\x02 \x01(\tB\x03\xe0\x41\x01R\tpageToken\x12\x1b\n\x06\x66ilter\x18\x03 \x01(\tB\x03\xe0\x41\x01R\x06\x66ilter\x12\x1e\n\x08order_by\x18\x04 \x01(\tB\x03\xe0\x41\x01R\x07orderBy\"\xae\x01\n\x1fListProtobufDescriptorsResponse\x12\x63\n\x14protobuf_descriptors\x18\x01 \x03(\x0b\x32\x30.sift.protobuf_descriptors.v2.ProtobufDescriptorR\x13protobufDescriptors\x12&\n\x0fnext_page_token\x18\x02 \x01(\tR\rnextPageToken2\x8f\r\n\x19ProtobufDescriptorService\x12\xbd\x02\n\x15\x41\x64\x64ProtobufDescriptor\x12:.sift.protobuf_descriptors.v2.AddProtobufDescriptorRequest\x1a;.sift.protobuf_descriptors.v2.AddProtobufDescriptorResponse\"\xaa\x01\x92\x41\x7f\x12\x15\x41\x64\x64ProtobufDescriptor\x1a\x33Used to register a protobuf message to be ingested.*1ProtobufDescriptorService_AddProtobufDescriptorV2\x82\xd3\xe4\x93\x02\"\" /api/v2/protobuf-descriptors:add\x12\xb9\x03\n$CheckProtobufDescriptorCompatibility\x12I.sift.protobuf_descriptors.v2.CheckProtobufDescriptorCompatibilityRequest\x1aJ.sift.protobuf_descriptors.v2.CheckProtobufDescriptorCompatibilityResponse\"\xf9\x01\x92\x41\xbd\x01\x12$CheckProtobufDescriptorCompatibility\x1aSUsed to check if a protobuf descriptor is compatible with the existing descriptors.*@ProtobufDescriptorService_CheckProtobufDescriptorCompatibilityV2\x82\xd3\xe4\x93\x02\x32\"0/api/v2/protobuf-descriptors:check-compatibility\x12\xfb\x02\n\x19\x44\x65leteProtobufDescriptors\x12>.sift.protobuf_descriptors.v2.DeleteProtobufDescriptorsRequest\x1a?.sift.protobuf_descriptors.v2.DeleteProtobufDescriptorsResponse\"\xdc\x01\x92\x41\xb4\x01\x12\x19\x44\x65leteProtobufDescriptors\x1a`Delete protobuf descriptors of that match the provided `namespace` and `message_type_full_name`.*5ProtobufDescriptorService_DeleteProtobufDescriptorsV2\x82\xd3\xe4\x93\x02\x1e*\x1c/api/v2/protobuf-descriptors\x12\xc8\x02\n\x17ListProtobufDescriptors\x12<.sift.protobuf_descriptors.v2.ListProtobufDescriptorsRequest\x1a=.sift.protobuf_descriptors.v2.ListProtobufDescriptorsResponse\"\xaf\x01\x92\x41\x87\x01\x12\x17ListProtobufDescriptors\x1a\x37Retrieve protobuf descriptors using an optional filter.*3ProtobufDescriptorService_ListProtobufDescriptorsV2\x82\xd3\xe4\x93\x02\x1e\x12\x1c/api/v2/protobuf-descriptors\x1a\xac\x01\x92\x41\xa8\x01\x12[Service to programmatically interact with protobuf descriptors used for protobuf ingestion.\x1aI\n(Read more about what protobuf ingestion.\x12\x1d/ingestion/protobuf_ingestionB\xec\x01\n com.sift.protobuf_descriptors.v2B\x18ProtobufDescriptorsProtoP\x01\xa2\x02\x03SPX\xaa\x02\x1bSift.ProtobufDescriptors.V2\xca\x02\x1bSift\\ProtobufDescriptors\\V2\xe2\x02\'Sift\\ProtobufDescriptors\\V2\\GPBMetadata\xea\x02\x1dSift::ProtobufDescriptors::V2\x92\x41\x1f\x12\x1d\n\x1bProtobuf Descriptor Serviceb\x06proto3')
21
+ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n7sift/protobuf_descriptors/v2/protobuf_descriptors.proto\x12\x1csift.protobuf_descriptors.v2\x1a\x1cgoogle/api/annotations.proto\x1a\x1fgoogle/api/field_behavior.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a.protoc-gen-openapiv2/options/annotations.proto\"\xdc\x01\n DeleteProtobufDescriptorsRequest\x12\x37\n\x16message_type_full_name\x18\x01 \x01(\tB\x02\x18\x01R\x13messageTypeFullName\x12 \n\tnamespace\x18\x02 \x01(\tB\x02\x18\x01R\tnamespace\x12\'\n\x0forganization_id\x18\x03 \x01(\tR\x0eorganizationId\x12\x34\n\x16protobuf_descriptor_id\x18\x04 \x01(\tR\x14protobufDescriptorId\"#\n!DeleteProtobufDescriptorsResponse\"\xc3\x01\n\x1c\x41\x64\x64ProtobufDescriptorRequest\x12\x61\n\x13protobuf_descriptor\x18\x01 \x01(\x0b\x32\x30.sift.protobuf_descriptors.v2.ProtobufDescriptorR\x12protobufDescriptor\x12@\n\x1c\x66orce_duplicate_registration\x18\x02 \x01(\x08R\x1a\x66orceDuplicateRegistration\"\x82\x01\n\x1d\x41\x64\x64ProtobufDescriptorResponse\x12\x61\n\x13protobuf_descriptor\x18\x01 \x01(\x0b\x32\x30.sift.protobuf_descriptors.v2.ProtobufDescriptorR\x12protobufDescriptor\"\x90\x01\n+CheckProtobufDescriptorCompatibilityRequest\x12\x61\n\x13protobuf_descriptor\x18\x01 \x01(\x0b\x32\x30.sift.protobuf_descriptors.v2.ProtobufDescriptorR\x12protobufDescriptor\"\xcd\x02\n\x19IncompatibleProtobufField\x12\x34\n\x16protobuf_descriptor_id\x18\x01 \x01(\tR\x14protobufDescriptorId\x12*\n\x11message_full_name\x18\x02 \x01(\tR\x0fmessageFullName\x12,\n\x12\x64\x65sired_field_name\x18\x03 \x01(\tR\x10\x64\x65siredFieldName\x12,\n\x12\x63urrent_field_name\x18\x04 \x01(\tR\x10\x63urrentFieldName\x12!\n\x0c\x66ield_number\x18\x05 \x01(\tR\x0b\x66ieldNumber\x12\x16\n\x06reason\x18\x06 \x01(\tR\x06reason\x12\x18\n\x07\x64\x65tails\x18\x07 \x01(\tR\x07\x64\x65tails\x12\x1d\n\nfield_kind\x18\x08 \x01(\tR\tfieldKind\"\xda\x01\n,CheckProtobufDescriptorCompatibilityResponse\x12\x19\n\x08is_valid\x18\x01 \x01(\x08R\x07isValid\x12\x8e\x01\n\'incompatible_protobuf_descriptor_fields\x18\x02 \x03(\x0b\x32\x37.sift.protobuf_descriptors.v2.IncompatibleProtobufFieldR$incompatibleProtobufDescriptorFields\"\xb9\x02\n\x12ProtobufDescriptor\x12\x33\n\x16message_type_full_name\x18\x01 \x01(\tR\x13messageTypeFullName\x12.\n\x13\x66ile_descriptor_set\x18\x02 \x01(\x0cR\x11\x66ileDescriptorSet\x12&\n\x0fproto_file_name\x18\x03 \x01(\tR\rprotoFileName\x12\x1c\n\tnamespace\x18\x04 \x01(\tR\tnamespace\x12\x34\n\x16protobuf_descriptor_id\x18\x05 \x01(\tR\x14protobufDescriptorId\x12\x42\n\x0c\x63reated_date\x18\x06 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\x03\xe0\x41\x03R\x0b\x63reatedDate\"\xa3\x01\n\x1eListProtobufDescriptorsRequest\x12 \n\tpage_size\x18\x01 \x01(\rB\x03\xe0\x41\x01R\x08pageSize\x12\"\n\npage_token\x18\x02 \x01(\tB\x03\xe0\x41\x01R\tpageToken\x12\x1b\n\x06\x66ilter\x18\x03 \x01(\tB\x03\xe0\x41\x01R\x06\x66ilter\x12\x1e\n\x08order_by\x18\x04 \x01(\tB\x03\xe0\x41\x01R\x07orderBy\"\xae\x01\n\x1fListProtobufDescriptorsResponse\x12\x63\n\x14protobuf_descriptors\x18\x01 \x03(\x0b\x32\x30.sift.protobuf_descriptors.v2.ProtobufDescriptorR\x13protobufDescriptors\x12&\n\x0fnext_page_token\x18\x02 \x01(\tR\rnextPageToken2\x8f\r\n\x19ProtobufDescriptorService\x12\xbd\x02\n\x15\x41\x64\x64ProtobufDescriptor\x12:.sift.protobuf_descriptors.v2.AddProtobufDescriptorRequest\x1a;.sift.protobuf_descriptors.v2.AddProtobufDescriptorResponse\"\xaa\x01\x92\x41\x7f\x12\x15\x41\x64\x64ProtobufDescriptor\x1a\x33Used to register a protobuf message to be ingested.*1ProtobufDescriptorService_AddProtobufDescriptorV2\x82\xd3\xe4\x93\x02\"\" /api/v2/protobuf-descriptors:add\x12\xb9\x03\n$CheckProtobufDescriptorCompatibility\x12I.sift.protobuf_descriptors.v2.CheckProtobufDescriptorCompatibilityRequest\x1aJ.sift.protobuf_descriptors.v2.CheckProtobufDescriptorCompatibilityResponse\"\xf9\x01\x92\x41\xbd\x01\x12$CheckProtobufDescriptorCompatibility\x1aSUsed to check if a protobuf descriptor is compatible with the existing descriptors.*@ProtobufDescriptorService_CheckProtobufDescriptorCompatibilityV2\x82\xd3\xe4\x93\x02\x32\"0/api/v2/protobuf-descriptors:check-compatibility\x12\xfb\x02\n\x19\x44\x65leteProtobufDescriptors\x12>.sift.protobuf_descriptors.v2.DeleteProtobufDescriptorsRequest\x1a?.sift.protobuf_descriptors.v2.DeleteProtobufDescriptorsResponse\"\xdc\x01\x92\x41\xb4\x01\x12\x19\x44\x65leteProtobufDescriptors\x1a`Delete protobuf descriptors of that match the provided `namespace` and `message_type_full_name`.*5ProtobufDescriptorService_DeleteProtobufDescriptorsV2\x82\xd3\xe4\x93\x02\x1e*\x1c/api/v2/protobuf-descriptors\x12\xc8\x02\n\x17ListProtobufDescriptors\x12<.sift.protobuf_descriptors.v2.ListProtobufDescriptorsRequest\x1a=.sift.protobuf_descriptors.v2.ListProtobufDescriptorsResponse\"\xaf\x01\x92\x41\x87\x01\x12\x17ListProtobufDescriptors\x1a\x37Retrieve protobuf descriptors using an optional filter.*3ProtobufDescriptorService_ListProtobufDescriptorsV2\x82\xd3\xe4\x93\x02\x1e\x12\x1c/api/v2/protobuf-descriptors\x1a\xac\x01\x92\x41\xa8\x01\x12[Service to programmatically interact with protobuf descriptors used for protobuf ingestion.\x1aI\n(Read more about what protobuf ingestion.\x12\x1d/ingestion/protobuf_ingestionB\xec\x01\n com.sift.protobuf_descriptors.v2B\x18ProtobufDescriptorsProtoP\x01\xa2\x02\x03SPX\xaa\x02\x1bSift.ProtobufDescriptors.V2\xca\x02\x1bSift\\ProtobufDescriptors\\V2\xe2\x02\'Sift\\ProtobufDescriptors\\V2\\GPBMetadata\xea\x02\x1dSift::ProtobufDescriptors::V2\x92\x41\x1f\x12\x1d\n\x1bProtobuf Descriptor Serviceb\x06proto3')
22
22
 
23
23
  _globals = globals()
24
24
  _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
@@ -61,15 +61,15 @@ if not _descriptor._USE_C_DESCRIPTORS:
61
61
  _globals['_CHECKPROTOBUFDESCRIPTORCOMPATIBILITYREQUEST']._serialized_start=825
62
62
  _globals['_CHECKPROTOBUFDESCRIPTORCOMPATIBILITYREQUEST']._serialized_end=969
63
63
  _globals['_INCOMPATIBLEPROTOBUFFIELD']._serialized_start=972
64
- _globals['_INCOMPATIBLEPROTOBUFFIELD']._serialized_end=1274
65
- _globals['_CHECKPROTOBUFDESCRIPTORCOMPATIBILITYRESPONSE']._serialized_start=1277
66
- _globals['_CHECKPROTOBUFDESCRIPTORCOMPATIBILITYRESPONSE']._serialized_end=1495
67
- _globals['_PROTOBUFDESCRIPTOR']._serialized_start=1498
68
- _globals['_PROTOBUFDESCRIPTOR']._serialized_end=1811
69
- _globals['_LISTPROTOBUFDESCRIPTORSREQUEST']._serialized_start=1814
70
- _globals['_LISTPROTOBUFDESCRIPTORSREQUEST']._serialized_end=1977
71
- _globals['_LISTPROTOBUFDESCRIPTORSRESPONSE']._serialized_start=1980
72
- _globals['_LISTPROTOBUFDESCRIPTORSRESPONSE']._serialized_end=2154
73
- _globals['_PROTOBUFDESCRIPTORSERVICE']._serialized_start=2157
74
- _globals['_PROTOBUFDESCRIPTORSERVICE']._serialized_end=3836
64
+ _globals['_INCOMPATIBLEPROTOBUFFIELD']._serialized_end=1305
65
+ _globals['_CHECKPROTOBUFDESCRIPTORCOMPATIBILITYRESPONSE']._serialized_start=1308
66
+ _globals['_CHECKPROTOBUFDESCRIPTORCOMPATIBILITYRESPONSE']._serialized_end=1526
67
+ _globals['_PROTOBUFDESCRIPTOR']._serialized_start=1529
68
+ _globals['_PROTOBUFDESCRIPTOR']._serialized_end=1842
69
+ _globals['_LISTPROTOBUFDESCRIPTORSREQUEST']._serialized_start=1845
70
+ _globals['_LISTPROTOBUFDESCRIPTORSREQUEST']._serialized_end=2008
71
+ _globals['_LISTPROTOBUFDESCRIPTORSRESPONSE']._serialized_start=2011
72
+ _globals['_LISTPROTOBUFDESCRIPTORSRESPONSE']._serialized_end=2185
73
+ _globals['_PROTOBUFDESCRIPTORSERVICE']._serialized_start=2188
74
+ _globals['_PROTOBUFDESCRIPTORSERVICE']._serialized_end=3867
75
75
  # @@protoc_insertion_point(module_scope)
@@ -115,6 +115,7 @@ class IncompatibleProtobufField(google.protobuf.message.Message):
115
115
  FIELD_NUMBER_FIELD_NUMBER: builtins.int
116
116
  REASON_FIELD_NUMBER: builtins.int
117
117
  DETAILS_FIELD_NUMBER: builtins.int
118
+ FIELD_KIND_FIELD_NUMBER: builtins.int
118
119
  protobuf_descriptor_id: builtins.str
119
120
  message_full_name: builtins.str
120
121
  desired_field_name: builtins.str
@@ -122,6 +123,7 @@ class IncompatibleProtobufField(google.protobuf.message.Message):
122
123
  field_number: builtins.str
123
124
  reason: builtins.str
124
125
  details: builtins.str
126
+ field_kind: builtins.str
125
127
  def __init__(
126
128
  self,
127
129
  *,
@@ -132,8 +134,9 @@ class IncompatibleProtobufField(google.protobuf.message.Message):
132
134
  field_number: builtins.str = ...,
133
135
  reason: builtins.str = ...,
134
136
  details: builtins.str = ...,
137
+ field_kind: builtins.str = ...,
135
138
  ) -> None: ...
136
- def ClearField(self, field_name: typing.Literal["current_field_name", b"current_field_name", "desired_field_name", b"desired_field_name", "details", b"details", "field_number", b"field_number", "message_full_name", b"message_full_name", "protobuf_descriptor_id", b"protobuf_descriptor_id", "reason", b"reason"]) -> None: ...
139
+ def ClearField(self, field_name: typing.Literal["current_field_name", b"current_field_name", "desired_field_name", b"desired_field_name", "details", b"details", "field_kind", b"field_kind", "field_number", b"field_number", "message_full_name", b"message_full_name", "protobuf_descriptor_id", b"protobuf_descriptor_id", "reason", b"reason"]) -> None: ...
137
140
 
138
141
  global___IncompatibleProtobufField = IncompatibleProtobufField
139
142
 
@@ -20,7 +20,7 @@ from sift.common.type.v1 import resource_identifier_pb2 as sift_dot_common_dot_t
20
20
  from sift.rules.v1 import rules_pb2 as sift_dot_rules_dot_v1_dot_rules__pb2
21
21
 
22
22
 
23
- DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n-sift/rule_evaluation/v1/rule_evaluation.proto\x12\x17sift.rule_evaluation.v1\x1a\x1cgoogle/api/annotations.proto\x1a\x1fgoogle/api/field_behavior.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a.protoc-gen-openapiv2/options/annotations.proto\x1a-sift/common/type/v1/resource_identifier.proto\x1a\x19sift/rules/v1/rules.proto\"\xe2\x05\n\x14\x45valuateRulesRequest\x12;\n\x03run\x18\x01 \x01(\x0b\x32\'.sift.common.type.v1.ResourceIdentifierH\x00R\x03run\x12\x42\n\x06\x61ssets\x18\x02 \x01(\x0b\x32(.sift.rule_evaluation.v1.AssetsTimeRangeH\x00R\x06\x61ssets\x12M\n\x0erun_time_range\x18\t \x01(\x0b\x32%.sift.rule_evaluation.v1.RunTimeRangeH\x00R\x0crunTimeRange\x12U\n\x05rules\x18\x03 \x01(\x0b\x32=.sift.rule_evaluation.v1.EvaluateRulesFromCurrentRuleVersionsH\x01R\x05rules\x12]\n\rrule_versions\x18\x04 \x01(\x0b\x32\x36.sift.rule_evaluation.v1.EvaluateRulesFromRuleVersionsH\x01R\x0cruleVersions\x12\x63\n\x0freport_template\x18\x05 \x01(\x0b\x32\x38.sift.rule_evaluation.v1.EvaluateRulesFromReportTemplateH\x01R\x0ereportTemplate\x12\x66\n\x12\x61nnotation_options\x18\x06 \x01(\x0b\x32\x37.sift.rule_evaluation.v1.EvaluateRulesAnnotationOptionsR\x11\x61nnotationOptions\x12,\n\x0forganization_id\x18\x07 \x01(\tB\x03\xe0\x41\x01R\x0eorganizationId\x12)\n\x0breport_name\x18\x08 \x01(\tB\x03\xe0\x41\x01H\x02R\nreportName\x88\x01\x01\x42\x06\n\x04timeB\x06\n\x04modeB\x0e\n\x0c_report_name\"\xeb\x01\n\x0cRunTimeRange\x12\x39\n\x03run\x18\x01 \x01(\x0b\x32\'.sift.common.type.v1.ResourceIdentifierR\x03run\x12\x43\n\nstart_time\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\x03\xe0\x41\x01H\x00R\tstartTime\x88\x01\x01\x12?\n\x08\x65nd_time\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\x03\xe0\x41\x01H\x01R\x07\x65ndTime\x88\x01\x01\x42\r\n\x0b_start_timeB\x0b\n\t_end_time\"\xcf\x01\n\x0f\x41ssetsTimeRange\x12@\n\x06\x61ssets\x18\x01 \x01(\x0b\x32#.sift.common.type.v1.NamedResourcesB\x03\xe0\x41\x02R\x06\x61ssets\x12>\n\nstart_time\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\x03\xe0\x41\x02R\tstartTime\x12:\n\x08\x65nd_time\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\x03\xe0\x41\x02R\x07\x65ndTime\"k\n$EvaluateRulesFromCurrentRuleVersions\x12\x43\n\x05rules\x18\x01 \x01(\x0b\x32(.sift.common.type.v1.ResourceIdentifiersB\x03\xe0\x41\x02R\x05rules\"x\n\x1f\x45valuateRulesFromReportTemplate\x12U\n\x0freport_template\x18\x01 \x01(\x0b\x32\'.sift.common.type.v1.ResourceIdentifierB\x03\xe0\x41\x02R\x0ereportTemplate\"N\n\x1d\x45valuateRulesFromRuleVersions\x12-\n\x10rule_version_ids\x18\x01 \x03(\tB\x03\xe0\x41\x02R\x0eruleVersionIds\"^\n\x1e\x45valuateRulesAnnotationOptions\x12<\n\x04tags\x18\x01 \x01(\x0b\x32#.sift.common.type.v1.NamedResourcesB\x03\xe0\x41\x02R\x04tags\"\xb7\x01\n\x15\x45valuateRulesResponse\x12=\n\x18\x63reated_annotation_count\x18\x01 \x01(\x05\x42\x03\xe0\x41\x02R\x16\x63reatedAnnotationCount\x12%\n\treport_id\x18\x02 \x01(\tB\x03\xe0\x41\x01H\x00R\x08reportId\x88\x01\x01\x12\x1f\n\x06job_id\x18\x03 \x01(\tB\x03\xe0\x41\x01H\x01R\x05jobId\x88\x01\x01\x42\x0c\n\n_report_idB\t\n\x07_job_id\"\xde\x04\n\x1b\x45valuateRulesPreviewRequest\x12;\n\x03run\x18\x01 \x01(\x0b\x32\'.sift.common.type.v1.ResourceIdentifierH\x00R\x03run\x12M\n\x0erun_time_range\x18\x08 \x01(\x0b\x32%.sift.rule_evaluation.v1.RunTimeRangeH\x00R\x0crunTimeRange\x12U\n\x05rules\x18\x03 \x01(\x0b\x32=.sift.rule_evaluation.v1.EvaluateRulesFromCurrentRuleVersionsH\x01R\x05rules\x12]\n\rrule_versions\x18\x04 \x01(\x0b\x32\x36.sift.rule_evaluation.v1.EvaluateRulesFromRuleVersionsH\x01R\x0cruleVersions\x12\x63\n\x0freport_template\x18\x05 \x01(\x0b\x32\x38.sift.rule_evaluation.v1.EvaluateRulesFromReportTemplateH\x01R\x0ereportTemplate\x12Z\n\x0crule_configs\x18\x06 \x01(\x0b\x32\x35.sift.rule_evaluation.v1.EvaluateRulesFromRuleConfigsH\x01R\x0bruleConfigs\x12,\n\x0forganization_id\x18\x07 \x01(\tB\x03\xe0\x41\x01R\x0eorganizationIdB\x06\n\x04timeB\x06\n\x04mode\"_\n\x1c\x45valuateRulesFromRuleConfigs\x12?\n\x07\x63onfigs\x18\x01 \x03(\x0b\x32 .sift.rules.v1.UpdateRuleRequestB\x03\xe0\x41\x02R\x07\x63onfigs\"\xae\x01\n\x1c\x45valuateRulesPreviewResponse\x12=\n\x18\x63reated_annotation_count\x18\x01 \x01(\x05\x42\x03\xe0\x41\x02R\x16\x63reatedAnnotationCount\x12O\n\x13\x64ry_run_annotations\x18\x02 \x03(\x0b\x32\x1f.sift.rules.v1.DryRunAnnotationR\x11\x64ryRunAnnotations2\xd8\x06\n\x15RuleEvaluationService\x12\xc3\x02\n\rEvaluateRules\x12-.sift.rule_evaluation.v1.EvaluateRulesRequest\x1a..sift.rule_evaluation.v1.EvaluateRulesResponse\"\xd2\x01\x92\x41\xa7\x01\x12\rEvaluateRules\x1a\x95\x01\x45valuate rules from a designated source against a run or asset and return the total amount of annotations created and the ID of the generated report.\x82\xd3\xe4\x93\x02!\"\x1c/api/v1/rules/evaluate-rules:\x01*\x12\xda\x02\n\x14\x45valuateRulesPreview\x12\x34.sift.rule_evaluation.v1.EvaluateRulesPreviewRequest\x1a\x35.sift.rule_evaluation.v1.EvaluateRulesPreviewResponse\"\xd4\x01\x92\x41\xa1\x01\x12\x14\x45valuateRulesPreview\x1a\x88\x01Perform a dry run evaluation for existing rules or rule configurations against a run and return the annotations that would be generated.\x82\xd3\xe4\x93\x02)\"$/api/v1/rules/evaluate-rules:preview:\x01*\x1a\x9b\x01\x92\x41\x97\x01\x12\x1aService to evaluate rules.\x1ay\n\x1fRead more about what rules are.\x12Vhttps://customer.support.siftstack.com/servicedesk/customer/portal/2/article/265421102B\xca\x01\n\x1b\x63om.sift.rule_evaluation.v1B\x13RuleEvaluationProtoP\x01\xa2\x02\x03SRX\xaa\x02\x16Sift.RuleEvaluation.V1\xca\x02\x16Sift\\RuleEvaluation\\V1\xe2\x02\"Sift\\RuleEvaluation\\V1\\GPBMetadata\xea\x02\x18Sift::RuleEvaluation::V1\x92\x41\x1b\x12\x19\n\x17Rule Evaluation Serviceb\x06proto3')
23
+ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n-sift/rule_evaluation/v1/rule_evaluation.proto\x12\x17sift.rule_evaluation.v1\x1a\x1cgoogle/api/annotations.proto\x1a\x1fgoogle/api/field_behavior.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a.protoc-gen-openapiv2/options/annotations.proto\x1a-sift/common/type/v1/resource_identifier.proto\x1a\x19sift/rules/v1/rules.proto\"\xe2\x05\n\x14\x45valuateRulesRequest\x12;\n\x03run\x18\x01 \x01(\x0b\x32\'.sift.common.type.v1.ResourceIdentifierH\x00R\x03run\x12\x42\n\x06\x61ssets\x18\x02 \x01(\x0b\x32(.sift.rule_evaluation.v1.AssetsTimeRangeH\x00R\x06\x61ssets\x12M\n\x0erun_time_range\x18\t \x01(\x0b\x32%.sift.rule_evaluation.v1.RunTimeRangeH\x00R\x0crunTimeRange\x12U\n\x05rules\x18\x03 \x01(\x0b\x32=.sift.rule_evaluation.v1.EvaluateRulesFromCurrentRuleVersionsH\x01R\x05rules\x12]\n\rrule_versions\x18\x04 \x01(\x0b\x32\x36.sift.rule_evaluation.v1.EvaluateRulesFromRuleVersionsH\x01R\x0cruleVersions\x12\x63\n\x0freport_template\x18\x05 \x01(\x0b\x32\x38.sift.rule_evaluation.v1.EvaluateRulesFromReportTemplateH\x01R\x0ereportTemplate\x12\x66\n\x12\x61nnotation_options\x18\x06 \x01(\x0b\x32\x37.sift.rule_evaluation.v1.EvaluateRulesAnnotationOptionsR\x11\x61nnotationOptions\x12,\n\x0forganization_id\x18\x07 \x01(\tB\x03\xe0\x41\x01R\x0eorganizationId\x12)\n\x0breport_name\x18\x08 \x01(\tB\x03\xe0\x41\x01H\x02R\nreportName\x88\x01\x01\x42\x06\n\x04timeB\x06\n\x04modeB\x0e\n\x0c_report_name\"\xeb\x01\n\x0cRunTimeRange\x12\x39\n\x03run\x18\x01 \x01(\x0b\x32\'.sift.common.type.v1.ResourceIdentifierR\x03run\x12\x43\n\nstart_time\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\x03\xe0\x41\x01H\x00R\tstartTime\x88\x01\x01\x12?\n\x08\x65nd_time\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\x03\xe0\x41\x01H\x01R\x07\x65ndTime\x88\x01\x01\x42\r\n\x0b_start_timeB\x0b\n\t_end_time\"\xcf\x01\n\x0f\x41ssetsTimeRange\x12@\n\x06\x61ssets\x18\x01 \x01(\x0b\x32#.sift.common.type.v1.NamedResourcesB\x03\xe0\x41\x02R\x06\x61ssets\x12>\n\nstart_time\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\x03\xe0\x41\x02R\tstartTime\x12:\n\x08\x65nd_time\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\x03\xe0\x41\x02R\x07\x65ndTime\"k\n$EvaluateRulesFromCurrentRuleVersions\x12\x43\n\x05rules\x18\x01 \x01(\x0b\x32(.sift.common.type.v1.ResourceIdentifiersB\x03\xe0\x41\x02R\x05rules\"x\n\x1f\x45valuateRulesFromReportTemplate\x12U\n\x0freport_template\x18\x01 \x01(\x0b\x32\'.sift.common.type.v1.ResourceIdentifierB\x03\xe0\x41\x02R\x0ereportTemplate\"N\n\x1d\x45valuateRulesFromRuleVersions\x12-\n\x10rule_version_ids\x18\x01 \x03(\tB\x03\xe0\x41\x02R\x0eruleVersionIds\"^\n\x1e\x45valuateRulesAnnotationOptions\x12<\n\x04tags\x18\x01 \x01(\x0b\x32#.sift.common.type.v1.NamedResourcesB\x03\xe0\x41\x02R\x04tags\"\xb7\x01\n\x15\x45valuateRulesResponse\x12=\n\x18\x63reated_annotation_count\x18\x01 \x01(\x05\x42\x03\xe0\x41\x02R\x16\x63reatedAnnotationCount\x12%\n\treport_id\x18\x02 \x01(\tB\x03\xe0\x41\x01H\x00R\x08reportId\x88\x01\x01\x12\x1f\n\x06job_id\x18\x03 \x01(\tB\x03\xe0\x41\x01H\x01R\x05jobId\x88\x01\x01\x42\x0c\n\n_report_idB\t\n\x07_job_id\"\xde\x04\n\x1b\x45valuateRulesPreviewRequest\x12;\n\x03run\x18\x01 \x01(\x0b\x32\'.sift.common.type.v1.ResourceIdentifierH\x00R\x03run\x12M\n\x0erun_time_range\x18\x08 \x01(\x0b\x32%.sift.rule_evaluation.v1.RunTimeRangeH\x00R\x0crunTimeRange\x12U\n\x05rules\x18\x03 \x01(\x0b\x32=.sift.rule_evaluation.v1.EvaluateRulesFromCurrentRuleVersionsH\x01R\x05rules\x12]\n\rrule_versions\x18\x04 \x01(\x0b\x32\x36.sift.rule_evaluation.v1.EvaluateRulesFromRuleVersionsH\x01R\x0cruleVersions\x12\x63\n\x0freport_template\x18\x05 \x01(\x0b\x32\x38.sift.rule_evaluation.v1.EvaluateRulesFromReportTemplateH\x01R\x0ereportTemplate\x12Z\n\x0crule_configs\x18\x06 \x01(\x0b\x32\x35.sift.rule_evaluation.v1.EvaluateRulesFromRuleConfigsH\x01R\x0bruleConfigs\x12,\n\x0forganization_id\x18\x07 \x01(\tB\x03\xe0\x41\x01R\x0eorganizationIdB\x06\n\x04timeB\x06\n\x04mode\"_\n\x1c\x45valuateRulesFromRuleConfigs\x12?\n\x07\x63onfigs\x18\x01 \x03(\x0b\x32 .sift.rules.v1.UpdateRuleRequestB\x03\xe0\x41\x02R\x07\x63onfigs\"\xe8\x01\n\x11RulePreviewOutput\x12 \n\trule_name\x18\x01 \x01(\tB\x03\xe0\x41\x02R\x08ruleName\x12\x17\n\x07rule_id\x18\x02 \x01(\tR\x06ruleId\x12&\n\x0frule_version_id\x18\x03 \x01(\tR\rruleVersionId\x12\x1e\n\x08\x61sset_id\x18\x04 \x01(\tB\x03\xe0\x41\x02R\x07\x61ssetId\x12 \n\texit_code\x18\x05 \x01(\x05\x42\x03\xe0\x41\x02R\x08\x65xitCode\x12\x16\n\x06stdout\x18\x06 \x01(\tR\x06stdout\x12\x16\n\x06stderr\x18\x07 \x01(\tR\x06stderr\"\xfd\x01\n\x1c\x45valuateRulesPreviewResponse\x12=\n\x18\x63reated_annotation_count\x18\x01 \x01(\x05\x42\x03\xe0\x41\x02R\x16\x63reatedAnnotationCount\x12O\n\x13\x64ry_run_annotations\x18\x02 \x03(\x0b\x32\x1f.sift.rules.v1.DryRunAnnotationR\x11\x64ryRunAnnotations\x12M\n\x0crule_outputs\x18\x03 \x03(\x0b\x32*.sift.rule_evaluation.v1.RulePreviewOutputR\x0bruleOutputs2\xd8\x06\n\x15RuleEvaluationService\x12\xc3\x02\n\rEvaluateRules\x12-.sift.rule_evaluation.v1.EvaluateRulesRequest\x1a..sift.rule_evaluation.v1.EvaluateRulesResponse\"\xd2\x01\x92\x41\xa7\x01\x12\rEvaluateRules\x1a\x95\x01\x45valuate rules from a designated source against a run or asset and return the total amount of annotations created and the ID of the generated report.\x82\xd3\xe4\x93\x02!\"\x1c/api/v1/rules/evaluate-rules:\x01*\x12\xda\x02\n\x14\x45valuateRulesPreview\x12\x34.sift.rule_evaluation.v1.EvaluateRulesPreviewRequest\x1a\x35.sift.rule_evaluation.v1.EvaluateRulesPreviewResponse\"\xd4\x01\x92\x41\xa1\x01\x12\x14\x45valuateRulesPreview\x1a\x88\x01Perform a dry run evaluation for existing rules or rule configurations against a run and return the annotations that would be generated.\x82\xd3\xe4\x93\x02)\"$/api/v1/rules/evaluate-rules:preview:\x01*\x1a\x9b\x01\x92\x41\x97\x01\x12\x1aService to evaluate rules.\x1ay\n\x1fRead more about what rules are.\x12Vhttps://customer.support.siftstack.com/servicedesk/customer/portal/2/article/265421102B\xca\x01\n\x1b\x63om.sift.rule_evaluation.v1B\x13RuleEvaluationProtoP\x01\xa2\x02\x03SRX\xaa\x02\x16Sift.RuleEvaluation.V1\xca\x02\x16Sift\\RuleEvaluation\\V1\xe2\x02\"Sift\\RuleEvaluation\\V1\\GPBMetadata\xea\x02\x18Sift::RuleEvaluation::V1\x92\x41\x1b\x12\x19\n\x17Rule Evaluation Serviceb\x06proto3')
24
24
 
25
25
  _globals = globals()
26
26
  _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
@@ -60,6 +60,12 @@ if not _descriptor._USE_C_DESCRIPTORS:
60
60
  _globals['_EVALUATERULESPREVIEWREQUEST'].fields_by_name['organization_id']._serialized_options = b'\340A\001'
61
61
  _globals['_EVALUATERULESFROMRULECONFIGS'].fields_by_name['configs']._loaded_options = None
62
62
  _globals['_EVALUATERULESFROMRULECONFIGS'].fields_by_name['configs']._serialized_options = b'\340A\002'
63
+ _globals['_RULEPREVIEWOUTPUT'].fields_by_name['rule_name']._loaded_options = None
64
+ _globals['_RULEPREVIEWOUTPUT'].fields_by_name['rule_name']._serialized_options = b'\340A\002'
65
+ _globals['_RULEPREVIEWOUTPUT'].fields_by_name['asset_id']._loaded_options = None
66
+ _globals['_RULEPREVIEWOUTPUT'].fields_by_name['asset_id']._serialized_options = b'\340A\002'
67
+ _globals['_RULEPREVIEWOUTPUT'].fields_by_name['exit_code']._loaded_options = None
68
+ _globals['_RULEPREVIEWOUTPUT'].fields_by_name['exit_code']._serialized_options = b'\340A\002'
63
69
  _globals['_EVALUATERULESPREVIEWRESPONSE'].fields_by_name['created_annotation_count']._loaded_options = None
64
70
  _globals['_EVALUATERULESPREVIEWRESPONSE'].fields_by_name['created_annotation_count']._serialized_options = b'\340A\002'
65
71
  _globals['_RULEEVALUATIONSERVICE']._loaded_options = None
@@ -88,8 +94,10 @@ if not _descriptor._USE_C_DESCRIPTORS:
88
94
  _globals['_EVALUATERULESPREVIEWREQUEST']._serialized_end=2681
89
95
  _globals['_EVALUATERULESFROMRULECONFIGS']._serialized_start=2683
90
96
  _globals['_EVALUATERULESFROMRULECONFIGS']._serialized_end=2778
91
- _globals['_EVALUATERULESPREVIEWRESPONSE']._serialized_start=2781
92
- _globals['_EVALUATERULESPREVIEWRESPONSE']._serialized_end=2955
93
- _globals['_RULEEVALUATIONSERVICE']._serialized_start=2958
94
- _globals['_RULEEVALUATIONSERVICE']._serialized_end=3814
97
+ _globals['_RULEPREVIEWOUTPUT']._serialized_start=2781
98
+ _globals['_RULEPREVIEWOUTPUT']._serialized_end=3013
99
+ _globals['_EVALUATERULESPREVIEWRESPONSE']._serialized_start=3016
100
+ _globals['_EVALUATERULESPREVIEWRESPONSE']._serialized_end=3269
101
+ _globals['_RULEEVALUATIONSERVICE']._serialized_start=3272
102
+ _globals['_RULEEVALUATIONSERVICE']._serialized_end=4128
95
103
  # @@protoc_insertion_point(module_scope)
@@ -280,21 +280,58 @@ class EvaluateRulesFromRuleConfigs(google.protobuf.message.Message):
280
280
 
281
281
  global___EvaluateRulesFromRuleConfigs = EvaluateRulesFromRuleConfigs
282
282
 
283
+ @typing.final
284
+ class RulePreviewOutput(google.protobuf.message.Message):
285
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
286
+
287
+ RULE_NAME_FIELD_NUMBER: builtins.int
288
+ RULE_ID_FIELD_NUMBER: builtins.int
289
+ RULE_VERSION_ID_FIELD_NUMBER: builtins.int
290
+ ASSET_ID_FIELD_NUMBER: builtins.int
291
+ EXIT_CODE_FIELD_NUMBER: builtins.int
292
+ STDOUT_FIELD_NUMBER: builtins.int
293
+ STDERR_FIELD_NUMBER: builtins.int
294
+ rule_name: builtins.str
295
+ rule_id: builtins.str
296
+ rule_version_id: builtins.str
297
+ asset_id: builtins.str
298
+ exit_code: builtins.int
299
+ stdout: builtins.str
300
+ stderr: builtins.str
301
+ def __init__(
302
+ self,
303
+ *,
304
+ rule_name: builtins.str = ...,
305
+ rule_id: builtins.str = ...,
306
+ rule_version_id: builtins.str = ...,
307
+ asset_id: builtins.str = ...,
308
+ exit_code: builtins.int = ...,
309
+ stdout: builtins.str = ...,
310
+ stderr: builtins.str = ...,
311
+ ) -> None: ...
312
+ def ClearField(self, field_name: typing.Literal["asset_id", b"asset_id", "exit_code", b"exit_code", "rule_id", b"rule_id", "rule_name", b"rule_name", "rule_version_id", b"rule_version_id", "stderr", b"stderr", "stdout", b"stdout"]) -> None: ...
313
+
314
+ global___RulePreviewOutput = RulePreviewOutput
315
+
283
316
  @typing.final
284
317
  class EvaluateRulesPreviewResponse(google.protobuf.message.Message):
285
318
  DESCRIPTOR: google.protobuf.descriptor.Descriptor
286
319
 
287
320
  CREATED_ANNOTATION_COUNT_FIELD_NUMBER: builtins.int
288
321
  DRY_RUN_ANNOTATIONS_FIELD_NUMBER: builtins.int
322
+ RULE_OUTPUTS_FIELD_NUMBER: builtins.int
289
323
  created_annotation_count: builtins.int
290
324
  @property
291
325
  def dry_run_annotations(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[sift.rules.v1.rules_pb2.DryRunAnnotation]: ...
326
+ @property
327
+ def rule_outputs(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___RulePreviewOutput]: ...
292
328
  def __init__(
293
329
  self,
294
330
  *,
295
331
  created_annotation_count: builtins.int = ...,
296
332
  dry_run_annotations: collections.abc.Iterable[sift.rules.v1.rules_pb2.DryRunAnnotation] | None = ...,
333
+ rule_outputs: collections.abc.Iterable[global___RulePreviewOutput] | None = ...,
297
334
  ) -> None: ...
298
- def ClearField(self, field_name: typing.Literal["created_annotation_count", b"created_annotation_count", "dry_run_annotations", b"dry_run_annotations"]) -> None: ...
335
+ def ClearField(self, field_name: typing.Literal["created_annotation_count", b"created_annotation_count", "dry_run_annotations", b"dry_run_annotations", "rule_outputs", b"rule_outputs"]) -> None: ...
299
336
 
300
337
  global___EvaluateRulesPreviewResponse = EvaluateRulesPreviewResponse
@@ -21,7 +21,7 @@ from sift.common.type.v1 import resource_identifier_pb2 as sift_dot_common_dot_t
21
21
  from sift.common.type.v1 import user_defined_functions_pb2 as sift_dot_common_dot_type_dot_v1_dot_user__defined__functions__pb2
22
22
 
23
23
 
24
- DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x19sift/rules/v1/rules.proto\x12\rsift.rules.v1\x1a\x1cgoogle/api/annotations.proto\x1a\x1fgoogle/api/field_behavior.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a.protoc-gen-openapiv2/options/annotations.proto\x1a%sift/annotations/v1/annotations.proto\x1a-sift/common/type/v1/resource_identifier.proto\x1a\x30sift/common/type/v1/user_defined_functions.proto\"\x99\x07\n\x04Rule\x12\x1c\n\x07rule_id\x18\x01 \x01(\tB\x03\xe0\x41\x02R\x06ruleId\x12 \n\x08\x61sset_id\x18\x02 \x01(\tB\x05\x18\x01\xe0\x41\x02R\x07\x61ssetId\x12\x17\n\x04name\x18\x03 \x01(\tB\x03\xe0\x41\x02R\x04name\x12%\n\x0b\x64\x65scription\x18\x04 \x01(\tB\x03\xe0\x41\x02R\x0b\x64\x65scription\x12\"\n\nis_enabled\x18\x06 \x01(\x08\x42\x03\xe0\x41\x02R\tisEnabled\x12\x42\n\x0c\x63reated_date\x18\x07 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\x03\xe0\x41\x02R\x0b\x63reatedDate\x12\x44\n\rmodified_date\x18\x08 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\x03\xe0\x41\x02R\x0cmodifiedDate\x12\x30\n\x12\x63reated_by_user_id\x18\t \x01(\tB\x03\xe0\x41\x02R\x0f\x63reatedByUserId\x12\x32\n\x13modified_by_user_id\x18\n \x01(\tB\x03\xe0\x41\x02R\x10modifiedByUserId\x12,\n\x0forganization_id\x18\x0b \x01(\tB\x03\xe0\x41\x02R\x0eorganizationId\x12\x41\n\nconditions\x18\x0c \x03(\x0b\x32\x1c.sift.rules.v1.RuleConditionB\x03\xe0\x41\x02R\nconditions\x12\x42\n\x0crule_version\x18\r \x01(\x0b\x32\x1a.sift.rules.v1.RuleVersionB\x03\xe0\x41\x02R\x0bruleVersion\x12\"\n\nclient_key\x18\x0e \x01(\tB\x03\xe0\x41\x01R\tclientKey\x12[\n\x13\x61sset_configuration\x18\x0f \x01(\x0b\x32%.sift.rules.v1.RuleAssetConfigurationB\x03\xe0\x41\x02R\x12\x61ssetConfiguration\x12W\n\x13\x63ontextual_channels\x18\x10 \x01(\x0b\x32!.sift.rules.v1.ContextualChannelsB\x03\xe0\x41\x02R\x12\x63ontextualChannels\x12\x42\n\x0c\x64\x65leted_date\x18\x11 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\x03\xe0\x41\x01R\x0b\x64\x65letedDate\x12$\n\x0bis_external\x18\x12 \x01(\x08\x42\x03\xe0\x41\x02R\nisExternalJ\x04\x08\x05\x10\x06\"\x9b\x04\n\rRuleCondition\x12/\n\x11rule_condition_id\x18\x01 \x01(\tB\x03\xe0\x41\x02R\x0fruleConditionId\x12\x1c\n\x07rule_id\x18\x02 \x01(\tB\x03\xe0\x41\x02R\x06ruleId\x12K\n\nexpression\x18\x03 \x01(\x0b\x32&.sift.rules.v1.RuleConditionExpressionB\x03\xe0\x41\x02R\nexpression\x12\x42\n\x0c\x63reated_date\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\x03\xe0\x41\x02R\x0b\x63reatedDate\x12\x44\n\rmodified_date\x18\x06 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\x03\xe0\x41\x02R\x0cmodifiedDate\x12\x30\n\x12\x63reated_by_user_id\x18\x07 \x01(\tB\x03\xe0\x41\x02R\x0f\x63reatedByUserId\x12\x32\n\x13modified_by_user_id\x18\x08 \x01(\tB\x03\xe0\x41\x02R\x10modifiedByUserId\x12\x38\n\x07\x61\x63tions\x18\t \x03(\x0b\x32\x19.sift.rules.v1.RuleActionB\x03\xe0\x41\x02R\x07\x61\x63tions\x12>\n\x19rule_condition_version_id\x18\n \x01(\tB\x03\xe0\x41\x02R\x16ruleConditionVersionIdJ\x04\x08\x04\x10\x05\"\xa6\x04\n\nRuleAction\x12)\n\x0erule_action_id\x18\x01 \x01(\tB\x03\xe0\x41\x02R\x0cruleActionId\x12/\n\x11rule_condition_id\x18\x02 \x01(\tB\x03\xe0\x41\x02R\x0fruleConditionId\x12?\n\x0b\x61\x63tion_type\x18\x03 \x01(\x0e\x32\x19.sift.rules.v1.ActionKindB\x03\xe0\x41\x02R\nactionType\x12Q\n\rconfiguration\x18\x04 \x01(\x0b\x32&.sift.rules.v1.RuleActionConfigurationB\x03\xe0\x41\x02R\rconfiguration\x12\x42\n\x0c\x63reated_date\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\x03\xe0\x41\x02R\x0b\x63reatedDate\x12\x44\n\rmodified_date\x18\x06 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\x03\xe0\x41\x02R\x0cmodifiedDate\x12\x30\n\x12\x63reated_by_user_id\x18\x07 \x01(\tB\x03\xe0\x41\x02R\x0f\x63reatedByUserId\x12\x32\n\x13modified_by_user_id\x18\x08 \x01(\tB\x03\xe0\x41\x02R\x10modifiedByUserId\x12\x38\n\x16rule_action_version_id\x18\t \x01(\tB\x03\xe0\x41\x02R\x13ruleActionVersionId\"N\n\x16RuleAssetConfiguration\x12\x1b\n\tasset_ids\x18\x01 \x03(\tR\x08\x61ssetIds\x12\x17\n\x07tag_ids\x18\x02 \x03(\tR\x06tagIds\"V\n\x12\x43ontextualChannels\x12@\n\x08\x63hannels\x18\x01 \x03(\x0b\x32\x1f.sift.rules.v1.ChannelReferenceB\x03\xe0\x41\x02R\x08\x63hannels\"\xb6\x01\n\x1f\x41ssetExpressionValidationResult\x12\x1e\n\x08\x61sset_id\x18\x01 \x01(\tB\x03\xe0\x41\x02R\x07\x61ssetId\x12\"\n\nasset_name\x18\x02 \x01(\tB\x03\xe0\x41\x02R\tassetName\x12%\n\x0c\x61sset_tag_id\x18\x03 \x01(\tB\x03\xe0\x41\x01R\nassetTagId\x12\x1e\n\x05\x65rror\x18\x04 \x01(\tB\x03\xe0\x41\x01H\x00R\x05\x65rror\x88\x01\x01\x42\x08\n\x06_error\"\xc6\x03\n\x12SearchRulesRequest\x12\x19\n\x05limit\x18\x01 \x01(\rH\x00R\x05limit\x88\x01\x01\x12\x16\n\x06offset\x18\x02 \x01(\rR\x06offset\x12\x35\n\x05order\x18\x03 \x01(\x0e\x32\x1a.sift.rules.v1.SearchOrderH\x01R\x05order\x88\x01\x01\x12!\n\x0cname_matches\x18\x04 \x01(\tR\x0bnameMatches\x12%\n\x0e\x63\x61se_sensitive\x18\x05 \x01(\x08R\rcaseSensitive\x12\x16\n\x06regexp\x18\x06 \x01(\x08R\x06regexp\x12\x1e\n\x08order_by\x18\x07 \x01(\tH\x02R\x07orderBy\x88\x01\x01\x12\x19\n\x08rule_ids\x18\x08 \x03(\tR\x07ruleIds\x12\x1b\n\tasset_ids\x18\t \x03(\tR\x08\x61ssetIds\x12\'\n\x0finclude_deleted\x18\n \x01(\x08R\x0eincludeDeleted\x12\x42\n\nasset_tags\x18\x0b \x01(\x0b\x32#.sift.common.type.v1.NamedResourcesR\tassetTagsB\x08\n\x06_limitB\x08\n\x06_orderB\x0b\n\t_order_by\"`\n\x13SearchRulesResponse\x12\x19\n\x05\x63ount\x18\x01 \x01(\rB\x03\xe0\x41\x02R\x05\x63ount\x12.\n\x05rules\x18\x02 \x03(\x0b\x32\x13.sift.rules.v1.RuleB\x03\xe0\x41\x02R\x05rules\"R\n\x0eGetRuleRequest\x12\x1c\n\x07rule_id\x18\x01 \x01(\tB\x03\xe0\x41\x01R\x06ruleId\x12\"\n\nclient_key\x18\x02 \x01(\tB\x03\xe0\x41\x01R\tclientKey\"?\n\x0fGetRuleResponse\x12,\n\x04rule\x18\x01 \x01(\x0b\x32\x13.sift.rules.v1.RuleB\x03\xe0\x41\x02R\x04rule\"\\\n\x14\x42\x61tchGetRulesRequest\x12\x1e\n\x08rule_ids\x18\x01 \x03(\tB\x03\xe0\x41\x01R\x07ruleIds\x12$\n\x0b\x63lient_keys\x18\x02 \x03(\tB\x03\xe0\x41\x01R\nclientKeys\"G\n\x15\x42\x61tchGetRulesResponse\x12.\n\x05rules\x18\x01 \x03(\x0b\x32\x13.sift.rules.v1.RuleB\x03\xe0\x41\x02R\x05rules\"R\n\x11\x43reateRuleRequest\x12=\n\x06update\x18\x01 \x01(\x0b\x32 .sift.rules.v1.UpdateRuleRequestB\x03\xe0\x41\x02R\x06update\"2\n\x12\x43reateRuleResponse\x12\x1c\n\x07rule_id\x18\x01 \x01(\tB\x03\xe0\x41\x02R\x06ruleId\"\xdd\x04\n\x11UpdateRuleRequest\x12\x1c\n\x07rule_id\x18\x01 \x01(\tH\x00R\x06ruleId\x88\x01\x01\x12\x17\n\x04name\x18\x02 \x01(\tB\x03\xe0\x41\x02R\x04name\x12%\n\x0b\x64\x65scription\x18\x03 \x01(\tB\x03\xe0\x41\x02R\x0b\x64\x65scription\x12 \n\x08\x61sset_id\x18\x04 \x01(\tB\x05\x18\x01\xe0\x41\x01R\x07\x61ssetId\x12\"\n\nis_enabled\x18\x05 \x01(\x08\x42\x03\xe0\x41\x02R\tisEnabled\x12J\n\nconditions\x18\x06 \x03(\x0b\x32%.sift.rules.v1.UpdateConditionRequestB\x03\xe0\x41\x02R\nconditions\x12\'\n\x0forganization_id\x18\x07 \x01(\tR\x0eorganizationId\x12#\n\rversion_notes\x18\x08 \x01(\tR\x0cversionNotes\x12\"\n\nclient_key\x18\t \x01(\tH\x01R\tclientKey\x88\x01\x01\x12V\n\x13\x61sset_configuration\x18\n \x01(\x0b\x32%.sift.rules.v1.RuleAssetConfigurationR\x12\x61ssetConfiguration\x12R\n\x13\x63ontextual_channels\x18\x0b \x01(\x0b\x32!.sift.rules.v1.ContextualChannelsR\x12\x63ontextualChannels\x12\x1f\n\x0bis_external\x18\x0c \x01(\x08R\nisExternalB\n\n\x08_rule_idB\r\n\x0b_client_key\"\xf5\x01\n\x16UpdateConditionRequest\x12/\n\x11rule_condition_id\x18\x01 \x01(\tH\x00R\x0fruleConditionId\x88\x01\x01\x12K\n\nexpression\x18\x03 \x01(\x0b\x32&.sift.rules.v1.RuleConditionExpressionB\x03\xe0\x41\x02R\nexpression\x12\x41\n\x07\x61\x63tions\x18\x04 \x03(\x0b\x32\".sift.rules.v1.UpdateActionRequestB\x03\xe0\x41\x02R\x07\x61\x63tionsB\x14\n\x12_rule_condition_idJ\x04\x08\x02\x10\x03\"\xe7\x01\n\x13UpdateActionRequest\x12)\n\x0erule_action_id\x18\x01 \x01(\tH\x00R\x0cruleActionId\x88\x01\x01\x12?\n\x0b\x61\x63tion_type\x18\x02 \x01(\x0e\x32\x19.sift.rules.v1.ActionKindB\x03\xe0\x41\x02R\nactionType\x12Q\n\rconfiguration\x18\x03 \x01(\x0b\x32&.sift.rules.v1.RuleActionConfigurationB\x03\xe0\x41\x02R\rconfigurationB\x11\n\x0f_rule_action_id\"2\n\x12UpdateRuleResponse\x12\x1c\n\x07rule_id\x18\x01 \x01(\tB\x03\xe0\x41\x02R\x06ruleId\"\x83\x02\n\x10ValidationResult\x12\x1c\n\x07rule_id\x18\x01 \x01(\tB\x03\xe0\x41\x01R\x06ruleId\x12\"\n\nclient_key\x18\x02 \x01(\tB\x03\xe0\x41\x01R\tclientKey\x12\x82\x01\n#asset_expression_validation_results\x18\x03 \x03(\x0b\x32..sift.rules.v1.AssetExpressionValidationResultB\x03\xe0\x41\x02R assetExpressionValidationResults\x12\x1e\n\x05\x65rror\x18\x04 \x01(\tB\x03\xe0\x41\x01H\x00R\x05\x65rror\x88\x01\x01\x42\x08\n\x06_error\"\xcb\x01\n\x17\x42\x61tchUpdateRulesRequest\x12;\n\x05rules\x18\x01 \x03(\x0b\x32 .sift.rules.v1.UpdateRuleRequestB\x03\xe0\x41\x02R\x05rules\x12(\n\rvalidate_only\x18\x02 \x01(\x08\x42\x03\xe0\x41\x01R\x0cvalidateOnly\x12I\n\x1eoverride_expression_validation\x18\x03 \x01(\x08\x42\x03\xe0\x41\x02R\x1coverrideExpressionValidation\"\x9d\x04\n\x18\x42\x61tchUpdateRulesResponse\x12\x1d\n\x07success\x18\x01 \x01(\x08\x42\x03\xe0\x41\x02R\x07success\x12\x33\n\x13rules_created_count\x18\x02 \x01(\x05\x42\x03\xe0\x41\x02R\x11rulesCreatedCount\x12\x33\n\x13rules_updated_count\x18\x03 \x01(\x05\x42\x03\xe0\x41\x02R\x11rulesUpdatedCount\x12(\n\rvalidate_only\x18\x04 \x01(\x08\x42\x03\xe0\x41\x02R\x0cvalidateOnly\x12S\n\x12validation_results\x18\x05 \x03(\x0b\x32\x1f.sift.rules.v1.ValidationResultB\x03\xe0\x41\x02R\x11validationResults\x12v\n\x18\x63reated_rule_identifiers\x18\x06 \x03(\x0b\x32\x37.sift.rules.v1.BatchUpdateRulesResponse.RuleIdentifiersB\x03\xe0\x41\x02R\x16\x63reatedRuleIdentifiers\x1a\x80\x01\n\x0fRuleIdentifiers\x12\x1c\n\x07rule_id\x18\x01 \x01(\tB\x03\xe0\x41\x02R\x06ruleId\x12\x17\n\x04name\x18\x02 \x01(\tB\x03\xe0\x41\x02R\x04name\x12\'\n\nclient_key\x18\x03 \x01(\tB\x03\xe0\x41\x01H\x00R\tclientKey\x88\x01\x01\x42\r\n\x0b_client_key\"U\n\x11\x44\x65leteRuleRequest\x12\x1c\n\x07rule_id\x18\x01 \x01(\tB\x03\xe0\x41\x01R\x06ruleId\x12\"\n\nclient_key\x18\x02 \x01(\tB\x03\xe0\x41\x01R\tclientKey\"\x14\n\x12\x44\x65leteRuleResponse\"_\n\x17\x42\x61tchDeleteRulesRequest\x12\x1e\n\x08rule_ids\x18\x01 \x03(\tB\x03\xe0\x41\x01R\x07ruleIds\x12$\n\x0b\x63lient_keys\x18\x02 \x03(\tB\x03\xe0\x41\x01R\nclientKeys\"\x1a\n\x18\x42\x61tchDeleteRulesResponse\"W\n\x13UndeleteRuleRequest\x12\x1c\n\x07rule_id\x18\x01 \x01(\tB\x03\xe0\x41\x01R\x06ruleId\x12\"\n\nclient_key\x18\x02 \x01(\tB\x03\xe0\x41\x01R\tclientKey\"\x16\n\x14UndeleteRuleResponse\"a\n\x19\x42\x61tchUndeleteRulesRequest\x12\x1e\n\x08rule_ids\x18\x01 \x03(\tB\x03\xe0\x41\x01R\x07ruleIds\x12$\n\x0b\x63lient_keys\x18\x02 \x03(\tB\x03\xe0\x41\x01R\nclientKeys\"\x1c\n\x1a\x42\x61tchUndeleteRulesResponse\"C\n\x1dViewHumanFriendlyRulesRequest\x12\x1e\n\x08\x61sset_id\x18\x01 \x01(\tB\x03\xe0\x41\x02R\x07\x61ssetId:\x02\x18\x01\"H\n\x1eViewHumanFriendlyRulesResponse\x12\"\n\nrules_json\x18\x01 \x01(\tB\x03\xe0\x41\x02R\trulesJson:\x02\x18\x01\"\x97\x01\n\x1fUpdateHumanFriendlyRulesRequest\x12\x1e\n\x08\x61sset_id\x18\x01 \x01(\tB\x03\xe0\x41\x02R\x07\x61ssetId\x12\"\n\nrules_json\x18\x02 \x01(\tB\x03\xe0\x41\x02R\trulesJson\x12,\n\x0forganization_id\x18\x03 \x01(\tB\x03\xe0\x41\x02R\x0eorganizationId:\x02\x18\x01\"\x8c\x01\n UpdateHumanFriendlyRulesResponse\x12\x1d\n\x07success\x18\x01 \x01(\x08\x42\x03\xe0\x41\x02R\x07success\x12$\n\x0brules_count\x18\x02 \x01(\x05\x42\x03\xe0\x41\x02R\nrulesCount\x12\x1f\n\x08messages\x18\x03 \x01(\tB\x03\xe0\x41\x02R\x08messages:\x02\x18\x01\"6\n\x14ViewJsonRulesRequest\x12\x1e\n\x08\x61sset_id\x18\x01 \x01(\tB\x03\xe0\x41\x02R\x07\x61ssetId\";\n\x15ViewJsonRulesResponse\x12\"\n\nrules_json\x18\x01 \x01(\tB\x03\xe0\x41\x02R\trulesJson\"\x84\x01\n\x10JsonRulesRequest\x12\x1e\n\x08\x61sset_id\x18\x01 \x01(\tB\x03\xe0\x41\x02R\x07\x61ssetId\x12\"\n\nrules_json\x18\x02 \x01(\tB\x03\xe0\x41\x02R\trulesJson\x12,\n\x0forganization_id\x18\x03 \x01(\tB\x03\xe0\x41\x02R\x0eorganizationId\"\xc1\x02\n\x11JsonRulesResponse\x12\x1d\n\x07success\x18\x01 \x01(\x08\x42\x03\xe0\x41\x02R\x07success\x12/\n\x11total_rules_count\x18\x02 \x01(\x05\x42\x03\xe0\x41\x02R\x0ftotalRulesCount\x12\x33\n\x13rules_created_count\x18\x03 \x01(\x05\x42\x03\xe0\x41\x02R\x11rulesCreatedCount\x12\x33\n\x13rules_updated_count\x18\x04 \x01(\x05\x42\x03\xe0\x41\x02R\x11rulesUpdatedCount\x12\x33\n\x13rules_deleted_count\x18\x05 \x01(\x05\x42\x03\xe0\x41\x02R\x11rulesDeletedCount\x12*\n\x0e\x65rror_messages\x18\x06 \x01(\tH\x00R\rerrorMessages\x88\x01\x01\x42\x11\n\x0f_error_messages\"Z\n\x18ValidateJsonRulesRequest\x12>\n\x07request\x18\x01 \x01(\x0b\x32\x1f.sift.rules.v1.JsonRulesRequestB\x03\xe0\x41\x02R\x07request\"^\n\x19ValidateJsonRulesResponse\x12\x41\n\x08response\x18\x01 \x01(\x0b\x32 .sift.rules.v1.JsonRulesResponseB\x03\xe0\x41\x02R\x08response\"X\n\x16UpdateJsonRulesRequest\x12>\n\x07request\x18\x01 \x01(\x0b\x32\x1f.sift.rules.v1.JsonRulesRequestB\x03\xe0\x41\x02R\x07request\"\\\n\x17UpdateJsonRulesResponse\x12\x41\n\x08response\x18\x01 \x01(\x0b\x32 .sift.rules.v1.JsonRulesResponseB\x03\xe0\x41\x02R\x08response\"\x95\x01\n\x10ListRulesRequest\x12 \n\tpage_size\x18\x01 \x01(\rB\x03\xe0\x41\x01R\x08pageSize\x12\"\n\npage_token\x18\x02 \x01(\tB\x03\xe0\x41\x01R\tpageToken\x12\x1b\n\x06\x66ilter\x18\x03 \x01(\tB\x03\xe0\x41\x01R\x06\x66ilter\x12\x1e\n\x08order_by\x18\x04 \x01(\tB\x03\xe0\x41\x01R\x07orderBy\"k\n\x11ListRulesResponse\x12.\n\x05rules\x18\x01 \x03(\x0b\x32\x13.sift.rules.v1.RuleB\x03\xe0\x41\x02R\x05rules\x12&\n\x0fnext_page_token\x18\x02 \x01(\tR\rnextPageToken\"\x95\x01\n\x17ListRuleVersionsRequest\x12\x1c\n\x07rule_id\x18\x01 \x01(\tB\x03\xe0\x41\x02R\x06ruleId\x12 \n\tpage_size\x18\x02 \x01(\rB\x03\xe0\x41\x01R\x08pageSize\x12\"\n\npage_token\x18\x03 \x01(\tB\x03\xe0\x41\x01R\tpageToken\x12\x16\n\x06\x66ilter\x18\x04 \x01(\tR\x06\x66ilter\"\x9a\x03\n\x0bRuleVersion\x12\x1c\n\x07rule_id\x18\x01 \x01(\tB\x03\xe0\x41\x02R\x06ruleId\x12+\n\x0frule_version_id\x18\x02 \x01(\tB\x03\xe0\x41\x02R\rruleVersionId\x12\x1d\n\x07version\x18\x03 \x01(\tB\x03\xe0\x41\x02R\x07version\x12\x42\n\x0c\x63reated_date\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\x03\xe0\x41\x02R\x0b\x63reatedDate\x12\x30\n\x12\x63reated_by_user_id\x18\x05 \x01(\tB\x03\xe0\x41\x02R\x0f\x63reatedByUserId\x12(\n\rversion_notes\x18\x06 \x01(\tB\x03\xe0\x41\x02R\x0cversionNotes\x12=\n\x18generated_change_message\x18\x07 \x01(\tB\x03\xe0\x41\x02R\x16generatedChangeMessage\x12\x42\n\x0c\x64\x65leted_date\x18\x08 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\x03\xe0\x41\x01R\x0b\x64\x65letedDate\"\x88\x01\n\x18ListRuleVersionsResponse\x12\x44\n\rrule_versions\x18\x01 \x03(\x0b\x32\x1a.sift.rules.v1.RuleVersionB\x03\xe0\x41\x02R\x0cruleVersions\x12&\n\x0fnext_page_token\x18\x02 \x01(\tR\rnextPageToken\"D\n\x15GetRuleVersionRequest\x12+\n\x0frule_version_id\x18\x01 \x01(\tB\x03\xe0\x41\x02R\rruleVersionId\"F\n\x16GetRuleVersionResponse\x12,\n\x04rule\x18\x01 \x01(\x0b\x32\x13.sift.rules.v1.RuleB\x03\xe0\x41\x02R\x04rule\"L\n\x1b\x42\x61tchGetRuleVersionsRequest\x12-\n\x10rule_version_ids\x18\x01 \x03(\tB\x03\xe0\x41\x02R\x0eruleVersionIds\"N\n\x1c\x42\x61tchGetRuleVersionsResponse\x12.\n\x05rules\x18\x01 \x03(\x0b\x32\x13.sift.rules.v1.RuleB\x03\xe0\x41\x02R\x05rules\"\xf4\x01\n\x17RuleConditionExpression\x12r\n\x19single_channel_comparison\x18\x01 \x01(\x0b\x32\x30.sift.rules.v1.SingleChannelComparisonExpressionB\x02\x18\x01H\x00R\x17singleChannelComparison\x12W\n\x12\x63\x61lculated_channel\x18\x02 \x01(\x0b\x32&.sift.rules.v1.CalculatedChannelConfigH\x00R\x11\x63\x61lculatedChannelB\x0c\n\nexpression\"\xcb\x02\n!SingleChannelComparisonExpression\x12\x30\n\x11\x63hannel_component\x18\x01 \x01(\tB\x03\xe0\x41\x02R\x10\x63hannelComponent\x12&\n\x0c\x63hannel_name\x18\x02 \x01(\tB\x03\xe0\x41\x02R\x0b\x63hannelName\x12G\n\ncomparator\x18\x03 \x01(\x0e\x32\".sift.rules.v1.ConditionComparatorB\x03\xe0\x41\x02R\ncomparator\x12\x18\n\x06\x64ouble\x18\x04 \x01(\x01H\x00R\x06\x64ouble\x12\x18\n\x06string\x18\x05 \x01(\tH\x00R\x06string\x12\x42\n\nlast_value\x18\x06 \x01(\x0b\x32!.sift.rules.v1.LastValueThresholdH\x00R\tlastValueB\x0b\n\tthreshold\"\x14\n\x12LastValueThreshold\"\xfb\x02\n\x17\x43\x61lculatedChannelConfig\x12q\n\x12\x63hannel_references\x18\x01 \x03(\x0b\x32=.sift.rules.v1.CalculatedChannelConfig.ChannelReferencesEntryB\x03\xe0\x41\x02R\x11\x63hannelReferences\x12#\n\nexpression\x18\x02 \x01(\tB\x03\xe0\x41\x02R\nexpression\x12\x61\n\x15\x66unction_dependencies\x18\x03 \x03(\x0b\x32\'.sift.common.type.v1.FunctionDependencyB\x03\xe0\x41\x01R\x14\x66unctionDependencies\x1a\x65\n\x16\x43hannelReferencesEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x35\n\x05value\x18\x02 \x01(\x0b\x32\x1f.sift.rules.v1.ChannelReferenceR\x05value:\x02\x38\x01\"N\n\x10\x43hannelReference\x12\x17\n\x04name\x18\x01 \x01(\tB\x03\xe0\x41\x02R\x04name\x12!\n\tcomponent\x18\x02 \x01(\tB\x03\xe0\x41\x02R\tcomponent\"\xd0\x01\n\x17RuleActionConfiguration\x12T\n\x0cnotification\x18\x01 \x01(\x0b\x32..sift.rules.v1.NotificationActionConfigurationH\x00R\x0cnotification\x12N\n\nannotation\x18\x02 \x01(\x0b\x32,.sift.rules.v1.AnnotationActionConfigurationH\x00R\nannotationB\x0f\n\rconfiguration\"T\n\x1fNotificationActionConfiguration\x12\x31\n\x12recipient_user_ids\x18\x01 \x03(\tB\x03\xe0\x41\x02R\x10recipientUserIds\"\xd7\x01\n\x1d\x41nnotationActionConfiguration\x12\x1c\n\x07tag_ids\x18\x01 \x03(\tB\x03\xe0\x41\x02R\x06tagIds\x12L\n\x0f\x61nnotation_type\x18\x02 \x01(\x0e\x32#.sift.annotations.v1.AnnotationTypeR\x0e\x61nnotationType\x12\x32\n\x13\x61ssigned_to_user_id\x18\x03 \x01(\tH\x00R\x10\x61ssignedToUserId\x88\x01\x01\x42\x16\n\x14_assigned_to_user_id\"\x8e\x02\n\x14\x45valuateRulesRequest\x12\x1e\n\x08rule_ids\x18\x01 \x03(\tB\x03\xe0\x41\x02R\x07ruleIds\x12X\n\x12\x61nnotation_options\x18\x02 \x01(\x0b\x32).sift.rules.v1.EvaluatedAnnotationOptionsR\x11\x61nnotationOptions\x12\x17\n\x06run_id\x18\x03 \x01(\tH\x00R\x05runId\x12>\n\ntime_range\x18\x04 \x01(\x0b\x32\x1d.sift.rules.v1.TimeRangeQueryH\x00R\ttimeRange\x12\x17\n\x07\x64ry_run\x18\x05 \x01(\x08R\x06\x64ryRun:\x02\x18\x01\x42\x06\n\x04time\"5\n\x1a\x45valuatedAnnotationOptions\x12\x17\n\x07tag_ids\x18\x01 \x03(\tR\x06tagIds\"\x82\x01\n\x0eTimeRangeQuery\x12\x39\n\nstart_time\x18\x01 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\tstartTime\x12\x35\n\x08\x65nd_time\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\x07\x65ndTime\"\xfd\x01\n\x15\x45valuateRulesResponse\x12\x38\n\x18\x63reated_annotation_count\x18\x01 \x01(\x05R\x16\x63reatedAnnotationCount\x12O\n\x13\x64ry_run_annotations\x18\x02 \x03(\x0b\x32\x1f.sift.rules.v1.DryRunAnnotationR\x11\x64ryRunAnnotations\x12\x1a\n\x06job_id\x18\x03 \x01(\tH\x00R\x05jobId\x88\x01\x01\x12 \n\treport_id\x18\x04 \x01(\tH\x01R\x08reportId\x88\x01\x01:\x02\x18\x01\x42\t\n\x07_job_idB\x0c\n\n_report_id\"\xf7\x01\n\x10\x44ryRunAnnotation\x12!\n\x0c\x63ondition_id\x18\x01 \x01(\tR\x0b\x63onditionId\x12\x12\n\x04name\x18\x02 \x01(\tR\x04name\x12>\n\nstart_time\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\x03\xe0\x41\x02R\tstartTime\x12:\n\x08\x65nd_time\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\x03\xe0\x41\x02R\x07\x65ndTime\x12\x30\n\x14\x63ondition_version_id\x18\x05 \x01(\tR\x12\x63onditionVersionId*\\\n\x0bSearchOrder\x12 \n\x18SEARCH_ORDER_UNSPECIFIED\x10\x00\x1a\x02\x08\x01\x12\x14\n\x10SEARCH_ORDER_ASC\x10\x01\x12\x15\n\x11SEARCH_ORDER_DESC\x10\x02*\\\n\nActionKind\x12\x1f\n\x17\x41\x43TION_KIND_UNSPECIFIED\x10\x00\x1a\x02\x08\x01\x12\x10\n\x0cNOTIFICATION\x10\x01\x12\x0e\n\nANNOTATION\x10\x02\x12\x0b\n\x07WEBHOOK\x10\x03*\xad\x01\n\x13\x43onditionComparator\x12(\n CONDITION_COMPARATOR_UNSPECIFIED\x10\x00\x1a\x02\x08\x01\x12\r\n\tLESS_THAN\x10\x01\x12\x16\n\x12LESS_THAN_OR_EQUAL\x10\x02\x12\x10\n\x0cGREATER_THAN\x10\x03\x12\x19\n\x15GREATER_THAN_OR_EQUAL\x10\x04\x12\t\n\x05\x45QUAL\x10\x05\x12\r\n\tNOT_EQUAL\x10\x06\x32\xd0 \n\x0bRuleService\x12\xb9\x01\n\x0bSearchRules\x12!.sift.rules.v1.SearchRulesRequest\x1a\".sift.rules.v1.SearchRulesResponse\"c\x92\x41\x41\x12\x0bSearchRules\x1a\x32Queries rules based on provided search parameters.\x82\xd3\xe4\x93\x02\x19\"\x14/api/v1/rules/search:\x01*\x12\x94\x01\n\x07GetRule\x12\x1d.sift.rules.v1.GetRuleRequest\x1a\x1e.sift.rules.v1.GetRuleResponse\"J\x92\x41\x32\x12\x07GetRule\x1a\'Retrieves the latest version of a rule.\x82\xd3\xe4\x93\x02\x0f\x12\r/api/v1/rules\x12\xaa\x01\n\rBatchGetRules\x12#.sift.rules.v1.BatchGetRulesRequest\x1a$.sift.rules.v1.BatchGetRulesResponse\"N\x92\x41*\x12\rBatchGetRules\x1a\x19Retrieves multiple rules.\x82\xd3\xe4\x93\x02\x1b\"\x16/api/v1/rules:batchGet:\x01*\x12\x8b\x01\n\nCreateRule\x12 .sift.rules.v1.CreateRuleRequest\x1a!.sift.rules.v1.CreateRuleResponse\"8\x92\x41\x1d\x12\nCreateRule\x1a\x0f\x43reates a rule.\x82\xd3\xe4\x93\x02\x12\"\r/api/v1/rules:\x01*\x12\x95\x01\n\nUpdateRule\x12 .sift.rules.v1.UpdateRuleRequest\x1a!.sift.rules.v1.UpdateRuleResponse\"B\x92\x41\'\x12\nUpdateRule\x1a\x19Updates an existing rule.\x82\xd3\xe4\x93\x02\x12\x1a\r/api/v1/rules:\x01*\x12\xda\x01\n\x10\x42\x61tchUpdateRules\x12&.sift.rules.v1.BatchUpdateRulesRequest\x1a\'.sift.rules.v1.BatchUpdateRulesResponse\"u\x92\x41N\x12\x10\x42\x61tchUpdateRules\x1a:Updates existing rules or creates rules that do not exist.\x82\xd3\xe4\x93\x02\x1e\x1a\x19/api/v1/rules:batchUpdate:\x01*\x12\x92\x01\n\nDeleteRule\x12 .sift.rules.v1.DeleteRuleRequest\x1a!.sift.rules.v1.DeleteRuleResponse\"?\x92\x41\x1d\x12\nDeleteRule\x1a\x0f\x44\x65letes a rule.\x82\xd3\xe4\x93\x02\x19\"\x14/api/v1/rules/delete:\x01*\x12\xb7\x01\n\x10\x42\x61tchDeleteRules\x12&.sift.rules.v1.BatchDeleteRulesRequest\x1a\'.sift.rules.v1.BatchDeleteRulesResponse\"R\x92\x41+\x12\x10\x42\x61tchDeleteRules\x1a\x17\x44\x65letes multiple rules.\x82\xd3\xe4\x93\x02\x1e\"\x19/api/v1/rules/batchDelete:\x01*\x12\x9e\x01\n\x0cUndeleteRule\x12\".sift.rules.v1.UndeleteRuleRequest\x1a#.sift.rules.v1.UndeleteRuleResponse\"E\x92\x41!\x12\x0cUndeleteRule\x1a\x11Undeletes a rule.\x82\xd3\xe4\x93\x02\x1b\"\x16/api/v1/rules/undelete:\x01*\x12\xc3\x01\n\x12\x42\x61tchUndeleteRules\x12(.sift.rules.v1.BatchUndeleteRulesRequest\x1a).sift.rules.v1.BatchUndeleteRulesResponse\"X\x92\x41/\x12\x12\x42\x61tchUndeleteRules\x1a\x19Undeletes multiple rules.\x82\xd3\xe4\x93\x02 \"\x1b/api/v1/rules/batchUndelete:\x01*\x12\xdf\x01\n\rEvaluateRules\x12#.sift.rules.v1.EvaluateRulesRequest\x1a$.sift.rules.v1.EvaluateRulesResponse\"\x82\x01\x88\x02\x01\x92\x41[\x12\rEvaluateRules\x1aJEvaluates the provided rules and generate annotations based on the result.\x82\xd3\xe4\x93\x02\x1b\"\x16/api/v1/rules/evaluate:\x01*\x12\x84\x02\n\x16ViewHumanFriendlyRules\x12,.sift.rules.v1.ViewHumanFriendlyRulesRequest\x1a-.sift.rules.v1.ViewHumanFriendlyRulesResponse\"\x8c\x01\x88\x02\x01\x92\x41_\x12\x16ViewHumanFriendlyRules\x1a\x45Retrieve a JSON object containing all of the rules for a given asset.\x82\xd3\xe4\x93\x02!\x12\x1f/api/v1/rules:viewHumanFriendly\x12\xd6\x01\n\rViewJsonRules\x12#.sift.rules.v1.ViewJsonRulesRequest\x1a$.sift.rules.v1.ViewJsonRulesResponse\"z\x88\x02\x01\x92\x41V\x12\rViewJsonRules\x1a\x45Retrieve a JSON object containing all of the rules for a given asset.\x82\xd3\xe4\x93\x02\x18\x12\x16/api/v1/rules:viewJson\x12\x94\x02\n\x18UpdateHumanFriendlyRules\x12..sift.rules.v1.UpdateHumanFriendlyRulesRequest\x1a/.sift.rules.v1.UpdateHumanFriendlyRulesResponse\"\x96\x01\x88\x02\x01\x92\x41\x64\x12\x18UpdateHumanFriendlyRules\x1aHBatch update rules given the `rules_json` which is a JSON list of rules.\x82\xd3\xe4\x93\x02&\"!/api/v1/rules:updateHumanFriendly:\x01*\x12\x80\x02\n\x11ValidateJsonRules\x12\'.sift.rules.v1.ValidateJsonRulesRequest\x1a(.sift.rules.v1.ValidateJsonRulesResponse\"\x97\x01\x88\x02\x01\x92\x41l\x12\x11ValidateJsonRules\x1aWValidate a batch update for rules given the `rules_json` which is a JSON list of rules.\x82\xd3\xe4\x93\x02\x1f\"\x1a/api/v1/rules:validateJson:\x01*\x12\xe7\x01\n\x0fUpdateJsonRules\x12%.sift.rules.v1.UpdateJsonRulesRequest\x1a&.sift.rules.v1.UpdateJsonRulesResponse\"\x84\x01\x88\x02\x01\x92\x41[\x12\x0fUpdateJsonRules\x1aHBatch update rules given the `rules_json` which is a JSON list of rules.\x82\xd3\xe4\x93\x02\x1d\"\x18/api/v1/rules:updateJson:\x01*\x12\x94\x01\n\tListRules\x12\x1f.sift.rules.v1.ListRulesRequest\x1a .sift.rules.v1.ListRulesResponse\"D\x92\x41\'\x12\tListRules\x1a\x1aRetrieves a list of rules.\x82\xd3\xe4\x93\x02\x14\x12\x12/api/v1/rules:list\x12\xd9\x01\n\x10ListRuleVersions\x12&.sift.rules.v1.ListRuleVersionsRequest\x1a\'.sift.rules.v1.ListRuleVersionsResponse\"t\x92\x41I\x12\x10ListRuleVersions\x1a\x35Retrieves a list of rule versions for the given rule.\x82\xd3\xe4\x93\x02\"\x12 /api/v1/rules/{rule_id}/versions\x12\xb8\x01\n\x0eGetRuleVersion\x12$.sift.rules.v1.GetRuleVersionRequest\x1a%.sift.rules.v1.GetRuleVersionResponse\"Y\x92\x41\x39\x12\x0eGetRuleVersion\x1a\'Retrieves a specific version of a rule.\x82\xd3\xe4\x93\x02\x17\x12\x15/api/v1/rules:version\x12\xdf\x01\n\x14\x42\x61tchGetRuleVersions\x12*.sift.rules.v1.BatchGetRuleVersionsRequest\x1a+.sift.rules.v1.BatchGetRuleVersionsResponse\"n\x92\x41\x42\x12\x14\x42\x61tchGetRuleVersions\x1a*Retrieves multiple rules by rule versions.\x82\xd3\xe4\x93\x02#\"\x1e/api/v1/rules:batchGetVersions:\x01*\x1a\xb1\x01\x92\x41\xad\x01\x12\x30Service to programmatically interact with rules.\x1ay\n\x1fRead more about what rules are.\x12Vhttps://customer.support.siftstack.com/servicedesk/customer/portal/2/article/265421102B\x88\x01\n\x11\x63om.sift.rules.v1B\nRulesProtoP\x01\xa2\x02\x03SRX\xaa\x02\rSift.Rules.V1\xca\x02\rSift\\Rules\\V1\xe2\x02\x19Sift\\Rules\\V1\\GPBMetadata\xea\x02\x0fSift::Rules::V1\x92\x41\x10\x12\x0e\n\x0cRule Serviceb\x06proto3')
24
+ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x19sift/rules/v1/rules.proto\x12\rsift.rules.v1\x1a\x1cgoogle/api/annotations.proto\x1a\x1fgoogle/api/field_behavior.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a.protoc-gen-openapiv2/options/annotations.proto\x1a%sift/annotations/v1/annotations.proto\x1a-sift/common/type/v1/resource_identifier.proto\x1a\x30sift/common/type/v1/user_defined_functions.proto\"\x99\x07\n\x04Rule\x12\x1c\n\x07rule_id\x18\x01 \x01(\tB\x03\xe0\x41\x02R\x06ruleId\x12 \n\x08\x61sset_id\x18\x02 \x01(\tB\x05\x18\x01\xe0\x41\x02R\x07\x61ssetId\x12\x17\n\x04name\x18\x03 \x01(\tB\x03\xe0\x41\x02R\x04name\x12%\n\x0b\x64\x65scription\x18\x04 \x01(\tB\x03\xe0\x41\x02R\x0b\x64\x65scription\x12\"\n\nis_enabled\x18\x06 \x01(\x08\x42\x03\xe0\x41\x02R\tisEnabled\x12\x42\n\x0c\x63reated_date\x18\x07 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\x03\xe0\x41\x02R\x0b\x63reatedDate\x12\x44\n\rmodified_date\x18\x08 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\x03\xe0\x41\x02R\x0cmodifiedDate\x12\x30\n\x12\x63reated_by_user_id\x18\t \x01(\tB\x03\xe0\x41\x02R\x0f\x63reatedByUserId\x12\x32\n\x13modified_by_user_id\x18\n \x01(\tB\x03\xe0\x41\x02R\x10modifiedByUserId\x12,\n\x0forganization_id\x18\x0b \x01(\tB\x03\xe0\x41\x02R\x0eorganizationId\x12\x41\n\nconditions\x18\x0c \x03(\x0b\x32\x1c.sift.rules.v1.RuleConditionB\x03\xe0\x41\x02R\nconditions\x12\x42\n\x0crule_version\x18\r \x01(\x0b\x32\x1a.sift.rules.v1.RuleVersionB\x03\xe0\x41\x02R\x0bruleVersion\x12\"\n\nclient_key\x18\x0e \x01(\tB\x03\xe0\x41\x01R\tclientKey\x12[\n\x13\x61sset_configuration\x18\x0f \x01(\x0b\x32%.sift.rules.v1.RuleAssetConfigurationB\x03\xe0\x41\x02R\x12\x61ssetConfiguration\x12W\n\x13\x63ontextual_channels\x18\x10 \x01(\x0b\x32!.sift.rules.v1.ContextualChannelsB\x03\xe0\x41\x02R\x12\x63ontextualChannels\x12\x42\n\x0c\x64\x65leted_date\x18\x11 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\x03\xe0\x41\x01R\x0b\x64\x65letedDate\x12$\n\x0bis_external\x18\x12 \x01(\x08\x42\x03\xe0\x41\x02R\nisExternalJ\x04\x08\x05\x10\x06\"\x9b\x04\n\rRuleCondition\x12/\n\x11rule_condition_id\x18\x01 \x01(\tB\x03\xe0\x41\x02R\x0fruleConditionId\x12\x1c\n\x07rule_id\x18\x02 \x01(\tB\x03\xe0\x41\x02R\x06ruleId\x12K\n\nexpression\x18\x03 \x01(\x0b\x32&.sift.rules.v1.RuleConditionExpressionB\x03\xe0\x41\x02R\nexpression\x12\x42\n\x0c\x63reated_date\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\x03\xe0\x41\x02R\x0b\x63reatedDate\x12\x44\n\rmodified_date\x18\x06 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\x03\xe0\x41\x02R\x0cmodifiedDate\x12\x30\n\x12\x63reated_by_user_id\x18\x07 \x01(\tB\x03\xe0\x41\x02R\x0f\x63reatedByUserId\x12\x32\n\x13modified_by_user_id\x18\x08 \x01(\tB\x03\xe0\x41\x02R\x10modifiedByUserId\x12\x38\n\x07\x61\x63tions\x18\t \x03(\x0b\x32\x19.sift.rules.v1.RuleActionB\x03\xe0\x41\x02R\x07\x61\x63tions\x12>\n\x19rule_condition_version_id\x18\n \x01(\tB\x03\xe0\x41\x02R\x16ruleConditionVersionIdJ\x04\x08\x04\x10\x05\"\xa6\x04\n\nRuleAction\x12)\n\x0erule_action_id\x18\x01 \x01(\tB\x03\xe0\x41\x02R\x0cruleActionId\x12/\n\x11rule_condition_id\x18\x02 \x01(\tB\x03\xe0\x41\x02R\x0fruleConditionId\x12?\n\x0b\x61\x63tion_type\x18\x03 \x01(\x0e\x32\x19.sift.rules.v1.ActionKindB\x03\xe0\x41\x02R\nactionType\x12Q\n\rconfiguration\x18\x04 \x01(\x0b\x32&.sift.rules.v1.RuleActionConfigurationB\x03\xe0\x41\x02R\rconfiguration\x12\x42\n\x0c\x63reated_date\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\x03\xe0\x41\x02R\x0b\x63reatedDate\x12\x44\n\rmodified_date\x18\x06 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\x03\xe0\x41\x02R\x0cmodifiedDate\x12\x30\n\x12\x63reated_by_user_id\x18\x07 \x01(\tB\x03\xe0\x41\x02R\x0f\x63reatedByUserId\x12\x32\n\x13modified_by_user_id\x18\x08 \x01(\tB\x03\xe0\x41\x02R\x10modifiedByUserId\x12\x38\n\x16rule_action_version_id\x18\t \x01(\tB\x03\xe0\x41\x02R\x13ruleActionVersionId\"N\n\x16RuleAssetConfiguration\x12\x1b\n\tasset_ids\x18\x01 \x03(\tR\x08\x61ssetIds\x12\x17\n\x07tag_ids\x18\x02 \x03(\tR\x06tagIds\"V\n\x12\x43ontextualChannels\x12@\n\x08\x63hannels\x18\x01 \x03(\x0b\x32\x1f.sift.rules.v1.ChannelReferenceB\x03\xe0\x41\x02R\x08\x63hannels\"\xb6\x01\n\x1f\x41ssetExpressionValidationResult\x12\x1e\n\x08\x61sset_id\x18\x01 \x01(\tB\x03\xe0\x41\x02R\x07\x61ssetId\x12\"\n\nasset_name\x18\x02 \x01(\tB\x03\xe0\x41\x02R\tassetName\x12%\n\x0c\x61sset_tag_id\x18\x03 \x01(\tB\x03\xe0\x41\x01R\nassetTagId\x12\x1e\n\x05\x65rror\x18\x04 \x01(\tB\x03\xe0\x41\x01H\x00R\x05\x65rror\x88\x01\x01\x42\x08\n\x06_error\"\xc6\x03\n\x12SearchRulesRequest\x12\x19\n\x05limit\x18\x01 \x01(\rH\x00R\x05limit\x88\x01\x01\x12\x16\n\x06offset\x18\x02 \x01(\rR\x06offset\x12\x35\n\x05order\x18\x03 \x01(\x0e\x32\x1a.sift.rules.v1.SearchOrderH\x01R\x05order\x88\x01\x01\x12!\n\x0cname_matches\x18\x04 \x01(\tR\x0bnameMatches\x12%\n\x0e\x63\x61se_sensitive\x18\x05 \x01(\x08R\rcaseSensitive\x12\x16\n\x06regexp\x18\x06 \x01(\x08R\x06regexp\x12\x1e\n\x08order_by\x18\x07 \x01(\tH\x02R\x07orderBy\x88\x01\x01\x12\x19\n\x08rule_ids\x18\x08 \x03(\tR\x07ruleIds\x12\x1b\n\tasset_ids\x18\t \x03(\tR\x08\x61ssetIds\x12\'\n\x0finclude_deleted\x18\n \x01(\x08R\x0eincludeDeleted\x12\x42\n\nasset_tags\x18\x0b \x01(\x0b\x32#.sift.common.type.v1.NamedResourcesR\tassetTagsB\x08\n\x06_limitB\x08\n\x06_orderB\x0b\n\t_order_by\"`\n\x13SearchRulesResponse\x12\x19\n\x05\x63ount\x18\x01 \x01(\rB\x03\xe0\x41\x02R\x05\x63ount\x12.\n\x05rules\x18\x02 \x03(\x0b\x32\x13.sift.rules.v1.RuleB\x03\xe0\x41\x02R\x05rules\"R\n\x0eGetRuleRequest\x12\x1c\n\x07rule_id\x18\x01 \x01(\tB\x03\xe0\x41\x01R\x06ruleId\x12\"\n\nclient_key\x18\x02 \x01(\tB\x03\xe0\x41\x01R\tclientKey\"?\n\x0fGetRuleResponse\x12,\n\x04rule\x18\x01 \x01(\x0b\x32\x13.sift.rules.v1.RuleB\x03\xe0\x41\x02R\x04rule\"\\\n\x14\x42\x61tchGetRulesRequest\x12\x1e\n\x08rule_ids\x18\x01 \x03(\tB\x03\xe0\x41\x01R\x07ruleIds\x12$\n\x0b\x63lient_keys\x18\x02 \x03(\tB\x03\xe0\x41\x01R\nclientKeys\"G\n\x15\x42\x61tchGetRulesResponse\x12.\n\x05rules\x18\x01 \x03(\x0b\x32\x13.sift.rules.v1.RuleB\x03\xe0\x41\x02R\x05rules\"R\n\x11\x43reateRuleRequest\x12=\n\x06update\x18\x01 \x01(\x0b\x32 .sift.rules.v1.UpdateRuleRequestB\x03\xe0\x41\x02R\x06update\"2\n\x12\x43reateRuleResponse\x12\x1c\n\x07rule_id\x18\x01 \x01(\tB\x03\xe0\x41\x02R\x06ruleId\"\xdd\x04\n\x11UpdateRuleRequest\x12\x1c\n\x07rule_id\x18\x01 \x01(\tH\x00R\x06ruleId\x88\x01\x01\x12\x17\n\x04name\x18\x02 \x01(\tB\x03\xe0\x41\x02R\x04name\x12%\n\x0b\x64\x65scription\x18\x03 \x01(\tB\x03\xe0\x41\x02R\x0b\x64\x65scription\x12 \n\x08\x61sset_id\x18\x04 \x01(\tB\x05\x18\x01\xe0\x41\x01R\x07\x61ssetId\x12\"\n\nis_enabled\x18\x05 \x01(\x08\x42\x03\xe0\x41\x02R\tisEnabled\x12J\n\nconditions\x18\x06 \x03(\x0b\x32%.sift.rules.v1.UpdateConditionRequestB\x03\xe0\x41\x02R\nconditions\x12\'\n\x0forganization_id\x18\x07 \x01(\tR\x0eorganizationId\x12#\n\rversion_notes\x18\x08 \x01(\tR\x0cversionNotes\x12\"\n\nclient_key\x18\t \x01(\tH\x01R\tclientKey\x88\x01\x01\x12V\n\x13\x61sset_configuration\x18\n \x01(\x0b\x32%.sift.rules.v1.RuleAssetConfigurationR\x12\x61ssetConfiguration\x12R\n\x13\x63ontextual_channels\x18\x0b \x01(\x0b\x32!.sift.rules.v1.ContextualChannelsR\x12\x63ontextualChannels\x12\x1f\n\x0bis_external\x18\x0c \x01(\x08R\nisExternalB\n\n\x08_rule_idB\r\n\x0b_client_key\"\xf5\x01\n\x16UpdateConditionRequest\x12/\n\x11rule_condition_id\x18\x01 \x01(\tH\x00R\x0fruleConditionId\x88\x01\x01\x12K\n\nexpression\x18\x03 \x01(\x0b\x32&.sift.rules.v1.RuleConditionExpressionB\x03\xe0\x41\x02R\nexpression\x12\x41\n\x07\x61\x63tions\x18\x04 \x03(\x0b\x32\".sift.rules.v1.UpdateActionRequestB\x03\xe0\x41\x02R\x07\x61\x63tionsB\x14\n\x12_rule_condition_idJ\x04\x08\x02\x10\x03\"\xe7\x01\n\x13UpdateActionRequest\x12)\n\x0erule_action_id\x18\x01 \x01(\tH\x00R\x0cruleActionId\x88\x01\x01\x12?\n\x0b\x61\x63tion_type\x18\x02 \x01(\x0e\x32\x19.sift.rules.v1.ActionKindB\x03\xe0\x41\x02R\nactionType\x12Q\n\rconfiguration\x18\x03 \x01(\x0b\x32&.sift.rules.v1.RuleActionConfigurationB\x03\xe0\x41\x02R\rconfigurationB\x11\n\x0f_rule_action_id\"2\n\x12UpdateRuleResponse\x12\x1c\n\x07rule_id\x18\x01 \x01(\tB\x03\xe0\x41\x02R\x06ruleId\"\x83\x02\n\x10ValidationResult\x12\x1c\n\x07rule_id\x18\x01 \x01(\tB\x03\xe0\x41\x01R\x06ruleId\x12\"\n\nclient_key\x18\x02 \x01(\tB\x03\xe0\x41\x01R\tclientKey\x12\x82\x01\n#asset_expression_validation_results\x18\x03 \x03(\x0b\x32..sift.rules.v1.AssetExpressionValidationResultB\x03\xe0\x41\x02R assetExpressionValidationResults\x12\x1e\n\x05\x65rror\x18\x04 \x01(\tB\x03\xe0\x41\x01H\x00R\x05\x65rror\x88\x01\x01\x42\x08\n\x06_error\"\xcb\x01\n\x17\x42\x61tchUpdateRulesRequest\x12;\n\x05rules\x18\x01 \x03(\x0b\x32 .sift.rules.v1.UpdateRuleRequestB\x03\xe0\x41\x02R\x05rules\x12(\n\rvalidate_only\x18\x02 \x01(\x08\x42\x03\xe0\x41\x01R\x0cvalidateOnly\x12I\n\x1eoverride_expression_validation\x18\x03 \x01(\x08\x42\x03\xe0\x41\x02R\x1coverrideExpressionValidation\"\x9d\x04\n\x18\x42\x61tchUpdateRulesResponse\x12\x1d\n\x07success\x18\x01 \x01(\x08\x42\x03\xe0\x41\x02R\x07success\x12\x33\n\x13rules_created_count\x18\x02 \x01(\x05\x42\x03\xe0\x41\x02R\x11rulesCreatedCount\x12\x33\n\x13rules_updated_count\x18\x03 \x01(\x05\x42\x03\xe0\x41\x02R\x11rulesUpdatedCount\x12(\n\rvalidate_only\x18\x04 \x01(\x08\x42\x03\xe0\x41\x02R\x0cvalidateOnly\x12S\n\x12validation_results\x18\x05 \x03(\x0b\x32\x1f.sift.rules.v1.ValidationResultB\x03\xe0\x41\x02R\x11validationResults\x12v\n\x18\x63reated_rule_identifiers\x18\x06 \x03(\x0b\x32\x37.sift.rules.v1.BatchUpdateRulesResponse.RuleIdentifiersB\x03\xe0\x41\x02R\x16\x63reatedRuleIdentifiers\x1a\x80\x01\n\x0fRuleIdentifiers\x12\x1c\n\x07rule_id\x18\x01 \x01(\tB\x03\xe0\x41\x02R\x06ruleId\x12\x17\n\x04name\x18\x02 \x01(\tB\x03\xe0\x41\x02R\x04name\x12\'\n\nclient_key\x18\x03 \x01(\tB\x03\xe0\x41\x01H\x00R\tclientKey\x88\x01\x01\x42\r\n\x0b_client_key\"U\n\x11\x44\x65leteRuleRequest\x12\x1c\n\x07rule_id\x18\x01 \x01(\tB\x03\xe0\x41\x01R\x06ruleId\x12\"\n\nclient_key\x18\x02 \x01(\tB\x03\xe0\x41\x01R\tclientKey\"\x14\n\x12\x44\x65leteRuleResponse\"_\n\x17\x42\x61tchDeleteRulesRequest\x12\x1e\n\x08rule_ids\x18\x01 \x03(\tB\x03\xe0\x41\x01R\x07ruleIds\x12$\n\x0b\x63lient_keys\x18\x02 \x03(\tB\x03\xe0\x41\x01R\nclientKeys\"\x1a\n\x18\x42\x61tchDeleteRulesResponse\"W\n\x13UndeleteRuleRequest\x12\x1c\n\x07rule_id\x18\x01 \x01(\tB\x03\xe0\x41\x01R\x06ruleId\x12\"\n\nclient_key\x18\x02 \x01(\tB\x03\xe0\x41\x01R\tclientKey\"\x16\n\x14UndeleteRuleResponse\"a\n\x19\x42\x61tchUndeleteRulesRequest\x12\x1e\n\x08rule_ids\x18\x01 \x03(\tB\x03\xe0\x41\x01R\x07ruleIds\x12$\n\x0b\x63lient_keys\x18\x02 \x03(\tB\x03\xe0\x41\x01R\nclientKeys\"\x1c\n\x1a\x42\x61tchUndeleteRulesResponse\"C\n\x1dViewHumanFriendlyRulesRequest\x12\x1e\n\x08\x61sset_id\x18\x01 \x01(\tB\x03\xe0\x41\x02R\x07\x61ssetId:\x02\x18\x01\"H\n\x1eViewHumanFriendlyRulesResponse\x12\"\n\nrules_json\x18\x01 \x01(\tB\x03\xe0\x41\x02R\trulesJson:\x02\x18\x01\"\x97\x01\n\x1fUpdateHumanFriendlyRulesRequest\x12\x1e\n\x08\x61sset_id\x18\x01 \x01(\tB\x03\xe0\x41\x02R\x07\x61ssetId\x12\"\n\nrules_json\x18\x02 \x01(\tB\x03\xe0\x41\x02R\trulesJson\x12,\n\x0forganization_id\x18\x03 \x01(\tB\x03\xe0\x41\x02R\x0eorganizationId:\x02\x18\x01\"\x8c\x01\n UpdateHumanFriendlyRulesResponse\x12\x1d\n\x07success\x18\x01 \x01(\x08\x42\x03\xe0\x41\x02R\x07success\x12$\n\x0brules_count\x18\x02 \x01(\x05\x42\x03\xe0\x41\x02R\nrulesCount\x12\x1f\n\x08messages\x18\x03 \x01(\tB\x03\xe0\x41\x02R\x08messages:\x02\x18\x01\"6\n\x14ViewJsonRulesRequest\x12\x1e\n\x08\x61sset_id\x18\x01 \x01(\tB\x03\xe0\x41\x02R\x07\x61ssetId\";\n\x15ViewJsonRulesResponse\x12\"\n\nrules_json\x18\x01 \x01(\tB\x03\xe0\x41\x02R\trulesJson\"\x84\x01\n\x10JsonRulesRequest\x12\x1e\n\x08\x61sset_id\x18\x01 \x01(\tB\x03\xe0\x41\x02R\x07\x61ssetId\x12\"\n\nrules_json\x18\x02 \x01(\tB\x03\xe0\x41\x02R\trulesJson\x12,\n\x0forganization_id\x18\x03 \x01(\tB\x03\xe0\x41\x02R\x0eorganizationId\"\xc1\x02\n\x11JsonRulesResponse\x12\x1d\n\x07success\x18\x01 \x01(\x08\x42\x03\xe0\x41\x02R\x07success\x12/\n\x11total_rules_count\x18\x02 \x01(\x05\x42\x03\xe0\x41\x02R\x0ftotalRulesCount\x12\x33\n\x13rules_created_count\x18\x03 \x01(\x05\x42\x03\xe0\x41\x02R\x11rulesCreatedCount\x12\x33\n\x13rules_updated_count\x18\x04 \x01(\x05\x42\x03\xe0\x41\x02R\x11rulesUpdatedCount\x12\x33\n\x13rules_deleted_count\x18\x05 \x01(\x05\x42\x03\xe0\x41\x02R\x11rulesDeletedCount\x12*\n\x0e\x65rror_messages\x18\x06 \x01(\tH\x00R\rerrorMessages\x88\x01\x01\x42\x11\n\x0f_error_messages\"Z\n\x18ValidateJsonRulesRequest\x12>\n\x07request\x18\x01 \x01(\x0b\x32\x1f.sift.rules.v1.JsonRulesRequestB\x03\xe0\x41\x02R\x07request\"^\n\x19ValidateJsonRulesResponse\x12\x41\n\x08response\x18\x01 \x01(\x0b\x32 .sift.rules.v1.JsonRulesResponseB\x03\xe0\x41\x02R\x08response\"X\n\x16UpdateJsonRulesRequest\x12>\n\x07request\x18\x01 \x01(\x0b\x32\x1f.sift.rules.v1.JsonRulesRequestB\x03\xe0\x41\x02R\x07request\"\\\n\x17UpdateJsonRulesResponse\x12\x41\n\x08response\x18\x01 \x01(\x0b\x32 .sift.rules.v1.JsonRulesResponseB\x03\xe0\x41\x02R\x08response\"\x95\x01\n\x10ListRulesRequest\x12 \n\tpage_size\x18\x01 \x01(\rB\x03\xe0\x41\x01R\x08pageSize\x12\"\n\npage_token\x18\x02 \x01(\tB\x03\xe0\x41\x01R\tpageToken\x12\x1b\n\x06\x66ilter\x18\x03 \x01(\tB\x03\xe0\x41\x01R\x06\x66ilter\x12\x1e\n\x08order_by\x18\x04 \x01(\tB\x03\xe0\x41\x01R\x07orderBy\"k\n\x11ListRulesResponse\x12.\n\x05rules\x18\x01 \x03(\x0b\x32\x13.sift.rules.v1.RuleB\x03\xe0\x41\x02R\x05rules\x12&\n\x0fnext_page_token\x18\x02 \x01(\tR\rnextPageToken\"\x95\x01\n\x17ListRuleVersionsRequest\x12\x1c\n\x07rule_id\x18\x01 \x01(\tB\x03\xe0\x41\x02R\x06ruleId\x12 \n\tpage_size\x18\x02 \x01(\rB\x03\xe0\x41\x01R\x08pageSize\x12\"\n\npage_token\x18\x03 \x01(\tB\x03\xe0\x41\x01R\tpageToken\x12\x16\n\x06\x66ilter\x18\x04 \x01(\tR\x06\x66ilter\"\x9a\x03\n\x0bRuleVersion\x12\x1c\n\x07rule_id\x18\x01 \x01(\tB\x03\xe0\x41\x02R\x06ruleId\x12+\n\x0frule_version_id\x18\x02 \x01(\tB\x03\xe0\x41\x02R\rruleVersionId\x12\x1d\n\x07version\x18\x03 \x01(\tB\x03\xe0\x41\x02R\x07version\x12\x42\n\x0c\x63reated_date\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\x03\xe0\x41\x02R\x0b\x63reatedDate\x12\x30\n\x12\x63reated_by_user_id\x18\x05 \x01(\tB\x03\xe0\x41\x02R\x0f\x63reatedByUserId\x12(\n\rversion_notes\x18\x06 \x01(\tB\x03\xe0\x41\x02R\x0cversionNotes\x12=\n\x18generated_change_message\x18\x07 \x01(\tB\x03\xe0\x41\x02R\x16generatedChangeMessage\x12\x42\n\x0c\x64\x65leted_date\x18\x08 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\x03\xe0\x41\x01R\x0b\x64\x65letedDate\"\x88\x01\n\x18ListRuleVersionsResponse\x12\x44\n\rrule_versions\x18\x01 \x03(\x0b\x32\x1a.sift.rules.v1.RuleVersionB\x03\xe0\x41\x02R\x0cruleVersions\x12&\n\x0fnext_page_token\x18\x02 \x01(\tR\rnextPageToken\"D\n\x15GetRuleVersionRequest\x12+\n\x0frule_version_id\x18\x01 \x01(\tB\x03\xe0\x41\x02R\rruleVersionId\"F\n\x16GetRuleVersionResponse\x12,\n\x04rule\x18\x01 \x01(\x0b\x32\x13.sift.rules.v1.RuleB\x03\xe0\x41\x02R\x04rule\"L\n\x1b\x42\x61tchGetRuleVersionsRequest\x12-\n\x10rule_version_ids\x18\x01 \x03(\tB\x03\xe0\x41\x02R\x0eruleVersionIds\"N\n\x1c\x42\x61tchGetRuleVersionsResponse\x12.\n\x05rules\x18\x01 \x03(\x0b\x32\x13.sift.rules.v1.RuleB\x03\xe0\x41\x02R\x05rules\"\xb2\x02\n\x17RuleConditionExpression\x12r\n\x19single_channel_comparison\x18\x01 \x01(\x0b\x32\x30.sift.rules.v1.SingleChannelComparisonExpressionB\x02\x18\x01H\x00R\x17singleChannelComparison\x12W\n\x12\x63\x61lculated_channel\x18\x02 \x01(\x0b\x32&.sift.rules.v1.CalculatedChannelConfigH\x00R\x11\x63\x61lculatedChannel\x12<\n\x0bpython_code\x18\x03 \x01(\x0b\x32\x19.sift.rules.v1.PythonCodeH\x00R\npythonCodeB\x0c\n\nexpression\"\xcb\x02\n!SingleChannelComparisonExpression\x12\x30\n\x11\x63hannel_component\x18\x01 \x01(\tB\x03\xe0\x41\x02R\x10\x63hannelComponent\x12&\n\x0c\x63hannel_name\x18\x02 \x01(\tB\x03\xe0\x41\x02R\x0b\x63hannelName\x12G\n\ncomparator\x18\x03 \x01(\x0e\x32\".sift.rules.v1.ConditionComparatorB\x03\xe0\x41\x02R\ncomparator\x12\x18\n\x06\x64ouble\x18\x04 \x01(\x01H\x00R\x06\x64ouble\x12\x18\n\x06string\x18\x05 \x01(\tH\x00R\x06string\x12\x42\n\nlast_value\x18\x06 \x01(\x0b\x32!.sift.rules.v1.LastValueThresholdH\x00R\tlastValueB\x0b\n\tthreshold\"\x14\n\x12LastValueThreshold\"\xfb\x02\n\x17\x43\x61lculatedChannelConfig\x12q\n\x12\x63hannel_references\x18\x01 \x03(\x0b\x32=.sift.rules.v1.CalculatedChannelConfig.ChannelReferencesEntryB\x03\xe0\x41\x02R\x11\x63hannelReferences\x12#\n\nexpression\x18\x02 \x01(\tB\x03\xe0\x41\x02R\nexpression\x12\x61\n\x15\x66unction_dependencies\x18\x03 \x03(\x0b\x32\'.sift.common.type.v1.FunctionDependencyB\x03\xe0\x41\x01R\x14\x66unctionDependencies\x1a\x65\n\x16\x43hannelReferencesEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x35\n\x05value\x18\x02 \x01(\x0b\x32\x1f.sift.rules.v1.ChannelReferenceR\x05value:\x02\x38\x01\"N\n\x10\x43hannelReference\x12\x17\n\x04name\x18\x01 \x01(\tB\x03\xe0\x41\x02R\x04name\x12!\n\tcomponent\x18\x02 \x01(\tB\x03\xe0\x41\x02R\tcomponent\"T\n\x16PythonChannelReference\x12!\n\treference\x18\x01 \x01(\tB\x03\xe0\x41\x02R\treference\x12\x17\n\x04name\x18\x02 \x01(\tB\x03\xe0\x41\x02R\x04name\"\xa9\x01\n\nPythonCode\x12Y\n\x12\x63hannel_references\x18\x01 \x03(\x0b\x32%.sift.rules.v1.PythonChannelReferenceB\x03\xe0\x41\x02R\x11\x63hannelReferences\x12\x17\n\x04\x63ode\x18\x02 \x01(\tB\x03\xe0\x41\x02R\x04\x63ode\x12\'\n\x0c\x64\x65pendencies\x18\x03 \x01(\tB\x03\xe0\x41\x01R\x0c\x64\x65pendencies\"\xd0\x01\n\x17RuleActionConfiguration\x12T\n\x0cnotification\x18\x01 \x01(\x0b\x32..sift.rules.v1.NotificationActionConfigurationH\x00R\x0cnotification\x12N\n\nannotation\x18\x02 \x01(\x0b\x32,.sift.rules.v1.AnnotationActionConfigurationH\x00R\nannotationB\x0f\n\rconfiguration\"T\n\x1fNotificationActionConfiguration\x12\x31\n\x12recipient_user_ids\x18\x01 \x03(\tB\x03\xe0\x41\x02R\x10recipientUserIds\"\xd7\x01\n\x1d\x41nnotationActionConfiguration\x12\x1c\n\x07tag_ids\x18\x01 \x03(\tB\x03\xe0\x41\x02R\x06tagIds\x12L\n\x0f\x61nnotation_type\x18\x02 \x01(\x0e\x32#.sift.annotations.v1.AnnotationTypeR\x0e\x61nnotationType\x12\x32\n\x13\x61ssigned_to_user_id\x18\x03 \x01(\tH\x00R\x10\x61ssignedToUserId\x88\x01\x01\x42\x16\n\x14_assigned_to_user_id\"\x8e\x02\n\x14\x45valuateRulesRequest\x12\x1e\n\x08rule_ids\x18\x01 \x03(\tB\x03\xe0\x41\x02R\x07ruleIds\x12X\n\x12\x61nnotation_options\x18\x02 \x01(\x0b\x32).sift.rules.v1.EvaluatedAnnotationOptionsR\x11\x61nnotationOptions\x12\x17\n\x06run_id\x18\x03 \x01(\tH\x00R\x05runId\x12>\n\ntime_range\x18\x04 \x01(\x0b\x32\x1d.sift.rules.v1.TimeRangeQueryH\x00R\ttimeRange\x12\x17\n\x07\x64ry_run\x18\x05 \x01(\x08R\x06\x64ryRun:\x02\x18\x01\x42\x06\n\x04time\"5\n\x1a\x45valuatedAnnotationOptions\x12\x17\n\x07tag_ids\x18\x01 \x03(\tR\x06tagIds\"\x82\x01\n\x0eTimeRangeQuery\x12\x39\n\nstart_time\x18\x01 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\tstartTime\x12\x35\n\x08\x65nd_time\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\x07\x65ndTime\"\xfd\x01\n\x15\x45valuateRulesResponse\x12\x38\n\x18\x63reated_annotation_count\x18\x01 \x01(\x05R\x16\x63reatedAnnotationCount\x12O\n\x13\x64ry_run_annotations\x18\x02 \x03(\x0b\x32\x1f.sift.rules.v1.DryRunAnnotationR\x11\x64ryRunAnnotations\x12\x1a\n\x06job_id\x18\x03 \x01(\tH\x00R\x05jobId\x88\x01\x01\x12 \n\treport_id\x18\x04 \x01(\tH\x01R\x08reportId\x88\x01\x01:\x02\x18\x01\x42\t\n\x07_job_idB\x0c\n\n_report_id\"\xf7\x01\n\x10\x44ryRunAnnotation\x12!\n\x0c\x63ondition_id\x18\x01 \x01(\tR\x0b\x63onditionId\x12\x12\n\x04name\x18\x02 \x01(\tR\x04name\x12>\n\nstart_time\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\x03\xe0\x41\x02R\tstartTime\x12:\n\x08\x65nd_time\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\x03\xe0\x41\x02R\x07\x65ndTime\x12\x30\n\x14\x63ondition_version_id\x18\x05 \x01(\tR\x12\x63onditionVersionId*\\\n\x0bSearchOrder\x12 \n\x18SEARCH_ORDER_UNSPECIFIED\x10\x00\x1a\x02\x08\x01\x12\x14\n\x10SEARCH_ORDER_ASC\x10\x01\x12\x15\n\x11SEARCH_ORDER_DESC\x10\x02*\\\n\nActionKind\x12\x1f\n\x17\x41\x43TION_KIND_UNSPECIFIED\x10\x00\x1a\x02\x08\x01\x12\x10\n\x0cNOTIFICATION\x10\x01\x12\x0e\n\nANNOTATION\x10\x02\x12\x0b\n\x07WEBHOOK\x10\x03*\xad\x01\n\x13\x43onditionComparator\x12(\n CONDITION_COMPARATOR_UNSPECIFIED\x10\x00\x1a\x02\x08\x01\x12\r\n\tLESS_THAN\x10\x01\x12\x16\n\x12LESS_THAN_OR_EQUAL\x10\x02\x12\x10\n\x0cGREATER_THAN\x10\x03\x12\x19\n\x15GREATER_THAN_OR_EQUAL\x10\x04\x12\t\n\x05\x45QUAL\x10\x05\x12\r\n\tNOT_EQUAL\x10\x06\x32\xd0 \n\x0bRuleService\x12\xb9\x01\n\x0bSearchRules\x12!.sift.rules.v1.SearchRulesRequest\x1a\".sift.rules.v1.SearchRulesResponse\"c\x92\x41\x41\x12\x0bSearchRules\x1a\x32Queries rules based on provided search parameters.\x82\xd3\xe4\x93\x02\x19\"\x14/api/v1/rules/search:\x01*\x12\x94\x01\n\x07GetRule\x12\x1d.sift.rules.v1.GetRuleRequest\x1a\x1e.sift.rules.v1.GetRuleResponse\"J\x92\x41\x32\x12\x07GetRule\x1a\'Retrieves the latest version of a rule.\x82\xd3\xe4\x93\x02\x0f\x12\r/api/v1/rules\x12\xaa\x01\n\rBatchGetRules\x12#.sift.rules.v1.BatchGetRulesRequest\x1a$.sift.rules.v1.BatchGetRulesResponse\"N\x92\x41*\x12\rBatchGetRules\x1a\x19Retrieves multiple rules.\x82\xd3\xe4\x93\x02\x1b\"\x16/api/v1/rules:batchGet:\x01*\x12\x8b\x01\n\nCreateRule\x12 .sift.rules.v1.CreateRuleRequest\x1a!.sift.rules.v1.CreateRuleResponse\"8\x92\x41\x1d\x12\nCreateRule\x1a\x0f\x43reates a rule.\x82\xd3\xe4\x93\x02\x12\"\r/api/v1/rules:\x01*\x12\x95\x01\n\nUpdateRule\x12 .sift.rules.v1.UpdateRuleRequest\x1a!.sift.rules.v1.UpdateRuleResponse\"B\x92\x41\'\x12\nUpdateRule\x1a\x19Updates an existing rule.\x82\xd3\xe4\x93\x02\x12\x1a\r/api/v1/rules:\x01*\x12\xda\x01\n\x10\x42\x61tchUpdateRules\x12&.sift.rules.v1.BatchUpdateRulesRequest\x1a\'.sift.rules.v1.BatchUpdateRulesResponse\"u\x92\x41N\x12\x10\x42\x61tchUpdateRules\x1a:Updates existing rules or creates rules that do not exist.\x82\xd3\xe4\x93\x02\x1e\x1a\x19/api/v1/rules:batchUpdate:\x01*\x12\x92\x01\n\nDeleteRule\x12 .sift.rules.v1.DeleteRuleRequest\x1a!.sift.rules.v1.DeleteRuleResponse\"?\x92\x41\x1d\x12\nDeleteRule\x1a\x0f\x44\x65letes a rule.\x82\xd3\xe4\x93\x02\x19\"\x14/api/v1/rules/delete:\x01*\x12\xb7\x01\n\x10\x42\x61tchDeleteRules\x12&.sift.rules.v1.BatchDeleteRulesRequest\x1a\'.sift.rules.v1.BatchDeleteRulesResponse\"R\x92\x41+\x12\x10\x42\x61tchDeleteRules\x1a\x17\x44\x65letes multiple rules.\x82\xd3\xe4\x93\x02\x1e\"\x19/api/v1/rules/batchDelete:\x01*\x12\x9e\x01\n\x0cUndeleteRule\x12\".sift.rules.v1.UndeleteRuleRequest\x1a#.sift.rules.v1.UndeleteRuleResponse\"E\x92\x41!\x12\x0cUndeleteRule\x1a\x11Undeletes a rule.\x82\xd3\xe4\x93\x02\x1b\"\x16/api/v1/rules/undelete:\x01*\x12\xc3\x01\n\x12\x42\x61tchUndeleteRules\x12(.sift.rules.v1.BatchUndeleteRulesRequest\x1a).sift.rules.v1.BatchUndeleteRulesResponse\"X\x92\x41/\x12\x12\x42\x61tchUndeleteRules\x1a\x19Undeletes multiple rules.\x82\xd3\xe4\x93\x02 \"\x1b/api/v1/rules/batchUndelete:\x01*\x12\xdf\x01\n\rEvaluateRules\x12#.sift.rules.v1.EvaluateRulesRequest\x1a$.sift.rules.v1.EvaluateRulesResponse\"\x82\x01\x88\x02\x01\x92\x41[\x12\rEvaluateRules\x1aJEvaluates the provided rules and generate annotations based on the result.\x82\xd3\xe4\x93\x02\x1b\"\x16/api/v1/rules/evaluate:\x01*\x12\x84\x02\n\x16ViewHumanFriendlyRules\x12,.sift.rules.v1.ViewHumanFriendlyRulesRequest\x1a-.sift.rules.v1.ViewHumanFriendlyRulesResponse\"\x8c\x01\x88\x02\x01\x92\x41_\x12\x16ViewHumanFriendlyRules\x1a\x45Retrieve a JSON object containing all of the rules for a given asset.\x82\xd3\xe4\x93\x02!\x12\x1f/api/v1/rules:viewHumanFriendly\x12\xd6\x01\n\rViewJsonRules\x12#.sift.rules.v1.ViewJsonRulesRequest\x1a$.sift.rules.v1.ViewJsonRulesResponse\"z\x88\x02\x01\x92\x41V\x12\rViewJsonRules\x1a\x45Retrieve a JSON object containing all of the rules for a given asset.\x82\xd3\xe4\x93\x02\x18\x12\x16/api/v1/rules:viewJson\x12\x94\x02\n\x18UpdateHumanFriendlyRules\x12..sift.rules.v1.UpdateHumanFriendlyRulesRequest\x1a/.sift.rules.v1.UpdateHumanFriendlyRulesResponse\"\x96\x01\x88\x02\x01\x92\x41\x64\x12\x18UpdateHumanFriendlyRules\x1aHBatch update rules given the `rules_json` which is a JSON list of rules.\x82\xd3\xe4\x93\x02&\"!/api/v1/rules:updateHumanFriendly:\x01*\x12\x80\x02\n\x11ValidateJsonRules\x12\'.sift.rules.v1.ValidateJsonRulesRequest\x1a(.sift.rules.v1.ValidateJsonRulesResponse\"\x97\x01\x88\x02\x01\x92\x41l\x12\x11ValidateJsonRules\x1aWValidate a batch update for rules given the `rules_json` which is a JSON list of rules.\x82\xd3\xe4\x93\x02\x1f\"\x1a/api/v1/rules:validateJson:\x01*\x12\xe7\x01\n\x0fUpdateJsonRules\x12%.sift.rules.v1.UpdateJsonRulesRequest\x1a&.sift.rules.v1.UpdateJsonRulesResponse\"\x84\x01\x88\x02\x01\x92\x41[\x12\x0fUpdateJsonRules\x1aHBatch update rules given the `rules_json` which is a JSON list of rules.\x82\xd3\xe4\x93\x02\x1d\"\x18/api/v1/rules:updateJson:\x01*\x12\x94\x01\n\tListRules\x12\x1f.sift.rules.v1.ListRulesRequest\x1a .sift.rules.v1.ListRulesResponse\"D\x92\x41\'\x12\tListRules\x1a\x1aRetrieves a list of rules.\x82\xd3\xe4\x93\x02\x14\x12\x12/api/v1/rules:list\x12\xd9\x01\n\x10ListRuleVersions\x12&.sift.rules.v1.ListRuleVersionsRequest\x1a\'.sift.rules.v1.ListRuleVersionsResponse\"t\x92\x41I\x12\x10ListRuleVersions\x1a\x35Retrieves a list of rule versions for the given rule.\x82\xd3\xe4\x93\x02\"\x12 /api/v1/rules/{rule_id}/versions\x12\xb8\x01\n\x0eGetRuleVersion\x12$.sift.rules.v1.GetRuleVersionRequest\x1a%.sift.rules.v1.GetRuleVersionResponse\"Y\x92\x41\x39\x12\x0eGetRuleVersion\x1a\'Retrieves a specific version of a rule.\x82\xd3\xe4\x93\x02\x17\x12\x15/api/v1/rules:version\x12\xdf\x01\n\x14\x42\x61tchGetRuleVersions\x12*.sift.rules.v1.BatchGetRuleVersionsRequest\x1a+.sift.rules.v1.BatchGetRuleVersionsResponse\"n\x92\x41\x42\x12\x14\x42\x61tchGetRuleVersions\x1a*Retrieves multiple rules by rule versions.\x82\xd3\xe4\x93\x02#\"\x1e/api/v1/rules:batchGetVersions:\x01*\x1a\xb1\x01\x92\x41\xad\x01\x12\x30Service to programmatically interact with rules.\x1ay\n\x1fRead more about what rules are.\x12Vhttps://customer.support.siftstack.com/servicedesk/customer/portal/2/article/265421102B\x88\x01\n\x11\x63om.sift.rules.v1B\nRulesProtoP\x01\xa2\x02\x03SRX\xaa\x02\rSift.Rules.V1\xca\x02\rSift\\Rules\\V1\xe2\x02\x19Sift\\Rules\\V1\\GPBMetadata\xea\x02\x0fSift::Rules::V1\x92\x41\x10\x12\x0e\n\x0cRule Serviceb\x06proto3')
25
25
 
26
26
  _globals = globals()
27
27
  _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
@@ -317,6 +317,16 @@ if not _descriptor._USE_C_DESCRIPTORS:
317
317
  _globals['_CHANNELREFERENCE'].fields_by_name['name']._serialized_options = b'\340A\002'
318
318
  _globals['_CHANNELREFERENCE'].fields_by_name['component']._loaded_options = None
319
319
  _globals['_CHANNELREFERENCE'].fields_by_name['component']._serialized_options = b'\340A\002'
320
+ _globals['_PYTHONCHANNELREFERENCE'].fields_by_name['reference']._loaded_options = None
321
+ _globals['_PYTHONCHANNELREFERENCE'].fields_by_name['reference']._serialized_options = b'\340A\002'
322
+ _globals['_PYTHONCHANNELREFERENCE'].fields_by_name['name']._loaded_options = None
323
+ _globals['_PYTHONCHANNELREFERENCE'].fields_by_name['name']._serialized_options = b'\340A\002'
324
+ _globals['_PYTHONCODE'].fields_by_name['channel_references']._loaded_options = None
325
+ _globals['_PYTHONCODE'].fields_by_name['channel_references']._serialized_options = b'\340A\002'
326
+ _globals['_PYTHONCODE'].fields_by_name['code']._loaded_options = None
327
+ _globals['_PYTHONCODE'].fields_by_name['code']._serialized_options = b'\340A\002'
328
+ _globals['_PYTHONCODE'].fields_by_name['dependencies']._loaded_options = None
329
+ _globals['_PYTHONCODE'].fields_by_name['dependencies']._serialized_options = b'\340A\001'
320
330
  _globals['_NOTIFICATIONACTIONCONFIGURATION'].fields_by_name['recipient_user_ids']._loaded_options = None
321
331
  _globals['_NOTIFICATIONACTIONCONFIGURATION'].fields_by_name['recipient_user_ids']._serialized_options = b'\340A\002'
322
332
  _globals['_ANNOTATIONACTIONCONFIGURATION'].fields_by_name['tag_ids']._loaded_options = None
@@ -373,12 +383,12 @@ if not _descriptor._USE_C_DESCRIPTORS:
373
383
  _globals['_RULESERVICE'].methods_by_name['GetRuleVersion']._serialized_options = b'\222A9\022\016GetRuleVersion\032\'Retrieves a specific version of a rule.\202\323\344\223\002\027\022\025/api/v1/rules:version'
374
384
  _globals['_RULESERVICE'].methods_by_name['BatchGetRuleVersions']._loaded_options = None
375
385
  _globals['_RULESERVICE'].methods_by_name['BatchGetRuleVersions']._serialized_options = b'\222AB\022\024BatchGetRuleVersions\032*Retrieves multiple rules by rule versions.\202\323\344\223\002#\"\036/api/v1/rules:batchGetVersions:\001*'
376
- _globals['_SEARCHORDER']._serialized_start=11533
377
- _globals['_SEARCHORDER']._serialized_end=11625
378
- _globals['_ACTIONKIND']._serialized_start=11627
379
- _globals['_ACTIONKIND']._serialized_end=11719
380
- _globals['_CONDITIONCOMPARATOR']._serialized_start=11722
381
- _globals['_CONDITIONCOMPARATOR']._serialized_end=11895
386
+ _globals['_SEARCHORDER']._serialized_start=11853
387
+ _globals['_SEARCHORDER']._serialized_end=11945
388
+ _globals['_ACTIONKIND']._serialized_start=11947
389
+ _globals['_ACTIONKIND']._serialized_end=12039
390
+ _globals['_CONDITIONCOMPARATOR']._serialized_start=12042
391
+ _globals['_CONDITIONCOMPARATOR']._serialized_end=12215
382
392
  _globals['_RULE']._serialized_start=325
383
393
  _globals['_RULE']._serialized_end=1246
384
394
  _globals['_RULECONDITION']._serialized_start=1249
@@ -482,33 +492,37 @@ if not _descriptor._USE_C_DESCRIPTORS:
482
492
  _globals['_BATCHGETRULEVERSIONSRESPONSE']._serialized_start=8906
483
493
  _globals['_BATCHGETRULEVERSIONSRESPONSE']._serialized_end=8984
484
494
  _globals['_RULECONDITIONEXPRESSION']._serialized_start=8987
485
- _globals['_RULECONDITIONEXPRESSION']._serialized_end=9231
486
- _globals['_SINGLECHANNELCOMPARISONEXPRESSION']._serialized_start=9234
487
- _globals['_SINGLECHANNELCOMPARISONEXPRESSION']._serialized_end=9565
488
- _globals['_LASTVALUETHRESHOLD']._serialized_start=9567
489
- _globals['_LASTVALUETHRESHOLD']._serialized_end=9587
490
- _globals['_CALCULATEDCHANNELCONFIG']._serialized_start=9590
491
- _globals['_CALCULATEDCHANNELCONFIG']._serialized_end=9969
492
- _globals['_CALCULATEDCHANNELCONFIG_CHANNELREFERENCESENTRY']._serialized_start=9868
493
- _globals['_CALCULATEDCHANNELCONFIG_CHANNELREFERENCESENTRY']._serialized_end=9969
494
- _globals['_CHANNELREFERENCE']._serialized_start=9971
495
- _globals['_CHANNELREFERENCE']._serialized_end=10049
496
- _globals['_RULEACTIONCONFIGURATION']._serialized_start=10052
497
- _globals['_RULEACTIONCONFIGURATION']._serialized_end=10260
498
- _globals['_NOTIFICATIONACTIONCONFIGURATION']._serialized_start=10262
499
- _globals['_NOTIFICATIONACTIONCONFIGURATION']._serialized_end=10346
500
- _globals['_ANNOTATIONACTIONCONFIGURATION']._serialized_start=10349
501
- _globals['_ANNOTATIONACTIONCONFIGURATION']._serialized_end=10564
502
- _globals['_EVALUATERULESREQUEST']._serialized_start=10567
503
- _globals['_EVALUATERULESREQUEST']._serialized_end=10837
504
- _globals['_EVALUATEDANNOTATIONOPTIONS']._serialized_start=10839
505
- _globals['_EVALUATEDANNOTATIONOPTIONS']._serialized_end=10892
506
- _globals['_TIMERANGEQUERY']._serialized_start=10895
507
- _globals['_TIMERANGEQUERY']._serialized_end=11025
508
- _globals['_EVALUATERULESRESPONSE']._serialized_start=11028
509
- _globals['_EVALUATERULESRESPONSE']._serialized_end=11281
510
- _globals['_DRYRUNANNOTATION']._serialized_start=11284
511
- _globals['_DRYRUNANNOTATION']._serialized_end=11531
512
- _globals['_RULESERVICE']._serialized_start=11898
513
- _globals['_RULESERVICE']._serialized_end=16074
495
+ _globals['_RULECONDITIONEXPRESSION']._serialized_end=9293
496
+ _globals['_SINGLECHANNELCOMPARISONEXPRESSION']._serialized_start=9296
497
+ _globals['_SINGLECHANNELCOMPARISONEXPRESSION']._serialized_end=9627
498
+ _globals['_LASTVALUETHRESHOLD']._serialized_start=9629
499
+ _globals['_LASTVALUETHRESHOLD']._serialized_end=9649
500
+ _globals['_CALCULATEDCHANNELCONFIG']._serialized_start=9652
501
+ _globals['_CALCULATEDCHANNELCONFIG']._serialized_end=10031
502
+ _globals['_CALCULATEDCHANNELCONFIG_CHANNELREFERENCESENTRY']._serialized_start=9930
503
+ _globals['_CALCULATEDCHANNELCONFIG_CHANNELREFERENCESENTRY']._serialized_end=10031
504
+ _globals['_CHANNELREFERENCE']._serialized_start=10033
505
+ _globals['_CHANNELREFERENCE']._serialized_end=10111
506
+ _globals['_PYTHONCHANNELREFERENCE']._serialized_start=10113
507
+ _globals['_PYTHONCHANNELREFERENCE']._serialized_end=10197
508
+ _globals['_PYTHONCODE']._serialized_start=10200
509
+ _globals['_PYTHONCODE']._serialized_end=10369
510
+ _globals['_RULEACTIONCONFIGURATION']._serialized_start=10372
511
+ _globals['_RULEACTIONCONFIGURATION']._serialized_end=10580
512
+ _globals['_NOTIFICATIONACTIONCONFIGURATION']._serialized_start=10582
513
+ _globals['_NOTIFICATIONACTIONCONFIGURATION']._serialized_end=10666
514
+ _globals['_ANNOTATIONACTIONCONFIGURATION']._serialized_start=10669
515
+ _globals['_ANNOTATIONACTIONCONFIGURATION']._serialized_end=10884
516
+ _globals['_EVALUATERULESREQUEST']._serialized_start=10887
517
+ _globals['_EVALUATERULESREQUEST']._serialized_end=11157
518
+ _globals['_EVALUATEDANNOTATIONOPTIONS']._serialized_start=11159
519
+ _globals['_EVALUATEDANNOTATIONOPTIONS']._serialized_end=11212
520
+ _globals['_TIMERANGEQUERY']._serialized_start=11215
521
+ _globals['_TIMERANGEQUERY']._serialized_end=11345
522
+ _globals['_EVALUATERULESRESPONSE']._serialized_start=11348
523
+ _globals['_EVALUATERULESRESPONSE']._serialized_end=11601
524
+ _globals['_DRYRUNANNOTATION']._serialized_start=11604
525
+ _globals['_DRYRUNANNOTATION']._serialized_end=11851
526
+ _globals['_RULESERVICE']._serialized_start=12218
527
+ _globals['_RULESERVICE']._serialized_end=16394
514
528
  # @@protoc_insertion_point(module_scope)
@@ -1334,19 +1334,25 @@ class RuleConditionExpression(google.protobuf.message.Message):
1334
1334
 
1335
1335
  SINGLE_CHANNEL_COMPARISON_FIELD_NUMBER: builtins.int
1336
1336
  CALCULATED_CHANNEL_FIELD_NUMBER: builtins.int
1337
+ PYTHON_CODE_FIELD_NUMBER: builtins.int
1337
1338
  @property
1338
1339
  def single_channel_comparison(self) -> global___SingleChannelComparisonExpression: ...
1339
1340
  @property
1340
1341
  def calculated_channel(self) -> global___CalculatedChannelConfig: ...
1342
+ @property
1343
+ def python_code(self) -> global___PythonCode:
1344
+ """Experimental - not currently enabled"""
1345
+
1341
1346
  def __init__(
1342
1347
  self,
1343
1348
  *,
1344
1349
  single_channel_comparison: global___SingleChannelComparisonExpression | None = ...,
1345
1350
  calculated_channel: global___CalculatedChannelConfig | None = ...,
1351
+ python_code: global___PythonCode | None = ...,
1346
1352
  ) -> None: ...
1347
- def HasField(self, field_name: typing.Literal["calculated_channel", b"calculated_channel", "expression", b"expression", "single_channel_comparison", b"single_channel_comparison"]) -> builtins.bool: ...
1348
- def ClearField(self, field_name: typing.Literal["calculated_channel", b"calculated_channel", "expression", b"expression", "single_channel_comparison", b"single_channel_comparison"]) -> None: ...
1349
- def WhichOneof(self, oneof_group: typing.Literal["expression", b"expression"]) -> typing.Literal["single_channel_comparison", "calculated_channel"] | None: ...
1353
+ def HasField(self, field_name: typing.Literal["calculated_channel", b"calculated_channel", "expression", b"expression", "python_code", b"python_code", "single_channel_comparison", b"single_channel_comparison"]) -> builtins.bool: ...
1354
+ def ClearField(self, field_name: typing.Literal["calculated_channel", b"calculated_channel", "expression", b"expression", "python_code", b"python_code", "single_channel_comparison", b"single_channel_comparison"]) -> None: ...
1355
+ def WhichOneof(self, oneof_group: typing.Literal["expression", b"expression"]) -> typing.Literal["single_channel_comparison", "calculated_channel", "python_code"] | None: ...
1350
1356
 
1351
1357
  global___RuleConditionExpression = RuleConditionExpression
1352
1358
 
@@ -1458,6 +1464,46 @@ class ChannelReference(google.protobuf.message.Message):
1458
1464
 
1459
1465
  global___ChannelReference = ChannelReference
1460
1466
 
1467
+ @typing.final
1468
+ class PythonChannelReference(google.protobuf.message.Message):
1469
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
1470
+
1471
+ REFERENCE_FIELD_NUMBER: builtins.int
1472
+ NAME_FIELD_NUMBER: builtins.int
1473
+ reference: builtins.str
1474
+ name: builtins.str
1475
+ def __init__(
1476
+ self,
1477
+ *,
1478
+ reference: builtins.str = ...,
1479
+ name: builtins.str = ...,
1480
+ ) -> None: ...
1481
+ def ClearField(self, field_name: typing.Literal["name", b"name", "reference", b"reference"]) -> None: ...
1482
+
1483
+ global___PythonChannelReference = PythonChannelReference
1484
+
1485
+ @typing.final
1486
+ class PythonCode(google.protobuf.message.Message):
1487
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
1488
+
1489
+ CHANNEL_REFERENCES_FIELD_NUMBER: builtins.int
1490
+ CODE_FIELD_NUMBER: builtins.int
1491
+ DEPENDENCIES_FIELD_NUMBER: builtins.int
1492
+ code: builtins.str
1493
+ dependencies: builtins.str
1494
+ @property
1495
+ def channel_references(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___PythonChannelReference]: ...
1496
+ def __init__(
1497
+ self,
1498
+ *,
1499
+ channel_references: collections.abc.Iterable[global___PythonChannelReference] | None = ...,
1500
+ code: builtins.str = ...,
1501
+ dependencies: builtins.str = ...,
1502
+ ) -> None: ...
1503
+ def ClearField(self, field_name: typing.Literal["channel_references", b"channel_references", "code", b"code", "dependencies", b"dependencies"]) -> None: ...
1504
+
1505
+ global___PythonCode = PythonCode
1506
+
1461
1507
  @typing.final
1462
1508
  class RuleActionConfiguration(google.protobuf.message.Message):
1463
1509
  DESCRIPTOR: google.protobuf.descriptor.Descriptor
@@ -1,5 +1,7 @@
1
1
  import warnings
2
2
 
3
+ import google.protobuf.message
4
+
3
5
 
4
6
  class SiftError(Exception):
5
7
  """
@@ -28,3 +30,20 @@ def _component_deprecation_warning():
28
30
  "See docs for more details: https://docs.siftstack.com/docs/glossary#component",
29
31
  SiftAPIDeprecationWarning,
30
32
  )
33
+
34
+
35
+ # The default max message size for the Sift gRPC server.
36
+ GRPC_MAX_MESSAGE_SIZE = 4_194_304
37
+
38
+
39
+ class ProtobufMaxSizeExceededError(Exception):
40
+ """
41
+ The library limits the size of certain protobufs to prevent gRPC messages from being too big.
42
+ """
43
+
44
+
45
+ def raise_if_too_large(pb: google.protobuf.message.Message):
46
+ size = len(pb.SerializeToString())
47
+ name = getattr(pb, "name", pb.__class__.__name__)
48
+ if size > GRPC_MAX_MESSAGE_SIZE:
49
+ raise ProtobufMaxSizeExceededError(f"{name} too large: {size}")