temporal-flowrensic-python-sdk 0.6.63__py3-none-any.whl

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 (54) hide show
  1. temporal_flowrensic/__init__.py +2 -0
  2. temporal_flowrensic/_calls.py +185 -0
  3. temporal_flowrensic/_ci.py +56 -0
  4. temporal_flowrensic/_deploy.py +65 -0
  5. temporal_flowrensic/_gen/flowrensic/v1/activity_metrics_pb2.py +76 -0
  6. temporal_flowrensic/_gen/flowrensic/v1/activity_metrics_pb2.pyi +301 -0
  7. temporal_flowrensic/_gen/flowrensic/v1/catalog_pb2.py +60 -0
  8. temporal_flowrensic/_gen/flowrensic/v1/catalog_pb2.pyi +127 -0
  9. temporal_flowrensic/_gen/flowrensic/v1/catch_up_pb2.py +42 -0
  10. temporal_flowrensic/_gen/flowrensic/v1/catch_up_pb2.pyi +71 -0
  11. temporal_flowrensic/_gen/flowrensic/v1/client_calls_pb2.py +49 -0
  12. temporal_flowrensic/_gen/flowrensic/v1/client_calls_pb2.pyi +90 -0
  13. temporal_flowrensic/_gen/flowrensic/v1/cost_pb2.py +52 -0
  14. temporal_flowrensic/_gen/flowrensic/v1/cost_pb2.pyi +107 -0
  15. temporal_flowrensic/_gen/flowrensic/v1/deploy_pb2.py +51 -0
  16. temporal_flowrensic/_gen/flowrensic/v1/deploy_pb2.pyi +92 -0
  17. temporal_flowrensic/_gen/flowrensic/v1/ephemeral_run_pb2.py +107 -0
  18. temporal_flowrensic/_gen/flowrensic/v1/ephemeral_run_pb2.pyi +344 -0
  19. temporal_flowrensic/_gen/flowrensic/v1/finding_pb2.py +76 -0
  20. temporal_flowrensic/_gen/flowrensic/v1/finding_pb2.pyi +371 -0
  21. temporal_flowrensic/_gen/flowrensic/v1/job_pb2.py +46 -0
  22. temporal_flowrensic/_gen/flowrensic/v1/job_pb2.pyi +51 -0
  23. temporal_flowrensic/_gen/flowrensic/v1/load_pb2.py +51 -0
  24. temporal_flowrensic/_gen/flowrensic/v1/load_pb2.pyi +118 -0
  25. temporal_flowrensic/_gen/flowrensic/v1/page_pb2.py +38 -0
  26. temporal_flowrensic/_gen/flowrensic/v1/page_pb2.pyi +23 -0
  27. temporal_flowrensic/_gen/flowrensic/v1/remediation_pb2.py +60 -0
  28. temporal_flowrensic/_gen/flowrensic/v1/remediation_pb2.pyi +157 -0
  29. temporal_flowrensic/_gen/flowrensic/v1/replay_pb2.py +84 -0
  30. temporal_flowrensic/_gen/flowrensic/v1/replay_pb2.pyi +309 -0
  31. temporal_flowrensic/_gen/flowrensic/v1/server_config_pb2.py +48 -0
  32. temporal_flowrensic/_gen/flowrensic/v1/server_config_pb2.pyi +97 -0
  33. temporal_flowrensic/_gen/flowrensic/v1/services_connect.py +3621 -0
  34. temporal_flowrensic/_gen/flowrensic/v1/services_pb2.py +60 -0
  35. temporal_flowrensic/_gen/flowrensic/v1/services_pb2.pyi +20 -0
  36. temporal_flowrensic/_gen/flowrensic/v1/stored_data_pb2.py +43 -0
  37. temporal_flowrensic/_gen/flowrensic/v1/stored_data_pb2.pyi +50 -0
  38. temporal_flowrensic/_gen/flowrensic/v1/workflow_history_pb2.py +47 -0
  39. temporal_flowrensic/_gen/flowrensic/v1/workflow_history_pb2.pyi +102 -0
  40. temporal_flowrensic/_gen/flowrensic/v1/workflow_types_pb2.py +55 -0
  41. temporal_flowrensic/_gen/flowrensic/v1/workflow_types_pb2.pyi +197 -0
  42. temporal_flowrensic/_names.py +42 -0
  43. temporal_flowrensic/_queries.py +61 -0
  44. temporal_flowrensic/_replay.py +378 -0
  45. temporal_flowrensic/_sink.py +574 -0
  46. temporal_flowrensic/_telemetry.py +559 -0
  47. temporal_flowrensic/activity.py +136 -0
  48. temporal_flowrensic/client.py +166 -0
  49. temporal_flowrensic/py.typed +0 -0
  50. temporal_flowrensic/workflow.py +103 -0
  51. temporal_flowrensic_python_sdk-0.6.63.dist-info/METADATA +74 -0
  52. temporal_flowrensic_python_sdk-0.6.63.dist-info/RECORD +54 -0
  53. temporal_flowrensic_python_sdk-0.6.63.dist-info/WHEEL +4 -0
  54. temporal_flowrensic_python_sdk-0.6.63.dist-info/licenses/LICENSE +202 -0
@@ -0,0 +1,3621 @@
1
+ # -*- coding: utf-8 -*-
2
+ # Generated by https://github.com/connectrpc/connect-python. DO NOT EDIT!
3
+ # source: flowrensic/v1/services.proto
4
+
5
+ from collections.abc import AsyncGenerator, AsyncIterator, Iterable, Iterator, Mapping
6
+ from typing import Protocol
7
+
8
+ from connectrpc.client import ConnectClient, ConnectClientSync
9
+ from connectrpc.code import Code
10
+ from connectrpc.compression import Compression
11
+ from connectrpc.errors import ConnectError
12
+ from connectrpc.interceptor import Interceptor, InterceptorSync
13
+ from connectrpc.method import IdempotencyLevel, MethodInfo
14
+ from connectrpc.request import Headers, RequestContext
15
+ from connectrpc.server import ConnectASGIApplication, ConnectWSGIApplication, Endpoint, EndpointSync
16
+ import temporal_flowrensic._gen.flowrensic.v1.activity_metrics_pb2 as flowrensic_dot_v1_dot_activity__metrics__pb2
17
+ import temporal_flowrensic._gen.flowrensic.v1.catalog_pb2 as flowrensic_dot_v1_dot_catalog__pb2
18
+ import temporal_flowrensic._gen.flowrensic.v1.catch_up_pb2 as flowrensic_dot_v1_dot_catch__up__pb2
19
+ import temporal_flowrensic._gen.flowrensic.v1.client_calls_pb2 as flowrensic_dot_v1_dot_client__calls__pb2
20
+ import temporal_flowrensic._gen.flowrensic.v1.cost_pb2 as flowrensic_dot_v1_dot_cost__pb2
21
+ import temporal_flowrensic._gen.flowrensic.v1.deploy_pb2 as flowrensic_dot_v1_dot_deploy__pb2
22
+ import temporal_flowrensic._gen.flowrensic.v1.ephemeral_run_pb2 as flowrensic_dot_v1_dot_ephemeral__run__pb2
23
+ import temporal_flowrensic._gen.flowrensic.v1.finding_pb2 as flowrensic_dot_v1_dot_finding__pb2
24
+ import temporal_flowrensic._gen.flowrensic.v1.job_pb2 as flowrensic_dot_v1_dot_job__pb2
25
+ import temporal_flowrensic._gen.flowrensic.v1.load_pb2 as flowrensic_dot_v1_dot_load__pb2
26
+ import temporal_flowrensic._gen.flowrensic.v1.remediation_pb2 as flowrensic_dot_v1_dot_remediation__pb2
27
+ import temporal_flowrensic._gen.flowrensic.v1.replay_pb2 as flowrensic_dot_v1_dot_replay__pb2
28
+ import temporal_flowrensic._gen.flowrensic.v1.server_config_pb2 as flowrensic_dot_v1_dot_server__config__pb2
29
+ import temporal_flowrensic._gen.flowrensic.v1.stored_data_pb2 as flowrensic_dot_v1_dot_stored__data__pb2
30
+ import temporal_flowrensic._gen.flowrensic.v1.workflow_history_pb2 as flowrensic_dot_v1_dot_workflow__history__pb2
31
+ import temporal_flowrensic._gen.flowrensic.v1.workflow_types_pb2 as flowrensic_dot_v1_dot_workflow__types__pb2
32
+
33
+
34
+ class CatalogService(Protocol):
35
+ async def register_namespace(self, request: flowrensic_dot_v1_dot_catalog__pb2.RegisterNamespaceRequest, ctx: RequestContext) -> flowrensic_dot_v1_dot_catalog__pb2.RegisterNamespaceResponse:
36
+ raise ConnectError(Code.UNIMPLEMENTED, "Not implemented")
37
+
38
+ async def list_envs(self, request: flowrensic_dot_v1_dot_catalog__pb2.ListEnvsRequest, ctx: RequestContext) -> flowrensic_dot_v1_dot_catalog__pb2.ListEnvsResponse:
39
+ raise ConnectError(Code.UNIMPLEMENTED, "Not implemented")
40
+
41
+ async def list_servers(self, request: flowrensic_dot_v1_dot_catalog__pb2.ListServersRequest, ctx: RequestContext) -> flowrensic_dot_v1_dot_catalog__pb2.ListServersResponse:
42
+ raise ConnectError(Code.UNIMPLEMENTED, "Not implemented")
43
+
44
+ async def list_namespaces(self, request: flowrensic_dot_v1_dot_catalog__pb2.ListNamespacesRequest, ctx: RequestContext) -> flowrensic_dot_v1_dot_catalog__pb2.ListNamespacesResponse:
45
+ raise ConnectError(Code.UNIMPLEMENTED, "Not implemented")
46
+
47
+
48
+ class CatalogServiceASGIApplication(ConnectASGIApplication[CatalogService]):
49
+ def __init__(self, service: CatalogService | AsyncGenerator[CatalogService], *, interceptors: Iterable[Interceptor]=(), read_max_bytes: int | None = None, compressions: Iterable[Compression] | None = None) -> None:
50
+ super().__init__(
51
+ service=service,
52
+ endpoints=lambda svc: {
53
+ "/flowrensic.v1.CatalogService/RegisterNamespace": Endpoint.unary(
54
+ method=MethodInfo(
55
+ name="RegisterNamespace",
56
+ service_name="flowrensic.v1.CatalogService",
57
+ input=flowrensic_dot_v1_dot_catalog__pb2.RegisterNamespaceRequest,
58
+ output=flowrensic_dot_v1_dot_catalog__pb2.RegisterNamespaceResponse,
59
+ idempotency_level=IdempotencyLevel.UNKNOWN,
60
+ ),
61
+ function=svc.register_namespace,
62
+ ),
63
+ "/flowrensic.v1.CatalogService/ListEnvs": Endpoint.unary(
64
+ method=MethodInfo(
65
+ name="ListEnvs",
66
+ service_name="flowrensic.v1.CatalogService",
67
+ input=flowrensic_dot_v1_dot_catalog__pb2.ListEnvsRequest,
68
+ output=flowrensic_dot_v1_dot_catalog__pb2.ListEnvsResponse,
69
+ idempotency_level=IdempotencyLevel.UNKNOWN,
70
+ ),
71
+ function=svc.list_envs,
72
+ ),
73
+ "/flowrensic.v1.CatalogService/ListServers": Endpoint.unary(
74
+ method=MethodInfo(
75
+ name="ListServers",
76
+ service_name="flowrensic.v1.CatalogService",
77
+ input=flowrensic_dot_v1_dot_catalog__pb2.ListServersRequest,
78
+ output=flowrensic_dot_v1_dot_catalog__pb2.ListServersResponse,
79
+ idempotency_level=IdempotencyLevel.UNKNOWN,
80
+ ),
81
+ function=svc.list_servers,
82
+ ),
83
+ "/flowrensic.v1.CatalogService/ListNamespaces": Endpoint.unary(
84
+ method=MethodInfo(
85
+ name="ListNamespaces",
86
+ service_name="flowrensic.v1.CatalogService",
87
+ input=flowrensic_dot_v1_dot_catalog__pb2.ListNamespacesRequest,
88
+ output=flowrensic_dot_v1_dot_catalog__pb2.ListNamespacesResponse,
89
+ idempotency_level=IdempotencyLevel.UNKNOWN,
90
+ ),
91
+ function=svc.list_namespaces,
92
+ ),
93
+ },
94
+ interceptors=interceptors,
95
+ read_max_bytes=read_max_bytes,
96
+ compressions=compressions,
97
+ )
98
+
99
+ @property
100
+ def path(self) -> str:
101
+ """Returns the URL path to mount the application to when serving multiple applications."""
102
+ return "/flowrensic.v1.CatalogService"
103
+
104
+
105
+ class CatalogServiceClient(ConnectClient):
106
+ async def register_namespace(
107
+ self,
108
+ request: flowrensic_dot_v1_dot_catalog__pb2.RegisterNamespaceRequest,
109
+ *,
110
+ headers: Headers | Mapping[str, str] | None = None,
111
+ timeout_ms: int | None = None,
112
+ ) -> flowrensic_dot_v1_dot_catalog__pb2.RegisterNamespaceResponse:
113
+ return await self.execute_unary(
114
+ request=request,
115
+ method=MethodInfo(
116
+ name="RegisterNamespace",
117
+ service_name="flowrensic.v1.CatalogService",
118
+ input=flowrensic_dot_v1_dot_catalog__pb2.RegisterNamespaceRequest,
119
+ output=flowrensic_dot_v1_dot_catalog__pb2.RegisterNamespaceResponse,
120
+ idempotency_level=IdempotencyLevel.UNKNOWN,
121
+ ),
122
+ headers=headers,
123
+ timeout_ms=timeout_ms,
124
+ )
125
+
126
+ async def list_envs(
127
+ self,
128
+ request: flowrensic_dot_v1_dot_catalog__pb2.ListEnvsRequest,
129
+ *,
130
+ headers: Headers | Mapping[str, str] | None = None,
131
+ timeout_ms: int | None = None,
132
+ ) -> flowrensic_dot_v1_dot_catalog__pb2.ListEnvsResponse:
133
+ return await self.execute_unary(
134
+ request=request,
135
+ method=MethodInfo(
136
+ name="ListEnvs",
137
+ service_name="flowrensic.v1.CatalogService",
138
+ input=flowrensic_dot_v1_dot_catalog__pb2.ListEnvsRequest,
139
+ output=flowrensic_dot_v1_dot_catalog__pb2.ListEnvsResponse,
140
+ idempotency_level=IdempotencyLevel.UNKNOWN,
141
+ ),
142
+ headers=headers,
143
+ timeout_ms=timeout_ms,
144
+ )
145
+
146
+ async def list_servers(
147
+ self,
148
+ request: flowrensic_dot_v1_dot_catalog__pb2.ListServersRequest,
149
+ *,
150
+ headers: Headers | Mapping[str, str] | None = None,
151
+ timeout_ms: int | None = None,
152
+ ) -> flowrensic_dot_v1_dot_catalog__pb2.ListServersResponse:
153
+ return await self.execute_unary(
154
+ request=request,
155
+ method=MethodInfo(
156
+ name="ListServers",
157
+ service_name="flowrensic.v1.CatalogService",
158
+ input=flowrensic_dot_v1_dot_catalog__pb2.ListServersRequest,
159
+ output=flowrensic_dot_v1_dot_catalog__pb2.ListServersResponse,
160
+ idempotency_level=IdempotencyLevel.UNKNOWN,
161
+ ),
162
+ headers=headers,
163
+ timeout_ms=timeout_ms,
164
+ )
165
+
166
+ async def list_namespaces(
167
+ self,
168
+ request: flowrensic_dot_v1_dot_catalog__pb2.ListNamespacesRequest,
169
+ *,
170
+ headers: Headers | Mapping[str, str] | None = None,
171
+ timeout_ms: int | None = None,
172
+ ) -> flowrensic_dot_v1_dot_catalog__pb2.ListNamespacesResponse:
173
+ return await self.execute_unary(
174
+ request=request,
175
+ method=MethodInfo(
176
+ name="ListNamespaces",
177
+ service_name="flowrensic.v1.CatalogService",
178
+ input=flowrensic_dot_v1_dot_catalog__pb2.ListNamespacesRequest,
179
+ output=flowrensic_dot_v1_dot_catalog__pb2.ListNamespacesResponse,
180
+ idempotency_level=IdempotencyLevel.UNKNOWN,
181
+ ),
182
+ headers=headers,
183
+ timeout_ms=timeout_ms,
184
+ )
185
+
186
+
187
+
188
+ class IngestService(Protocol):
189
+ async def ingest_activity_events(self, request: flowrensic_dot_v1_dot_activity__metrics__pb2.IngestActivityEventsRequest, ctx: RequestContext) -> flowrensic_dot_v1_dot_activity__metrics__pb2.IngestActivityEventsResponse:
190
+ raise ConnectError(Code.UNIMPLEMENTED, "Not implemented")
191
+
192
+ async def ingest_history(self, request: flowrensic_dot_v1_dot_workflow__history__pb2.IngestHistoryRequest, ctx: RequestContext) -> flowrensic_dot_v1_dot_workflow__history__pb2.IngestHistoryResponse:
193
+ raise ConnectError(Code.UNIMPLEMENTED, "Not implemented")
194
+
195
+ async def ingest_replay_results(self, request: flowrensic_dot_v1_dot_replay__pb2.IngestReplayResultsRequest, ctx: RequestContext) -> flowrensic_dot_v1_dot_replay__pb2.IngestReplayResultsResponse:
196
+ raise ConnectError(Code.UNIMPLEMENTED, "Not implemented")
197
+
198
+ async def ephemeral_run_handshake(self, request: flowrensic_dot_v1_dot_ephemeral__run__pb2.EphemeralRunHandshakeRequest, ctx: RequestContext) -> flowrensic_dot_v1_dot_ephemeral__run__pb2.EphemeralRunHandshakeResponse:
199
+ raise ConnectError(Code.UNIMPLEMENTED, "Not implemented")
200
+
201
+ async def ingest_ephemeral_run_metrics(self, request: flowrensic_dot_v1_dot_ephemeral__run__pb2.IngestEphemeralRunMetricsRequest, ctx: RequestContext) -> flowrensic_dot_v1_dot_ephemeral__run__pb2.IngestEphemeralRunMetricsResponse:
202
+ raise ConnectError(Code.UNIMPLEMENTED, "Not implemented")
203
+
204
+ async def ingest_worker_metrics(self, request: flowrensic_dot_v1_dot_ephemeral__run__pb2.IngestWorkerMetricsRequest, ctx: RequestContext) -> flowrensic_dot_v1_dot_ephemeral__run__pb2.IngestWorkerMetricsResponse:
205
+ raise ConnectError(Code.UNIMPLEMENTED, "Not implemented")
206
+
207
+ async def ingest_engine_history(self, request: flowrensic_dot_v1_dot_ephemeral__run__pb2.IngestEngineHistoryRequest, ctx: RequestContext) -> flowrensic_dot_v1_dot_ephemeral__run__pb2.IngestEngineHistoryResponse:
208
+ raise ConnectError(Code.UNIMPLEMENTED, "Not implemented")
209
+
210
+ async def ephemeral_run_handover(self, request: flowrensic_dot_v1_dot_ephemeral__run__pb2.EphemeralRunHandoverRequest, ctx: RequestContext) -> flowrensic_dot_v1_dot_ephemeral__run__pb2.EphemeralRunHandoverResponse:
211
+ raise ConnectError(Code.UNIMPLEMENTED, "Not implemented")
212
+
213
+ async def worker_beat(self, request: flowrensic_dot_v1_dot_ephemeral__run__pb2.WorkerBeatRequest, ctx: RequestContext) -> flowrensic_dot_v1_dot_ephemeral__run__pb2.WorkerBeatResponse:
214
+ raise ConnectError(Code.UNIMPLEMENTED, "Not implemented")
215
+
216
+ async def old_workers(self, request: flowrensic_dot_v1_dot_ephemeral__run__pb2.OldWorkersRequest, ctx: RequestContext) -> flowrensic_dot_v1_dot_ephemeral__run__pb2.OldWorkersResponse:
217
+ raise ConnectError(Code.UNIMPLEMENTED, "Not implemented")
218
+
219
+ async def ingest_deploy_stage(self, request: flowrensic_dot_v1_dot_deploy__pb2.IngestDeployStageRequest, ctx: RequestContext) -> flowrensic_dot_v1_dot_deploy__pb2.IngestDeployStageResponse:
220
+ raise ConnectError(Code.UNIMPLEMENTED, "Not implemented")
221
+
222
+ async def ingest_client_calls(self, request: flowrensic_dot_v1_dot_client__calls__pb2.IngestClientCallsRequest, ctx: RequestContext) -> flowrensic_dot_v1_dot_client__calls__pb2.IngestClientCallsResponse:
223
+ raise ConnectError(Code.UNIMPLEMENTED, "Not implemented")
224
+
225
+ async def ingest_query_counts(self, request: flowrensic_dot_v1_dot_client__calls__pb2.IngestQueryCountsRequest, ctx: RequestContext) -> flowrensic_dot_v1_dot_client__calls__pb2.IngestQueryCountsResponse:
226
+ raise ConnectError(Code.UNIMPLEMENTED, "Not implemented")
227
+
228
+
229
+ class IngestServiceASGIApplication(ConnectASGIApplication[IngestService]):
230
+ def __init__(self, service: IngestService | AsyncGenerator[IngestService], *, interceptors: Iterable[Interceptor]=(), read_max_bytes: int | None = None, compressions: Iterable[Compression] | None = None) -> None:
231
+ super().__init__(
232
+ service=service,
233
+ endpoints=lambda svc: {
234
+ "/flowrensic.v1.IngestService/IngestActivityEvents": Endpoint.unary(
235
+ method=MethodInfo(
236
+ name="IngestActivityEvents",
237
+ service_name="flowrensic.v1.IngestService",
238
+ input=flowrensic_dot_v1_dot_activity__metrics__pb2.IngestActivityEventsRequest,
239
+ output=flowrensic_dot_v1_dot_activity__metrics__pb2.IngestActivityEventsResponse,
240
+ idempotency_level=IdempotencyLevel.UNKNOWN,
241
+ ),
242
+ function=svc.ingest_activity_events,
243
+ ),
244
+ "/flowrensic.v1.IngestService/IngestHistory": Endpoint.unary(
245
+ method=MethodInfo(
246
+ name="IngestHistory",
247
+ service_name="flowrensic.v1.IngestService",
248
+ input=flowrensic_dot_v1_dot_workflow__history__pb2.IngestHistoryRequest,
249
+ output=flowrensic_dot_v1_dot_workflow__history__pb2.IngestHistoryResponse,
250
+ idempotency_level=IdempotencyLevel.UNKNOWN,
251
+ ),
252
+ function=svc.ingest_history,
253
+ ),
254
+ "/flowrensic.v1.IngestService/IngestReplayResults": Endpoint.unary(
255
+ method=MethodInfo(
256
+ name="IngestReplayResults",
257
+ service_name="flowrensic.v1.IngestService",
258
+ input=flowrensic_dot_v1_dot_replay__pb2.IngestReplayResultsRequest,
259
+ output=flowrensic_dot_v1_dot_replay__pb2.IngestReplayResultsResponse,
260
+ idempotency_level=IdempotencyLevel.UNKNOWN,
261
+ ),
262
+ function=svc.ingest_replay_results,
263
+ ),
264
+ "/flowrensic.v1.IngestService/EphemeralRunHandshake": Endpoint.unary(
265
+ method=MethodInfo(
266
+ name="EphemeralRunHandshake",
267
+ service_name="flowrensic.v1.IngestService",
268
+ input=flowrensic_dot_v1_dot_ephemeral__run__pb2.EphemeralRunHandshakeRequest,
269
+ output=flowrensic_dot_v1_dot_ephemeral__run__pb2.EphemeralRunHandshakeResponse,
270
+ idempotency_level=IdempotencyLevel.UNKNOWN,
271
+ ),
272
+ function=svc.ephemeral_run_handshake,
273
+ ),
274
+ "/flowrensic.v1.IngestService/IngestEphemeralRunMetrics": Endpoint.unary(
275
+ method=MethodInfo(
276
+ name="IngestEphemeralRunMetrics",
277
+ service_name="flowrensic.v1.IngestService",
278
+ input=flowrensic_dot_v1_dot_ephemeral__run__pb2.IngestEphemeralRunMetricsRequest,
279
+ output=flowrensic_dot_v1_dot_ephemeral__run__pb2.IngestEphemeralRunMetricsResponse,
280
+ idempotency_level=IdempotencyLevel.UNKNOWN,
281
+ ),
282
+ function=svc.ingest_ephemeral_run_metrics,
283
+ ),
284
+ "/flowrensic.v1.IngestService/IngestWorkerMetrics": Endpoint.unary(
285
+ method=MethodInfo(
286
+ name="IngestWorkerMetrics",
287
+ service_name="flowrensic.v1.IngestService",
288
+ input=flowrensic_dot_v1_dot_ephemeral__run__pb2.IngestWorkerMetricsRequest,
289
+ output=flowrensic_dot_v1_dot_ephemeral__run__pb2.IngestWorkerMetricsResponse,
290
+ idempotency_level=IdempotencyLevel.UNKNOWN,
291
+ ),
292
+ function=svc.ingest_worker_metrics,
293
+ ),
294
+ "/flowrensic.v1.IngestService/IngestEngineHistory": Endpoint.unary(
295
+ method=MethodInfo(
296
+ name="IngestEngineHistory",
297
+ service_name="flowrensic.v1.IngestService",
298
+ input=flowrensic_dot_v1_dot_ephemeral__run__pb2.IngestEngineHistoryRequest,
299
+ output=flowrensic_dot_v1_dot_ephemeral__run__pb2.IngestEngineHistoryResponse,
300
+ idempotency_level=IdempotencyLevel.UNKNOWN,
301
+ ),
302
+ function=svc.ingest_engine_history,
303
+ ),
304
+ "/flowrensic.v1.IngestService/EphemeralRunHandover": Endpoint.unary(
305
+ method=MethodInfo(
306
+ name="EphemeralRunHandover",
307
+ service_name="flowrensic.v1.IngestService",
308
+ input=flowrensic_dot_v1_dot_ephemeral__run__pb2.EphemeralRunHandoverRequest,
309
+ output=flowrensic_dot_v1_dot_ephemeral__run__pb2.EphemeralRunHandoverResponse,
310
+ idempotency_level=IdempotencyLevel.UNKNOWN,
311
+ ),
312
+ function=svc.ephemeral_run_handover,
313
+ ),
314
+ "/flowrensic.v1.IngestService/WorkerBeat": Endpoint.unary(
315
+ method=MethodInfo(
316
+ name="WorkerBeat",
317
+ service_name="flowrensic.v1.IngestService",
318
+ input=flowrensic_dot_v1_dot_ephemeral__run__pb2.WorkerBeatRequest,
319
+ output=flowrensic_dot_v1_dot_ephemeral__run__pb2.WorkerBeatResponse,
320
+ idempotency_level=IdempotencyLevel.UNKNOWN,
321
+ ),
322
+ function=svc.worker_beat,
323
+ ),
324
+ "/flowrensic.v1.IngestService/OldWorkers": Endpoint.unary(
325
+ method=MethodInfo(
326
+ name="OldWorkers",
327
+ service_name="flowrensic.v1.IngestService",
328
+ input=flowrensic_dot_v1_dot_ephemeral__run__pb2.OldWorkersRequest,
329
+ output=flowrensic_dot_v1_dot_ephemeral__run__pb2.OldWorkersResponse,
330
+ idempotency_level=IdempotencyLevel.UNKNOWN,
331
+ ),
332
+ function=svc.old_workers,
333
+ ),
334
+ "/flowrensic.v1.IngestService/IngestDeployStage": Endpoint.unary(
335
+ method=MethodInfo(
336
+ name="IngestDeployStage",
337
+ service_name="flowrensic.v1.IngestService",
338
+ input=flowrensic_dot_v1_dot_deploy__pb2.IngestDeployStageRequest,
339
+ output=flowrensic_dot_v1_dot_deploy__pb2.IngestDeployStageResponse,
340
+ idempotency_level=IdempotencyLevel.UNKNOWN,
341
+ ),
342
+ function=svc.ingest_deploy_stage,
343
+ ),
344
+ "/flowrensic.v1.IngestService/IngestClientCalls": Endpoint.unary(
345
+ method=MethodInfo(
346
+ name="IngestClientCalls",
347
+ service_name="flowrensic.v1.IngestService",
348
+ input=flowrensic_dot_v1_dot_client__calls__pb2.IngestClientCallsRequest,
349
+ output=flowrensic_dot_v1_dot_client__calls__pb2.IngestClientCallsResponse,
350
+ idempotency_level=IdempotencyLevel.UNKNOWN,
351
+ ),
352
+ function=svc.ingest_client_calls,
353
+ ),
354
+ "/flowrensic.v1.IngestService/IngestQueryCounts": Endpoint.unary(
355
+ method=MethodInfo(
356
+ name="IngestQueryCounts",
357
+ service_name="flowrensic.v1.IngestService",
358
+ input=flowrensic_dot_v1_dot_client__calls__pb2.IngestQueryCountsRequest,
359
+ output=flowrensic_dot_v1_dot_client__calls__pb2.IngestQueryCountsResponse,
360
+ idempotency_level=IdempotencyLevel.UNKNOWN,
361
+ ),
362
+ function=svc.ingest_query_counts,
363
+ ),
364
+ },
365
+ interceptors=interceptors,
366
+ read_max_bytes=read_max_bytes,
367
+ compressions=compressions,
368
+ )
369
+
370
+ @property
371
+ def path(self) -> str:
372
+ """Returns the URL path to mount the application to when serving multiple applications."""
373
+ return "/flowrensic.v1.IngestService"
374
+
375
+
376
+ class IngestServiceClient(ConnectClient):
377
+ async def ingest_activity_events(
378
+ self,
379
+ request: flowrensic_dot_v1_dot_activity__metrics__pb2.IngestActivityEventsRequest,
380
+ *,
381
+ headers: Headers | Mapping[str, str] | None = None,
382
+ timeout_ms: int | None = None,
383
+ ) -> flowrensic_dot_v1_dot_activity__metrics__pb2.IngestActivityEventsResponse:
384
+ return await self.execute_unary(
385
+ request=request,
386
+ method=MethodInfo(
387
+ name="IngestActivityEvents",
388
+ service_name="flowrensic.v1.IngestService",
389
+ input=flowrensic_dot_v1_dot_activity__metrics__pb2.IngestActivityEventsRequest,
390
+ output=flowrensic_dot_v1_dot_activity__metrics__pb2.IngestActivityEventsResponse,
391
+ idempotency_level=IdempotencyLevel.UNKNOWN,
392
+ ),
393
+ headers=headers,
394
+ timeout_ms=timeout_ms,
395
+ )
396
+
397
+ async def ingest_history(
398
+ self,
399
+ request: flowrensic_dot_v1_dot_workflow__history__pb2.IngestHistoryRequest,
400
+ *,
401
+ headers: Headers | Mapping[str, str] | None = None,
402
+ timeout_ms: int | None = None,
403
+ ) -> flowrensic_dot_v1_dot_workflow__history__pb2.IngestHistoryResponse:
404
+ return await self.execute_unary(
405
+ request=request,
406
+ method=MethodInfo(
407
+ name="IngestHistory",
408
+ service_name="flowrensic.v1.IngestService",
409
+ input=flowrensic_dot_v1_dot_workflow__history__pb2.IngestHistoryRequest,
410
+ output=flowrensic_dot_v1_dot_workflow__history__pb2.IngestHistoryResponse,
411
+ idempotency_level=IdempotencyLevel.UNKNOWN,
412
+ ),
413
+ headers=headers,
414
+ timeout_ms=timeout_ms,
415
+ )
416
+
417
+ async def ingest_replay_results(
418
+ self,
419
+ request: flowrensic_dot_v1_dot_replay__pb2.IngestReplayResultsRequest,
420
+ *,
421
+ headers: Headers | Mapping[str, str] | None = None,
422
+ timeout_ms: int | None = None,
423
+ ) -> flowrensic_dot_v1_dot_replay__pb2.IngestReplayResultsResponse:
424
+ return await self.execute_unary(
425
+ request=request,
426
+ method=MethodInfo(
427
+ name="IngestReplayResults",
428
+ service_name="flowrensic.v1.IngestService",
429
+ input=flowrensic_dot_v1_dot_replay__pb2.IngestReplayResultsRequest,
430
+ output=flowrensic_dot_v1_dot_replay__pb2.IngestReplayResultsResponse,
431
+ idempotency_level=IdempotencyLevel.UNKNOWN,
432
+ ),
433
+ headers=headers,
434
+ timeout_ms=timeout_ms,
435
+ )
436
+
437
+ async def ephemeral_run_handshake(
438
+ self,
439
+ request: flowrensic_dot_v1_dot_ephemeral__run__pb2.EphemeralRunHandshakeRequest,
440
+ *,
441
+ headers: Headers | Mapping[str, str] | None = None,
442
+ timeout_ms: int | None = None,
443
+ ) -> flowrensic_dot_v1_dot_ephemeral__run__pb2.EphemeralRunHandshakeResponse:
444
+ return await self.execute_unary(
445
+ request=request,
446
+ method=MethodInfo(
447
+ name="EphemeralRunHandshake",
448
+ service_name="flowrensic.v1.IngestService",
449
+ input=flowrensic_dot_v1_dot_ephemeral__run__pb2.EphemeralRunHandshakeRequest,
450
+ output=flowrensic_dot_v1_dot_ephemeral__run__pb2.EphemeralRunHandshakeResponse,
451
+ idempotency_level=IdempotencyLevel.UNKNOWN,
452
+ ),
453
+ headers=headers,
454
+ timeout_ms=timeout_ms,
455
+ )
456
+
457
+ async def ingest_ephemeral_run_metrics(
458
+ self,
459
+ request: flowrensic_dot_v1_dot_ephemeral__run__pb2.IngestEphemeralRunMetricsRequest,
460
+ *,
461
+ headers: Headers | Mapping[str, str] | None = None,
462
+ timeout_ms: int | None = None,
463
+ ) -> flowrensic_dot_v1_dot_ephemeral__run__pb2.IngestEphemeralRunMetricsResponse:
464
+ return await self.execute_unary(
465
+ request=request,
466
+ method=MethodInfo(
467
+ name="IngestEphemeralRunMetrics",
468
+ service_name="flowrensic.v1.IngestService",
469
+ input=flowrensic_dot_v1_dot_ephemeral__run__pb2.IngestEphemeralRunMetricsRequest,
470
+ output=flowrensic_dot_v1_dot_ephemeral__run__pb2.IngestEphemeralRunMetricsResponse,
471
+ idempotency_level=IdempotencyLevel.UNKNOWN,
472
+ ),
473
+ headers=headers,
474
+ timeout_ms=timeout_ms,
475
+ )
476
+
477
+ async def ingest_worker_metrics(
478
+ self,
479
+ request: flowrensic_dot_v1_dot_ephemeral__run__pb2.IngestWorkerMetricsRequest,
480
+ *,
481
+ headers: Headers | Mapping[str, str] | None = None,
482
+ timeout_ms: int | None = None,
483
+ ) -> flowrensic_dot_v1_dot_ephemeral__run__pb2.IngestWorkerMetricsResponse:
484
+ return await self.execute_unary(
485
+ request=request,
486
+ method=MethodInfo(
487
+ name="IngestWorkerMetrics",
488
+ service_name="flowrensic.v1.IngestService",
489
+ input=flowrensic_dot_v1_dot_ephemeral__run__pb2.IngestWorkerMetricsRequest,
490
+ output=flowrensic_dot_v1_dot_ephemeral__run__pb2.IngestWorkerMetricsResponse,
491
+ idempotency_level=IdempotencyLevel.UNKNOWN,
492
+ ),
493
+ headers=headers,
494
+ timeout_ms=timeout_ms,
495
+ )
496
+
497
+ async def ingest_engine_history(
498
+ self,
499
+ request: flowrensic_dot_v1_dot_ephemeral__run__pb2.IngestEngineHistoryRequest,
500
+ *,
501
+ headers: Headers | Mapping[str, str] | None = None,
502
+ timeout_ms: int | None = None,
503
+ ) -> flowrensic_dot_v1_dot_ephemeral__run__pb2.IngestEngineHistoryResponse:
504
+ return await self.execute_unary(
505
+ request=request,
506
+ method=MethodInfo(
507
+ name="IngestEngineHistory",
508
+ service_name="flowrensic.v1.IngestService",
509
+ input=flowrensic_dot_v1_dot_ephemeral__run__pb2.IngestEngineHistoryRequest,
510
+ output=flowrensic_dot_v1_dot_ephemeral__run__pb2.IngestEngineHistoryResponse,
511
+ idempotency_level=IdempotencyLevel.UNKNOWN,
512
+ ),
513
+ headers=headers,
514
+ timeout_ms=timeout_ms,
515
+ )
516
+
517
+ async def ephemeral_run_handover(
518
+ self,
519
+ request: flowrensic_dot_v1_dot_ephemeral__run__pb2.EphemeralRunHandoverRequest,
520
+ *,
521
+ headers: Headers | Mapping[str, str] | None = None,
522
+ timeout_ms: int | None = None,
523
+ ) -> flowrensic_dot_v1_dot_ephemeral__run__pb2.EphemeralRunHandoverResponse:
524
+ return await self.execute_unary(
525
+ request=request,
526
+ method=MethodInfo(
527
+ name="EphemeralRunHandover",
528
+ service_name="flowrensic.v1.IngestService",
529
+ input=flowrensic_dot_v1_dot_ephemeral__run__pb2.EphemeralRunHandoverRequest,
530
+ output=flowrensic_dot_v1_dot_ephemeral__run__pb2.EphemeralRunHandoverResponse,
531
+ idempotency_level=IdempotencyLevel.UNKNOWN,
532
+ ),
533
+ headers=headers,
534
+ timeout_ms=timeout_ms,
535
+ )
536
+
537
+ async def worker_beat(
538
+ self,
539
+ request: flowrensic_dot_v1_dot_ephemeral__run__pb2.WorkerBeatRequest,
540
+ *,
541
+ headers: Headers | Mapping[str, str] | None = None,
542
+ timeout_ms: int | None = None,
543
+ ) -> flowrensic_dot_v1_dot_ephemeral__run__pb2.WorkerBeatResponse:
544
+ return await self.execute_unary(
545
+ request=request,
546
+ method=MethodInfo(
547
+ name="WorkerBeat",
548
+ service_name="flowrensic.v1.IngestService",
549
+ input=flowrensic_dot_v1_dot_ephemeral__run__pb2.WorkerBeatRequest,
550
+ output=flowrensic_dot_v1_dot_ephemeral__run__pb2.WorkerBeatResponse,
551
+ idempotency_level=IdempotencyLevel.UNKNOWN,
552
+ ),
553
+ headers=headers,
554
+ timeout_ms=timeout_ms,
555
+ )
556
+
557
+ async def old_workers(
558
+ self,
559
+ request: flowrensic_dot_v1_dot_ephemeral__run__pb2.OldWorkersRequest,
560
+ *,
561
+ headers: Headers | Mapping[str, str] | None = None,
562
+ timeout_ms: int | None = None,
563
+ ) -> flowrensic_dot_v1_dot_ephemeral__run__pb2.OldWorkersResponse:
564
+ return await self.execute_unary(
565
+ request=request,
566
+ method=MethodInfo(
567
+ name="OldWorkers",
568
+ service_name="flowrensic.v1.IngestService",
569
+ input=flowrensic_dot_v1_dot_ephemeral__run__pb2.OldWorkersRequest,
570
+ output=flowrensic_dot_v1_dot_ephemeral__run__pb2.OldWorkersResponse,
571
+ idempotency_level=IdempotencyLevel.UNKNOWN,
572
+ ),
573
+ headers=headers,
574
+ timeout_ms=timeout_ms,
575
+ )
576
+
577
+ async def ingest_deploy_stage(
578
+ self,
579
+ request: flowrensic_dot_v1_dot_deploy__pb2.IngestDeployStageRequest,
580
+ *,
581
+ headers: Headers | Mapping[str, str] | None = None,
582
+ timeout_ms: int | None = None,
583
+ ) -> flowrensic_dot_v1_dot_deploy__pb2.IngestDeployStageResponse:
584
+ return await self.execute_unary(
585
+ request=request,
586
+ method=MethodInfo(
587
+ name="IngestDeployStage",
588
+ service_name="flowrensic.v1.IngestService",
589
+ input=flowrensic_dot_v1_dot_deploy__pb2.IngestDeployStageRequest,
590
+ output=flowrensic_dot_v1_dot_deploy__pb2.IngestDeployStageResponse,
591
+ idempotency_level=IdempotencyLevel.UNKNOWN,
592
+ ),
593
+ headers=headers,
594
+ timeout_ms=timeout_ms,
595
+ )
596
+
597
+ async def ingest_client_calls(
598
+ self,
599
+ request: flowrensic_dot_v1_dot_client__calls__pb2.IngestClientCallsRequest,
600
+ *,
601
+ headers: Headers | Mapping[str, str] | None = None,
602
+ timeout_ms: int | None = None,
603
+ ) -> flowrensic_dot_v1_dot_client__calls__pb2.IngestClientCallsResponse:
604
+ return await self.execute_unary(
605
+ request=request,
606
+ method=MethodInfo(
607
+ name="IngestClientCalls",
608
+ service_name="flowrensic.v1.IngestService",
609
+ input=flowrensic_dot_v1_dot_client__calls__pb2.IngestClientCallsRequest,
610
+ output=flowrensic_dot_v1_dot_client__calls__pb2.IngestClientCallsResponse,
611
+ idempotency_level=IdempotencyLevel.UNKNOWN,
612
+ ),
613
+ headers=headers,
614
+ timeout_ms=timeout_ms,
615
+ )
616
+
617
+ async def ingest_query_counts(
618
+ self,
619
+ request: flowrensic_dot_v1_dot_client__calls__pb2.IngestQueryCountsRequest,
620
+ *,
621
+ headers: Headers | Mapping[str, str] | None = None,
622
+ timeout_ms: int | None = None,
623
+ ) -> flowrensic_dot_v1_dot_client__calls__pb2.IngestQueryCountsResponse:
624
+ return await self.execute_unary(
625
+ request=request,
626
+ method=MethodInfo(
627
+ name="IngestQueryCounts",
628
+ service_name="flowrensic.v1.IngestService",
629
+ input=flowrensic_dot_v1_dot_client__calls__pb2.IngestQueryCountsRequest,
630
+ output=flowrensic_dot_v1_dot_client__calls__pb2.IngestQueryCountsResponse,
631
+ idempotency_level=IdempotencyLevel.UNKNOWN,
632
+ ),
633
+ headers=headers,
634
+ timeout_ms=timeout_ms,
635
+ )
636
+
637
+
638
+
639
+ class QueryService(Protocol):
640
+ async def activity_stats(self, request: flowrensic_dot_v1_dot_activity__metrics__pb2.ActivityStatsRequest, ctx: RequestContext) -> flowrensic_dot_v1_dot_activity__metrics__pb2.ActivityStatsResponse:
641
+ raise ConnectError(Code.UNIMPLEMENTED, "Not implemented")
642
+
643
+ async def list_runs(self, request: flowrensic_dot_v1_dot_activity__metrics__pb2.ListRunsRequest, ctx: RequestContext) -> flowrensic_dot_v1_dot_activity__metrics__pb2.ListRunsResponse:
644
+ raise ConnectError(Code.UNIMPLEMENTED, "Not implemented")
645
+
646
+ async def list_findings(self, request: flowrensic_dot_v1_dot_finding__pb2.ListFindingsRequest, ctx: RequestContext) -> flowrensic_dot_v1_dot_finding__pb2.ListFindingsResponse:
647
+ raise ConnectError(Code.UNIMPLEMENTED, "Not implemented")
648
+
649
+ async def list_alerts(self, request: flowrensic_dot_v1_dot_finding__pb2.ListAlertsRequest, ctx: RequestContext) -> flowrensic_dot_v1_dot_finding__pb2.ListAlertsResponse:
650
+ raise ConnectError(Code.UNIMPLEMENTED, "Not implemented")
651
+
652
+ async def engine_metrics(self, request: flowrensic_dot_v1_dot_activity__metrics__pb2.EngineMetricsRequest, ctx: RequestContext) -> flowrensic_dot_v1_dot_activity__metrics__pb2.EngineMetricsResponse:
653
+ raise ConnectError(Code.UNIMPLEMENTED, "Not implemented")
654
+
655
+ async def update_rejections(self, request: flowrensic_dot_v1_dot_activity__metrics__pb2.UpdateRejectionsRequest, ctx: RequestContext) -> flowrensic_dot_v1_dot_activity__metrics__pb2.UpdateRejectionsResponse:
656
+ raise ConnectError(Code.UNIMPLEMENTED, "Not implemented")
657
+
658
+ async def list_replay_histories(self, request: flowrensic_dot_v1_dot_replay__pb2.ListReplayHistoriesRequest, ctx: RequestContext) -> flowrensic_dot_v1_dot_replay__pb2.ListReplayHistoriesResponse:
659
+ raise ConnectError(Code.UNIMPLEMENTED, "Not implemented")
660
+
661
+ async def list_replay_results(self, request: flowrensic_dot_v1_dot_replay__pb2.ListReplayResultsRequest, ctx: RequestContext) -> flowrensic_dot_v1_dot_replay__pb2.ListReplayResultsResponse:
662
+ raise ConnectError(Code.UNIMPLEMENTED, "Not implemented")
663
+
664
+ async def list_replay_requests(self, request: flowrensic_dot_v1_dot_replay__pb2.ListReplayRequestsRequest, ctx: RequestContext) -> flowrensic_dot_v1_dot_replay__pb2.ListReplayRequestsResponse:
665
+ raise ConnectError(Code.UNIMPLEMENTED, "Not implemented")
666
+
667
+ async def list_replay_sets(self, request: flowrensic_dot_v1_dot_replay__pb2.ListReplaySetsRequest, ctx: RequestContext) -> flowrensic_dot_v1_dot_replay__pb2.ListReplaySetsResponse:
668
+ raise ConnectError(Code.UNIMPLEMENTED, "Not implemented")
669
+
670
+ async def get_replay_set(self, request: flowrensic_dot_v1_dot_replay__pb2.GetReplaySetRequest, ctx: RequestContext) -> flowrensic_dot_v1_dot_replay__pb2.GetReplaySetResponse:
671
+ raise ConnectError(Code.UNIMPLEMENTED, "Not implemented")
672
+
673
+ async def quarantine_history(self, request: flowrensic_dot_v1_dot_replay__pb2.QuarantineHistoryRequest, ctx: RequestContext) -> flowrensic_dot_v1_dot_replay__pb2.QuarantineHistoryResponse:
674
+ raise ConnectError(Code.UNIMPLEMENTED, "Not implemented")
675
+
676
+ async def release_history(self, request: flowrensic_dot_v1_dot_replay__pb2.ReleaseHistoryRequest, ctx: RequestContext) -> flowrensic_dot_v1_dot_replay__pb2.ReleaseHistoryResponse:
677
+ raise ConnectError(Code.UNIMPLEMENTED, "Not implemented")
678
+
679
+ async def list_workflow_types(self, request: flowrensic_dot_v1_dot_workflow__types__pb2.ListWorkflowTypesRequest, ctx: RequestContext) -> flowrensic_dot_v1_dot_workflow__types__pb2.ListWorkflowTypesResponse:
680
+ raise ConnectError(Code.UNIMPLEMENTED, "Not implemented")
681
+
682
+ async def get_workflow_type(self, request: flowrensic_dot_v1_dot_workflow__types__pb2.GetWorkflowTypeRequest, ctx: RequestContext) -> flowrensic_dot_v1_dot_workflow__types__pb2.GetWorkflowTypeResponse:
683
+ raise ConnectError(Code.UNIMPLEMENTED, "Not implemented")
684
+
685
+ async def list_ephemeral_runs(self, request: flowrensic_dot_v1_dot_ephemeral__run__pb2.ListEphemeralRunsRequest, ctx: RequestContext) -> flowrensic_dot_v1_dot_ephemeral__run__pb2.ListEphemeralRunsResponse:
686
+ raise ConnectError(Code.UNIMPLEMENTED, "Not implemented")
687
+
688
+ async def list_ephemeral_run_summaries(self, request: flowrensic_dot_v1_dot_ephemeral__run__pb2.ListEphemeralRunSummariesRequest, ctx: RequestContext) -> flowrensic_dot_v1_dot_ephemeral__run__pb2.ListEphemeralRunSummariesResponse:
689
+ raise ConnectError(Code.UNIMPLEMENTED, "Not implemented")
690
+
691
+ async def delete_ephemeral_run(self, request: flowrensic_dot_v1_dot_ephemeral__run__pb2.DeleteEphemeralRunRequest, ctx: RequestContext) -> flowrensic_dot_v1_dot_ephemeral__run__pb2.DeleteEphemeralRunResponse:
692
+ raise ConnectError(Code.UNIMPLEMENTED, "Not implemented")
693
+
694
+ async def get_ephemeral_run_summary(self, request: flowrensic_dot_v1_dot_ephemeral__run__pb2.GetEphemeralRunSummaryRequest, ctx: RequestContext) -> flowrensic_dot_v1_dot_ephemeral__run__pb2.GetEphemeralRunSummaryResponse:
695
+ raise ConnectError(Code.UNIMPLEMENTED, "Not implemented")
696
+
697
+ async def ephemeral_run_metrics(self, request: flowrensic_dot_v1_dot_ephemeral__run__pb2.EphemeralRunMetricsRequest, ctx: RequestContext) -> flowrensic_dot_v1_dot_ephemeral__run__pb2.EphemeralRunMetricsResponse:
698
+ raise ConnectError(Code.UNIMPLEMENTED, "Not implemented")
699
+
700
+ async def worker_metrics(self, request: flowrensic_dot_v1_dot_ephemeral__run__pb2.WorkerMetricsRequest, ctx: RequestContext) -> flowrensic_dot_v1_dot_ephemeral__run__pb2.WorkerMetricsResponse:
701
+ raise ConnectError(Code.UNIMPLEMENTED, "Not implemented")
702
+
703
+ async def cost_breakdown(self, request: flowrensic_dot_v1_dot_cost__pb2.CostBreakdownRequest, ctx: RequestContext) -> flowrensic_dot_v1_dot_cost__pb2.CostBreakdownResponse:
704
+ raise ConnectError(Code.UNIMPLEMENTED, "Not implemented")
705
+
706
+ async def get_deployment(self, request: flowrensic_dot_v1_dot_deploy__pb2.GetDeploymentRequest, ctx: RequestContext) -> flowrensic_dot_v1_dot_deploy__pb2.GetDeploymentResponse:
707
+ raise ConnectError(Code.UNIMPLEMENTED, "Not implemented")
708
+
709
+ async def deploy_attempt_counts(self, request: flowrensic_dot_v1_dot_deploy__pb2.DeployAttemptCountsRequest, ctx: RequestContext) -> flowrensic_dot_v1_dot_deploy__pb2.DeployAttemptCountsResponse:
710
+ raise ConnectError(Code.UNIMPLEMENTED, "Not implemented")
711
+
712
+ async def list_thresholds(self, request: flowrensic_dot_v1_dot_finding__pb2.ListThresholdsRequest, ctx: RequestContext) -> flowrensic_dot_v1_dot_finding__pb2.ListThresholdsResponse:
713
+ raise ConnectError(Code.UNIMPLEMENTED, "Not implemented")
714
+
715
+ async def get_finding(self, request: flowrensic_dot_v1_dot_finding__pb2.GetFindingRequest, ctx: RequestContext) -> flowrensic_dot_v1_dot_finding__pb2.GetFindingResponse:
716
+ raise ConnectError(Code.UNIMPLEMENTED, "Not implemented")
717
+
718
+ async def set_finding_status(self, request: flowrensic_dot_v1_dot_finding__pb2.SetFindingStatusRequest, ctx: RequestContext) -> flowrensic_dot_v1_dot_finding__pb2.SetFindingStatusResponse:
719
+ raise ConnectError(Code.UNIMPLEMENTED, "Not implemented")
720
+
721
+ async def get_server_config(self, request: flowrensic_dot_v1_dot_server__config__pb2.GetServerConfigRequest, ctx: RequestContext) -> flowrensic_dot_v1_dot_server__config__pb2.GetServerConfigResponse:
722
+ raise ConnectError(Code.UNIMPLEMENTED, "Not implemented")
723
+
724
+ async def get_stored_data(self, request: flowrensic_dot_v1_dot_stored__data__pb2.GetStoredDataRequest, ctx: RequestContext) -> flowrensic_dot_v1_dot_stored__data__pb2.GetStoredDataResponse:
725
+ raise ConnectError(Code.UNIMPLEMENTED, "Not implemented")
726
+
727
+ async def get_catch_up(self, request: flowrensic_dot_v1_dot_catch__up__pb2.GetCatchUpRequest, ctx: RequestContext) -> flowrensic_dot_v1_dot_catch__up__pb2.GetCatchUpResponse:
728
+ raise ConnectError(Code.UNIMPLEMENTED, "Not implemented")
729
+
730
+ async def get_load(self, request: flowrensic_dot_v1_dot_load__pb2.GetLoadRequest, ctx: RequestContext) -> flowrensic_dot_v1_dot_load__pb2.GetLoadResponse:
731
+ raise ConnectError(Code.UNIMPLEMENTED, "Not implemented")
732
+
733
+
734
+ class QueryServiceASGIApplication(ConnectASGIApplication[QueryService]):
735
+ def __init__(self, service: QueryService | AsyncGenerator[QueryService], *, interceptors: Iterable[Interceptor]=(), read_max_bytes: int | None = None, compressions: Iterable[Compression] | None = None) -> None:
736
+ super().__init__(
737
+ service=service,
738
+ endpoints=lambda svc: {
739
+ "/flowrensic.v1.QueryService/ActivityStats": Endpoint.unary(
740
+ method=MethodInfo(
741
+ name="ActivityStats",
742
+ service_name="flowrensic.v1.QueryService",
743
+ input=flowrensic_dot_v1_dot_activity__metrics__pb2.ActivityStatsRequest,
744
+ output=flowrensic_dot_v1_dot_activity__metrics__pb2.ActivityStatsResponse,
745
+ idempotency_level=IdempotencyLevel.UNKNOWN,
746
+ ),
747
+ function=svc.activity_stats,
748
+ ),
749
+ "/flowrensic.v1.QueryService/ListRuns": Endpoint.unary(
750
+ method=MethodInfo(
751
+ name="ListRuns",
752
+ service_name="flowrensic.v1.QueryService",
753
+ input=flowrensic_dot_v1_dot_activity__metrics__pb2.ListRunsRequest,
754
+ output=flowrensic_dot_v1_dot_activity__metrics__pb2.ListRunsResponse,
755
+ idempotency_level=IdempotencyLevel.UNKNOWN,
756
+ ),
757
+ function=svc.list_runs,
758
+ ),
759
+ "/flowrensic.v1.QueryService/ListFindings": Endpoint.unary(
760
+ method=MethodInfo(
761
+ name="ListFindings",
762
+ service_name="flowrensic.v1.QueryService",
763
+ input=flowrensic_dot_v1_dot_finding__pb2.ListFindingsRequest,
764
+ output=flowrensic_dot_v1_dot_finding__pb2.ListFindingsResponse,
765
+ idempotency_level=IdempotencyLevel.UNKNOWN,
766
+ ),
767
+ function=svc.list_findings,
768
+ ),
769
+ "/flowrensic.v1.QueryService/ListAlerts": Endpoint.unary(
770
+ method=MethodInfo(
771
+ name="ListAlerts",
772
+ service_name="flowrensic.v1.QueryService",
773
+ input=flowrensic_dot_v1_dot_finding__pb2.ListAlertsRequest,
774
+ output=flowrensic_dot_v1_dot_finding__pb2.ListAlertsResponse,
775
+ idempotency_level=IdempotencyLevel.UNKNOWN,
776
+ ),
777
+ function=svc.list_alerts,
778
+ ),
779
+ "/flowrensic.v1.QueryService/EngineMetrics": Endpoint.unary(
780
+ method=MethodInfo(
781
+ name="EngineMetrics",
782
+ service_name="flowrensic.v1.QueryService",
783
+ input=flowrensic_dot_v1_dot_activity__metrics__pb2.EngineMetricsRequest,
784
+ output=flowrensic_dot_v1_dot_activity__metrics__pb2.EngineMetricsResponse,
785
+ idempotency_level=IdempotencyLevel.UNKNOWN,
786
+ ),
787
+ function=svc.engine_metrics,
788
+ ),
789
+ "/flowrensic.v1.QueryService/UpdateRejections": Endpoint.unary(
790
+ method=MethodInfo(
791
+ name="UpdateRejections",
792
+ service_name="flowrensic.v1.QueryService",
793
+ input=flowrensic_dot_v1_dot_activity__metrics__pb2.UpdateRejectionsRequest,
794
+ output=flowrensic_dot_v1_dot_activity__metrics__pb2.UpdateRejectionsResponse,
795
+ idempotency_level=IdempotencyLevel.UNKNOWN,
796
+ ),
797
+ function=svc.update_rejections,
798
+ ),
799
+ "/flowrensic.v1.QueryService/ListReplayHistories": Endpoint.unary(
800
+ method=MethodInfo(
801
+ name="ListReplayHistories",
802
+ service_name="flowrensic.v1.QueryService",
803
+ input=flowrensic_dot_v1_dot_replay__pb2.ListReplayHistoriesRequest,
804
+ output=flowrensic_dot_v1_dot_replay__pb2.ListReplayHistoriesResponse,
805
+ idempotency_level=IdempotencyLevel.UNKNOWN,
806
+ ),
807
+ function=svc.list_replay_histories,
808
+ ),
809
+ "/flowrensic.v1.QueryService/ListReplayResults": Endpoint.unary(
810
+ method=MethodInfo(
811
+ name="ListReplayResults",
812
+ service_name="flowrensic.v1.QueryService",
813
+ input=flowrensic_dot_v1_dot_replay__pb2.ListReplayResultsRequest,
814
+ output=flowrensic_dot_v1_dot_replay__pb2.ListReplayResultsResponse,
815
+ idempotency_level=IdempotencyLevel.UNKNOWN,
816
+ ),
817
+ function=svc.list_replay_results,
818
+ ),
819
+ "/flowrensic.v1.QueryService/ListReplayRequests": Endpoint.unary(
820
+ method=MethodInfo(
821
+ name="ListReplayRequests",
822
+ service_name="flowrensic.v1.QueryService",
823
+ input=flowrensic_dot_v1_dot_replay__pb2.ListReplayRequestsRequest,
824
+ output=flowrensic_dot_v1_dot_replay__pb2.ListReplayRequestsResponse,
825
+ idempotency_level=IdempotencyLevel.UNKNOWN,
826
+ ),
827
+ function=svc.list_replay_requests,
828
+ ),
829
+ "/flowrensic.v1.QueryService/ListReplaySets": Endpoint.unary(
830
+ method=MethodInfo(
831
+ name="ListReplaySets",
832
+ service_name="flowrensic.v1.QueryService",
833
+ input=flowrensic_dot_v1_dot_replay__pb2.ListReplaySetsRequest,
834
+ output=flowrensic_dot_v1_dot_replay__pb2.ListReplaySetsResponse,
835
+ idempotency_level=IdempotencyLevel.UNKNOWN,
836
+ ),
837
+ function=svc.list_replay_sets,
838
+ ),
839
+ "/flowrensic.v1.QueryService/GetReplaySet": Endpoint.unary(
840
+ method=MethodInfo(
841
+ name="GetReplaySet",
842
+ service_name="flowrensic.v1.QueryService",
843
+ input=flowrensic_dot_v1_dot_replay__pb2.GetReplaySetRequest,
844
+ output=flowrensic_dot_v1_dot_replay__pb2.GetReplaySetResponse,
845
+ idempotency_level=IdempotencyLevel.UNKNOWN,
846
+ ),
847
+ function=svc.get_replay_set,
848
+ ),
849
+ "/flowrensic.v1.QueryService/QuarantineHistory": Endpoint.unary(
850
+ method=MethodInfo(
851
+ name="QuarantineHistory",
852
+ service_name="flowrensic.v1.QueryService",
853
+ input=flowrensic_dot_v1_dot_replay__pb2.QuarantineHistoryRequest,
854
+ output=flowrensic_dot_v1_dot_replay__pb2.QuarantineHistoryResponse,
855
+ idempotency_level=IdempotencyLevel.UNKNOWN,
856
+ ),
857
+ function=svc.quarantine_history,
858
+ ),
859
+ "/flowrensic.v1.QueryService/ReleaseHistory": Endpoint.unary(
860
+ method=MethodInfo(
861
+ name="ReleaseHistory",
862
+ service_name="flowrensic.v1.QueryService",
863
+ input=flowrensic_dot_v1_dot_replay__pb2.ReleaseHistoryRequest,
864
+ output=flowrensic_dot_v1_dot_replay__pb2.ReleaseHistoryResponse,
865
+ idempotency_level=IdempotencyLevel.UNKNOWN,
866
+ ),
867
+ function=svc.release_history,
868
+ ),
869
+ "/flowrensic.v1.QueryService/ListWorkflowTypes": Endpoint.unary(
870
+ method=MethodInfo(
871
+ name="ListWorkflowTypes",
872
+ service_name="flowrensic.v1.QueryService",
873
+ input=flowrensic_dot_v1_dot_workflow__types__pb2.ListWorkflowTypesRequest,
874
+ output=flowrensic_dot_v1_dot_workflow__types__pb2.ListWorkflowTypesResponse,
875
+ idempotency_level=IdempotencyLevel.UNKNOWN,
876
+ ),
877
+ function=svc.list_workflow_types,
878
+ ),
879
+ "/flowrensic.v1.QueryService/GetWorkflowType": Endpoint.unary(
880
+ method=MethodInfo(
881
+ name="GetWorkflowType",
882
+ service_name="flowrensic.v1.QueryService",
883
+ input=flowrensic_dot_v1_dot_workflow__types__pb2.GetWorkflowTypeRequest,
884
+ output=flowrensic_dot_v1_dot_workflow__types__pb2.GetWorkflowTypeResponse,
885
+ idempotency_level=IdempotencyLevel.UNKNOWN,
886
+ ),
887
+ function=svc.get_workflow_type,
888
+ ),
889
+ "/flowrensic.v1.QueryService/ListEphemeralRuns": Endpoint.unary(
890
+ method=MethodInfo(
891
+ name="ListEphemeralRuns",
892
+ service_name="flowrensic.v1.QueryService",
893
+ input=flowrensic_dot_v1_dot_ephemeral__run__pb2.ListEphemeralRunsRequest,
894
+ output=flowrensic_dot_v1_dot_ephemeral__run__pb2.ListEphemeralRunsResponse,
895
+ idempotency_level=IdempotencyLevel.UNKNOWN,
896
+ ),
897
+ function=svc.list_ephemeral_runs,
898
+ ),
899
+ "/flowrensic.v1.QueryService/ListEphemeralRunSummaries": Endpoint.unary(
900
+ method=MethodInfo(
901
+ name="ListEphemeralRunSummaries",
902
+ service_name="flowrensic.v1.QueryService",
903
+ input=flowrensic_dot_v1_dot_ephemeral__run__pb2.ListEphemeralRunSummariesRequest,
904
+ output=flowrensic_dot_v1_dot_ephemeral__run__pb2.ListEphemeralRunSummariesResponse,
905
+ idempotency_level=IdempotencyLevel.UNKNOWN,
906
+ ),
907
+ function=svc.list_ephemeral_run_summaries,
908
+ ),
909
+ "/flowrensic.v1.QueryService/DeleteEphemeralRun": Endpoint.unary(
910
+ method=MethodInfo(
911
+ name="DeleteEphemeralRun",
912
+ service_name="flowrensic.v1.QueryService",
913
+ input=flowrensic_dot_v1_dot_ephemeral__run__pb2.DeleteEphemeralRunRequest,
914
+ output=flowrensic_dot_v1_dot_ephemeral__run__pb2.DeleteEphemeralRunResponse,
915
+ idempotency_level=IdempotencyLevel.UNKNOWN,
916
+ ),
917
+ function=svc.delete_ephemeral_run,
918
+ ),
919
+ "/flowrensic.v1.QueryService/GetEphemeralRunSummary": Endpoint.unary(
920
+ method=MethodInfo(
921
+ name="GetEphemeralRunSummary",
922
+ service_name="flowrensic.v1.QueryService",
923
+ input=flowrensic_dot_v1_dot_ephemeral__run__pb2.GetEphemeralRunSummaryRequest,
924
+ output=flowrensic_dot_v1_dot_ephemeral__run__pb2.GetEphemeralRunSummaryResponse,
925
+ idempotency_level=IdempotencyLevel.UNKNOWN,
926
+ ),
927
+ function=svc.get_ephemeral_run_summary,
928
+ ),
929
+ "/flowrensic.v1.QueryService/EphemeralRunMetrics": Endpoint.unary(
930
+ method=MethodInfo(
931
+ name="EphemeralRunMetrics",
932
+ service_name="flowrensic.v1.QueryService",
933
+ input=flowrensic_dot_v1_dot_ephemeral__run__pb2.EphemeralRunMetricsRequest,
934
+ output=flowrensic_dot_v1_dot_ephemeral__run__pb2.EphemeralRunMetricsResponse,
935
+ idempotency_level=IdempotencyLevel.UNKNOWN,
936
+ ),
937
+ function=svc.ephemeral_run_metrics,
938
+ ),
939
+ "/flowrensic.v1.QueryService/WorkerMetrics": Endpoint.unary(
940
+ method=MethodInfo(
941
+ name="WorkerMetrics",
942
+ service_name="flowrensic.v1.QueryService",
943
+ input=flowrensic_dot_v1_dot_ephemeral__run__pb2.WorkerMetricsRequest,
944
+ output=flowrensic_dot_v1_dot_ephemeral__run__pb2.WorkerMetricsResponse,
945
+ idempotency_level=IdempotencyLevel.UNKNOWN,
946
+ ),
947
+ function=svc.worker_metrics,
948
+ ),
949
+ "/flowrensic.v1.QueryService/CostBreakdown": Endpoint.unary(
950
+ method=MethodInfo(
951
+ name="CostBreakdown",
952
+ service_name="flowrensic.v1.QueryService",
953
+ input=flowrensic_dot_v1_dot_cost__pb2.CostBreakdownRequest,
954
+ output=flowrensic_dot_v1_dot_cost__pb2.CostBreakdownResponse,
955
+ idempotency_level=IdempotencyLevel.UNKNOWN,
956
+ ),
957
+ function=svc.cost_breakdown,
958
+ ),
959
+ "/flowrensic.v1.QueryService/GetDeployment": Endpoint.unary(
960
+ method=MethodInfo(
961
+ name="GetDeployment",
962
+ service_name="flowrensic.v1.QueryService",
963
+ input=flowrensic_dot_v1_dot_deploy__pb2.GetDeploymentRequest,
964
+ output=flowrensic_dot_v1_dot_deploy__pb2.GetDeploymentResponse,
965
+ idempotency_level=IdempotencyLevel.UNKNOWN,
966
+ ),
967
+ function=svc.get_deployment,
968
+ ),
969
+ "/flowrensic.v1.QueryService/DeployAttemptCounts": Endpoint.unary(
970
+ method=MethodInfo(
971
+ name="DeployAttemptCounts",
972
+ service_name="flowrensic.v1.QueryService",
973
+ input=flowrensic_dot_v1_dot_deploy__pb2.DeployAttemptCountsRequest,
974
+ output=flowrensic_dot_v1_dot_deploy__pb2.DeployAttemptCountsResponse,
975
+ idempotency_level=IdempotencyLevel.UNKNOWN,
976
+ ),
977
+ function=svc.deploy_attempt_counts,
978
+ ),
979
+ "/flowrensic.v1.QueryService/ListThresholds": Endpoint.unary(
980
+ method=MethodInfo(
981
+ name="ListThresholds",
982
+ service_name="flowrensic.v1.QueryService",
983
+ input=flowrensic_dot_v1_dot_finding__pb2.ListThresholdsRequest,
984
+ output=flowrensic_dot_v1_dot_finding__pb2.ListThresholdsResponse,
985
+ idempotency_level=IdempotencyLevel.UNKNOWN,
986
+ ),
987
+ function=svc.list_thresholds,
988
+ ),
989
+ "/flowrensic.v1.QueryService/GetFinding": Endpoint.unary(
990
+ method=MethodInfo(
991
+ name="GetFinding",
992
+ service_name="flowrensic.v1.QueryService",
993
+ input=flowrensic_dot_v1_dot_finding__pb2.GetFindingRequest,
994
+ output=flowrensic_dot_v1_dot_finding__pb2.GetFindingResponse,
995
+ idempotency_level=IdempotencyLevel.UNKNOWN,
996
+ ),
997
+ function=svc.get_finding,
998
+ ),
999
+ "/flowrensic.v1.QueryService/SetFindingStatus": Endpoint.unary(
1000
+ method=MethodInfo(
1001
+ name="SetFindingStatus",
1002
+ service_name="flowrensic.v1.QueryService",
1003
+ input=flowrensic_dot_v1_dot_finding__pb2.SetFindingStatusRequest,
1004
+ output=flowrensic_dot_v1_dot_finding__pb2.SetFindingStatusResponse,
1005
+ idempotency_level=IdempotencyLevel.UNKNOWN,
1006
+ ),
1007
+ function=svc.set_finding_status,
1008
+ ),
1009
+ "/flowrensic.v1.QueryService/GetServerConfig": Endpoint.unary(
1010
+ method=MethodInfo(
1011
+ name="GetServerConfig",
1012
+ service_name="flowrensic.v1.QueryService",
1013
+ input=flowrensic_dot_v1_dot_server__config__pb2.GetServerConfigRequest,
1014
+ output=flowrensic_dot_v1_dot_server__config__pb2.GetServerConfigResponse,
1015
+ idempotency_level=IdempotencyLevel.UNKNOWN,
1016
+ ),
1017
+ function=svc.get_server_config,
1018
+ ),
1019
+ "/flowrensic.v1.QueryService/GetStoredData": Endpoint.unary(
1020
+ method=MethodInfo(
1021
+ name="GetStoredData",
1022
+ service_name="flowrensic.v1.QueryService",
1023
+ input=flowrensic_dot_v1_dot_stored__data__pb2.GetStoredDataRequest,
1024
+ output=flowrensic_dot_v1_dot_stored__data__pb2.GetStoredDataResponse,
1025
+ idempotency_level=IdempotencyLevel.UNKNOWN,
1026
+ ),
1027
+ function=svc.get_stored_data,
1028
+ ),
1029
+ "/flowrensic.v1.QueryService/GetCatchUp": Endpoint.unary(
1030
+ method=MethodInfo(
1031
+ name="GetCatchUp",
1032
+ service_name="flowrensic.v1.QueryService",
1033
+ input=flowrensic_dot_v1_dot_catch__up__pb2.GetCatchUpRequest,
1034
+ output=flowrensic_dot_v1_dot_catch__up__pb2.GetCatchUpResponse,
1035
+ idempotency_level=IdempotencyLevel.UNKNOWN,
1036
+ ),
1037
+ function=svc.get_catch_up,
1038
+ ),
1039
+ "/flowrensic.v1.QueryService/GetLoad": Endpoint.unary(
1040
+ method=MethodInfo(
1041
+ name="GetLoad",
1042
+ service_name="flowrensic.v1.QueryService",
1043
+ input=flowrensic_dot_v1_dot_load__pb2.GetLoadRequest,
1044
+ output=flowrensic_dot_v1_dot_load__pb2.GetLoadResponse,
1045
+ idempotency_level=IdempotencyLevel.UNKNOWN,
1046
+ ),
1047
+ function=svc.get_load,
1048
+ ),
1049
+ },
1050
+ interceptors=interceptors,
1051
+ read_max_bytes=read_max_bytes,
1052
+ compressions=compressions,
1053
+ )
1054
+
1055
+ @property
1056
+ def path(self) -> str:
1057
+ """Returns the URL path to mount the application to when serving multiple applications."""
1058
+ return "/flowrensic.v1.QueryService"
1059
+
1060
+
1061
+ class QueryServiceClient(ConnectClient):
1062
+ async def activity_stats(
1063
+ self,
1064
+ request: flowrensic_dot_v1_dot_activity__metrics__pb2.ActivityStatsRequest,
1065
+ *,
1066
+ headers: Headers | Mapping[str, str] | None = None,
1067
+ timeout_ms: int | None = None,
1068
+ ) -> flowrensic_dot_v1_dot_activity__metrics__pb2.ActivityStatsResponse:
1069
+ return await self.execute_unary(
1070
+ request=request,
1071
+ method=MethodInfo(
1072
+ name="ActivityStats",
1073
+ service_name="flowrensic.v1.QueryService",
1074
+ input=flowrensic_dot_v1_dot_activity__metrics__pb2.ActivityStatsRequest,
1075
+ output=flowrensic_dot_v1_dot_activity__metrics__pb2.ActivityStatsResponse,
1076
+ idempotency_level=IdempotencyLevel.UNKNOWN,
1077
+ ),
1078
+ headers=headers,
1079
+ timeout_ms=timeout_ms,
1080
+ )
1081
+
1082
+ async def list_runs(
1083
+ self,
1084
+ request: flowrensic_dot_v1_dot_activity__metrics__pb2.ListRunsRequest,
1085
+ *,
1086
+ headers: Headers | Mapping[str, str] | None = None,
1087
+ timeout_ms: int | None = None,
1088
+ ) -> flowrensic_dot_v1_dot_activity__metrics__pb2.ListRunsResponse:
1089
+ return await self.execute_unary(
1090
+ request=request,
1091
+ method=MethodInfo(
1092
+ name="ListRuns",
1093
+ service_name="flowrensic.v1.QueryService",
1094
+ input=flowrensic_dot_v1_dot_activity__metrics__pb2.ListRunsRequest,
1095
+ output=flowrensic_dot_v1_dot_activity__metrics__pb2.ListRunsResponse,
1096
+ idempotency_level=IdempotencyLevel.UNKNOWN,
1097
+ ),
1098
+ headers=headers,
1099
+ timeout_ms=timeout_ms,
1100
+ )
1101
+
1102
+ async def list_findings(
1103
+ self,
1104
+ request: flowrensic_dot_v1_dot_finding__pb2.ListFindingsRequest,
1105
+ *,
1106
+ headers: Headers | Mapping[str, str] | None = None,
1107
+ timeout_ms: int | None = None,
1108
+ ) -> flowrensic_dot_v1_dot_finding__pb2.ListFindingsResponse:
1109
+ return await self.execute_unary(
1110
+ request=request,
1111
+ method=MethodInfo(
1112
+ name="ListFindings",
1113
+ service_name="flowrensic.v1.QueryService",
1114
+ input=flowrensic_dot_v1_dot_finding__pb2.ListFindingsRequest,
1115
+ output=flowrensic_dot_v1_dot_finding__pb2.ListFindingsResponse,
1116
+ idempotency_level=IdempotencyLevel.UNKNOWN,
1117
+ ),
1118
+ headers=headers,
1119
+ timeout_ms=timeout_ms,
1120
+ )
1121
+
1122
+ async def list_alerts(
1123
+ self,
1124
+ request: flowrensic_dot_v1_dot_finding__pb2.ListAlertsRequest,
1125
+ *,
1126
+ headers: Headers | Mapping[str, str] | None = None,
1127
+ timeout_ms: int | None = None,
1128
+ ) -> flowrensic_dot_v1_dot_finding__pb2.ListAlertsResponse:
1129
+ return await self.execute_unary(
1130
+ request=request,
1131
+ method=MethodInfo(
1132
+ name="ListAlerts",
1133
+ service_name="flowrensic.v1.QueryService",
1134
+ input=flowrensic_dot_v1_dot_finding__pb2.ListAlertsRequest,
1135
+ output=flowrensic_dot_v1_dot_finding__pb2.ListAlertsResponse,
1136
+ idempotency_level=IdempotencyLevel.UNKNOWN,
1137
+ ),
1138
+ headers=headers,
1139
+ timeout_ms=timeout_ms,
1140
+ )
1141
+
1142
+ async def engine_metrics(
1143
+ self,
1144
+ request: flowrensic_dot_v1_dot_activity__metrics__pb2.EngineMetricsRequest,
1145
+ *,
1146
+ headers: Headers | Mapping[str, str] | None = None,
1147
+ timeout_ms: int | None = None,
1148
+ ) -> flowrensic_dot_v1_dot_activity__metrics__pb2.EngineMetricsResponse:
1149
+ return await self.execute_unary(
1150
+ request=request,
1151
+ method=MethodInfo(
1152
+ name="EngineMetrics",
1153
+ service_name="flowrensic.v1.QueryService",
1154
+ input=flowrensic_dot_v1_dot_activity__metrics__pb2.EngineMetricsRequest,
1155
+ output=flowrensic_dot_v1_dot_activity__metrics__pb2.EngineMetricsResponse,
1156
+ idempotency_level=IdempotencyLevel.UNKNOWN,
1157
+ ),
1158
+ headers=headers,
1159
+ timeout_ms=timeout_ms,
1160
+ )
1161
+
1162
+ async def update_rejections(
1163
+ self,
1164
+ request: flowrensic_dot_v1_dot_activity__metrics__pb2.UpdateRejectionsRequest,
1165
+ *,
1166
+ headers: Headers | Mapping[str, str] | None = None,
1167
+ timeout_ms: int | None = None,
1168
+ ) -> flowrensic_dot_v1_dot_activity__metrics__pb2.UpdateRejectionsResponse:
1169
+ return await self.execute_unary(
1170
+ request=request,
1171
+ method=MethodInfo(
1172
+ name="UpdateRejections",
1173
+ service_name="flowrensic.v1.QueryService",
1174
+ input=flowrensic_dot_v1_dot_activity__metrics__pb2.UpdateRejectionsRequest,
1175
+ output=flowrensic_dot_v1_dot_activity__metrics__pb2.UpdateRejectionsResponse,
1176
+ idempotency_level=IdempotencyLevel.UNKNOWN,
1177
+ ),
1178
+ headers=headers,
1179
+ timeout_ms=timeout_ms,
1180
+ )
1181
+
1182
+ async def list_replay_histories(
1183
+ self,
1184
+ request: flowrensic_dot_v1_dot_replay__pb2.ListReplayHistoriesRequest,
1185
+ *,
1186
+ headers: Headers | Mapping[str, str] | None = None,
1187
+ timeout_ms: int | None = None,
1188
+ ) -> flowrensic_dot_v1_dot_replay__pb2.ListReplayHistoriesResponse:
1189
+ return await self.execute_unary(
1190
+ request=request,
1191
+ method=MethodInfo(
1192
+ name="ListReplayHistories",
1193
+ service_name="flowrensic.v1.QueryService",
1194
+ input=flowrensic_dot_v1_dot_replay__pb2.ListReplayHistoriesRequest,
1195
+ output=flowrensic_dot_v1_dot_replay__pb2.ListReplayHistoriesResponse,
1196
+ idempotency_level=IdempotencyLevel.UNKNOWN,
1197
+ ),
1198
+ headers=headers,
1199
+ timeout_ms=timeout_ms,
1200
+ )
1201
+
1202
+ async def list_replay_results(
1203
+ self,
1204
+ request: flowrensic_dot_v1_dot_replay__pb2.ListReplayResultsRequest,
1205
+ *,
1206
+ headers: Headers | Mapping[str, str] | None = None,
1207
+ timeout_ms: int | None = None,
1208
+ ) -> flowrensic_dot_v1_dot_replay__pb2.ListReplayResultsResponse:
1209
+ return await self.execute_unary(
1210
+ request=request,
1211
+ method=MethodInfo(
1212
+ name="ListReplayResults",
1213
+ service_name="flowrensic.v1.QueryService",
1214
+ input=flowrensic_dot_v1_dot_replay__pb2.ListReplayResultsRequest,
1215
+ output=flowrensic_dot_v1_dot_replay__pb2.ListReplayResultsResponse,
1216
+ idempotency_level=IdempotencyLevel.UNKNOWN,
1217
+ ),
1218
+ headers=headers,
1219
+ timeout_ms=timeout_ms,
1220
+ )
1221
+
1222
+ async def list_replay_requests(
1223
+ self,
1224
+ request: flowrensic_dot_v1_dot_replay__pb2.ListReplayRequestsRequest,
1225
+ *,
1226
+ headers: Headers | Mapping[str, str] | None = None,
1227
+ timeout_ms: int | None = None,
1228
+ ) -> flowrensic_dot_v1_dot_replay__pb2.ListReplayRequestsResponse:
1229
+ return await self.execute_unary(
1230
+ request=request,
1231
+ method=MethodInfo(
1232
+ name="ListReplayRequests",
1233
+ service_name="flowrensic.v1.QueryService",
1234
+ input=flowrensic_dot_v1_dot_replay__pb2.ListReplayRequestsRequest,
1235
+ output=flowrensic_dot_v1_dot_replay__pb2.ListReplayRequestsResponse,
1236
+ idempotency_level=IdempotencyLevel.UNKNOWN,
1237
+ ),
1238
+ headers=headers,
1239
+ timeout_ms=timeout_ms,
1240
+ )
1241
+
1242
+ async def list_replay_sets(
1243
+ self,
1244
+ request: flowrensic_dot_v1_dot_replay__pb2.ListReplaySetsRequest,
1245
+ *,
1246
+ headers: Headers | Mapping[str, str] | None = None,
1247
+ timeout_ms: int | None = None,
1248
+ ) -> flowrensic_dot_v1_dot_replay__pb2.ListReplaySetsResponse:
1249
+ return await self.execute_unary(
1250
+ request=request,
1251
+ method=MethodInfo(
1252
+ name="ListReplaySets",
1253
+ service_name="flowrensic.v1.QueryService",
1254
+ input=flowrensic_dot_v1_dot_replay__pb2.ListReplaySetsRequest,
1255
+ output=flowrensic_dot_v1_dot_replay__pb2.ListReplaySetsResponse,
1256
+ idempotency_level=IdempotencyLevel.UNKNOWN,
1257
+ ),
1258
+ headers=headers,
1259
+ timeout_ms=timeout_ms,
1260
+ )
1261
+
1262
+ async def get_replay_set(
1263
+ self,
1264
+ request: flowrensic_dot_v1_dot_replay__pb2.GetReplaySetRequest,
1265
+ *,
1266
+ headers: Headers | Mapping[str, str] | None = None,
1267
+ timeout_ms: int | None = None,
1268
+ ) -> flowrensic_dot_v1_dot_replay__pb2.GetReplaySetResponse:
1269
+ return await self.execute_unary(
1270
+ request=request,
1271
+ method=MethodInfo(
1272
+ name="GetReplaySet",
1273
+ service_name="flowrensic.v1.QueryService",
1274
+ input=flowrensic_dot_v1_dot_replay__pb2.GetReplaySetRequest,
1275
+ output=flowrensic_dot_v1_dot_replay__pb2.GetReplaySetResponse,
1276
+ idempotency_level=IdempotencyLevel.UNKNOWN,
1277
+ ),
1278
+ headers=headers,
1279
+ timeout_ms=timeout_ms,
1280
+ )
1281
+
1282
+ async def quarantine_history(
1283
+ self,
1284
+ request: flowrensic_dot_v1_dot_replay__pb2.QuarantineHistoryRequest,
1285
+ *,
1286
+ headers: Headers | Mapping[str, str] | None = None,
1287
+ timeout_ms: int | None = None,
1288
+ ) -> flowrensic_dot_v1_dot_replay__pb2.QuarantineHistoryResponse:
1289
+ return await self.execute_unary(
1290
+ request=request,
1291
+ method=MethodInfo(
1292
+ name="QuarantineHistory",
1293
+ service_name="flowrensic.v1.QueryService",
1294
+ input=flowrensic_dot_v1_dot_replay__pb2.QuarantineHistoryRequest,
1295
+ output=flowrensic_dot_v1_dot_replay__pb2.QuarantineHistoryResponse,
1296
+ idempotency_level=IdempotencyLevel.UNKNOWN,
1297
+ ),
1298
+ headers=headers,
1299
+ timeout_ms=timeout_ms,
1300
+ )
1301
+
1302
+ async def release_history(
1303
+ self,
1304
+ request: flowrensic_dot_v1_dot_replay__pb2.ReleaseHistoryRequest,
1305
+ *,
1306
+ headers: Headers | Mapping[str, str] | None = None,
1307
+ timeout_ms: int | None = None,
1308
+ ) -> flowrensic_dot_v1_dot_replay__pb2.ReleaseHistoryResponse:
1309
+ return await self.execute_unary(
1310
+ request=request,
1311
+ method=MethodInfo(
1312
+ name="ReleaseHistory",
1313
+ service_name="flowrensic.v1.QueryService",
1314
+ input=flowrensic_dot_v1_dot_replay__pb2.ReleaseHistoryRequest,
1315
+ output=flowrensic_dot_v1_dot_replay__pb2.ReleaseHistoryResponse,
1316
+ idempotency_level=IdempotencyLevel.UNKNOWN,
1317
+ ),
1318
+ headers=headers,
1319
+ timeout_ms=timeout_ms,
1320
+ )
1321
+
1322
+ async def list_workflow_types(
1323
+ self,
1324
+ request: flowrensic_dot_v1_dot_workflow__types__pb2.ListWorkflowTypesRequest,
1325
+ *,
1326
+ headers: Headers | Mapping[str, str] | None = None,
1327
+ timeout_ms: int | None = None,
1328
+ ) -> flowrensic_dot_v1_dot_workflow__types__pb2.ListWorkflowTypesResponse:
1329
+ return await self.execute_unary(
1330
+ request=request,
1331
+ method=MethodInfo(
1332
+ name="ListWorkflowTypes",
1333
+ service_name="flowrensic.v1.QueryService",
1334
+ input=flowrensic_dot_v1_dot_workflow__types__pb2.ListWorkflowTypesRequest,
1335
+ output=flowrensic_dot_v1_dot_workflow__types__pb2.ListWorkflowTypesResponse,
1336
+ idempotency_level=IdempotencyLevel.UNKNOWN,
1337
+ ),
1338
+ headers=headers,
1339
+ timeout_ms=timeout_ms,
1340
+ )
1341
+
1342
+ async def get_workflow_type(
1343
+ self,
1344
+ request: flowrensic_dot_v1_dot_workflow__types__pb2.GetWorkflowTypeRequest,
1345
+ *,
1346
+ headers: Headers | Mapping[str, str] | None = None,
1347
+ timeout_ms: int | None = None,
1348
+ ) -> flowrensic_dot_v1_dot_workflow__types__pb2.GetWorkflowTypeResponse:
1349
+ return await self.execute_unary(
1350
+ request=request,
1351
+ method=MethodInfo(
1352
+ name="GetWorkflowType",
1353
+ service_name="flowrensic.v1.QueryService",
1354
+ input=flowrensic_dot_v1_dot_workflow__types__pb2.GetWorkflowTypeRequest,
1355
+ output=flowrensic_dot_v1_dot_workflow__types__pb2.GetWorkflowTypeResponse,
1356
+ idempotency_level=IdempotencyLevel.UNKNOWN,
1357
+ ),
1358
+ headers=headers,
1359
+ timeout_ms=timeout_ms,
1360
+ )
1361
+
1362
+ async def list_ephemeral_runs(
1363
+ self,
1364
+ request: flowrensic_dot_v1_dot_ephemeral__run__pb2.ListEphemeralRunsRequest,
1365
+ *,
1366
+ headers: Headers | Mapping[str, str] | None = None,
1367
+ timeout_ms: int | None = None,
1368
+ ) -> flowrensic_dot_v1_dot_ephemeral__run__pb2.ListEphemeralRunsResponse:
1369
+ return await self.execute_unary(
1370
+ request=request,
1371
+ method=MethodInfo(
1372
+ name="ListEphemeralRuns",
1373
+ service_name="flowrensic.v1.QueryService",
1374
+ input=flowrensic_dot_v1_dot_ephemeral__run__pb2.ListEphemeralRunsRequest,
1375
+ output=flowrensic_dot_v1_dot_ephemeral__run__pb2.ListEphemeralRunsResponse,
1376
+ idempotency_level=IdempotencyLevel.UNKNOWN,
1377
+ ),
1378
+ headers=headers,
1379
+ timeout_ms=timeout_ms,
1380
+ )
1381
+
1382
+ async def list_ephemeral_run_summaries(
1383
+ self,
1384
+ request: flowrensic_dot_v1_dot_ephemeral__run__pb2.ListEphemeralRunSummariesRequest,
1385
+ *,
1386
+ headers: Headers | Mapping[str, str] | None = None,
1387
+ timeout_ms: int | None = None,
1388
+ ) -> flowrensic_dot_v1_dot_ephemeral__run__pb2.ListEphemeralRunSummariesResponse:
1389
+ return await self.execute_unary(
1390
+ request=request,
1391
+ method=MethodInfo(
1392
+ name="ListEphemeralRunSummaries",
1393
+ service_name="flowrensic.v1.QueryService",
1394
+ input=flowrensic_dot_v1_dot_ephemeral__run__pb2.ListEphemeralRunSummariesRequest,
1395
+ output=flowrensic_dot_v1_dot_ephemeral__run__pb2.ListEphemeralRunSummariesResponse,
1396
+ idempotency_level=IdempotencyLevel.UNKNOWN,
1397
+ ),
1398
+ headers=headers,
1399
+ timeout_ms=timeout_ms,
1400
+ )
1401
+
1402
+ async def delete_ephemeral_run(
1403
+ self,
1404
+ request: flowrensic_dot_v1_dot_ephemeral__run__pb2.DeleteEphemeralRunRequest,
1405
+ *,
1406
+ headers: Headers | Mapping[str, str] | None = None,
1407
+ timeout_ms: int | None = None,
1408
+ ) -> flowrensic_dot_v1_dot_ephemeral__run__pb2.DeleteEphemeralRunResponse:
1409
+ return await self.execute_unary(
1410
+ request=request,
1411
+ method=MethodInfo(
1412
+ name="DeleteEphemeralRun",
1413
+ service_name="flowrensic.v1.QueryService",
1414
+ input=flowrensic_dot_v1_dot_ephemeral__run__pb2.DeleteEphemeralRunRequest,
1415
+ output=flowrensic_dot_v1_dot_ephemeral__run__pb2.DeleteEphemeralRunResponse,
1416
+ idempotency_level=IdempotencyLevel.UNKNOWN,
1417
+ ),
1418
+ headers=headers,
1419
+ timeout_ms=timeout_ms,
1420
+ )
1421
+
1422
+ async def get_ephemeral_run_summary(
1423
+ self,
1424
+ request: flowrensic_dot_v1_dot_ephemeral__run__pb2.GetEphemeralRunSummaryRequest,
1425
+ *,
1426
+ headers: Headers | Mapping[str, str] | None = None,
1427
+ timeout_ms: int | None = None,
1428
+ ) -> flowrensic_dot_v1_dot_ephemeral__run__pb2.GetEphemeralRunSummaryResponse:
1429
+ return await self.execute_unary(
1430
+ request=request,
1431
+ method=MethodInfo(
1432
+ name="GetEphemeralRunSummary",
1433
+ service_name="flowrensic.v1.QueryService",
1434
+ input=flowrensic_dot_v1_dot_ephemeral__run__pb2.GetEphemeralRunSummaryRequest,
1435
+ output=flowrensic_dot_v1_dot_ephemeral__run__pb2.GetEphemeralRunSummaryResponse,
1436
+ idempotency_level=IdempotencyLevel.UNKNOWN,
1437
+ ),
1438
+ headers=headers,
1439
+ timeout_ms=timeout_ms,
1440
+ )
1441
+
1442
+ async def ephemeral_run_metrics(
1443
+ self,
1444
+ request: flowrensic_dot_v1_dot_ephemeral__run__pb2.EphemeralRunMetricsRequest,
1445
+ *,
1446
+ headers: Headers | Mapping[str, str] | None = None,
1447
+ timeout_ms: int | None = None,
1448
+ ) -> flowrensic_dot_v1_dot_ephemeral__run__pb2.EphemeralRunMetricsResponse:
1449
+ return await self.execute_unary(
1450
+ request=request,
1451
+ method=MethodInfo(
1452
+ name="EphemeralRunMetrics",
1453
+ service_name="flowrensic.v1.QueryService",
1454
+ input=flowrensic_dot_v1_dot_ephemeral__run__pb2.EphemeralRunMetricsRequest,
1455
+ output=flowrensic_dot_v1_dot_ephemeral__run__pb2.EphemeralRunMetricsResponse,
1456
+ idempotency_level=IdempotencyLevel.UNKNOWN,
1457
+ ),
1458
+ headers=headers,
1459
+ timeout_ms=timeout_ms,
1460
+ )
1461
+
1462
+ async def worker_metrics(
1463
+ self,
1464
+ request: flowrensic_dot_v1_dot_ephemeral__run__pb2.WorkerMetricsRequest,
1465
+ *,
1466
+ headers: Headers | Mapping[str, str] | None = None,
1467
+ timeout_ms: int | None = None,
1468
+ ) -> flowrensic_dot_v1_dot_ephemeral__run__pb2.WorkerMetricsResponse:
1469
+ return await self.execute_unary(
1470
+ request=request,
1471
+ method=MethodInfo(
1472
+ name="WorkerMetrics",
1473
+ service_name="flowrensic.v1.QueryService",
1474
+ input=flowrensic_dot_v1_dot_ephemeral__run__pb2.WorkerMetricsRequest,
1475
+ output=flowrensic_dot_v1_dot_ephemeral__run__pb2.WorkerMetricsResponse,
1476
+ idempotency_level=IdempotencyLevel.UNKNOWN,
1477
+ ),
1478
+ headers=headers,
1479
+ timeout_ms=timeout_ms,
1480
+ )
1481
+
1482
+ async def cost_breakdown(
1483
+ self,
1484
+ request: flowrensic_dot_v1_dot_cost__pb2.CostBreakdownRequest,
1485
+ *,
1486
+ headers: Headers | Mapping[str, str] | None = None,
1487
+ timeout_ms: int | None = None,
1488
+ ) -> flowrensic_dot_v1_dot_cost__pb2.CostBreakdownResponse:
1489
+ return await self.execute_unary(
1490
+ request=request,
1491
+ method=MethodInfo(
1492
+ name="CostBreakdown",
1493
+ service_name="flowrensic.v1.QueryService",
1494
+ input=flowrensic_dot_v1_dot_cost__pb2.CostBreakdownRequest,
1495
+ output=flowrensic_dot_v1_dot_cost__pb2.CostBreakdownResponse,
1496
+ idempotency_level=IdempotencyLevel.UNKNOWN,
1497
+ ),
1498
+ headers=headers,
1499
+ timeout_ms=timeout_ms,
1500
+ )
1501
+
1502
+ async def get_deployment(
1503
+ self,
1504
+ request: flowrensic_dot_v1_dot_deploy__pb2.GetDeploymentRequest,
1505
+ *,
1506
+ headers: Headers | Mapping[str, str] | None = None,
1507
+ timeout_ms: int | None = None,
1508
+ ) -> flowrensic_dot_v1_dot_deploy__pb2.GetDeploymentResponse:
1509
+ return await self.execute_unary(
1510
+ request=request,
1511
+ method=MethodInfo(
1512
+ name="GetDeployment",
1513
+ service_name="flowrensic.v1.QueryService",
1514
+ input=flowrensic_dot_v1_dot_deploy__pb2.GetDeploymentRequest,
1515
+ output=flowrensic_dot_v1_dot_deploy__pb2.GetDeploymentResponse,
1516
+ idempotency_level=IdempotencyLevel.UNKNOWN,
1517
+ ),
1518
+ headers=headers,
1519
+ timeout_ms=timeout_ms,
1520
+ )
1521
+
1522
+ async def deploy_attempt_counts(
1523
+ self,
1524
+ request: flowrensic_dot_v1_dot_deploy__pb2.DeployAttemptCountsRequest,
1525
+ *,
1526
+ headers: Headers | Mapping[str, str] | None = None,
1527
+ timeout_ms: int | None = None,
1528
+ ) -> flowrensic_dot_v1_dot_deploy__pb2.DeployAttemptCountsResponse:
1529
+ return await self.execute_unary(
1530
+ request=request,
1531
+ method=MethodInfo(
1532
+ name="DeployAttemptCounts",
1533
+ service_name="flowrensic.v1.QueryService",
1534
+ input=flowrensic_dot_v1_dot_deploy__pb2.DeployAttemptCountsRequest,
1535
+ output=flowrensic_dot_v1_dot_deploy__pb2.DeployAttemptCountsResponse,
1536
+ idempotency_level=IdempotencyLevel.UNKNOWN,
1537
+ ),
1538
+ headers=headers,
1539
+ timeout_ms=timeout_ms,
1540
+ )
1541
+
1542
+ async def list_thresholds(
1543
+ self,
1544
+ request: flowrensic_dot_v1_dot_finding__pb2.ListThresholdsRequest,
1545
+ *,
1546
+ headers: Headers | Mapping[str, str] | None = None,
1547
+ timeout_ms: int | None = None,
1548
+ ) -> flowrensic_dot_v1_dot_finding__pb2.ListThresholdsResponse:
1549
+ return await self.execute_unary(
1550
+ request=request,
1551
+ method=MethodInfo(
1552
+ name="ListThresholds",
1553
+ service_name="flowrensic.v1.QueryService",
1554
+ input=flowrensic_dot_v1_dot_finding__pb2.ListThresholdsRequest,
1555
+ output=flowrensic_dot_v1_dot_finding__pb2.ListThresholdsResponse,
1556
+ idempotency_level=IdempotencyLevel.UNKNOWN,
1557
+ ),
1558
+ headers=headers,
1559
+ timeout_ms=timeout_ms,
1560
+ )
1561
+
1562
+ async def get_finding(
1563
+ self,
1564
+ request: flowrensic_dot_v1_dot_finding__pb2.GetFindingRequest,
1565
+ *,
1566
+ headers: Headers | Mapping[str, str] | None = None,
1567
+ timeout_ms: int | None = None,
1568
+ ) -> flowrensic_dot_v1_dot_finding__pb2.GetFindingResponse:
1569
+ return await self.execute_unary(
1570
+ request=request,
1571
+ method=MethodInfo(
1572
+ name="GetFinding",
1573
+ service_name="flowrensic.v1.QueryService",
1574
+ input=flowrensic_dot_v1_dot_finding__pb2.GetFindingRequest,
1575
+ output=flowrensic_dot_v1_dot_finding__pb2.GetFindingResponse,
1576
+ idempotency_level=IdempotencyLevel.UNKNOWN,
1577
+ ),
1578
+ headers=headers,
1579
+ timeout_ms=timeout_ms,
1580
+ )
1581
+
1582
+ async def set_finding_status(
1583
+ self,
1584
+ request: flowrensic_dot_v1_dot_finding__pb2.SetFindingStatusRequest,
1585
+ *,
1586
+ headers: Headers | Mapping[str, str] | None = None,
1587
+ timeout_ms: int | None = None,
1588
+ ) -> flowrensic_dot_v1_dot_finding__pb2.SetFindingStatusResponse:
1589
+ return await self.execute_unary(
1590
+ request=request,
1591
+ method=MethodInfo(
1592
+ name="SetFindingStatus",
1593
+ service_name="flowrensic.v1.QueryService",
1594
+ input=flowrensic_dot_v1_dot_finding__pb2.SetFindingStatusRequest,
1595
+ output=flowrensic_dot_v1_dot_finding__pb2.SetFindingStatusResponse,
1596
+ idempotency_level=IdempotencyLevel.UNKNOWN,
1597
+ ),
1598
+ headers=headers,
1599
+ timeout_ms=timeout_ms,
1600
+ )
1601
+
1602
+ async def get_server_config(
1603
+ self,
1604
+ request: flowrensic_dot_v1_dot_server__config__pb2.GetServerConfigRequest,
1605
+ *,
1606
+ headers: Headers | Mapping[str, str] | None = None,
1607
+ timeout_ms: int | None = None,
1608
+ ) -> flowrensic_dot_v1_dot_server__config__pb2.GetServerConfigResponse:
1609
+ return await self.execute_unary(
1610
+ request=request,
1611
+ method=MethodInfo(
1612
+ name="GetServerConfig",
1613
+ service_name="flowrensic.v1.QueryService",
1614
+ input=flowrensic_dot_v1_dot_server__config__pb2.GetServerConfigRequest,
1615
+ output=flowrensic_dot_v1_dot_server__config__pb2.GetServerConfigResponse,
1616
+ idempotency_level=IdempotencyLevel.UNKNOWN,
1617
+ ),
1618
+ headers=headers,
1619
+ timeout_ms=timeout_ms,
1620
+ )
1621
+
1622
+ async def get_stored_data(
1623
+ self,
1624
+ request: flowrensic_dot_v1_dot_stored__data__pb2.GetStoredDataRequest,
1625
+ *,
1626
+ headers: Headers | Mapping[str, str] | None = None,
1627
+ timeout_ms: int | None = None,
1628
+ ) -> flowrensic_dot_v1_dot_stored__data__pb2.GetStoredDataResponse:
1629
+ return await self.execute_unary(
1630
+ request=request,
1631
+ method=MethodInfo(
1632
+ name="GetStoredData",
1633
+ service_name="flowrensic.v1.QueryService",
1634
+ input=flowrensic_dot_v1_dot_stored__data__pb2.GetStoredDataRequest,
1635
+ output=flowrensic_dot_v1_dot_stored__data__pb2.GetStoredDataResponse,
1636
+ idempotency_level=IdempotencyLevel.UNKNOWN,
1637
+ ),
1638
+ headers=headers,
1639
+ timeout_ms=timeout_ms,
1640
+ )
1641
+
1642
+ async def get_catch_up(
1643
+ self,
1644
+ request: flowrensic_dot_v1_dot_catch__up__pb2.GetCatchUpRequest,
1645
+ *,
1646
+ headers: Headers | Mapping[str, str] | None = None,
1647
+ timeout_ms: int | None = None,
1648
+ ) -> flowrensic_dot_v1_dot_catch__up__pb2.GetCatchUpResponse:
1649
+ return await self.execute_unary(
1650
+ request=request,
1651
+ method=MethodInfo(
1652
+ name="GetCatchUp",
1653
+ service_name="flowrensic.v1.QueryService",
1654
+ input=flowrensic_dot_v1_dot_catch__up__pb2.GetCatchUpRequest,
1655
+ output=flowrensic_dot_v1_dot_catch__up__pb2.GetCatchUpResponse,
1656
+ idempotency_level=IdempotencyLevel.UNKNOWN,
1657
+ ),
1658
+ headers=headers,
1659
+ timeout_ms=timeout_ms,
1660
+ )
1661
+
1662
+ async def get_load(
1663
+ self,
1664
+ request: flowrensic_dot_v1_dot_load__pb2.GetLoadRequest,
1665
+ *,
1666
+ headers: Headers | Mapping[str, str] | None = None,
1667
+ timeout_ms: int | None = None,
1668
+ ) -> flowrensic_dot_v1_dot_load__pb2.GetLoadResponse:
1669
+ return await self.execute_unary(
1670
+ request=request,
1671
+ method=MethodInfo(
1672
+ name="GetLoad",
1673
+ service_name="flowrensic.v1.QueryService",
1674
+ input=flowrensic_dot_v1_dot_load__pb2.GetLoadRequest,
1675
+ output=flowrensic_dot_v1_dot_load__pb2.GetLoadResponse,
1676
+ idempotency_level=IdempotencyLevel.UNKNOWN,
1677
+ ),
1678
+ headers=headers,
1679
+ timeout_ms=timeout_ms,
1680
+ )
1681
+
1682
+
1683
+
1684
+ class RemediationService(Protocol):
1685
+ async def remediation_plan(self, request: flowrensic_dot_v1_dot_remediation__pb2.RemediationPlanRequest, ctx: RequestContext) -> flowrensic_dot_v1_dot_remediation__pb2.RemediationPlanResponse:
1686
+ raise ConnectError(Code.UNIMPLEMENTED, "Not implemented")
1687
+
1688
+ async def remediate(self, request: flowrensic_dot_v1_dot_remediation__pb2.RemediateRequest, ctx: RequestContext) -> flowrensic_dot_v1_dot_remediation__pb2.RemediateResponse:
1689
+ raise ConnectError(Code.UNIMPLEMENTED, "Not implemented")
1690
+
1691
+ async def list_remediations(self, request: flowrensic_dot_v1_dot_remediation__pb2.ListRemediationsRequest, ctx: RequestContext) -> flowrensic_dot_v1_dot_remediation__pb2.ListRemediationsResponse:
1692
+ raise ConnectError(Code.UNIMPLEMENTED, "Not implemented")
1693
+
1694
+
1695
+ class RemediationServiceASGIApplication(ConnectASGIApplication[RemediationService]):
1696
+ def __init__(self, service: RemediationService | AsyncGenerator[RemediationService], *, interceptors: Iterable[Interceptor]=(), read_max_bytes: int | None = None, compressions: Iterable[Compression] | None = None) -> None:
1697
+ super().__init__(
1698
+ service=service,
1699
+ endpoints=lambda svc: {
1700
+ "/flowrensic.v1.RemediationService/RemediationPlan": Endpoint.unary(
1701
+ method=MethodInfo(
1702
+ name="RemediationPlan",
1703
+ service_name="flowrensic.v1.RemediationService",
1704
+ input=flowrensic_dot_v1_dot_remediation__pb2.RemediationPlanRequest,
1705
+ output=flowrensic_dot_v1_dot_remediation__pb2.RemediationPlanResponse,
1706
+ idempotency_level=IdempotencyLevel.UNKNOWN,
1707
+ ),
1708
+ function=svc.remediation_plan,
1709
+ ),
1710
+ "/flowrensic.v1.RemediationService/Remediate": Endpoint.unary(
1711
+ method=MethodInfo(
1712
+ name="Remediate",
1713
+ service_name="flowrensic.v1.RemediationService",
1714
+ input=flowrensic_dot_v1_dot_remediation__pb2.RemediateRequest,
1715
+ output=flowrensic_dot_v1_dot_remediation__pb2.RemediateResponse,
1716
+ idempotency_level=IdempotencyLevel.UNKNOWN,
1717
+ ),
1718
+ function=svc.remediate,
1719
+ ),
1720
+ "/flowrensic.v1.RemediationService/ListRemediations": Endpoint.unary(
1721
+ method=MethodInfo(
1722
+ name="ListRemediations",
1723
+ service_name="flowrensic.v1.RemediationService",
1724
+ input=flowrensic_dot_v1_dot_remediation__pb2.ListRemediationsRequest,
1725
+ output=flowrensic_dot_v1_dot_remediation__pb2.ListRemediationsResponse,
1726
+ idempotency_level=IdempotencyLevel.UNKNOWN,
1727
+ ),
1728
+ function=svc.list_remediations,
1729
+ ),
1730
+ },
1731
+ interceptors=interceptors,
1732
+ read_max_bytes=read_max_bytes,
1733
+ compressions=compressions,
1734
+ )
1735
+
1736
+ @property
1737
+ def path(self) -> str:
1738
+ """Returns the URL path to mount the application to when serving multiple applications."""
1739
+ return "/flowrensic.v1.RemediationService"
1740
+
1741
+
1742
+ class RemediationServiceClient(ConnectClient):
1743
+ async def remediation_plan(
1744
+ self,
1745
+ request: flowrensic_dot_v1_dot_remediation__pb2.RemediationPlanRequest,
1746
+ *,
1747
+ headers: Headers | Mapping[str, str] | None = None,
1748
+ timeout_ms: int | None = None,
1749
+ ) -> flowrensic_dot_v1_dot_remediation__pb2.RemediationPlanResponse:
1750
+ return await self.execute_unary(
1751
+ request=request,
1752
+ method=MethodInfo(
1753
+ name="RemediationPlan",
1754
+ service_name="flowrensic.v1.RemediationService",
1755
+ input=flowrensic_dot_v1_dot_remediation__pb2.RemediationPlanRequest,
1756
+ output=flowrensic_dot_v1_dot_remediation__pb2.RemediationPlanResponse,
1757
+ idempotency_level=IdempotencyLevel.UNKNOWN,
1758
+ ),
1759
+ headers=headers,
1760
+ timeout_ms=timeout_ms,
1761
+ )
1762
+
1763
+ async def remediate(
1764
+ self,
1765
+ request: flowrensic_dot_v1_dot_remediation__pb2.RemediateRequest,
1766
+ *,
1767
+ headers: Headers | Mapping[str, str] | None = None,
1768
+ timeout_ms: int | None = None,
1769
+ ) -> flowrensic_dot_v1_dot_remediation__pb2.RemediateResponse:
1770
+ return await self.execute_unary(
1771
+ request=request,
1772
+ method=MethodInfo(
1773
+ name="Remediate",
1774
+ service_name="flowrensic.v1.RemediationService",
1775
+ input=flowrensic_dot_v1_dot_remediation__pb2.RemediateRequest,
1776
+ output=flowrensic_dot_v1_dot_remediation__pb2.RemediateResponse,
1777
+ idempotency_level=IdempotencyLevel.UNKNOWN,
1778
+ ),
1779
+ headers=headers,
1780
+ timeout_ms=timeout_ms,
1781
+ )
1782
+
1783
+ async def list_remediations(
1784
+ self,
1785
+ request: flowrensic_dot_v1_dot_remediation__pb2.ListRemediationsRequest,
1786
+ *,
1787
+ headers: Headers | Mapping[str, str] | None = None,
1788
+ timeout_ms: int | None = None,
1789
+ ) -> flowrensic_dot_v1_dot_remediation__pb2.ListRemediationsResponse:
1790
+ return await self.execute_unary(
1791
+ request=request,
1792
+ method=MethodInfo(
1793
+ name="ListRemediations",
1794
+ service_name="flowrensic.v1.RemediationService",
1795
+ input=flowrensic_dot_v1_dot_remediation__pb2.ListRemediationsRequest,
1796
+ output=flowrensic_dot_v1_dot_remediation__pb2.ListRemediationsResponse,
1797
+ idempotency_level=IdempotencyLevel.UNKNOWN,
1798
+ ),
1799
+ headers=headers,
1800
+ timeout_ms=timeout_ms,
1801
+ )
1802
+
1803
+
1804
+
1805
+ class JobService(Protocol):
1806
+ async def run_job(self, request: flowrensic_dot_v1_dot_job__pb2.RunJobRequest, ctx: RequestContext) -> flowrensic_dot_v1_dot_job__pb2.RunJobResponse:
1807
+ raise ConnectError(Code.UNIMPLEMENTED, "Not implemented")
1808
+
1809
+
1810
+ class JobServiceASGIApplication(ConnectASGIApplication[JobService]):
1811
+ def __init__(self, service: JobService | AsyncGenerator[JobService], *, interceptors: Iterable[Interceptor]=(), read_max_bytes: int | None = None, compressions: Iterable[Compression] | None = None) -> None:
1812
+ super().__init__(
1813
+ service=service,
1814
+ endpoints=lambda svc: {
1815
+ "/flowrensic.v1.JobService/RunJob": Endpoint.unary(
1816
+ method=MethodInfo(
1817
+ name="RunJob",
1818
+ service_name="flowrensic.v1.JobService",
1819
+ input=flowrensic_dot_v1_dot_job__pb2.RunJobRequest,
1820
+ output=flowrensic_dot_v1_dot_job__pb2.RunJobResponse,
1821
+ idempotency_level=IdempotencyLevel.UNKNOWN,
1822
+ ),
1823
+ function=svc.run_job,
1824
+ ),
1825
+ },
1826
+ interceptors=interceptors,
1827
+ read_max_bytes=read_max_bytes,
1828
+ compressions=compressions,
1829
+ )
1830
+
1831
+ @property
1832
+ def path(self) -> str:
1833
+ """Returns the URL path to mount the application to when serving multiple applications."""
1834
+ return "/flowrensic.v1.JobService"
1835
+
1836
+
1837
+ class JobServiceClient(ConnectClient):
1838
+ async def run_job(
1839
+ self,
1840
+ request: flowrensic_dot_v1_dot_job__pb2.RunJobRequest,
1841
+ *,
1842
+ headers: Headers | Mapping[str, str] | None = None,
1843
+ timeout_ms: int | None = None,
1844
+ ) -> flowrensic_dot_v1_dot_job__pb2.RunJobResponse:
1845
+ return await self.execute_unary(
1846
+ request=request,
1847
+ method=MethodInfo(
1848
+ name="RunJob",
1849
+ service_name="flowrensic.v1.JobService",
1850
+ input=flowrensic_dot_v1_dot_job__pb2.RunJobRequest,
1851
+ output=flowrensic_dot_v1_dot_job__pb2.RunJobResponse,
1852
+ idempotency_level=IdempotencyLevel.UNKNOWN,
1853
+ ),
1854
+ headers=headers,
1855
+ timeout_ms=timeout_ms,
1856
+ )
1857
+
1858
+
1859
+ class CatalogServiceSync(Protocol):
1860
+ def register_namespace(self, request: flowrensic_dot_v1_dot_catalog__pb2.RegisterNamespaceRequest, ctx: RequestContext) -> flowrensic_dot_v1_dot_catalog__pb2.RegisterNamespaceResponse:
1861
+ raise ConnectError(Code.UNIMPLEMENTED, "Not implemented")
1862
+ def list_envs(self, request: flowrensic_dot_v1_dot_catalog__pb2.ListEnvsRequest, ctx: RequestContext) -> flowrensic_dot_v1_dot_catalog__pb2.ListEnvsResponse:
1863
+ raise ConnectError(Code.UNIMPLEMENTED, "Not implemented")
1864
+ def list_servers(self, request: flowrensic_dot_v1_dot_catalog__pb2.ListServersRequest, ctx: RequestContext) -> flowrensic_dot_v1_dot_catalog__pb2.ListServersResponse:
1865
+ raise ConnectError(Code.UNIMPLEMENTED, "Not implemented")
1866
+ def list_namespaces(self, request: flowrensic_dot_v1_dot_catalog__pb2.ListNamespacesRequest, ctx: RequestContext) -> flowrensic_dot_v1_dot_catalog__pb2.ListNamespacesResponse:
1867
+ raise ConnectError(Code.UNIMPLEMENTED, "Not implemented")
1868
+
1869
+
1870
+ class CatalogServiceWSGIApplication(ConnectWSGIApplication):
1871
+ def __init__(self, service: CatalogServiceSync, interceptors: Iterable[InterceptorSync]=(), read_max_bytes: int | None = None, compressions: Iterable[Compression] | None = None) -> None:
1872
+ super().__init__(
1873
+ endpoints={
1874
+ "/flowrensic.v1.CatalogService/RegisterNamespace": EndpointSync.unary(
1875
+ method=MethodInfo(
1876
+ name="RegisterNamespace",
1877
+ service_name="flowrensic.v1.CatalogService",
1878
+ input=flowrensic_dot_v1_dot_catalog__pb2.RegisterNamespaceRequest,
1879
+ output=flowrensic_dot_v1_dot_catalog__pb2.RegisterNamespaceResponse,
1880
+ idempotency_level=IdempotencyLevel.UNKNOWN,
1881
+ ),
1882
+ function=service.register_namespace,
1883
+ ),
1884
+ "/flowrensic.v1.CatalogService/ListEnvs": EndpointSync.unary(
1885
+ method=MethodInfo(
1886
+ name="ListEnvs",
1887
+ service_name="flowrensic.v1.CatalogService",
1888
+ input=flowrensic_dot_v1_dot_catalog__pb2.ListEnvsRequest,
1889
+ output=flowrensic_dot_v1_dot_catalog__pb2.ListEnvsResponse,
1890
+ idempotency_level=IdempotencyLevel.UNKNOWN,
1891
+ ),
1892
+ function=service.list_envs,
1893
+ ),
1894
+ "/flowrensic.v1.CatalogService/ListServers": EndpointSync.unary(
1895
+ method=MethodInfo(
1896
+ name="ListServers",
1897
+ service_name="flowrensic.v1.CatalogService",
1898
+ input=flowrensic_dot_v1_dot_catalog__pb2.ListServersRequest,
1899
+ output=flowrensic_dot_v1_dot_catalog__pb2.ListServersResponse,
1900
+ idempotency_level=IdempotencyLevel.UNKNOWN,
1901
+ ),
1902
+ function=service.list_servers,
1903
+ ),
1904
+ "/flowrensic.v1.CatalogService/ListNamespaces": EndpointSync.unary(
1905
+ method=MethodInfo(
1906
+ name="ListNamespaces",
1907
+ service_name="flowrensic.v1.CatalogService",
1908
+ input=flowrensic_dot_v1_dot_catalog__pb2.ListNamespacesRequest,
1909
+ output=flowrensic_dot_v1_dot_catalog__pb2.ListNamespacesResponse,
1910
+ idempotency_level=IdempotencyLevel.UNKNOWN,
1911
+ ),
1912
+ function=service.list_namespaces,
1913
+ ),
1914
+ },
1915
+ interceptors=interceptors,
1916
+ read_max_bytes=read_max_bytes,
1917
+ compressions=compressions,
1918
+ )
1919
+
1920
+ @property
1921
+ def path(self) -> str:
1922
+ """Returns the URL path to mount the application to when serving multiple applications."""
1923
+ return "/flowrensic.v1.CatalogService"
1924
+
1925
+
1926
+ class CatalogServiceClientSync(ConnectClientSync):
1927
+ def register_namespace(
1928
+ self,
1929
+ request: flowrensic_dot_v1_dot_catalog__pb2.RegisterNamespaceRequest,
1930
+ *,
1931
+ headers: Headers | Mapping[str, str] | None = None,
1932
+ timeout_ms: int | None = None,
1933
+ ) -> flowrensic_dot_v1_dot_catalog__pb2.RegisterNamespaceResponse:
1934
+ return self.execute_unary(
1935
+ request=request,
1936
+ method=MethodInfo(
1937
+ name="RegisterNamespace",
1938
+ service_name="flowrensic.v1.CatalogService",
1939
+ input=flowrensic_dot_v1_dot_catalog__pb2.RegisterNamespaceRequest,
1940
+ output=flowrensic_dot_v1_dot_catalog__pb2.RegisterNamespaceResponse,
1941
+ idempotency_level=IdempotencyLevel.UNKNOWN,
1942
+ ),
1943
+ headers=headers,
1944
+ timeout_ms=timeout_ms,
1945
+ )
1946
+
1947
+ def list_envs(
1948
+ self,
1949
+ request: flowrensic_dot_v1_dot_catalog__pb2.ListEnvsRequest,
1950
+ *,
1951
+ headers: Headers | Mapping[str, str] | None = None,
1952
+ timeout_ms: int | None = None,
1953
+ ) -> flowrensic_dot_v1_dot_catalog__pb2.ListEnvsResponse:
1954
+ return self.execute_unary(
1955
+ request=request,
1956
+ method=MethodInfo(
1957
+ name="ListEnvs",
1958
+ service_name="flowrensic.v1.CatalogService",
1959
+ input=flowrensic_dot_v1_dot_catalog__pb2.ListEnvsRequest,
1960
+ output=flowrensic_dot_v1_dot_catalog__pb2.ListEnvsResponse,
1961
+ idempotency_level=IdempotencyLevel.UNKNOWN,
1962
+ ),
1963
+ headers=headers,
1964
+ timeout_ms=timeout_ms,
1965
+ )
1966
+
1967
+ def list_servers(
1968
+ self,
1969
+ request: flowrensic_dot_v1_dot_catalog__pb2.ListServersRequest,
1970
+ *,
1971
+ headers: Headers | Mapping[str, str] | None = None,
1972
+ timeout_ms: int | None = None,
1973
+ ) -> flowrensic_dot_v1_dot_catalog__pb2.ListServersResponse:
1974
+ return self.execute_unary(
1975
+ request=request,
1976
+ method=MethodInfo(
1977
+ name="ListServers",
1978
+ service_name="flowrensic.v1.CatalogService",
1979
+ input=flowrensic_dot_v1_dot_catalog__pb2.ListServersRequest,
1980
+ output=flowrensic_dot_v1_dot_catalog__pb2.ListServersResponse,
1981
+ idempotency_level=IdempotencyLevel.UNKNOWN,
1982
+ ),
1983
+ headers=headers,
1984
+ timeout_ms=timeout_ms,
1985
+ )
1986
+
1987
+ def list_namespaces(
1988
+ self,
1989
+ request: flowrensic_dot_v1_dot_catalog__pb2.ListNamespacesRequest,
1990
+ *,
1991
+ headers: Headers | Mapping[str, str] | None = None,
1992
+ timeout_ms: int | None = None,
1993
+ ) -> flowrensic_dot_v1_dot_catalog__pb2.ListNamespacesResponse:
1994
+ return self.execute_unary(
1995
+ request=request,
1996
+ method=MethodInfo(
1997
+ name="ListNamespaces",
1998
+ service_name="flowrensic.v1.CatalogService",
1999
+ input=flowrensic_dot_v1_dot_catalog__pb2.ListNamespacesRequest,
2000
+ output=flowrensic_dot_v1_dot_catalog__pb2.ListNamespacesResponse,
2001
+ idempotency_level=IdempotencyLevel.UNKNOWN,
2002
+ ),
2003
+ headers=headers,
2004
+ timeout_ms=timeout_ms,
2005
+ )
2006
+
2007
+ class IngestServiceSync(Protocol):
2008
+ def ingest_activity_events(self, request: flowrensic_dot_v1_dot_activity__metrics__pb2.IngestActivityEventsRequest, ctx: RequestContext) -> flowrensic_dot_v1_dot_activity__metrics__pb2.IngestActivityEventsResponse:
2009
+ raise ConnectError(Code.UNIMPLEMENTED, "Not implemented")
2010
+ def ingest_history(self, request: flowrensic_dot_v1_dot_workflow__history__pb2.IngestHistoryRequest, ctx: RequestContext) -> flowrensic_dot_v1_dot_workflow__history__pb2.IngestHistoryResponse:
2011
+ raise ConnectError(Code.UNIMPLEMENTED, "Not implemented")
2012
+ def ingest_replay_results(self, request: flowrensic_dot_v1_dot_replay__pb2.IngestReplayResultsRequest, ctx: RequestContext) -> flowrensic_dot_v1_dot_replay__pb2.IngestReplayResultsResponse:
2013
+ raise ConnectError(Code.UNIMPLEMENTED, "Not implemented")
2014
+ def ephemeral_run_handshake(self, request: flowrensic_dot_v1_dot_ephemeral__run__pb2.EphemeralRunHandshakeRequest, ctx: RequestContext) -> flowrensic_dot_v1_dot_ephemeral__run__pb2.EphemeralRunHandshakeResponse:
2015
+ raise ConnectError(Code.UNIMPLEMENTED, "Not implemented")
2016
+ def ingest_ephemeral_run_metrics(self, request: flowrensic_dot_v1_dot_ephemeral__run__pb2.IngestEphemeralRunMetricsRequest, ctx: RequestContext) -> flowrensic_dot_v1_dot_ephemeral__run__pb2.IngestEphemeralRunMetricsResponse:
2017
+ raise ConnectError(Code.UNIMPLEMENTED, "Not implemented")
2018
+ def ingest_worker_metrics(self, request: flowrensic_dot_v1_dot_ephemeral__run__pb2.IngestWorkerMetricsRequest, ctx: RequestContext) -> flowrensic_dot_v1_dot_ephemeral__run__pb2.IngestWorkerMetricsResponse:
2019
+ raise ConnectError(Code.UNIMPLEMENTED, "Not implemented")
2020
+ def ingest_engine_history(self, request: flowrensic_dot_v1_dot_ephemeral__run__pb2.IngestEngineHistoryRequest, ctx: RequestContext) -> flowrensic_dot_v1_dot_ephemeral__run__pb2.IngestEngineHistoryResponse:
2021
+ raise ConnectError(Code.UNIMPLEMENTED, "Not implemented")
2022
+ def ephemeral_run_handover(self, request: flowrensic_dot_v1_dot_ephemeral__run__pb2.EphemeralRunHandoverRequest, ctx: RequestContext) -> flowrensic_dot_v1_dot_ephemeral__run__pb2.EphemeralRunHandoverResponse:
2023
+ raise ConnectError(Code.UNIMPLEMENTED, "Not implemented")
2024
+ def worker_beat(self, request: flowrensic_dot_v1_dot_ephemeral__run__pb2.WorkerBeatRequest, ctx: RequestContext) -> flowrensic_dot_v1_dot_ephemeral__run__pb2.WorkerBeatResponse:
2025
+ raise ConnectError(Code.UNIMPLEMENTED, "Not implemented")
2026
+ def old_workers(self, request: flowrensic_dot_v1_dot_ephemeral__run__pb2.OldWorkersRequest, ctx: RequestContext) -> flowrensic_dot_v1_dot_ephemeral__run__pb2.OldWorkersResponse:
2027
+ raise ConnectError(Code.UNIMPLEMENTED, "Not implemented")
2028
+ def ingest_deploy_stage(self, request: flowrensic_dot_v1_dot_deploy__pb2.IngestDeployStageRequest, ctx: RequestContext) -> flowrensic_dot_v1_dot_deploy__pb2.IngestDeployStageResponse:
2029
+ raise ConnectError(Code.UNIMPLEMENTED, "Not implemented")
2030
+ def ingest_client_calls(self, request: flowrensic_dot_v1_dot_client__calls__pb2.IngestClientCallsRequest, ctx: RequestContext) -> flowrensic_dot_v1_dot_client__calls__pb2.IngestClientCallsResponse:
2031
+ raise ConnectError(Code.UNIMPLEMENTED, "Not implemented")
2032
+ def ingest_query_counts(self, request: flowrensic_dot_v1_dot_client__calls__pb2.IngestQueryCountsRequest, ctx: RequestContext) -> flowrensic_dot_v1_dot_client__calls__pb2.IngestQueryCountsResponse:
2033
+ raise ConnectError(Code.UNIMPLEMENTED, "Not implemented")
2034
+
2035
+
2036
+ class IngestServiceWSGIApplication(ConnectWSGIApplication):
2037
+ def __init__(self, service: IngestServiceSync, interceptors: Iterable[InterceptorSync]=(), read_max_bytes: int | None = None, compressions: Iterable[Compression] | None = None) -> None:
2038
+ super().__init__(
2039
+ endpoints={
2040
+ "/flowrensic.v1.IngestService/IngestActivityEvents": EndpointSync.unary(
2041
+ method=MethodInfo(
2042
+ name="IngestActivityEvents",
2043
+ service_name="flowrensic.v1.IngestService",
2044
+ input=flowrensic_dot_v1_dot_activity__metrics__pb2.IngestActivityEventsRequest,
2045
+ output=flowrensic_dot_v1_dot_activity__metrics__pb2.IngestActivityEventsResponse,
2046
+ idempotency_level=IdempotencyLevel.UNKNOWN,
2047
+ ),
2048
+ function=service.ingest_activity_events,
2049
+ ),
2050
+ "/flowrensic.v1.IngestService/IngestHistory": EndpointSync.unary(
2051
+ method=MethodInfo(
2052
+ name="IngestHistory",
2053
+ service_name="flowrensic.v1.IngestService",
2054
+ input=flowrensic_dot_v1_dot_workflow__history__pb2.IngestHistoryRequest,
2055
+ output=flowrensic_dot_v1_dot_workflow__history__pb2.IngestHistoryResponse,
2056
+ idempotency_level=IdempotencyLevel.UNKNOWN,
2057
+ ),
2058
+ function=service.ingest_history,
2059
+ ),
2060
+ "/flowrensic.v1.IngestService/IngestReplayResults": EndpointSync.unary(
2061
+ method=MethodInfo(
2062
+ name="IngestReplayResults",
2063
+ service_name="flowrensic.v1.IngestService",
2064
+ input=flowrensic_dot_v1_dot_replay__pb2.IngestReplayResultsRequest,
2065
+ output=flowrensic_dot_v1_dot_replay__pb2.IngestReplayResultsResponse,
2066
+ idempotency_level=IdempotencyLevel.UNKNOWN,
2067
+ ),
2068
+ function=service.ingest_replay_results,
2069
+ ),
2070
+ "/flowrensic.v1.IngestService/EphemeralRunHandshake": EndpointSync.unary(
2071
+ method=MethodInfo(
2072
+ name="EphemeralRunHandshake",
2073
+ service_name="flowrensic.v1.IngestService",
2074
+ input=flowrensic_dot_v1_dot_ephemeral__run__pb2.EphemeralRunHandshakeRequest,
2075
+ output=flowrensic_dot_v1_dot_ephemeral__run__pb2.EphemeralRunHandshakeResponse,
2076
+ idempotency_level=IdempotencyLevel.UNKNOWN,
2077
+ ),
2078
+ function=service.ephemeral_run_handshake,
2079
+ ),
2080
+ "/flowrensic.v1.IngestService/IngestEphemeralRunMetrics": EndpointSync.unary(
2081
+ method=MethodInfo(
2082
+ name="IngestEphemeralRunMetrics",
2083
+ service_name="flowrensic.v1.IngestService",
2084
+ input=flowrensic_dot_v1_dot_ephemeral__run__pb2.IngestEphemeralRunMetricsRequest,
2085
+ output=flowrensic_dot_v1_dot_ephemeral__run__pb2.IngestEphemeralRunMetricsResponse,
2086
+ idempotency_level=IdempotencyLevel.UNKNOWN,
2087
+ ),
2088
+ function=service.ingest_ephemeral_run_metrics,
2089
+ ),
2090
+ "/flowrensic.v1.IngestService/IngestWorkerMetrics": EndpointSync.unary(
2091
+ method=MethodInfo(
2092
+ name="IngestWorkerMetrics",
2093
+ service_name="flowrensic.v1.IngestService",
2094
+ input=flowrensic_dot_v1_dot_ephemeral__run__pb2.IngestWorkerMetricsRequest,
2095
+ output=flowrensic_dot_v1_dot_ephemeral__run__pb2.IngestWorkerMetricsResponse,
2096
+ idempotency_level=IdempotencyLevel.UNKNOWN,
2097
+ ),
2098
+ function=service.ingest_worker_metrics,
2099
+ ),
2100
+ "/flowrensic.v1.IngestService/IngestEngineHistory": EndpointSync.unary(
2101
+ method=MethodInfo(
2102
+ name="IngestEngineHistory",
2103
+ service_name="flowrensic.v1.IngestService",
2104
+ input=flowrensic_dot_v1_dot_ephemeral__run__pb2.IngestEngineHistoryRequest,
2105
+ output=flowrensic_dot_v1_dot_ephemeral__run__pb2.IngestEngineHistoryResponse,
2106
+ idempotency_level=IdempotencyLevel.UNKNOWN,
2107
+ ),
2108
+ function=service.ingest_engine_history,
2109
+ ),
2110
+ "/flowrensic.v1.IngestService/EphemeralRunHandover": EndpointSync.unary(
2111
+ method=MethodInfo(
2112
+ name="EphemeralRunHandover",
2113
+ service_name="flowrensic.v1.IngestService",
2114
+ input=flowrensic_dot_v1_dot_ephemeral__run__pb2.EphemeralRunHandoverRequest,
2115
+ output=flowrensic_dot_v1_dot_ephemeral__run__pb2.EphemeralRunHandoverResponse,
2116
+ idempotency_level=IdempotencyLevel.UNKNOWN,
2117
+ ),
2118
+ function=service.ephemeral_run_handover,
2119
+ ),
2120
+ "/flowrensic.v1.IngestService/WorkerBeat": EndpointSync.unary(
2121
+ method=MethodInfo(
2122
+ name="WorkerBeat",
2123
+ service_name="flowrensic.v1.IngestService",
2124
+ input=flowrensic_dot_v1_dot_ephemeral__run__pb2.WorkerBeatRequest,
2125
+ output=flowrensic_dot_v1_dot_ephemeral__run__pb2.WorkerBeatResponse,
2126
+ idempotency_level=IdempotencyLevel.UNKNOWN,
2127
+ ),
2128
+ function=service.worker_beat,
2129
+ ),
2130
+ "/flowrensic.v1.IngestService/OldWorkers": EndpointSync.unary(
2131
+ method=MethodInfo(
2132
+ name="OldWorkers",
2133
+ service_name="flowrensic.v1.IngestService",
2134
+ input=flowrensic_dot_v1_dot_ephemeral__run__pb2.OldWorkersRequest,
2135
+ output=flowrensic_dot_v1_dot_ephemeral__run__pb2.OldWorkersResponse,
2136
+ idempotency_level=IdempotencyLevel.UNKNOWN,
2137
+ ),
2138
+ function=service.old_workers,
2139
+ ),
2140
+ "/flowrensic.v1.IngestService/IngestDeployStage": EndpointSync.unary(
2141
+ method=MethodInfo(
2142
+ name="IngestDeployStage",
2143
+ service_name="flowrensic.v1.IngestService",
2144
+ input=flowrensic_dot_v1_dot_deploy__pb2.IngestDeployStageRequest,
2145
+ output=flowrensic_dot_v1_dot_deploy__pb2.IngestDeployStageResponse,
2146
+ idempotency_level=IdempotencyLevel.UNKNOWN,
2147
+ ),
2148
+ function=service.ingest_deploy_stage,
2149
+ ),
2150
+ "/flowrensic.v1.IngestService/IngestClientCalls": EndpointSync.unary(
2151
+ method=MethodInfo(
2152
+ name="IngestClientCalls",
2153
+ service_name="flowrensic.v1.IngestService",
2154
+ input=flowrensic_dot_v1_dot_client__calls__pb2.IngestClientCallsRequest,
2155
+ output=flowrensic_dot_v1_dot_client__calls__pb2.IngestClientCallsResponse,
2156
+ idempotency_level=IdempotencyLevel.UNKNOWN,
2157
+ ),
2158
+ function=service.ingest_client_calls,
2159
+ ),
2160
+ "/flowrensic.v1.IngestService/IngestQueryCounts": EndpointSync.unary(
2161
+ method=MethodInfo(
2162
+ name="IngestQueryCounts",
2163
+ service_name="flowrensic.v1.IngestService",
2164
+ input=flowrensic_dot_v1_dot_client__calls__pb2.IngestQueryCountsRequest,
2165
+ output=flowrensic_dot_v1_dot_client__calls__pb2.IngestQueryCountsResponse,
2166
+ idempotency_level=IdempotencyLevel.UNKNOWN,
2167
+ ),
2168
+ function=service.ingest_query_counts,
2169
+ ),
2170
+ },
2171
+ interceptors=interceptors,
2172
+ read_max_bytes=read_max_bytes,
2173
+ compressions=compressions,
2174
+ )
2175
+
2176
+ @property
2177
+ def path(self) -> str:
2178
+ """Returns the URL path to mount the application to when serving multiple applications."""
2179
+ return "/flowrensic.v1.IngestService"
2180
+
2181
+
2182
+ class IngestServiceClientSync(ConnectClientSync):
2183
+ def ingest_activity_events(
2184
+ self,
2185
+ request: flowrensic_dot_v1_dot_activity__metrics__pb2.IngestActivityEventsRequest,
2186
+ *,
2187
+ headers: Headers | Mapping[str, str] | None = None,
2188
+ timeout_ms: int | None = None,
2189
+ ) -> flowrensic_dot_v1_dot_activity__metrics__pb2.IngestActivityEventsResponse:
2190
+ return self.execute_unary(
2191
+ request=request,
2192
+ method=MethodInfo(
2193
+ name="IngestActivityEvents",
2194
+ service_name="flowrensic.v1.IngestService",
2195
+ input=flowrensic_dot_v1_dot_activity__metrics__pb2.IngestActivityEventsRequest,
2196
+ output=flowrensic_dot_v1_dot_activity__metrics__pb2.IngestActivityEventsResponse,
2197
+ idempotency_level=IdempotencyLevel.UNKNOWN,
2198
+ ),
2199
+ headers=headers,
2200
+ timeout_ms=timeout_ms,
2201
+ )
2202
+
2203
+ def ingest_history(
2204
+ self,
2205
+ request: flowrensic_dot_v1_dot_workflow__history__pb2.IngestHistoryRequest,
2206
+ *,
2207
+ headers: Headers | Mapping[str, str] | None = None,
2208
+ timeout_ms: int | None = None,
2209
+ ) -> flowrensic_dot_v1_dot_workflow__history__pb2.IngestHistoryResponse:
2210
+ return self.execute_unary(
2211
+ request=request,
2212
+ method=MethodInfo(
2213
+ name="IngestHistory",
2214
+ service_name="flowrensic.v1.IngestService",
2215
+ input=flowrensic_dot_v1_dot_workflow__history__pb2.IngestHistoryRequest,
2216
+ output=flowrensic_dot_v1_dot_workflow__history__pb2.IngestHistoryResponse,
2217
+ idempotency_level=IdempotencyLevel.UNKNOWN,
2218
+ ),
2219
+ headers=headers,
2220
+ timeout_ms=timeout_ms,
2221
+ )
2222
+
2223
+ def ingest_replay_results(
2224
+ self,
2225
+ request: flowrensic_dot_v1_dot_replay__pb2.IngestReplayResultsRequest,
2226
+ *,
2227
+ headers: Headers | Mapping[str, str] | None = None,
2228
+ timeout_ms: int | None = None,
2229
+ ) -> flowrensic_dot_v1_dot_replay__pb2.IngestReplayResultsResponse:
2230
+ return self.execute_unary(
2231
+ request=request,
2232
+ method=MethodInfo(
2233
+ name="IngestReplayResults",
2234
+ service_name="flowrensic.v1.IngestService",
2235
+ input=flowrensic_dot_v1_dot_replay__pb2.IngestReplayResultsRequest,
2236
+ output=flowrensic_dot_v1_dot_replay__pb2.IngestReplayResultsResponse,
2237
+ idempotency_level=IdempotencyLevel.UNKNOWN,
2238
+ ),
2239
+ headers=headers,
2240
+ timeout_ms=timeout_ms,
2241
+ )
2242
+
2243
+ def ephemeral_run_handshake(
2244
+ self,
2245
+ request: flowrensic_dot_v1_dot_ephemeral__run__pb2.EphemeralRunHandshakeRequest,
2246
+ *,
2247
+ headers: Headers | Mapping[str, str] | None = None,
2248
+ timeout_ms: int | None = None,
2249
+ ) -> flowrensic_dot_v1_dot_ephemeral__run__pb2.EphemeralRunHandshakeResponse:
2250
+ return self.execute_unary(
2251
+ request=request,
2252
+ method=MethodInfo(
2253
+ name="EphemeralRunHandshake",
2254
+ service_name="flowrensic.v1.IngestService",
2255
+ input=flowrensic_dot_v1_dot_ephemeral__run__pb2.EphemeralRunHandshakeRequest,
2256
+ output=flowrensic_dot_v1_dot_ephemeral__run__pb2.EphemeralRunHandshakeResponse,
2257
+ idempotency_level=IdempotencyLevel.UNKNOWN,
2258
+ ),
2259
+ headers=headers,
2260
+ timeout_ms=timeout_ms,
2261
+ )
2262
+
2263
+ def ingest_ephemeral_run_metrics(
2264
+ self,
2265
+ request: flowrensic_dot_v1_dot_ephemeral__run__pb2.IngestEphemeralRunMetricsRequest,
2266
+ *,
2267
+ headers: Headers | Mapping[str, str] | None = None,
2268
+ timeout_ms: int | None = None,
2269
+ ) -> flowrensic_dot_v1_dot_ephemeral__run__pb2.IngestEphemeralRunMetricsResponse:
2270
+ return self.execute_unary(
2271
+ request=request,
2272
+ method=MethodInfo(
2273
+ name="IngestEphemeralRunMetrics",
2274
+ service_name="flowrensic.v1.IngestService",
2275
+ input=flowrensic_dot_v1_dot_ephemeral__run__pb2.IngestEphemeralRunMetricsRequest,
2276
+ output=flowrensic_dot_v1_dot_ephemeral__run__pb2.IngestEphemeralRunMetricsResponse,
2277
+ idempotency_level=IdempotencyLevel.UNKNOWN,
2278
+ ),
2279
+ headers=headers,
2280
+ timeout_ms=timeout_ms,
2281
+ )
2282
+
2283
+ def ingest_worker_metrics(
2284
+ self,
2285
+ request: flowrensic_dot_v1_dot_ephemeral__run__pb2.IngestWorkerMetricsRequest,
2286
+ *,
2287
+ headers: Headers | Mapping[str, str] | None = None,
2288
+ timeout_ms: int | None = None,
2289
+ ) -> flowrensic_dot_v1_dot_ephemeral__run__pb2.IngestWorkerMetricsResponse:
2290
+ return self.execute_unary(
2291
+ request=request,
2292
+ method=MethodInfo(
2293
+ name="IngestWorkerMetrics",
2294
+ service_name="flowrensic.v1.IngestService",
2295
+ input=flowrensic_dot_v1_dot_ephemeral__run__pb2.IngestWorkerMetricsRequest,
2296
+ output=flowrensic_dot_v1_dot_ephemeral__run__pb2.IngestWorkerMetricsResponse,
2297
+ idempotency_level=IdempotencyLevel.UNKNOWN,
2298
+ ),
2299
+ headers=headers,
2300
+ timeout_ms=timeout_ms,
2301
+ )
2302
+
2303
+ def ingest_engine_history(
2304
+ self,
2305
+ request: flowrensic_dot_v1_dot_ephemeral__run__pb2.IngestEngineHistoryRequest,
2306
+ *,
2307
+ headers: Headers | Mapping[str, str] | None = None,
2308
+ timeout_ms: int | None = None,
2309
+ ) -> flowrensic_dot_v1_dot_ephemeral__run__pb2.IngestEngineHistoryResponse:
2310
+ return self.execute_unary(
2311
+ request=request,
2312
+ method=MethodInfo(
2313
+ name="IngestEngineHistory",
2314
+ service_name="flowrensic.v1.IngestService",
2315
+ input=flowrensic_dot_v1_dot_ephemeral__run__pb2.IngestEngineHistoryRequest,
2316
+ output=flowrensic_dot_v1_dot_ephemeral__run__pb2.IngestEngineHistoryResponse,
2317
+ idempotency_level=IdempotencyLevel.UNKNOWN,
2318
+ ),
2319
+ headers=headers,
2320
+ timeout_ms=timeout_ms,
2321
+ )
2322
+
2323
+ def ephemeral_run_handover(
2324
+ self,
2325
+ request: flowrensic_dot_v1_dot_ephemeral__run__pb2.EphemeralRunHandoverRequest,
2326
+ *,
2327
+ headers: Headers | Mapping[str, str] | None = None,
2328
+ timeout_ms: int | None = None,
2329
+ ) -> flowrensic_dot_v1_dot_ephemeral__run__pb2.EphemeralRunHandoverResponse:
2330
+ return self.execute_unary(
2331
+ request=request,
2332
+ method=MethodInfo(
2333
+ name="EphemeralRunHandover",
2334
+ service_name="flowrensic.v1.IngestService",
2335
+ input=flowrensic_dot_v1_dot_ephemeral__run__pb2.EphemeralRunHandoverRequest,
2336
+ output=flowrensic_dot_v1_dot_ephemeral__run__pb2.EphemeralRunHandoverResponse,
2337
+ idempotency_level=IdempotencyLevel.UNKNOWN,
2338
+ ),
2339
+ headers=headers,
2340
+ timeout_ms=timeout_ms,
2341
+ )
2342
+
2343
+ def worker_beat(
2344
+ self,
2345
+ request: flowrensic_dot_v1_dot_ephemeral__run__pb2.WorkerBeatRequest,
2346
+ *,
2347
+ headers: Headers | Mapping[str, str] | None = None,
2348
+ timeout_ms: int | None = None,
2349
+ ) -> flowrensic_dot_v1_dot_ephemeral__run__pb2.WorkerBeatResponse:
2350
+ return self.execute_unary(
2351
+ request=request,
2352
+ method=MethodInfo(
2353
+ name="WorkerBeat",
2354
+ service_name="flowrensic.v1.IngestService",
2355
+ input=flowrensic_dot_v1_dot_ephemeral__run__pb2.WorkerBeatRequest,
2356
+ output=flowrensic_dot_v1_dot_ephemeral__run__pb2.WorkerBeatResponse,
2357
+ idempotency_level=IdempotencyLevel.UNKNOWN,
2358
+ ),
2359
+ headers=headers,
2360
+ timeout_ms=timeout_ms,
2361
+ )
2362
+
2363
+ def old_workers(
2364
+ self,
2365
+ request: flowrensic_dot_v1_dot_ephemeral__run__pb2.OldWorkersRequest,
2366
+ *,
2367
+ headers: Headers | Mapping[str, str] | None = None,
2368
+ timeout_ms: int | None = None,
2369
+ ) -> flowrensic_dot_v1_dot_ephemeral__run__pb2.OldWorkersResponse:
2370
+ return self.execute_unary(
2371
+ request=request,
2372
+ method=MethodInfo(
2373
+ name="OldWorkers",
2374
+ service_name="flowrensic.v1.IngestService",
2375
+ input=flowrensic_dot_v1_dot_ephemeral__run__pb2.OldWorkersRequest,
2376
+ output=flowrensic_dot_v1_dot_ephemeral__run__pb2.OldWorkersResponse,
2377
+ idempotency_level=IdempotencyLevel.UNKNOWN,
2378
+ ),
2379
+ headers=headers,
2380
+ timeout_ms=timeout_ms,
2381
+ )
2382
+
2383
+ def ingest_deploy_stage(
2384
+ self,
2385
+ request: flowrensic_dot_v1_dot_deploy__pb2.IngestDeployStageRequest,
2386
+ *,
2387
+ headers: Headers | Mapping[str, str] | None = None,
2388
+ timeout_ms: int | None = None,
2389
+ ) -> flowrensic_dot_v1_dot_deploy__pb2.IngestDeployStageResponse:
2390
+ return self.execute_unary(
2391
+ request=request,
2392
+ method=MethodInfo(
2393
+ name="IngestDeployStage",
2394
+ service_name="flowrensic.v1.IngestService",
2395
+ input=flowrensic_dot_v1_dot_deploy__pb2.IngestDeployStageRequest,
2396
+ output=flowrensic_dot_v1_dot_deploy__pb2.IngestDeployStageResponse,
2397
+ idempotency_level=IdempotencyLevel.UNKNOWN,
2398
+ ),
2399
+ headers=headers,
2400
+ timeout_ms=timeout_ms,
2401
+ )
2402
+
2403
+ def ingest_client_calls(
2404
+ self,
2405
+ request: flowrensic_dot_v1_dot_client__calls__pb2.IngestClientCallsRequest,
2406
+ *,
2407
+ headers: Headers | Mapping[str, str] | None = None,
2408
+ timeout_ms: int | None = None,
2409
+ ) -> flowrensic_dot_v1_dot_client__calls__pb2.IngestClientCallsResponse:
2410
+ return self.execute_unary(
2411
+ request=request,
2412
+ method=MethodInfo(
2413
+ name="IngestClientCalls",
2414
+ service_name="flowrensic.v1.IngestService",
2415
+ input=flowrensic_dot_v1_dot_client__calls__pb2.IngestClientCallsRequest,
2416
+ output=flowrensic_dot_v1_dot_client__calls__pb2.IngestClientCallsResponse,
2417
+ idempotency_level=IdempotencyLevel.UNKNOWN,
2418
+ ),
2419
+ headers=headers,
2420
+ timeout_ms=timeout_ms,
2421
+ )
2422
+
2423
+ def ingest_query_counts(
2424
+ self,
2425
+ request: flowrensic_dot_v1_dot_client__calls__pb2.IngestQueryCountsRequest,
2426
+ *,
2427
+ headers: Headers | Mapping[str, str] | None = None,
2428
+ timeout_ms: int | None = None,
2429
+ ) -> flowrensic_dot_v1_dot_client__calls__pb2.IngestQueryCountsResponse:
2430
+ return self.execute_unary(
2431
+ request=request,
2432
+ method=MethodInfo(
2433
+ name="IngestQueryCounts",
2434
+ service_name="flowrensic.v1.IngestService",
2435
+ input=flowrensic_dot_v1_dot_client__calls__pb2.IngestQueryCountsRequest,
2436
+ output=flowrensic_dot_v1_dot_client__calls__pb2.IngestQueryCountsResponse,
2437
+ idempotency_level=IdempotencyLevel.UNKNOWN,
2438
+ ),
2439
+ headers=headers,
2440
+ timeout_ms=timeout_ms,
2441
+ )
2442
+
2443
+ class QueryServiceSync(Protocol):
2444
+ def activity_stats(self, request: flowrensic_dot_v1_dot_activity__metrics__pb2.ActivityStatsRequest, ctx: RequestContext) -> flowrensic_dot_v1_dot_activity__metrics__pb2.ActivityStatsResponse:
2445
+ raise ConnectError(Code.UNIMPLEMENTED, "Not implemented")
2446
+ def list_runs(self, request: flowrensic_dot_v1_dot_activity__metrics__pb2.ListRunsRequest, ctx: RequestContext) -> flowrensic_dot_v1_dot_activity__metrics__pb2.ListRunsResponse:
2447
+ raise ConnectError(Code.UNIMPLEMENTED, "Not implemented")
2448
+ def list_findings(self, request: flowrensic_dot_v1_dot_finding__pb2.ListFindingsRequest, ctx: RequestContext) -> flowrensic_dot_v1_dot_finding__pb2.ListFindingsResponse:
2449
+ raise ConnectError(Code.UNIMPLEMENTED, "Not implemented")
2450
+ def list_alerts(self, request: flowrensic_dot_v1_dot_finding__pb2.ListAlertsRequest, ctx: RequestContext) -> flowrensic_dot_v1_dot_finding__pb2.ListAlertsResponse:
2451
+ raise ConnectError(Code.UNIMPLEMENTED, "Not implemented")
2452
+ def engine_metrics(self, request: flowrensic_dot_v1_dot_activity__metrics__pb2.EngineMetricsRequest, ctx: RequestContext) -> flowrensic_dot_v1_dot_activity__metrics__pb2.EngineMetricsResponse:
2453
+ raise ConnectError(Code.UNIMPLEMENTED, "Not implemented")
2454
+ def update_rejections(self, request: flowrensic_dot_v1_dot_activity__metrics__pb2.UpdateRejectionsRequest, ctx: RequestContext) -> flowrensic_dot_v1_dot_activity__metrics__pb2.UpdateRejectionsResponse:
2455
+ raise ConnectError(Code.UNIMPLEMENTED, "Not implemented")
2456
+ def list_replay_histories(self, request: flowrensic_dot_v1_dot_replay__pb2.ListReplayHistoriesRequest, ctx: RequestContext) -> flowrensic_dot_v1_dot_replay__pb2.ListReplayHistoriesResponse:
2457
+ raise ConnectError(Code.UNIMPLEMENTED, "Not implemented")
2458
+ def list_replay_results(self, request: flowrensic_dot_v1_dot_replay__pb2.ListReplayResultsRequest, ctx: RequestContext) -> flowrensic_dot_v1_dot_replay__pb2.ListReplayResultsResponse:
2459
+ raise ConnectError(Code.UNIMPLEMENTED, "Not implemented")
2460
+ def list_replay_requests(self, request: flowrensic_dot_v1_dot_replay__pb2.ListReplayRequestsRequest, ctx: RequestContext) -> flowrensic_dot_v1_dot_replay__pb2.ListReplayRequestsResponse:
2461
+ raise ConnectError(Code.UNIMPLEMENTED, "Not implemented")
2462
+ def list_replay_sets(self, request: flowrensic_dot_v1_dot_replay__pb2.ListReplaySetsRequest, ctx: RequestContext) -> flowrensic_dot_v1_dot_replay__pb2.ListReplaySetsResponse:
2463
+ raise ConnectError(Code.UNIMPLEMENTED, "Not implemented")
2464
+ def get_replay_set(self, request: flowrensic_dot_v1_dot_replay__pb2.GetReplaySetRequest, ctx: RequestContext) -> flowrensic_dot_v1_dot_replay__pb2.GetReplaySetResponse:
2465
+ raise ConnectError(Code.UNIMPLEMENTED, "Not implemented")
2466
+ def quarantine_history(self, request: flowrensic_dot_v1_dot_replay__pb2.QuarantineHistoryRequest, ctx: RequestContext) -> flowrensic_dot_v1_dot_replay__pb2.QuarantineHistoryResponse:
2467
+ raise ConnectError(Code.UNIMPLEMENTED, "Not implemented")
2468
+ def release_history(self, request: flowrensic_dot_v1_dot_replay__pb2.ReleaseHistoryRequest, ctx: RequestContext) -> flowrensic_dot_v1_dot_replay__pb2.ReleaseHistoryResponse:
2469
+ raise ConnectError(Code.UNIMPLEMENTED, "Not implemented")
2470
+ def list_workflow_types(self, request: flowrensic_dot_v1_dot_workflow__types__pb2.ListWorkflowTypesRequest, ctx: RequestContext) -> flowrensic_dot_v1_dot_workflow__types__pb2.ListWorkflowTypesResponse:
2471
+ raise ConnectError(Code.UNIMPLEMENTED, "Not implemented")
2472
+ def get_workflow_type(self, request: flowrensic_dot_v1_dot_workflow__types__pb2.GetWorkflowTypeRequest, ctx: RequestContext) -> flowrensic_dot_v1_dot_workflow__types__pb2.GetWorkflowTypeResponse:
2473
+ raise ConnectError(Code.UNIMPLEMENTED, "Not implemented")
2474
+ def list_ephemeral_runs(self, request: flowrensic_dot_v1_dot_ephemeral__run__pb2.ListEphemeralRunsRequest, ctx: RequestContext) -> flowrensic_dot_v1_dot_ephemeral__run__pb2.ListEphemeralRunsResponse:
2475
+ raise ConnectError(Code.UNIMPLEMENTED, "Not implemented")
2476
+ def list_ephemeral_run_summaries(self, request: flowrensic_dot_v1_dot_ephemeral__run__pb2.ListEphemeralRunSummariesRequest, ctx: RequestContext) -> flowrensic_dot_v1_dot_ephemeral__run__pb2.ListEphemeralRunSummariesResponse:
2477
+ raise ConnectError(Code.UNIMPLEMENTED, "Not implemented")
2478
+ def delete_ephemeral_run(self, request: flowrensic_dot_v1_dot_ephemeral__run__pb2.DeleteEphemeralRunRequest, ctx: RequestContext) -> flowrensic_dot_v1_dot_ephemeral__run__pb2.DeleteEphemeralRunResponse:
2479
+ raise ConnectError(Code.UNIMPLEMENTED, "Not implemented")
2480
+ def get_ephemeral_run_summary(self, request: flowrensic_dot_v1_dot_ephemeral__run__pb2.GetEphemeralRunSummaryRequest, ctx: RequestContext) -> flowrensic_dot_v1_dot_ephemeral__run__pb2.GetEphemeralRunSummaryResponse:
2481
+ raise ConnectError(Code.UNIMPLEMENTED, "Not implemented")
2482
+ def ephemeral_run_metrics(self, request: flowrensic_dot_v1_dot_ephemeral__run__pb2.EphemeralRunMetricsRequest, ctx: RequestContext) -> flowrensic_dot_v1_dot_ephemeral__run__pb2.EphemeralRunMetricsResponse:
2483
+ raise ConnectError(Code.UNIMPLEMENTED, "Not implemented")
2484
+ def worker_metrics(self, request: flowrensic_dot_v1_dot_ephemeral__run__pb2.WorkerMetricsRequest, ctx: RequestContext) -> flowrensic_dot_v1_dot_ephemeral__run__pb2.WorkerMetricsResponse:
2485
+ raise ConnectError(Code.UNIMPLEMENTED, "Not implemented")
2486
+ def cost_breakdown(self, request: flowrensic_dot_v1_dot_cost__pb2.CostBreakdownRequest, ctx: RequestContext) -> flowrensic_dot_v1_dot_cost__pb2.CostBreakdownResponse:
2487
+ raise ConnectError(Code.UNIMPLEMENTED, "Not implemented")
2488
+ def get_deployment(self, request: flowrensic_dot_v1_dot_deploy__pb2.GetDeploymentRequest, ctx: RequestContext) -> flowrensic_dot_v1_dot_deploy__pb2.GetDeploymentResponse:
2489
+ raise ConnectError(Code.UNIMPLEMENTED, "Not implemented")
2490
+ def deploy_attempt_counts(self, request: flowrensic_dot_v1_dot_deploy__pb2.DeployAttemptCountsRequest, ctx: RequestContext) -> flowrensic_dot_v1_dot_deploy__pb2.DeployAttemptCountsResponse:
2491
+ raise ConnectError(Code.UNIMPLEMENTED, "Not implemented")
2492
+ def list_thresholds(self, request: flowrensic_dot_v1_dot_finding__pb2.ListThresholdsRequest, ctx: RequestContext) -> flowrensic_dot_v1_dot_finding__pb2.ListThresholdsResponse:
2493
+ raise ConnectError(Code.UNIMPLEMENTED, "Not implemented")
2494
+ def get_finding(self, request: flowrensic_dot_v1_dot_finding__pb2.GetFindingRequest, ctx: RequestContext) -> flowrensic_dot_v1_dot_finding__pb2.GetFindingResponse:
2495
+ raise ConnectError(Code.UNIMPLEMENTED, "Not implemented")
2496
+ def set_finding_status(self, request: flowrensic_dot_v1_dot_finding__pb2.SetFindingStatusRequest, ctx: RequestContext) -> flowrensic_dot_v1_dot_finding__pb2.SetFindingStatusResponse:
2497
+ raise ConnectError(Code.UNIMPLEMENTED, "Not implemented")
2498
+ def get_server_config(self, request: flowrensic_dot_v1_dot_server__config__pb2.GetServerConfigRequest, ctx: RequestContext) -> flowrensic_dot_v1_dot_server__config__pb2.GetServerConfigResponse:
2499
+ raise ConnectError(Code.UNIMPLEMENTED, "Not implemented")
2500
+ def get_stored_data(self, request: flowrensic_dot_v1_dot_stored__data__pb2.GetStoredDataRequest, ctx: RequestContext) -> flowrensic_dot_v1_dot_stored__data__pb2.GetStoredDataResponse:
2501
+ raise ConnectError(Code.UNIMPLEMENTED, "Not implemented")
2502
+ def get_catch_up(self, request: flowrensic_dot_v1_dot_catch__up__pb2.GetCatchUpRequest, ctx: RequestContext) -> flowrensic_dot_v1_dot_catch__up__pb2.GetCatchUpResponse:
2503
+ raise ConnectError(Code.UNIMPLEMENTED, "Not implemented")
2504
+ def get_load(self, request: flowrensic_dot_v1_dot_load__pb2.GetLoadRequest, ctx: RequestContext) -> flowrensic_dot_v1_dot_load__pb2.GetLoadResponse:
2505
+ raise ConnectError(Code.UNIMPLEMENTED, "Not implemented")
2506
+
2507
+
2508
+ class QueryServiceWSGIApplication(ConnectWSGIApplication):
2509
+ def __init__(self, service: QueryServiceSync, interceptors: Iterable[InterceptorSync]=(), read_max_bytes: int | None = None, compressions: Iterable[Compression] | None = None) -> None:
2510
+ super().__init__(
2511
+ endpoints={
2512
+ "/flowrensic.v1.QueryService/ActivityStats": EndpointSync.unary(
2513
+ method=MethodInfo(
2514
+ name="ActivityStats",
2515
+ service_name="flowrensic.v1.QueryService",
2516
+ input=flowrensic_dot_v1_dot_activity__metrics__pb2.ActivityStatsRequest,
2517
+ output=flowrensic_dot_v1_dot_activity__metrics__pb2.ActivityStatsResponse,
2518
+ idempotency_level=IdempotencyLevel.UNKNOWN,
2519
+ ),
2520
+ function=service.activity_stats,
2521
+ ),
2522
+ "/flowrensic.v1.QueryService/ListRuns": EndpointSync.unary(
2523
+ method=MethodInfo(
2524
+ name="ListRuns",
2525
+ service_name="flowrensic.v1.QueryService",
2526
+ input=flowrensic_dot_v1_dot_activity__metrics__pb2.ListRunsRequest,
2527
+ output=flowrensic_dot_v1_dot_activity__metrics__pb2.ListRunsResponse,
2528
+ idempotency_level=IdempotencyLevel.UNKNOWN,
2529
+ ),
2530
+ function=service.list_runs,
2531
+ ),
2532
+ "/flowrensic.v1.QueryService/ListFindings": EndpointSync.unary(
2533
+ method=MethodInfo(
2534
+ name="ListFindings",
2535
+ service_name="flowrensic.v1.QueryService",
2536
+ input=flowrensic_dot_v1_dot_finding__pb2.ListFindingsRequest,
2537
+ output=flowrensic_dot_v1_dot_finding__pb2.ListFindingsResponse,
2538
+ idempotency_level=IdempotencyLevel.UNKNOWN,
2539
+ ),
2540
+ function=service.list_findings,
2541
+ ),
2542
+ "/flowrensic.v1.QueryService/ListAlerts": EndpointSync.unary(
2543
+ method=MethodInfo(
2544
+ name="ListAlerts",
2545
+ service_name="flowrensic.v1.QueryService",
2546
+ input=flowrensic_dot_v1_dot_finding__pb2.ListAlertsRequest,
2547
+ output=flowrensic_dot_v1_dot_finding__pb2.ListAlertsResponse,
2548
+ idempotency_level=IdempotencyLevel.UNKNOWN,
2549
+ ),
2550
+ function=service.list_alerts,
2551
+ ),
2552
+ "/flowrensic.v1.QueryService/EngineMetrics": EndpointSync.unary(
2553
+ method=MethodInfo(
2554
+ name="EngineMetrics",
2555
+ service_name="flowrensic.v1.QueryService",
2556
+ input=flowrensic_dot_v1_dot_activity__metrics__pb2.EngineMetricsRequest,
2557
+ output=flowrensic_dot_v1_dot_activity__metrics__pb2.EngineMetricsResponse,
2558
+ idempotency_level=IdempotencyLevel.UNKNOWN,
2559
+ ),
2560
+ function=service.engine_metrics,
2561
+ ),
2562
+ "/flowrensic.v1.QueryService/UpdateRejections": EndpointSync.unary(
2563
+ method=MethodInfo(
2564
+ name="UpdateRejections",
2565
+ service_name="flowrensic.v1.QueryService",
2566
+ input=flowrensic_dot_v1_dot_activity__metrics__pb2.UpdateRejectionsRequest,
2567
+ output=flowrensic_dot_v1_dot_activity__metrics__pb2.UpdateRejectionsResponse,
2568
+ idempotency_level=IdempotencyLevel.UNKNOWN,
2569
+ ),
2570
+ function=service.update_rejections,
2571
+ ),
2572
+ "/flowrensic.v1.QueryService/ListReplayHistories": EndpointSync.unary(
2573
+ method=MethodInfo(
2574
+ name="ListReplayHistories",
2575
+ service_name="flowrensic.v1.QueryService",
2576
+ input=flowrensic_dot_v1_dot_replay__pb2.ListReplayHistoriesRequest,
2577
+ output=flowrensic_dot_v1_dot_replay__pb2.ListReplayHistoriesResponse,
2578
+ idempotency_level=IdempotencyLevel.UNKNOWN,
2579
+ ),
2580
+ function=service.list_replay_histories,
2581
+ ),
2582
+ "/flowrensic.v1.QueryService/ListReplayResults": EndpointSync.unary(
2583
+ method=MethodInfo(
2584
+ name="ListReplayResults",
2585
+ service_name="flowrensic.v1.QueryService",
2586
+ input=flowrensic_dot_v1_dot_replay__pb2.ListReplayResultsRequest,
2587
+ output=flowrensic_dot_v1_dot_replay__pb2.ListReplayResultsResponse,
2588
+ idempotency_level=IdempotencyLevel.UNKNOWN,
2589
+ ),
2590
+ function=service.list_replay_results,
2591
+ ),
2592
+ "/flowrensic.v1.QueryService/ListReplayRequests": EndpointSync.unary(
2593
+ method=MethodInfo(
2594
+ name="ListReplayRequests",
2595
+ service_name="flowrensic.v1.QueryService",
2596
+ input=flowrensic_dot_v1_dot_replay__pb2.ListReplayRequestsRequest,
2597
+ output=flowrensic_dot_v1_dot_replay__pb2.ListReplayRequestsResponse,
2598
+ idempotency_level=IdempotencyLevel.UNKNOWN,
2599
+ ),
2600
+ function=service.list_replay_requests,
2601
+ ),
2602
+ "/flowrensic.v1.QueryService/ListReplaySets": EndpointSync.unary(
2603
+ method=MethodInfo(
2604
+ name="ListReplaySets",
2605
+ service_name="flowrensic.v1.QueryService",
2606
+ input=flowrensic_dot_v1_dot_replay__pb2.ListReplaySetsRequest,
2607
+ output=flowrensic_dot_v1_dot_replay__pb2.ListReplaySetsResponse,
2608
+ idempotency_level=IdempotencyLevel.UNKNOWN,
2609
+ ),
2610
+ function=service.list_replay_sets,
2611
+ ),
2612
+ "/flowrensic.v1.QueryService/GetReplaySet": EndpointSync.unary(
2613
+ method=MethodInfo(
2614
+ name="GetReplaySet",
2615
+ service_name="flowrensic.v1.QueryService",
2616
+ input=flowrensic_dot_v1_dot_replay__pb2.GetReplaySetRequest,
2617
+ output=flowrensic_dot_v1_dot_replay__pb2.GetReplaySetResponse,
2618
+ idempotency_level=IdempotencyLevel.UNKNOWN,
2619
+ ),
2620
+ function=service.get_replay_set,
2621
+ ),
2622
+ "/flowrensic.v1.QueryService/QuarantineHistory": EndpointSync.unary(
2623
+ method=MethodInfo(
2624
+ name="QuarantineHistory",
2625
+ service_name="flowrensic.v1.QueryService",
2626
+ input=flowrensic_dot_v1_dot_replay__pb2.QuarantineHistoryRequest,
2627
+ output=flowrensic_dot_v1_dot_replay__pb2.QuarantineHistoryResponse,
2628
+ idempotency_level=IdempotencyLevel.UNKNOWN,
2629
+ ),
2630
+ function=service.quarantine_history,
2631
+ ),
2632
+ "/flowrensic.v1.QueryService/ReleaseHistory": EndpointSync.unary(
2633
+ method=MethodInfo(
2634
+ name="ReleaseHistory",
2635
+ service_name="flowrensic.v1.QueryService",
2636
+ input=flowrensic_dot_v1_dot_replay__pb2.ReleaseHistoryRequest,
2637
+ output=flowrensic_dot_v1_dot_replay__pb2.ReleaseHistoryResponse,
2638
+ idempotency_level=IdempotencyLevel.UNKNOWN,
2639
+ ),
2640
+ function=service.release_history,
2641
+ ),
2642
+ "/flowrensic.v1.QueryService/ListWorkflowTypes": EndpointSync.unary(
2643
+ method=MethodInfo(
2644
+ name="ListWorkflowTypes",
2645
+ service_name="flowrensic.v1.QueryService",
2646
+ input=flowrensic_dot_v1_dot_workflow__types__pb2.ListWorkflowTypesRequest,
2647
+ output=flowrensic_dot_v1_dot_workflow__types__pb2.ListWorkflowTypesResponse,
2648
+ idempotency_level=IdempotencyLevel.UNKNOWN,
2649
+ ),
2650
+ function=service.list_workflow_types,
2651
+ ),
2652
+ "/flowrensic.v1.QueryService/GetWorkflowType": EndpointSync.unary(
2653
+ method=MethodInfo(
2654
+ name="GetWorkflowType",
2655
+ service_name="flowrensic.v1.QueryService",
2656
+ input=flowrensic_dot_v1_dot_workflow__types__pb2.GetWorkflowTypeRequest,
2657
+ output=flowrensic_dot_v1_dot_workflow__types__pb2.GetWorkflowTypeResponse,
2658
+ idempotency_level=IdempotencyLevel.UNKNOWN,
2659
+ ),
2660
+ function=service.get_workflow_type,
2661
+ ),
2662
+ "/flowrensic.v1.QueryService/ListEphemeralRuns": EndpointSync.unary(
2663
+ method=MethodInfo(
2664
+ name="ListEphemeralRuns",
2665
+ service_name="flowrensic.v1.QueryService",
2666
+ input=flowrensic_dot_v1_dot_ephemeral__run__pb2.ListEphemeralRunsRequest,
2667
+ output=flowrensic_dot_v1_dot_ephemeral__run__pb2.ListEphemeralRunsResponse,
2668
+ idempotency_level=IdempotencyLevel.UNKNOWN,
2669
+ ),
2670
+ function=service.list_ephemeral_runs,
2671
+ ),
2672
+ "/flowrensic.v1.QueryService/ListEphemeralRunSummaries": EndpointSync.unary(
2673
+ method=MethodInfo(
2674
+ name="ListEphemeralRunSummaries",
2675
+ service_name="flowrensic.v1.QueryService",
2676
+ input=flowrensic_dot_v1_dot_ephemeral__run__pb2.ListEphemeralRunSummariesRequest,
2677
+ output=flowrensic_dot_v1_dot_ephemeral__run__pb2.ListEphemeralRunSummariesResponse,
2678
+ idempotency_level=IdempotencyLevel.UNKNOWN,
2679
+ ),
2680
+ function=service.list_ephemeral_run_summaries,
2681
+ ),
2682
+ "/flowrensic.v1.QueryService/DeleteEphemeralRun": EndpointSync.unary(
2683
+ method=MethodInfo(
2684
+ name="DeleteEphemeralRun",
2685
+ service_name="flowrensic.v1.QueryService",
2686
+ input=flowrensic_dot_v1_dot_ephemeral__run__pb2.DeleteEphemeralRunRequest,
2687
+ output=flowrensic_dot_v1_dot_ephemeral__run__pb2.DeleteEphemeralRunResponse,
2688
+ idempotency_level=IdempotencyLevel.UNKNOWN,
2689
+ ),
2690
+ function=service.delete_ephemeral_run,
2691
+ ),
2692
+ "/flowrensic.v1.QueryService/GetEphemeralRunSummary": EndpointSync.unary(
2693
+ method=MethodInfo(
2694
+ name="GetEphemeralRunSummary",
2695
+ service_name="flowrensic.v1.QueryService",
2696
+ input=flowrensic_dot_v1_dot_ephemeral__run__pb2.GetEphemeralRunSummaryRequest,
2697
+ output=flowrensic_dot_v1_dot_ephemeral__run__pb2.GetEphemeralRunSummaryResponse,
2698
+ idempotency_level=IdempotencyLevel.UNKNOWN,
2699
+ ),
2700
+ function=service.get_ephemeral_run_summary,
2701
+ ),
2702
+ "/flowrensic.v1.QueryService/EphemeralRunMetrics": EndpointSync.unary(
2703
+ method=MethodInfo(
2704
+ name="EphemeralRunMetrics",
2705
+ service_name="flowrensic.v1.QueryService",
2706
+ input=flowrensic_dot_v1_dot_ephemeral__run__pb2.EphemeralRunMetricsRequest,
2707
+ output=flowrensic_dot_v1_dot_ephemeral__run__pb2.EphemeralRunMetricsResponse,
2708
+ idempotency_level=IdempotencyLevel.UNKNOWN,
2709
+ ),
2710
+ function=service.ephemeral_run_metrics,
2711
+ ),
2712
+ "/flowrensic.v1.QueryService/WorkerMetrics": EndpointSync.unary(
2713
+ method=MethodInfo(
2714
+ name="WorkerMetrics",
2715
+ service_name="flowrensic.v1.QueryService",
2716
+ input=flowrensic_dot_v1_dot_ephemeral__run__pb2.WorkerMetricsRequest,
2717
+ output=flowrensic_dot_v1_dot_ephemeral__run__pb2.WorkerMetricsResponse,
2718
+ idempotency_level=IdempotencyLevel.UNKNOWN,
2719
+ ),
2720
+ function=service.worker_metrics,
2721
+ ),
2722
+ "/flowrensic.v1.QueryService/CostBreakdown": EndpointSync.unary(
2723
+ method=MethodInfo(
2724
+ name="CostBreakdown",
2725
+ service_name="flowrensic.v1.QueryService",
2726
+ input=flowrensic_dot_v1_dot_cost__pb2.CostBreakdownRequest,
2727
+ output=flowrensic_dot_v1_dot_cost__pb2.CostBreakdownResponse,
2728
+ idempotency_level=IdempotencyLevel.UNKNOWN,
2729
+ ),
2730
+ function=service.cost_breakdown,
2731
+ ),
2732
+ "/flowrensic.v1.QueryService/GetDeployment": EndpointSync.unary(
2733
+ method=MethodInfo(
2734
+ name="GetDeployment",
2735
+ service_name="flowrensic.v1.QueryService",
2736
+ input=flowrensic_dot_v1_dot_deploy__pb2.GetDeploymentRequest,
2737
+ output=flowrensic_dot_v1_dot_deploy__pb2.GetDeploymentResponse,
2738
+ idempotency_level=IdempotencyLevel.UNKNOWN,
2739
+ ),
2740
+ function=service.get_deployment,
2741
+ ),
2742
+ "/flowrensic.v1.QueryService/DeployAttemptCounts": EndpointSync.unary(
2743
+ method=MethodInfo(
2744
+ name="DeployAttemptCounts",
2745
+ service_name="flowrensic.v1.QueryService",
2746
+ input=flowrensic_dot_v1_dot_deploy__pb2.DeployAttemptCountsRequest,
2747
+ output=flowrensic_dot_v1_dot_deploy__pb2.DeployAttemptCountsResponse,
2748
+ idempotency_level=IdempotencyLevel.UNKNOWN,
2749
+ ),
2750
+ function=service.deploy_attempt_counts,
2751
+ ),
2752
+ "/flowrensic.v1.QueryService/ListThresholds": EndpointSync.unary(
2753
+ method=MethodInfo(
2754
+ name="ListThresholds",
2755
+ service_name="flowrensic.v1.QueryService",
2756
+ input=flowrensic_dot_v1_dot_finding__pb2.ListThresholdsRequest,
2757
+ output=flowrensic_dot_v1_dot_finding__pb2.ListThresholdsResponse,
2758
+ idempotency_level=IdempotencyLevel.UNKNOWN,
2759
+ ),
2760
+ function=service.list_thresholds,
2761
+ ),
2762
+ "/flowrensic.v1.QueryService/GetFinding": EndpointSync.unary(
2763
+ method=MethodInfo(
2764
+ name="GetFinding",
2765
+ service_name="flowrensic.v1.QueryService",
2766
+ input=flowrensic_dot_v1_dot_finding__pb2.GetFindingRequest,
2767
+ output=flowrensic_dot_v1_dot_finding__pb2.GetFindingResponse,
2768
+ idempotency_level=IdempotencyLevel.UNKNOWN,
2769
+ ),
2770
+ function=service.get_finding,
2771
+ ),
2772
+ "/flowrensic.v1.QueryService/SetFindingStatus": EndpointSync.unary(
2773
+ method=MethodInfo(
2774
+ name="SetFindingStatus",
2775
+ service_name="flowrensic.v1.QueryService",
2776
+ input=flowrensic_dot_v1_dot_finding__pb2.SetFindingStatusRequest,
2777
+ output=flowrensic_dot_v1_dot_finding__pb2.SetFindingStatusResponse,
2778
+ idempotency_level=IdempotencyLevel.UNKNOWN,
2779
+ ),
2780
+ function=service.set_finding_status,
2781
+ ),
2782
+ "/flowrensic.v1.QueryService/GetServerConfig": EndpointSync.unary(
2783
+ method=MethodInfo(
2784
+ name="GetServerConfig",
2785
+ service_name="flowrensic.v1.QueryService",
2786
+ input=flowrensic_dot_v1_dot_server__config__pb2.GetServerConfigRequest,
2787
+ output=flowrensic_dot_v1_dot_server__config__pb2.GetServerConfigResponse,
2788
+ idempotency_level=IdempotencyLevel.UNKNOWN,
2789
+ ),
2790
+ function=service.get_server_config,
2791
+ ),
2792
+ "/flowrensic.v1.QueryService/GetStoredData": EndpointSync.unary(
2793
+ method=MethodInfo(
2794
+ name="GetStoredData",
2795
+ service_name="flowrensic.v1.QueryService",
2796
+ input=flowrensic_dot_v1_dot_stored__data__pb2.GetStoredDataRequest,
2797
+ output=flowrensic_dot_v1_dot_stored__data__pb2.GetStoredDataResponse,
2798
+ idempotency_level=IdempotencyLevel.UNKNOWN,
2799
+ ),
2800
+ function=service.get_stored_data,
2801
+ ),
2802
+ "/flowrensic.v1.QueryService/GetCatchUp": EndpointSync.unary(
2803
+ method=MethodInfo(
2804
+ name="GetCatchUp",
2805
+ service_name="flowrensic.v1.QueryService",
2806
+ input=flowrensic_dot_v1_dot_catch__up__pb2.GetCatchUpRequest,
2807
+ output=flowrensic_dot_v1_dot_catch__up__pb2.GetCatchUpResponse,
2808
+ idempotency_level=IdempotencyLevel.UNKNOWN,
2809
+ ),
2810
+ function=service.get_catch_up,
2811
+ ),
2812
+ "/flowrensic.v1.QueryService/GetLoad": EndpointSync.unary(
2813
+ method=MethodInfo(
2814
+ name="GetLoad",
2815
+ service_name="flowrensic.v1.QueryService",
2816
+ input=flowrensic_dot_v1_dot_load__pb2.GetLoadRequest,
2817
+ output=flowrensic_dot_v1_dot_load__pb2.GetLoadResponse,
2818
+ idempotency_level=IdempotencyLevel.UNKNOWN,
2819
+ ),
2820
+ function=service.get_load,
2821
+ ),
2822
+ },
2823
+ interceptors=interceptors,
2824
+ read_max_bytes=read_max_bytes,
2825
+ compressions=compressions,
2826
+ )
2827
+
2828
+ @property
2829
+ def path(self) -> str:
2830
+ """Returns the URL path to mount the application to when serving multiple applications."""
2831
+ return "/flowrensic.v1.QueryService"
2832
+
2833
+
2834
+ class QueryServiceClientSync(ConnectClientSync):
2835
+ def activity_stats(
2836
+ self,
2837
+ request: flowrensic_dot_v1_dot_activity__metrics__pb2.ActivityStatsRequest,
2838
+ *,
2839
+ headers: Headers | Mapping[str, str] | None = None,
2840
+ timeout_ms: int | None = None,
2841
+ ) -> flowrensic_dot_v1_dot_activity__metrics__pb2.ActivityStatsResponse:
2842
+ return self.execute_unary(
2843
+ request=request,
2844
+ method=MethodInfo(
2845
+ name="ActivityStats",
2846
+ service_name="flowrensic.v1.QueryService",
2847
+ input=flowrensic_dot_v1_dot_activity__metrics__pb2.ActivityStatsRequest,
2848
+ output=flowrensic_dot_v1_dot_activity__metrics__pb2.ActivityStatsResponse,
2849
+ idempotency_level=IdempotencyLevel.UNKNOWN,
2850
+ ),
2851
+ headers=headers,
2852
+ timeout_ms=timeout_ms,
2853
+ )
2854
+
2855
+ def list_runs(
2856
+ self,
2857
+ request: flowrensic_dot_v1_dot_activity__metrics__pb2.ListRunsRequest,
2858
+ *,
2859
+ headers: Headers | Mapping[str, str] | None = None,
2860
+ timeout_ms: int | None = None,
2861
+ ) -> flowrensic_dot_v1_dot_activity__metrics__pb2.ListRunsResponse:
2862
+ return self.execute_unary(
2863
+ request=request,
2864
+ method=MethodInfo(
2865
+ name="ListRuns",
2866
+ service_name="flowrensic.v1.QueryService",
2867
+ input=flowrensic_dot_v1_dot_activity__metrics__pb2.ListRunsRequest,
2868
+ output=flowrensic_dot_v1_dot_activity__metrics__pb2.ListRunsResponse,
2869
+ idempotency_level=IdempotencyLevel.UNKNOWN,
2870
+ ),
2871
+ headers=headers,
2872
+ timeout_ms=timeout_ms,
2873
+ )
2874
+
2875
+ def list_findings(
2876
+ self,
2877
+ request: flowrensic_dot_v1_dot_finding__pb2.ListFindingsRequest,
2878
+ *,
2879
+ headers: Headers | Mapping[str, str] | None = None,
2880
+ timeout_ms: int | None = None,
2881
+ ) -> flowrensic_dot_v1_dot_finding__pb2.ListFindingsResponse:
2882
+ return self.execute_unary(
2883
+ request=request,
2884
+ method=MethodInfo(
2885
+ name="ListFindings",
2886
+ service_name="flowrensic.v1.QueryService",
2887
+ input=flowrensic_dot_v1_dot_finding__pb2.ListFindingsRequest,
2888
+ output=flowrensic_dot_v1_dot_finding__pb2.ListFindingsResponse,
2889
+ idempotency_level=IdempotencyLevel.UNKNOWN,
2890
+ ),
2891
+ headers=headers,
2892
+ timeout_ms=timeout_ms,
2893
+ )
2894
+
2895
+ def list_alerts(
2896
+ self,
2897
+ request: flowrensic_dot_v1_dot_finding__pb2.ListAlertsRequest,
2898
+ *,
2899
+ headers: Headers | Mapping[str, str] | None = None,
2900
+ timeout_ms: int | None = None,
2901
+ ) -> flowrensic_dot_v1_dot_finding__pb2.ListAlertsResponse:
2902
+ return self.execute_unary(
2903
+ request=request,
2904
+ method=MethodInfo(
2905
+ name="ListAlerts",
2906
+ service_name="flowrensic.v1.QueryService",
2907
+ input=flowrensic_dot_v1_dot_finding__pb2.ListAlertsRequest,
2908
+ output=flowrensic_dot_v1_dot_finding__pb2.ListAlertsResponse,
2909
+ idempotency_level=IdempotencyLevel.UNKNOWN,
2910
+ ),
2911
+ headers=headers,
2912
+ timeout_ms=timeout_ms,
2913
+ )
2914
+
2915
+ def engine_metrics(
2916
+ self,
2917
+ request: flowrensic_dot_v1_dot_activity__metrics__pb2.EngineMetricsRequest,
2918
+ *,
2919
+ headers: Headers | Mapping[str, str] | None = None,
2920
+ timeout_ms: int | None = None,
2921
+ ) -> flowrensic_dot_v1_dot_activity__metrics__pb2.EngineMetricsResponse:
2922
+ return self.execute_unary(
2923
+ request=request,
2924
+ method=MethodInfo(
2925
+ name="EngineMetrics",
2926
+ service_name="flowrensic.v1.QueryService",
2927
+ input=flowrensic_dot_v1_dot_activity__metrics__pb2.EngineMetricsRequest,
2928
+ output=flowrensic_dot_v1_dot_activity__metrics__pb2.EngineMetricsResponse,
2929
+ idempotency_level=IdempotencyLevel.UNKNOWN,
2930
+ ),
2931
+ headers=headers,
2932
+ timeout_ms=timeout_ms,
2933
+ )
2934
+
2935
+ def update_rejections(
2936
+ self,
2937
+ request: flowrensic_dot_v1_dot_activity__metrics__pb2.UpdateRejectionsRequest,
2938
+ *,
2939
+ headers: Headers | Mapping[str, str] | None = None,
2940
+ timeout_ms: int | None = None,
2941
+ ) -> flowrensic_dot_v1_dot_activity__metrics__pb2.UpdateRejectionsResponse:
2942
+ return self.execute_unary(
2943
+ request=request,
2944
+ method=MethodInfo(
2945
+ name="UpdateRejections",
2946
+ service_name="flowrensic.v1.QueryService",
2947
+ input=flowrensic_dot_v1_dot_activity__metrics__pb2.UpdateRejectionsRequest,
2948
+ output=flowrensic_dot_v1_dot_activity__metrics__pb2.UpdateRejectionsResponse,
2949
+ idempotency_level=IdempotencyLevel.UNKNOWN,
2950
+ ),
2951
+ headers=headers,
2952
+ timeout_ms=timeout_ms,
2953
+ )
2954
+
2955
+ def list_replay_histories(
2956
+ self,
2957
+ request: flowrensic_dot_v1_dot_replay__pb2.ListReplayHistoriesRequest,
2958
+ *,
2959
+ headers: Headers | Mapping[str, str] | None = None,
2960
+ timeout_ms: int | None = None,
2961
+ ) -> flowrensic_dot_v1_dot_replay__pb2.ListReplayHistoriesResponse:
2962
+ return self.execute_unary(
2963
+ request=request,
2964
+ method=MethodInfo(
2965
+ name="ListReplayHistories",
2966
+ service_name="flowrensic.v1.QueryService",
2967
+ input=flowrensic_dot_v1_dot_replay__pb2.ListReplayHistoriesRequest,
2968
+ output=flowrensic_dot_v1_dot_replay__pb2.ListReplayHistoriesResponse,
2969
+ idempotency_level=IdempotencyLevel.UNKNOWN,
2970
+ ),
2971
+ headers=headers,
2972
+ timeout_ms=timeout_ms,
2973
+ )
2974
+
2975
+ def list_replay_results(
2976
+ self,
2977
+ request: flowrensic_dot_v1_dot_replay__pb2.ListReplayResultsRequest,
2978
+ *,
2979
+ headers: Headers | Mapping[str, str] | None = None,
2980
+ timeout_ms: int | None = None,
2981
+ ) -> flowrensic_dot_v1_dot_replay__pb2.ListReplayResultsResponse:
2982
+ return self.execute_unary(
2983
+ request=request,
2984
+ method=MethodInfo(
2985
+ name="ListReplayResults",
2986
+ service_name="flowrensic.v1.QueryService",
2987
+ input=flowrensic_dot_v1_dot_replay__pb2.ListReplayResultsRequest,
2988
+ output=flowrensic_dot_v1_dot_replay__pb2.ListReplayResultsResponse,
2989
+ idempotency_level=IdempotencyLevel.UNKNOWN,
2990
+ ),
2991
+ headers=headers,
2992
+ timeout_ms=timeout_ms,
2993
+ )
2994
+
2995
+ def list_replay_requests(
2996
+ self,
2997
+ request: flowrensic_dot_v1_dot_replay__pb2.ListReplayRequestsRequest,
2998
+ *,
2999
+ headers: Headers | Mapping[str, str] | None = None,
3000
+ timeout_ms: int | None = None,
3001
+ ) -> flowrensic_dot_v1_dot_replay__pb2.ListReplayRequestsResponse:
3002
+ return self.execute_unary(
3003
+ request=request,
3004
+ method=MethodInfo(
3005
+ name="ListReplayRequests",
3006
+ service_name="flowrensic.v1.QueryService",
3007
+ input=flowrensic_dot_v1_dot_replay__pb2.ListReplayRequestsRequest,
3008
+ output=flowrensic_dot_v1_dot_replay__pb2.ListReplayRequestsResponse,
3009
+ idempotency_level=IdempotencyLevel.UNKNOWN,
3010
+ ),
3011
+ headers=headers,
3012
+ timeout_ms=timeout_ms,
3013
+ )
3014
+
3015
+ def list_replay_sets(
3016
+ self,
3017
+ request: flowrensic_dot_v1_dot_replay__pb2.ListReplaySetsRequest,
3018
+ *,
3019
+ headers: Headers | Mapping[str, str] | None = None,
3020
+ timeout_ms: int | None = None,
3021
+ ) -> flowrensic_dot_v1_dot_replay__pb2.ListReplaySetsResponse:
3022
+ return self.execute_unary(
3023
+ request=request,
3024
+ method=MethodInfo(
3025
+ name="ListReplaySets",
3026
+ service_name="flowrensic.v1.QueryService",
3027
+ input=flowrensic_dot_v1_dot_replay__pb2.ListReplaySetsRequest,
3028
+ output=flowrensic_dot_v1_dot_replay__pb2.ListReplaySetsResponse,
3029
+ idempotency_level=IdempotencyLevel.UNKNOWN,
3030
+ ),
3031
+ headers=headers,
3032
+ timeout_ms=timeout_ms,
3033
+ )
3034
+
3035
+ def get_replay_set(
3036
+ self,
3037
+ request: flowrensic_dot_v1_dot_replay__pb2.GetReplaySetRequest,
3038
+ *,
3039
+ headers: Headers | Mapping[str, str] | None = None,
3040
+ timeout_ms: int | None = None,
3041
+ ) -> flowrensic_dot_v1_dot_replay__pb2.GetReplaySetResponse:
3042
+ return self.execute_unary(
3043
+ request=request,
3044
+ method=MethodInfo(
3045
+ name="GetReplaySet",
3046
+ service_name="flowrensic.v1.QueryService",
3047
+ input=flowrensic_dot_v1_dot_replay__pb2.GetReplaySetRequest,
3048
+ output=flowrensic_dot_v1_dot_replay__pb2.GetReplaySetResponse,
3049
+ idempotency_level=IdempotencyLevel.UNKNOWN,
3050
+ ),
3051
+ headers=headers,
3052
+ timeout_ms=timeout_ms,
3053
+ )
3054
+
3055
+ def quarantine_history(
3056
+ self,
3057
+ request: flowrensic_dot_v1_dot_replay__pb2.QuarantineHistoryRequest,
3058
+ *,
3059
+ headers: Headers | Mapping[str, str] | None = None,
3060
+ timeout_ms: int | None = None,
3061
+ ) -> flowrensic_dot_v1_dot_replay__pb2.QuarantineHistoryResponse:
3062
+ return self.execute_unary(
3063
+ request=request,
3064
+ method=MethodInfo(
3065
+ name="QuarantineHistory",
3066
+ service_name="flowrensic.v1.QueryService",
3067
+ input=flowrensic_dot_v1_dot_replay__pb2.QuarantineHistoryRequest,
3068
+ output=flowrensic_dot_v1_dot_replay__pb2.QuarantineHistoryResponse,
3069
+ idempotency_level=IdempotencyLevel.UNKNOWN,
3070
+ ),
3071
+ headers=headers,
3072
+ timeout_ms=timeout_ms,
3073
+ )
3074
+
3075
+ def release_history(
3076
+ self,
3077
+ request: flowrensic_dot_v1_dot_replay__pb2.ReleaseHistoryRequest,
3078
+ *,
3079
+ headers: Headers | Mapping[str, str] | None = None,
3080
+ timeout_ms: int | None = None,
3081
+ ) -> flowrensic_dot_v1_dot_replay__pb2.ReleaseHistoryResponse:
3082
+ return self.execute_unary(
3083
+ request=request,
3084
+ method=MethodInfo(
3085
+ name="ReleaseHistory",
3086
+ service_name="flowrensic.v1.QueryService",
3087
+ input=flowrensic_dot_v1_dot_replay__pb2.ReleaseHistoryRequest,
3088
+ output=flowrensic_dot_v1_dot_replay__pb2.ReleaseHistoryResponse,
3089
+ idempotency_level=IdempotencyLevel.UNKNOWN,
3090
+ ),
3091
+ headers=headers,
3092
+ timeout_ms=timeout_ms,
3093
+ )
3094
+
3095
+ def list_workflow_types(
3096
+ self,
3097
+ request: flowrensic_dot_v1_dot_workflow__types__pb2.ListWorkflowTypesRequest,
3098
+ *,
3099
+ headers: Headers | Mapping[str, str] | None = None,
3100
+ timeout_ms: int | None = None,
3101
+ ) -> flowrensic_dot_v1_dot_workflow__types__pb2.ListWorkflowTypesResponse:
3102
+ return self.execute_unary(
3103
+ request=request,
3104
+ method=MethodInfo(
3105
+ name="ListWorkflowTypes",
3106
+ service_name="flowrensic.v1.QueryService",
3107
+ input=flowrensic_dot_v1_dot_workflow__types__pb2.ListWorkflowTypesRequest,
3108
+ output=flowrensic_dot_v1_dot_workflow__types__pb2.ListWorkflowTypesResponse,
3109
+ idempotency_level=IdempotencyLevel.UNKNOWN,
3110
+ ),
3111
+ headers=headers,
3112
+ timeout_ms=timeout_ms,
3113
+ )
3114
+
3115
+ def get_workflow_type(
3116
+ self,
3117
+ request: flowrensic_dot_v1_dot_workflow__types__pb2.GetWorkflowTypeRequest,
3118
+ *,
3119
+ headers: Headers | Mapping[str, str] | None = None,
3120
+ timeout_ms: int | None = None,
3121
+ ) -> flowrensic_dot_v1_dot_workflow__types__pb2.GetWorkflowTypeResponse:
3122
+ return self.execute_unary(
3123
+ request=request,
3124
+ method=MethodInfo(
3125
+ name="GetWorkflowType",
3126
+ service_name="flowrensic.v1.QueryService",
3127
+ input=flowrensic_dot_v1_dot_workflow__types__pb2.GetWorkflowTypeRequest,
3128
+ output=flowrensic_dot_v1_dot_workflow__types__pb2.GetWorkflowTypeResponse,
3129
+ idempotency_level=IdempotencyLevel.UNKNOWN,
3130
+ ),
3131
+ headers=headers,
3132
+ timeout_ms=timeout_ms,
3133
+ )
3134
+
3135
+ def list_ephemeral_runs(
3136
+ self,
3137
+ request: flowrensic_dot_v1_dot_ephemeral__run__pb2.ListEphemeralRunsRequest,
3138
+ *,
3139
+ headers: Headers | Mapping[str, str] | None = None,
3140
+ timeout_ms: int | None = None,
3141
+ ) -> flowrensic_dot_v1_dot_ephemeral__run__pb2.ListEphemeralRunsResponse:
3142
+ return self.execute_unary(
3143
+ request=request,
3144
+ method=MethodInfo(
3145
+ name="ListEphemeralRuns",
3146
+ service_name="flowrensic.v1.QueryService",
3147
+ input=flowrensic_dot_v1_dot_ephemeral__run__pb2.ListEphemeralRunsRequest,
3148
+ output=flowrensic_dot_v1_dot_ephemeral__run__pb2.ListEphemeralRunsResponse,
3149
+ idempotency_level=IdempotencyLevel.UNKNOWN,
3150
+ ),
3151
+ headers=headers,
3152
+ timeout_ms=timeout_ms,
3153
+ )
3154
+
3155
+ def list_ephemeral_run_summaries(
3156
+ self,
3157
+ request: flowrensic_dot_v1_dot_ephemeral__run__pb2.ListEphemeralRunSummariesRequest,
3158
+ *,
3159
+ headers: Headers | Mapping[str, str] | None = None,
3160
+ timeout_ms: int | None = None,
3161
+ ) -> flowrensic_dot_v1_dot_ephemeral__run__pb2.ListEphemeralRunSummariesResponse:
3162
+ return self.execute_unary(
3163
+ request=request,
3164
+ method=MethodInfo(
3165
+ name="ListEphemeralRunSummaries",
3166
+ service_name="flowrensic.v1.QueryService",
3167
+ input=flowrensic_dot_v1_dot_ephemeral__run__pb2.ListEphemeralRunSummariesRequest,
3168
+ output=flowrensic_dot_v1_dot_ephemeral__run__pb2.ListEphemeralRunSummariesResponse,
3169
+ idempotency_level=IdempotencyLevel.UNKNOWN,
3170
+ ),
3171
+ headers=headers,
3172
+ timeout_ms=timeout_ms,
3173
+ )
3174
+
3175
+ def delete_ephemeral_run(
3176
+ self,
3177
+ request: flowrensic_dot_v1_dot_ephemeral__run__pb2.DeleteEphemeralRunRequest,
3178
+ *,
3179
+ headers: Headers | Mapping[str, str] | None = None,
3180
+ timeout_ms: int | None = None,
3181
+ ) -> flowrensic_dot_v1_dot_ephemeral__run__pb2.DeleteEphemeralRunResponse:
3182
+ return self.execute_unary(
3183
+ request=request,
3184
+ method=MethodInfo(
3185
+ name="DeleteEphemeralRun",
3186
+ service_name="flowrensic.v1.QueryService",
3187
+ input=flowrensic_dot_v1_dot_ephemeral__run__pb2.DeleteEphemeralRunRequest,
3188
+ output=flowrensic_dot_v1_dot_ephemeral__run__pb2.DeleteEphemeralRunResponse,
3189
+ idempotency_level=IdempotencyLevel.UNKNOWN,
3190
+ ),
3191
+ headers=headers,
3192
+ timeout_ms=timeout_ms,
3193
+ )
3194
+
3195
+ def get_ephemeral_run_summary(
3196
+ self,
3197
+ request: flowrensic_dot_v1_dot_ephemeral__run__pb2.GetEphemeralRunSummaryRequest,
3198
+ *,
3199
+ headers: Headers | Mapping[str, str] | None = None,
3200
+ timeout_ms: int | None = None,
3201
+ ) -> flowrensic_dot_v1_dot_ephemeral__run__pb2.GetEphemeralRunSummaryResponse:
3202
+ return self.execute_unary(
3203
+ request=request,
3204
+ method=MethodInfo(
3205
+ name="GetEphemeralRunSummary",
3206
+ service_name="flowrensic.v1.QueryService",
3207
+ input=flowrensic_dot_v1_dot_ephemeral__run__pb2.GetEphemeralRunSummaryRequest,
3208
+ output=flowrensic_dot_v1_dot_ephemeral__run__pb2.GetEphemeralRunSummaryResponse,
3209
+ idempotency_level=IdempotencyLevel.UNKNOWN,
3210
+ ),
3211
+ headers=headers,
3212
+ timeout_ms=timeout_ms,
3213
+ )
3214
+
3215
+ def ephemeral_run_metrics(
3216
+ self,
3217
+ request: flowrensic_dot_v1_dot_ephemeral__run__pb2.EphemeralRunMetricsRequest,
3218
+ *,
3219
+ headers: Headers | Mapping[str, str] | None = None,
3220
+ timeout_ms: int | None = None,
3221
+ ) -> flowrensic_dot_v1_dot_ephemeral__run__pb2.EphemeralRunMetricsResponse:
3222
+ return self.execute_unary(
3223
+ request=request,
3224
+ method=MethodInfo(
3225
+ name="EphemeralRunMetrics",
3226
+ service_name="flowrensic.v1.QueryService",
3227
+ input=flowrensic_dot_v1_dot_ephemeral__run__pb2.EphemeralRunMetricsRequest,
3228
+ output=flowrensic_dot_v1_dot_ephemeral__run__pb2.EphemeralRunMetricsResponse,
3229
+ idempotency_level=IdempotencyLevel.UNKNOWN,
3230
+ ),
3231
+ headers=headers,
3232
+ timeout_ms=timeout_ms,
3233
+ )
3234
+
3235
+ def worker_metrics(
3236
+ self,
3237
+ request: flowrensic_dot_v1_dot_ephemeral__run__pb2.WorkerMetricsRequest,
3238
+ *,
3239
+ headers: Headers | Mapping[str, str] | None = None,
3240
+ timeout_ms: int | None = None,
3241
+ ) -> flowrensic_dot_v1_dot_ephemeral__run__pb2.WorkerMetricsResponse:
3242
+ return self.execute_unary(
3243
+ request=request,
3244
+ method=MethodInfo(
3245
+ name="WorkerMetrics",
3246
+ service_name="flowrensic.v1.QueryService",
3247
+ input=flowrensic_dot_v1_dot_ephemeral__run__pb2.WorkerMetricsRequest,
3248
+ output=flowrensic_dot_v1_dot_ephemeral__run__pb2.WorkerMetricsResponse,
3249
+ idempotency_level=IdempotencyLevel.UNKNOWN,
3250
+ ),
3251
+ headers=headers,
3252
+ timeout_ms=timeout_ms,
3253
+ )
3254
+
3255
+ def cost_breakdown(
3256
+ self,
3257
+ request: flowrensic_dot_v1_dot_cost__pb2.CostBreakdownRequest,
3258
+ *,
3259
+ headers: Headers | Mapping[str, str] | None = None,
3260
+ timeout_ms: int | None = None,
3261
+ ) -> flowrensic_dot_v1_dot_cost__pb2.CostBreakdownResponse:
3262
+ return self.execute_unary(
3263
+ request=request,
3264
+ method=MethodInfo(
3265
+ name="CostBreakdown",
3266
+ service_name="flowrensic.v1.QueryService",
3267
+ input=flowrensic_dot_v1_dot_cost__pb2.CostBreakdownRequest,
3268
+ output=flowrensic_dot_v1_dot_cost__pb2.CostBreakdownResponse,
3269
+ idempotency_level=IdempotencyLevel.UNKNOWN,
3270
+ ),
3271
+ headers=headers,
3272
+ timeout_ms=timeout_ms,
3273
+ )
3274
+
3275
+ def get_deployment(
3276
+ self,
3277
+ request: flowrensic_dot_v1_dot_deploy__pb2.GetDeploymentRequest,
3278
+ *,
3279
+ headers: Headers | Mapping[str, str] | None = None,
3280
+ timeout_ms: int | None = None,
3281
+ ) -> flowrensic_dot_v1_dot_deploy__pb2.GetDeploymentResponse:
3282
+ return self.execute_unary(
3283
+ request=request,
3284
+ method=MethodInfo(
3285
+ name="GetDeployment",
3286
+ service_name="flowrensic.v1.QueryService",
3287
+ input=flowrensic_dot_v1_dot_deploy__pb2.GetDeploymentRequest,
3288
+ output=flowrensic_dot_v1_dot_deploy__pb2.GetDeploymentResponse,
3289
+ idempotency_level=IdempotencyLevel.UNKNOWN,
3290
+ ),
3291
+ headers=headers,
3292
+ timeout_ms=timeout_ms,
3293
+ )
3294
+
3295
+ def deploy_attempt_counts(
3296
+ self,
3297
+ request: flowrensic_dot_v1_dot_deploy__pb2.DeployAttemptCountsRequest,
3298
+ *,
3299
+ headers: Headers | Mapping[str, str] | None = None,
3300
+ timeout_ms: int | None = None,
3301
+ ) -> flowrensic_dot_v1_dot_deploy__pb2.DeployAttemptCountsResponse:
3302
+ return self.execute_unary(
3303
+ request=request,
3304
+ method=MethodInfo(
3305
+ name="DeployAttemptCounts",
3306
+ service_name="flowrensic.v1.QueryService",
3307
+ input=flowrensic_dot_v1_dot_deploy__pb2.DeployAttemptCountsRequest,
3308
+ output=flowrensic_dot_v1_dot_deploy__pb2.DeployAttemptCountsResponse,
3309
+ idempotency_level=IdempotencyLevel.UNKNOWN,
3310
+ ),
3311
+ headers=headers,
3312
+ timeout_ms=timeout_ms,
3313
+ )
3314
+
3315
+ def list_thresholds(
3316
+ self,
3317
+ request: flowrensic_dot_v1_dot_finding__pb2.ListThresholdsRequest,
3318
+ *,
3319
+ headers: Headers | Mapping[str, str] | None = None,
3320
+ timeout_ms: int | None = None,
3321
+ ) -> flowrensic_dot_v1_dot_finding__pb2.ListThresholdsResponse:
3322
+ return self.execute_unary(
3323
+ request=request,
3324
+ method=MethodInfo(
3325
+ name="ListThresholds",
3326
+ service_name="flowrensic.v1.QueryService",
3327
+ input=flowrensic_dot_v1_dot_finding__pb2.ListThresholdsRequest,
3328
+ output=flowrensic_dot_v1_dot_finding__pb2.ListThresholdsResponse,
3329
+ idempotency_level=IdempotencyLevel.UNKNOWN,
3330
+ ),
3331
+ headers=headers,
3332
+ timeout_ms=timeout_ms,
3333
+ )
3334
+
3335
+ def get_finding(
3336
+ self,
3337
+ request: flowrensic_dot_v1_dot_finding__pb2.GetFindingRequest,
3338
+ *,
3339
+ headers: Headers | Mapping[str, str] | None = None,
3340
+ timeout_ms: int | None = None,
3341
+ ) -> flowrensic_dot_v1_dot_finding__pb2.GetFindingResponse:
3342
+ return self.execute_unary(
3343
+ request=request,
3344
+ method=MethodInfo(
3345
+ name="GetFinding",
3346
+ service_name="flowrensic.v1.QueryService",
3347
+ input=flowrensic_dot_v1_dot_finding__pb2.GetFindingRequest,
3348
+ output=flowrensic_dot_v1_dot_finding__pb2.GetFindingResponse,
3349
+ idempotency_level=IdempotencyLevel.UNKNOWN,
3350
+ ),
3351
+ headers=headers,
3352
+ timeout_ms=timeout_ms,
3353
+ )
3354
+
3355
+ def set_finding_status(
3356
+ self,
3357
+ request: flowrensic_dot_v1_dot_finding__pb2.SetFindingStatusRequest,
3358
+ *,
3359
+ headers: Headers | Mapping[str, str] | None = None,
3360
+ timeout_ms: int | None = None,
3361
+ ) -> flowrensic_dot_v1_dot_finding__pb2.SetFindingStatusResponse:
3362
+ return self.execute_unary(
3363
+ request=request,
3364
+ method=MethodInfo(
3365
+ name="SetFindingStatus",
3366
+ service_name="flowrensic.v1.QueryService",
3367
+ input=flowrensic_dot_v1_dot_finding__pb2.SetFindingStatusRequest,
3368
+ output=flowrensic_dot_v1_dot_finding__pb2.SetFindingStatusResponse,
3369
+ idempotency_level=IdempotencyLevel.UNKNOWN,
3370
+ ),
3371
+ headers=headers,
3372
+ timeout_ms=timeout_ms,
3373
+ )
3374
+
3375
+ def get_server_config(
3376
+ self,
3377
+ request: flowrensic_dot_v1_dot_server__config__pb2.GetServerConfigRequest,
3378
+ *,
3379
+ headers: Headers | Mapping[str, str] | None = None,
3380
+ timeout_ms: int | None = None,
3381
+ ) -> flowrensic_dot_v1_dot_server__config__pb2.GetServerConfigResponse:
3382
+ return self.execute_unary(
3383
+ request=request,
3384
+ method=MethodInfo(
3385
+ name="GetServerConfig",
3386
+ service_name="flowrensic.v1.QueryService",
3387
+ input=flowrensic_dot_v1_dot_server__config__pb2.GetServerConfigRequest,
3388
+ output=flowrensic_dot_v1_dot_server__config__pb2.GetServerConfigResponse,
3389
+ idempotency_level=IdempotencyLevel.UNKNOWN,
3390
+ ),
3391
+ headers=headers,
3392
+ timeout_ms=timeout_ms,
3393
+ )
3394
+
3395
+ def get_stored_data(
3396
+ self,
3397
+ request: flowrensic_dot_v1_dot_stored__data__pb2.GetStoredDataRequest,
3398
+ *,
3399
+ headers: Headers | Mapping[str, str] | None = None,
3400
+ timeout_ms: int | None = None,
3401
+ ) -> flowrensic_dot_v1_dot_stored__data__pb2.GetStoredDataResponse:
3402
+ return self.execute_unary(
3403
+ request=request,
3404
+ method=MethodInfo(
3405
+ name="GetStoredData",
3406
+ service_name="flowrensic.v1.QueryService",
3407
+ input=flowrensic_dot_v1_dot_stored__data__pb2.GetStoredDataRequest,
3408
+ output=flowrensic_dot_v1_dot_stored__data__pb2.GetStoredDataResponse,
3409
+ idempotency_level=IdempotencyLevel.UNKNOWN,
3410
+ ),
3411
+ headers=headers,
3412
+ timeout_ms=timeout_ms,
3413
+ )
3414
+
3415
+ def get_catch_up(
3416
+ self,
3417
+ request: flowrensic_dot_v1_dot_catch__up__pb2.GetCatchUpRequest,
3418
+ *,
3419
+ headers: Headers | Mapping[str, str] | None = None,
3420
+ timeout_ms: int | None = None,
3421
+ ) -> flowrensic_dot_v1_dot_catch__up__pb2.GetCatchUpResponse:
3422
+ return self.execute_unary(
3423
+ request=request,
3424
+ method=MethodInfo(
3425
+ name="GetCatchUp",
3426
+ service_name="flowrensic.v1.QueryService",
3427
+ input=flowrensic_dot_v1_dot_catch__up__pb2.GetCatchUpRequest,
3428
+ output=flowrensic_dot_v1_dot_catch__up__pb2.GetCatchUpResponse,
3429
+ idempotency_level=IdempotencyLevel.UNKNOWN,
3430
+ ),
3431
+ headers=headers,
3432
+ timeout_ms=timeout_ms,
3433
+ )
3434
+
3435
+ def get_load(
3436
+ self,
3437
+ request: flowrensic_dot_v1_dot_load__pb2.GetLoadRequest,
3438
+ *,
3439
+ headers: Headers | Mapping[str, str] | None = None,
3440
+ timeout_ms: int | None = None,
3441
+ ) -> flowrensic_dot_v1_dot_load__pb2.GetLoadResponse:
3442
+ return self.execute_unary(
3443
+ request=request,
3444
+ method=MethodInfo(
3445
+ name="GetLoad",
3446
+ service_name="flowrensic.v1.QueryService",
3447
+ input=flowrensic_dot_v1_dot_load__pb2.GetLoadRequest,
3448
+ output=flowrensic_dot_v1_dot_load__pb2.GetLoadResponse,
3449
+ idempotency_level=IdempotencyLevel.UNKNOWN,
3450
+ ),
3451
+ headers=headers,
3452
+ timeout_ms=timeout_ms,
3453
+ )
3454
+
3455
+ class RemediationServiceSync(Protocol):
3456
+ def remediation_plan(self, request: flowrensic_dot_v1_dot_remediation__pb2.RemediationPlanRequest, ctx: RequestContext) -> flowrensic_dot_v1_dot_remediation__pb2.RemediationPlanResponse:
3457
+ raise ConnectError(Code.UNIMPLEMENTED, "Not implemented")
3458
+ def remediate(self, request: flowrensic_dot_v1_dot_remediation__pb2.RemediateRequest, ctx: RequestContext) -> flowrensic_dot_v1_dot_remediation__pb2.RemediateResponse:
3459
+ raise ConnectError(Code.UNIMPLEMENTED, "Not implemented")
3460
+ def list_remediations(self, request: flowrensic_dot_v1_dot_remediation__pb2.ListRemediationsRequest, ctx: RequestContext) -> flowrensic_dot_v1_dot_remediation__pb2.ListRemediationsResponse:
3461
+ raise ConnectError(Code.UNIMPLEMENTED, "Not implemented")
3462
+
3463
+
3464
+ class RemediationServiceWSGIApplication(ConnectWSGIApplication):
3465
+ def __init__(self, service: RemediationServiceSync, interceptors: Iterable[InterceptorSync]=(), read_max_bytes: int | None = None, compressions: Iterable[Compression] | None = None) -> None:
3466
+ super().__init__(
3467
+ endpoints={
3468
+ "/flowrensic.v1.RemediationService/RemediationPlan": EndpointSync.unary(
3469
+ method=MethodInfo(
3470
+ name="RemediationPlan",
3471
+ service_name="flowrensic.v1.RemediationService",
3472
+ input=flowrensic_dot_v1_dot_remediation__pb2.RemediationPlanRequest,
3473
+ output=flowrensic_dot_v1_dot_remediation__pb2.RemediationPlanResponse,
3474
+ idempotency_level=IdempotencyLevel.UNKNOWN,
3475
+ ),
3476
+ function=service.remediation_plan,
3477
+ ),
3478
+ "/flowrensic.v1.RemediationService/Remediate": EndpointSync.unary(
3479
+ method=MethodInfo(
3480
+ name="Remediate",
3481
+ service_name="flowrensic.v1.RemediationService",
3482
+ input=flowrensic_dot_v1_dot_remediation__pb2.RemediateRequest,
3483
+ output=flowrensic_dot_v1_dot_remediation__pb2.RemediateResponse,
3484
+ idempotency_level=IdempotencyLevel.UNKNOWN,
3485
+ ),
3486
+ function=service.remediate,
3487
+ ),
3488
+ "/flowrensic.v1.RemediationService/ListRemediations": EndpointSync.unary(
3489
+ method=MethodInfo(
3490
+ name="ListRemediations",
3491
+ service_name="flowrensic.v1.RemediationService",
3492
+ input=flowrensic_dot_v1_dot_remediation__pb2.ListRemediationsRequest,
3493
+ output=flowrensic_dot_v1_dot_remediation__pb2.ListRemediationsResponse,
3494
+ idempotency_level=IdempotencyLevel.UNKNOWN,
3495
+ ),
3496
+ function=service.list_remediations,
3497
+ ),
3498
+ },
3499
+ interceptors=interceptors,
3500
+ read_max_bytes=read_max_bytes,
3501
+ compressions=compressions,
3502
+ )
3503
+
3504
+ @property
3505
+ def path(self) -> str:
3506
+ """Returns the URL path to mount the application to when serving multiple applications."""
3507
+ return "/flowrensic.v1.RemediationService"
3508
+
3509
+
3510
+ class RemediationServiceClientSync(ConnectClientSync):
3511
+ def remediation_plan(
3512
+ self,
3513
+ request: flowrensic_dot_v1_dot_remediation__pb2.RemediationPlanRequest,
3514
+ *,
3515
+ headers: Headers | Mapping[str, str] | None = None,
3516
+ timeout_ms: int | None = None,
3517
+ ) -> flowrensic_dot_v1_dot_remediation__pb2.RemediationPlanResponse:
3518
+ return self.execute_unary(
3519
+ request=request,
3520
+ method=MethodInfo(
3521
+ name="RemediationPlan",
3522
+ service_name="flowrensic.v1.RemediationService",
3523
+ input=flowrensic_dot_v1_dot_remediation__pb2.RemediationPlanRequest,
3524
+ output=flowrensic_dot_v1_dot_remediation__pb2.RemediationPlanResponse,
3525
+ idempotency_level=IdempotencyLevel.UNKNOWN,
3526
+ ),
3527
+ headers=headers,
3528
+ timeout_ms=timeout_ms,
3529
+ )
3530
+
3531
+ def remediate(
3532
+ self,
3533
+ request: flowrensic_dot_v1_dot_remediation__pb2.RemediateRequest,
3534
+ *,
3535
+ headers: Headers | Mapping[str, str] | None = None,
3536
+ timeout_ms: int | None = None,
3537
+ ) -> flowrensic_dot_v1_dot_remediation__pb2.RemediateResponse:
3538
+ return self.execute_unary(
3539
+ request=request,
3540
+ method=MethodInfo(
3541
+ name="Remediate",
3542
+ service_name="flowrensic.v1.RemediationService",
3543
+ input=flowrensic_dot_v1_dot_remediation__pb2.RemediateRequest,
3544
+ output=flowrensic_dot_v1_dot_remediation__pb2.RemediateResponse,
3545
+ idempotency_level=IdempotencyLevel.UNKNOWN,
3546
+ ),
3547
+ headers=headers,
3548
+ timeout_ms=timeout_ms,
3549
+ )
3550
+
3551
+ def list_remediations(
3552
+ self,
3553
+ request: flowrensic_dot_v1_dot_remediation__pb2.ListRemediationsRequest,
3554
+ *,
3555
+ headers: Headers | Mapping[str, str] | None = None,
3556
+ timeout_ms: int | None = None,
3557
+ ) -> flowrensic_dot_v1_dot_remediation__pb2.ListRemediationsResponse:
3558
+ return self.execute_unary(
3559
+ request=request,
3560
+ method=MethodInfo(
3561
+ name="ListRemediations",
3562
+ service_name="flowrensic.v1.RemediationService",
3563
+ input=flowrensic_dot_v1_dot_remediation__pb2.ListRemediationsRequest,
3564
+ output=flowrensic_dot_v1_dot_remediation__pb2.ListRemediationsResponse,
3565
+ idempotency_level=IdempotencyLevel.UNKNOWN,
3566
+ ),
3567
+ headers=headers,
3568
+ timeout_ms=timeout_ms,
3569
+ )
3570
+
3571
+ class JobServiceSync(Protocol):
3572
+ def run_job(self, request: flowrensic_dot_v1_dot_job__pb2.RunJobRequest, ctx: RequestContext) -> flowrensic_dot_v1_dot_job__pb2.RunJobResponse:
3573
+ raise ConnectError(Code.UNIMPLEMENTED, "Not implemented")
3574
+
3575
+
3576
+ class JobServiceWSGIApplication(ConnectWSGIApplication):
3577
+ def __init__(self, service: JobServiceSync, interceptors: Iterable[InterceptorSync]=(), read_max_bytes: int | None = None, compressions: Iterable[Compression] | None = None) -> None:
3578
+ super().__init__(
3579
+ endpoints={
3580
+ "/flowrensic.v1.JobService/RunJob": EndpointSync.unary(
3581
+ method=MethodInfo(
3582
+ name="RunJob",
3583
+ service_name="flowrensic.v1.JobService",
3584
+ input=flowrensic_dot_v1_dot_job__pb2.RunJobRequest,
3585
+ output=flowrensic_dot_v1_dot_job__pb2.RunJobResponse,
3586
+ idempotency_level=IdempotencyLevel.UNKNOWN,
3587
+ ),
3588
+ function=service.run_job,
3589
+ ),
3590
+ },
3591
+ interceptors=interceptors,
3592
+ read_max_bytes=read_max_bytes,
3593
+ compressions=compressions,
3594
+ )
3595
+
3596
+ @property
3597
+ def path(self) -> str:
3598
+ """Returns the URL path to mount the application to when serving multiple applications."""
3599
+ return "/flowrensic.v1.JobService"
3600
+
3601
+
3602
+ class JobServiceClientSync(ConnectClientSync):
3603
+ def run_job(
3604
+ self,
3605
+ request: flowrensic_dot_v1_dot_job__pb2.RunJobRequest,
3606
+ *,
3607
+ headers: Headers | Mapping[str, str] | None = None,
3608
+ timeout_ms: int | None = None,
3609
+ ) -> flowrensic_dot_v1_dot_job__pb2.RunJobResponse:
3610
+ return self.execute_unary(
3611
+ request=request,
3612
+ method=MethodInfo(
3613
+ name="RunJob",
3614
+ service_name="flowrensic.v1.JobService",
3615
+ input=flowrensic_dot_v1_dot_job__pb2.RunJobRequest,
3616
+ output=flowrensic_dot_v1_dot_job__pb2.RunJobResponse,
3617
+ idempotency_level=IdempotencyLevel.UNKNOWN,
3618
+ ),
3619
+ headers=headers,
3620
+ timeout_ms=timeout_ms,
3621
+ )