openiap_proto/
openiap.rs

1// This file is generated by tonic_build. Do not edit manually.
2// (You should copy the actual generated file here. For now, this is a placeholder.)
3// This file is @generated by prost-build.
4#[derive(Clone, Copy, PartialEq, ::prost::Message)]
5pub struct ListCollectionsRequest {
6    #[prost(bool, tag = "1")]
7    pub includehist: bool,
8}
9#[derive(Clone, PartialEq, ::prost::Message)]
10pub struct ListCollectionsResponse {
11    #[prost(string, tag = "1")]
12    pub results: ::prost::alloc::string::String,
13}
14#[derive(Clone, PartialEq, ::prost::Message)]
15pub struct DropCollectionRequest {
16    #[prost(string, tag = "1")]
17    pub collectionname: ::prost::alloc::string::String,
18}
19#[derive(Clone, Copy, PartialEq, ::prost::Message)]
20pub struct DropCollectionResponse {}
21#[derive(Clone, PartialEq, ::prost::Message)]
22pub struct ColTimeseries {
23    #[prost(string, tag = "1")]
24    pub time_field: ::prost::alloc::string::String,
25    #[prost(string, tag = "2")]
26    pub meta_field: ::prost::alloc::string::String,
27    #[prost(string, tag = "3")]
28    pub granularity: ::prost::alloc::string::String,
29}
30#[derive(Clone, PartialEq, ::prost::Message)]
31pub struct ColCollation {
32    #[prost(string, tag = "1")]
33    pub locale: ::prost::alloc::string::String,
34    #[prost(bool, tag = "2")]
35    pub case_level: bool,
36    #[prost(string, tag = "3")]
37    pub case_first: ::prost::alloc::string::String,
38    #[prost(int32, tag = "4")]
39    pub strength: i32,
40    #[prost(bool, tag = "5")]
41    pub numeric_ordering: bool,
42    #[prost(string, tag = "6")]
43    pub alternate: ::prost::alloc::string::String,
44    #[prost(string, tag = "7")]
45    pub max_variable: ::prost::alloc::string::String,
46    #[prost(bool, tag = "8")]
47    pub backwards: bool,
48}
49#[derive(Clone, PartialEq, ::prost::Message)]
50pub struct CreateCollectionRequest {
51    #[prost(string, tag = "1")]
52    pub collectionname: ::prost::alloc::string::String,
53    #[prost(message, optional, tag = "2")]
54    pub collation: ::core::option::Option<ColCollation>,
55    #[prost(message, optional, tag = "3")]
56    pub timeseries: ::core::option::Option<ColTimeseries>,
57    #[prost(int32, tag = "4")]
58    pub expire_after_seconds: i32,
59    #[prost(bool, tag = "5")]
60    pub change_stream_pre_and_post_images: bool,
61    #[prost(bool, tag = "6")]
62    pub capped: bool,
63    #[prost(int32, tag = "7")]
64    pub max: i32,
65    #[prost(int32, tag = "8")]
66    pub size: i32,
67}
68#[derive(Clone, Copy, PartialEq, ::prost::Message)]
69pub struct CreateCollectionResponse {}
70/// MongoDB Query Request.
71#[derive(Clone, PartialEq, ::prost::Message)]
72pub struct QueryRequest {
73    /// MongoDB Query to execute. This field is required.
74    #[prost(string, tag = "1")]
75    pub query: ::prost::alloc::string::String,
76    /// MongoDB Collection to query. This field is required.
77    #[prost(string, tag = "2")]
78    pub collectionname: ::prost::alloc::string::String,
79    /// MongoDB Query projection. This field is optional.
80    #[prost(string, tag = "3")]
81    pub projection: ::prost::alloc::string::String,
82    /// MongoDB Maximum number of documents to return. This field is optional with a default of 100.
83    #[prost(int32, tag = "4")]
84    pub top: i32,
85    /// MongoDB Number of documents to skip, used for paging on the same query. This field is optional with a default of 0.
86    #[prost(int32, tag = "5")]
87    pub skip: i32,
88    /// MongoDB order by. This field is optional with a default of {"_id": 1}.
89    /// You can specify "timestamp" as a string or an object like {"timestamp": -1}.
90    #[prost(string, tag = "6")]
91    pub orderby: ::prost::alloc::string::String,
92    /// Query as if you were this _id. (_id can be a user, role, or customer from the users collection)
93    #[prost(string, tag = "7")]
94    pub queryas: ::prost::alloc::string::String,
95    /// Enabling explain will provides information on the execution of the query
96    #[prost(bool, tag = "8")]
97    pub explain: bool,
98}
99#[derive(Clone, PartialEq, ::prost::Message)]
100pub struct QueryResponse {
101    #[prost(string, tag = "1")]
102    pub results: ::prost::alloc::string::String,
103}
104#[derive(Clone, PartialEq, ::prost::Message)]
105pub struct GetDocumentVersionRequest {
106    #[prost(string, tag = "1")]
107    pub collectionname: ::prost::alloc::string::String,
108    #[prost(string, tag = "2")]
109    pub id: ::prost::alloc::string::String,
110    #[prost(int32, tag = "3")]
111    pub version: i32,
112    #[prost(bool, tag = "4")]
113    pub decrypt: bool,
114}
115#[derive(Clone, PartialEq, ::prost::Message)]
116pub struct GetDocumentVersionResponse {
117    #[prost(string, tag = "1")]
118    pub result: ::prost::alloc::string::String,
119}
120#[derive(Clone, PartialEq, ::prost::Message)]
121pub struct AggregateRequest {
122    #[prost(string, tag = "1")]
123    pub collectionname: ::prost::alloc::string::String,
124    #[prost(string, tag = "2")]
125    pub aggregates: ::prost::alloc::string::String,
126    #[prost(string, tag = "3")]
127    pub queryas: ::prost::alloc::string::String,
128    #[prost(string, tag = "4")]
129    pub hint: ::prost::alloc::string::String,
130    /// Enabling explain will provides information on the execution of the pipelines
131    #[prost(bool, tag = "5")]
132    pub explain: bool,
133}
134#[derive(Clone, PartialEq, ::prost::Message)]
135pub struct AggregateResponse {
136    #[prost(string, tag = "1")]
137    pub results: ::prost::alloc::string::String,
138}
139#[derive(Clone, PartialEq, ::prost::Message)]
140pub struct CountRequest {
141    #[prost(string, tag = "1")]
142    pub collectionname: ::prost::alloc::string::String,
143    #[prost(string, tag = "2")]
144    pub query: ::prost::alloc::string::String,
145    #[prost(string, tag = "3")]
146    pub queryas: ::prost::alloc::string::String,
147    /// Enabling explain will provides information on the execution of the count
148    #[prost(bool, tag = "4")]
149    pub explain: bool,
150}
151#[derive(Clone, Copy, PartialEq, ::prost::Message)]
152pub struct CountResponse {
153    #[prost(int32, tag = "1")]
154    pub result: i32,
155}
156#[derive(Clone, PartialEq, ::prost::Message)]
157pub struct DistinctRequest {
158    #[prost(string, tag = "1")]
159    pub collectionname: ::prost::alloc::string::String,
160    #[prost(string, tag = "3")]
161    pub field: ::prost::alloc::string::String,
162    #[prost(string, tag = "4")]
163    pub query: ::prost::alloc::string::String,
164    #[prost(string, tag = "5")]
165    pub queryas: ::prost::alloc::string::String,
166    #[prost(string, tag = "6")]
167    pub options: ::prost::alloc::string::String,
168    /// Enabling explain will provides information on the execution of the distinct
169    #[prost(bool, tag = "7")]
170    pub explain: bool,
171}
172#[derive(Clone, PartialEq, ::prost::Message)]
173pub struct DistinctResponse {
174    #[prost(string, repeated, tag = "1")]
175    pub results: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
176}
177#[derive(Clone, PartialEq, ::prost::Message)]
178pub struct InsertOneRequest {
179    #[prost(string, tag = "1")]
180    pub collectionname: ::prost::alloc::string::String,
181    #[prost(string, tag = "2")]
182    pub item: ::prost::alloc::string::String,
183    #[prost(int32, tag = "3")]
184    pub w: i32,
185    #[prost(bool, tag = "4")]
186    pub j: bool,
187}
188#[derive(Clone, PartialEq, ::prost::Message)]
189pub struct InsertOneResponse {
190    #[prost(string, tag = "1")]
191    pub result: ::prost::alloc::string::String,
192}
193#[derive(Clone, PartialEq, ::prost::Message)]
194pub struct InsertManyRequest {
195    #[prost(string, tag = "1")]
196    pub collectionname: ::prost::alloc::string::String,
197    #[prost(string, tag = "2")]
198    pub items: ::prost::alloc::string::String,
199    #[prost(int32, tag = "3")]
200    pub w: i32,
201    #[prost(bool, tag = "4")]
202    pub j: bool,
203    #[prost(bool, tag = "5")]
204    pub skipresults: bool,
205}
206#[derive(Clone, PartialEq, ::prost::Message)]
207pub struct InsertManyResponse {
208    #[prost(string, tag = "1")]
209    pub results: ::prost::alloc::string::String,
210}
211#[derive(Clone, PartialEq, ::prost::Message)]
212pub struct UpdateOneRequest {
213    #[prost(string, tag = "1")]
214    pub collectionname: ::prost::alloc::string::String,
215    #[prost(string, tag = "2")]
216    pub item: ::prost::alloc::string::String,
217    #[prost(int32, tag = "3")]
218    pub w: i32,
219    #[prost(bool, tag = "4")]
220    pub j: bool,
221}
222#[derive(Clone, PartialEq, ::prost::Message)]
223pub struct UpdateOneResponse {
224    #[prost(string, tag = "1")]
225    pub result: ::prost::alloc::string::String,
226}
227#[derive(Clone, PartialEq, ::prost::Message)]
228pub struct UpdateDocumentRequest {
229    #[prost(string, tag = "1")]
230    pub collectionname: ::prost::alloc::string::String,
231    #[prost(string, tag = "2")]
232    pub query: ::prost::alloc::string::String,
233    #[prost(string, tag = "3")]
234    pub document: ::prost::alloc::string::String,
235    #[prost(int32, tag = "4")]
236    pub w: i32,
237    #[prost(bool, tag = "5")]
238    pub j: bool,
239}
240#[derive(Clone, PartialEq, ::prost::Message)]
241pub struct UpdateResult {
242    #[prost(bool, tag = "1")]
243    pub acknowledged: bool,
244    #[prost(int32, tag = "2")]
245    pub matched_count: i32,
246    #[prost(int32, tag = "3")]
247    pub modified_count: i32,
248    #[prost(int32, tag = "4")]
249    pub upserted_count: i32,
250    #[prost(string, tag = "5")]
251    pub upserted_id: ::prost::alloc::string::String,
252}
253#[derive(Clone, PartialEq, ::prost::Message)]
254pub struct UpdateDocumentResponse {
255    #[prost(message, optional, tag = "1")]
256    pub opresult: ::core::option::Option<UpdateResult>,
257}
258#[derive(Clone, PartialEq, ::prost::Message)]
259pub struct InsertOrUpdateOneRequest {
260    #[prost(string, tag = "1")]
261    pub collectionname: ::prost::alloc::string::String,
262    #[prost(string, tag = "2")]
263    pub uniqeness: ::prost::alloc::string::String,
264    #[prost(string, tag = "3")]
265    pub item: ::prost::alloc::string::String,
266    #[prost(int32, tag = "4")]
267    pub w: i32,
268    #[prost(bool, tag = "5")]
269    pub j: bool,
270}
271#[derive(Clone, PartialEq, ::prost::Message)]
272pub struct InsertOrUpdateOneResponse {
273    #[prost(string, tag = "1")]
274    pub result: ::prost::alloc::string::String,
275}
276#[derive(Clone, PartialEq, ::prost::Message)]
277pub struct InsertOrUpdateManyRequest {
278    #[prost(string, tag = "1")]
279    pub collectionname: ::prost::alloc::string::String,
280    #[prost(string, tag = "2")]
281    pub uniqeness: ::prost::alloc::string::String,
282    #[prost(string, tag = "3")]
283    pub items: ::prost::alloc::string::String,
284    #[prost(int32, tag = "4")]
285    pub w: i32,
286    #[prost(bool, tag = "5")]
287    pub j: bool,
288    #[prost(bool, tag = "6")]
289    pub skipresults: bool,
290}
291#[derive(Clone, PartialEq, ::prost::Message)]
292pub struct InsertOrUpdateManyResponse {
293    #[prost(string, tag = "1")]
294    pub results: ::prost::alloc::string::String,
295}
296#[derive(Clone, PartialEq, ::prost::Message)]
297pub struct DeleteOneRequest {
298    #[prost(string, tag = "1")]
299    pub collectionname: ::prost::alloc::string::String,
300    #[prost(string, tag = "2")]
301    pub id: ::prost::alloc::string::String,
302    #[prost(bool, tag = "3")]
303    pub recursive: bool,
304}
305#[derive(Clone, Copy, PartialEq, ::prost::Message)]
306pub struct DeleteOneResponse {
307    #[prost(int32, tag = "1")]
308    pub affectedrows: i32,
309}
310#[derive(Clone, PartialEq, ::prost::Message)]
311pub struct DeleteManyRequest {
312    #[prost(string, tag = "1")]
313    pub collectionname: ::prost::alloc::string::String,
314    #[prost(string, tag = "2")]
315    pub query: ::prost::alloc::string::String,
316    #[prost(bool, tag = "3")]
317    pub recursive: bool,
318    #[prost(string, repeated, tag = "4")]
319    pub ids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
320}
321#[derive(Clone, Copy, PartialEq, ::prost::Message)]
322pub struct DeleteManyResponse {
323    #[prost(int32, tag = "1")]
324    pub affectedrows: i32,
325}
326#[derive(Clone, PartialEq, ::prost::Message)]
327pub struct RegisterQueueRequest {
328    #[prost(string, tag = "1")]
329    pub queuename: ::prost::alloc::string::String,
330}
331#[derive(Clone, PartialEq, ::prost::Message)]
332pub struct RegisterQueueResponse {
333    #[prost(string, tag = "1")]
334    pub queuename: ::prost::alloc::string::String,
335}
336#[derive(Clone, PartialEq, ::prost::Message)]
337pub struct RegisterExchangeRequest {
338    #[prost(string, tag = "1")]
339    pub exchangename: ::prost::alloc::string::String,
340    #[prost(string, tag = "2")]
341    pub algorithm: ::prost::alloc::string::String,
342    #[prost(string, tag = "3")]
343    pub routingkey: ::prost::alloc::string::String,
344    #[prost(bool, tag = "4")]
345    pub addqueue: bool,
346}
347#[derive(Clone, PartialEq, ::prost::Message)]
348pub struct RegisterExchangeResponse {
349    #[prost(string, tag = "1")]
350    pub queuename: ::prost::alloc::string::String,
351}
352#[derive(Clone, PartialEq, ::prost::Message)]
353pub struct QueueMessageRequest {
354    #[prost(string, tag = "1")]
355    pub queuename: ::prost::alloc::string::String,
356    #[prost(string, tag = "2")]
357    pub correlation_id: ::prost::alloc::string::String,
358    #[prost(string, tag = "3")]
359    pub replyto: ::prost::alloc::string::String,
360    #[prost(string, tag = "4")]
361    pub routingkey: ::prost::alloc::string::String,
362    #[prost(string, tag = "5")]
363    pub exchangename: ::prost::alloc::string::String,
364    #[prost(string, tag = "6")]
365    pub data: ::prost::alloc::string::String,
366    #[prost(bool, tag = "7")]
367    pub striptoken: bool,
368    #[prost(int32, tag = "8")]
369    pub expiration: i32,
370}
371#[derive(Clone, PartialEq, ::prost::Message)]
372pub struct QueueMessageResponse {
373    #[prost(string, tag = "1")]
374    pub queuename: ::prost::alloc::string::String,
375    #[prost(string, tag = "2")]
376    pub correlation_id: ::prost::alloc::string::String,
377    #[prost(string, tag = "3")]
378    pub replyto: ::prost::alloc::string::String,
379    #[prost(string, tag = "4")]
380    pub routingkey: ::prost::alloc::string::String,
381    #[prost(string, tag = "5")]
382    pub exchangename: ::prost::alloc::string::String,
383    #[prost(string, tag = "6")]
384    pub data: ::prost::alloc::string::String,
385}
386#[derive(Clone, PartialEq, ::prost::Message)]
387pub struct QueueEvent {
388    #[prost(string, tag = "1")]
389    pub queuename: ::prost::alloc::string::String,
390    #[prost(string, tag = "2")]
391    pub correlation_id: ::prost::alloc::string::String,
392    #[prost(string, tag = "3")]
393    pub replyto: ::prost::alloc::string::String,
394    #[prost(string, tag = "4")]
395    pub routingkey: ::prost::alloc::string::String,
396    #[prost(string, tag = "5")]
397    pub exchangename: ::prost::alloc::string::String,
398    #[prost(string, tag = "6")]
399    pub data: ::prost::alloc::string::String,
400}
401#[derive(Clone, PartialEq, ::prost::Message)]
402pub struct UnRegisterQueueRequest {
403    #[prost(string, tag = "1")]
404    pub queuename: ::prost::alloc::string::String,
405}
406#[derive(Clone, Copy, PartialEq, ::prost::Message)]
407pub struct UnRegisterQueueResponse {}
408#[derive(Clone, PartialEq, ::prost::Message)]
409pub struct CreateWorkflowInstanceRequest {
410    #[prost(string, tag = "1")]
411    pub targetid: ::prost::alloc::string::String,
412    #[prost(string, tag = "2")]
413    pub workflowid: ::prost::alloc::string::String,
414    #[prost(string, tag = "3")]
415    pub name: ::prost::alloc::string::String,
416    #[prost(string, tag = "4")]
417    pub resultqueue: ::prost::alloc::string::String,
418    #[prost(string, tag = "5")]
419    pub data: ::prost::alloc::string::String,
420    #[prost(bool, tag = "6")]
421    pub initialrun: bool,
422}
423#[derive(Clone, PartialEq, ::prost::Message)]
424pub struct CreateWorkflowInstanceResponse {
425    #[prost(string, tag = "1")]
426    pub instanceid: ::prost::alloc::string::String,
427}
428#[derive(Clone, PartialEq, ::prost::Message)]
429pub struct InvokeOpenRpaRequest {
430    /// _id from either a {"_type": "role", "rparole": true} role or {"_type": "user"} from the users colletion.
431    #[prost(string, tag = "1")]
432    pub robotid: ::prost::alloc::string::String,
433    /// _id from a {"_type": "workflow"} from the openrpa collection. The Parameters property will show what arguments the workflow takes and returns. (in/inout/out)
434    #[prost(string, tag = "2")]
435    pub workflowid: ::prost::alloc::string::String,
436    /// if true will not return a result until the robot has completed the run, if false will simply query the reqesut
437    #[prost(bool, tag = "3")]
438    pub rpc: bool,
439    /// a JSON string with each of the arguments to send to the workflow ( each value must corrospond with a `in` or `inout` Parameter found on the workflow )
440    #[prost(string, tag = "4")]
441    pub payload: ::prost::alloc::string::String,
442}
443#[derive(Clone, PartialEq, ::prost::Message)]
444pub struct InvokeOpenRpaResponse {
445    #[prost(string, tag = "1")]
446    pub payload: ::prost::alloc::string::String,
447}
448#[derive(Clone, PartialEq, ::prost::Message)]
449pub struct WatchRequest {
450    #[prost(string, tag = "1")]
451    pub collectionname: ::prost::alloc::string::String,
452    #[prost(string, repeated, tag = "2")]
453    pub paths: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
454}
455#[derive(Clone, PartialEq, ::prost::Message)]
456pub struct WatchResponse {
457    #[prost(string, tag = "1")]
458    pub id: ::prost::alloc::string::String,
459}
460#[derive(Clone, PartialEq, ::prost::Message)]
461pub struct WatchEvent {
462    #[prost(string, tag = "1")]
463    pub id: ::prost::alloc::string::String,
464    #[prost(string, tag = "2")]
465    pub operation: ::prost::alloc::string::String,
466    #[prost(string, tag = "3")]
467    pub document: ::prost::alloc::string::String,
468}
469#[derive(Clone, PartialEq, ::prost::Message)]
470pub struct UnWatchRequest {
471    #[prost(string, tag = "1")]
472    pub id: ::prost::alloc::string::String,
473}
474#[derive(Clone, Copy, PartialEq, ::prost::Message)]
475pub struct UnWatchResponse {}
476#[derive(Clone, PartialEq, ::prost::Message)]
477pub struct Ace {
478    #[prost(string, tag = "1")]
479    pub id: ::prost::alloc::string::String,
480    #[prost(bool, tag = "2")]
481    pub deny: bool,
482    #[prost(int32, tag = "3")]
483    pub rights: i32,
484}
485#[derive(Clone, PartialEq, ::prost::Message)]
486pub struct Workitem {
487    #[prost(string, tag = "1")]
488    pub id: ::prost::alloc::string::String,
489    #[prost(string, tag = "2")]
490    pub name: ::prost::alloc::string::String,
491    #[prost(string, tag = "3")]
492    pub payload: ::prost::alloc::string::String,
493    #[prost(int32, tag = "4")]
494    pub priority: i32,
495    #[prost(message, optional, tag = "5")]
496    pub nextrun: ::core::option::Option<::prost_types::Timestamp>,
497    #[prost(message, optional, tag = "6")]
498    pub lastrun: ::core::option::Option<::prost_types::Timestamp>,
499    #[prost(message, repeated, tag = "7")]
500    pub files: ::prost::alloc::vec::Vec<WorkitemFile>,
501    #[prost(string, tag = "8")]
502    pub state: ::prost::alloc::string::String,
503    #[prost(string, tag = "9")]
504    pub wiq: ::prost::alloc::string::String,
505    #[prost(string, tag = "10")]
506    pub wiqid: ::prost::alloc::string::String,
507    #[prost(int32, tag = "11")]
508    pub retries: i32,
509    #[prost(string, tag = "12")]
510    pub username: ::prost::alloc::string::String,
511    #[prost(string, tag = "13")]
512    pub success_wiqid: ::prost::alloc::string::String,
513    #[prost(string, tag = "14")]
514    pub failed_wiqid: ::prost::alloc::string::String,
515    #[prost(string, tag = "15")]
516    pub success_wiq: ::prost::alloc::string::String,
517    #[prost(string, tag = "16")]
518    pub failed_wiq: ::prost::alloc::string::String,
519    #[prost(string, tag = "17")]
520    pub errormessage: ::prost::alloc::string::String,
521    #[prost(string, tag = "18")]
522    pub errorsource: ::prost::alloc::string::String,
523    #[prost(string, tag = "19")]
524    pub errortype: ::prost::alloc::string::String,
525}
526#[derive(Clone, PartialEq, ::prost::Message)]
527pub struct WorkitemFile {
528    #[prost(string, tag = "1")]
529    pub filename: ::prost::alloc::string::String,
530    #[prost(string, tag = "2")]
531    pub id: ::prost::alloc::string::String,
532    #[prost(bool, tag = "3")]
533    pub compressed: bool,
534    #[prost(bytes = "vec", tag = "4")]
535    pub file: ::prost::alloc::vec::Vec<u8>,
536}
537#[derive(Clone, PartialEq, ::prost::Message)]
538pub struct PushWorkitemRequest {
539    #[prost(string, tag = "1")]
540    pub wiq: ::prost::alloc::string::String,
541    #[prost(string, tag = "2")]
542    pub wiqid: ::prost::alloc::string::String,
543    #[prost(string, tag = "3")]
544    pub name: ::prost::alloc::string::String,
545    #[prost(string, tag = "4")]
546    pub payload: ::prost::alloc::string::String,
547    #[prost(message, optional, tag = "5")]
548    pub nextrun: ::core::option::Option<::prost_types::Timestamp>,
549    #[prost(string, tag = "6")]
550    pub success_wiqid: ::prost::alloc::string::String,
551    #[prost(string, tag = "7")]
552    pub failed_wiqid: ::prost::alloc::string::String,
553    #[prost(string, tag = "8")]
554    pub success_wiq: ::prost::alloc::string::String,
555    #[prost(string, tag = "9")]
556    pub failed_wiq: ::prost::alloc::string::String,
557    #[prost(int32, tag = "10")]
558    pub priority: i32,
559    #[prost(message, repeated, tag = "11")]
560    pub files: ::prost::alloc::vec::Vec<WorkitemFile>,
561}
562#[derive(Clone, PartialEq, ::prost::Message)]
563pub struct PushWorkitemResponse {
564    #[prost(message, optional, tag = "1")]
565    pub workitem: ::core::option::Option<Workitem>,
566}
567#[derive(Clone, PartialEq, ::prost::Message)]
568pub struct PushWorkitemsRequest {
569    #[prost(string, tag = "1")]
570    pub wiq: ::prost::alloc::string::String,
571    #[prost(string, tag = "2")]
572    pub wiqid: ::prost::alloc::string::String,
573    #[prost(message, optional, tag = "3")]
574    pub nextrun: ::core::option::Option<::prost_types::Timestamp>,
575    #[prost(string, tag = "4")]
576    pub success_wiqid: ::prost::alloc::string::String,
577    #[prost(string, tag = "5")]
578    pub failed_wiqid: ::prost::alloc::string::String,
579    #[prost(string, tag = "6")]
580    pub success_wiq: ::prost::alloc::string::String,
581    #[prost(string, tag = "7")]
582    pub failed_wiq: ::prost::alloc::string::String,
583    #[prost(int32, tag = "8")]
584    pub priority: i32,
585    #[prost(message, repeated, tag = "9")]
586    pub items: ::prost::alloc::vec::Vec<Workitem>,
587}
588#[derive(Clone, PartialEq, ::prost::Message)]
589pub struct PushWorkitemsResponse {
590    #[prost(message, repeated, tag = "1")]
591    pub workitems: ::prost::alloc::vec::Vec<Workitem>,
592}
593#[derive(Clone, PartialEq, ::prost::Message)]
594pub struct UpdateWorkitemRequest {
595    #[prost(message, optional, tag = "1")]
596    pub workitem: ::core::option::Option<Workitem>,
597    #[prost(bool, tag = "2")]
598    pub ignoremaxretries: bool,
599    #[prost(message, repeated, tag = "3")]
600    pub files: ::prost::alloc::vec::Vec<WorkitemFile>,
601}
602#[derive(Clone, PartialEq, ::prost::Message)]
603pub struct UpdateWorkitemResponse {
604    #[prost(message, optional, tag = "1")]
605    pub workitem: ::core::option::Option<Workitem>,
606}
607#[derive(Clone, PartialEq, ::prost::Message)]
608pub struct PopWorkitemRequest {
609    #[prost(string, tag = "1")]
610    pub wiq: ::prost::alloc::string::String,
611    #[prost(string, tag = "2")]
612    pub wiqid: ::prost::alloc::string::String,
613    #[prost(bool, tag = "3")]
614    pub includefiles: bool,
615    #[prost(bool, tag = "4")]
616    pub compressed: bool,
617}
618#[derive(Clone, PartialEq, ::prost::Message)]
619pub struct PopWorkitemResponse {
620    #[prost(message, optional, tag = "1")]
621    pub workitem: ::core::option::Option<Workitem>,
622}
623#[derive(Clone, PartialEq, ::prost::Message)]
624pub struct DeleteWorkitemRequest {
625    #[prost(string, tag = "1")]
626    pub id: ::prost::alloc::string::String,
627}
628#[derive(Clone, Copy, PartialEq, ::prost::Message)]
629pub struct DeleteWorkitemResponse {}
630#[derive(Clone, PartialEq, ::prost::Message)]
631pub struct WorkItemQueue {
632    #[prost(string, tag = "1")]
633    pub workflowid: ::prost::alloc::string::String,
634    #[prost(string, tag = "2")]
635    pub robotqueue: ::prost::alloc::string::String,
636    #[prost(string, tag = "3")]
637    pub amqpqueue: ::prost::alloc::string::String,
638    #[prost(string, tag = "4")]
639    pub projectid: ::prost::alloc::string::String,
640    #[prost(string, tag = "5")]
641    pub usersrole: ::prost::alloc::string::String,
642    #[prost(int32, tag = "6")]
643    pub maxretries: i32,
644    #[prost(int32, tag = "7")]
645    pub retrydelay: i32,
646    #[prost(int32, tag = "8")]
647    pub initialdelay: i32,
648    #[prost(string, tag = "9")]
649    pub success_wiqid: ::prost::alloc::string::String,
650    #[prost(string, tag = "10")]
651    pub failed_wiqid: ::prost::alloc::string::String,
652    #[prost(string, tag = "11")]
653    pub success_wiq: ::prost::alloc::string::String,
654    #[prost(string, tag = "12")]
655    pub failed_wiq: ::prost::alloc::string::String,
656    #[prost(string, tag = "13")]
657    pub id: ::prost::alloc::string::String,
658    #[prost(message, repeated, tag = "14")]
659    pub acl: ::prost::alloc::vec::Vec<Ace>,
660    #[prost(string, tag = "15")]
661    pub name: ::prost::alloc::string::String,
662    #[prost(string, tag = "16")]
663    pub createdbyid: ::prost::alloc::string::String,
664    #[prost(string, tag = "17")]
665    pub createdby: ::prost::alloc::string::String,
666    #[prost(message, optional, tag = "18")]
667    pub created: ::core::option::Option<::prost_types::Timestamp>,
668    #[prost(string, tag = "19")]
669    pub modifiedbyid: ::prost::alloc::string::String,
670    #[prost(string, tag = "20")]
671    pub modifiedby: ::prost::alloc::string::String,
672    #[prost(message, optional, tag = "21")]
673    pub modified: ::core::option::Option<::prost_types::Timestamp>,
674    #[prost(int32, tag = "22")]
675    pub version: i32,
676    #[prost(string, tag = "23")]
677    pub packageid: ::prost::alloc::string::String,
678}
679#[derive(Clone, PartialEq, ::prost::Message)]
680pub struct AddWorkItemQueueRequest {
681    #[prost(message, optional, tag = "1")]
682    pub workitemqueue: ::core::option::Option<WorkItemQueue>,
683    #[prost(bool, tag = "2")]
684    pub skiprole: bool,
685}
686#[derive(Clone, PartialEq, ::prost::Message)]
687pub struct AddWorkItemQueueResponse {
688    #[prost(message, optional, tag = "1")]
689    pub workitemqueue: ::core::option::Option<WorkItemQueue>,
690}
691#[derive(Clone, PartialEq, ::prost::Message)]
692pub struct UpdateWorkItemQueueRequest {
693    #[prost(message, optional, tag = "1")]
694    pub workitemqueue: ::core::option::Option<WorkItemQueue>,
695    #[prost(bool, tag = "2")]
696    pub skiprole: bool,
697    #[prost(bool, tag = "3")]
698    pub purge: bool,
699}
700#[derive(Clone, PartialEq, ::prost::Message)]
701pub struct UpdateWorkItemQueueResponse {
702    #[prost(message, optional, tag = "1")]
703    pub workitemqueue: ::core::option::Option<WorkItemQueue>,
704}
705#[derive(Clone, PartialEq, ::prost::Message)]
706pub struct DeleteWorkItemQueueRequest {
707    #[prost(string, tag = "1")]
708    pub wiq: ::prost::alloc::string::String,
709    #[prost(string, tag = "2")]
710    pub wiqid: ::prost::alloc::string::String,
711    #[prost(bool, tag = "3")]
712    pub purge: bool,
713}
714#[derive(Clone, Copy, PartialEq, ::prost::Message)]
715pub struct DeleteWorkItemQueueResponse {}
716#[derive(Clone, PartialEq, ::prost::Message)]
717pub struct StripeCoupon {
718    #[prost(string, tag = "1")]
719    pub duration: ::prost::alloc::string::String,
720    #[prost(int32, tag = "2")]
721    pub duration_in_months: i32,
722    #[prost(string, tag = "3")]
723    pub name: ::prost::alloc::string::String,
724}
725#[derive(Clone, PartialEq, ::prost::Message)]
726pub struct StripeCustomerDiscount {
727    #[prost(string, tag = "1")]
728    pub subscription: ::prost::alloc::string::String,
729    #[prost(int32, tag = "2")]
730    pub start: i32,
731    #[prost(string, tag = "3")]
732    pub customer: ::prost::alloc::string::String,
733    #[prost(message, optional, tag = "4")]
734    pub coupon: ::core::option::Option<StripeCoupon>,
735}
736#[derive(Clone, PartialEq, ::prost::Message)]
737pub struct StripeCustomerAddress {
738    #[prost(string, tag = "1")]
739    pub line1: ::prost::alloc::string::String,
740    #[prost(string, tag = "2")]
741    pub line2: ::prost::alloc::string::String,
742    #[prost(string, tag = "3")]
743    pub postal_code: ::prost::alloc::string::String,
744    #[prost(string, tag = "4")]
745    pub city: ::prost::alloc::string::String,
746    #[prost(string, tag = "5")]
747    pub state: ::prost::alloc::string::String,
748    #[prost(string, tag = "6")]
749    pub country: ::prost::alloc::string::String,
750}
751#[derive(Clone, PartialEq, ::prost::Message)]
752pub struct StripeTaxVerification {
753    #[prost(string, tag = "1")]
754    pub status: ::prost::alloc::string::String,
755    #[prost(string, tag = "2")]
756    pub verified_address: ::prost::alloc::string::String,
757    #[prost(string, tag = "3")]
758    pub verified_name: ::prost::alloc::string::String,
759}
760#[derive(Clone, PartialEq, ::prost::Message)]
761pub struct StripeTaxId {
762    #[prost(string, tag = "1")]
763    pub country: ::prost::alloc::string::String,
764    #[prost(string, tag = "2")]
765    pub customer: ::prost::alloc::string::String,
766    #[prost(string, tag = "3")]
767    pub r#type: ::prost::alloc::string::String,
768    #[prost(string, tag = "4")]
769    pub value: ::prost::alloc::string::String,
770    #[prost(message, optional, tag = "5")]
771    pub verification: ::core::option::Option<StripeTaxVerification>,
772}
773#[derive(Clone, PartialEq, ::prost::Message)]
774pub struct StripeRecurring {
775    #[prost(string, tag = "1")]
776    pub interval: ::prost::alloc::string::String,
777    #[prost(int32, tag = "2")]
778    pub interval_count: i32,
779    #[prost(int32, tag = "3")]
780    pub trial_period_days: i32,
781    /// string aggregate_usage = 5;
782    #[prost(string, tag = "4")]
783    pub usage_type: ::prost::alloc::string::String,
784}
785#[derive(Clone, PartialEq, ::prost::Message)]
786pub struct StripePrice {
787    #[prost(string, tag = "1")]
788    pub nickname: ::prost::alloc::string::String,
789    #[prost(string, tag = "2")]
790    pub product: ::prost::alloc::string::String,
791    #[prost(bool, tag = "3")]
792    pub active: bool,
793    #[prost(string, tag = "4")]
794    pub billing_scheme: ::prost::alloc::string::String,
795    #[prost(string, tag = "5")]
796    pub currency: ::prost::alloc::string::String,
797    /// string lookup_key = 7;
798    /// string tiers_mode = 8;
799    #[prost(message, optional, tag = "6")]
800    pub recurring: ::core::option::Option<StripeRecurring>,
801}
802#[derive(Clone, PartialEq, ::prost::Message)]
803pub struct StripePlan {
804    #[prost(bool, tag = "1")]
805    pub status: bool,
806    #[prost(string, tag = "2")]
807    pub nickname: ::prost::alloc::string::String,
808    #[prost(string, tag = "3")]
809    pub product: ::prost::alloc::string::String,
810    #[prost(int32, tag = "4")]
811    pub amount: i32,
812    #[prost(string, tag = "5")]
813    pub usage_type: ::prost::alloc::string::String,
814}
815#[derive(Clone, PartialEq, ::prost::Message)]
816pub struct StripeSubscriptionItem {
817    #[prost(string, tag = "1")]
818    pub id: ::prost::alloc::string::String,
819    #[prost(string, tag = "2")]
820    pub quantity: ::prost::alloc::string::String,
821    #[prost(string, tag = "3")]
822    pub subscription: ::prost::alloc::string::String,
823    #[prost(message, optional, tag = "4")]
824    pub plan: ::core::option::Option<StripePlan>,
825    #[prost(message, optional, tag = "5")]
826    pub price: ::core::option::Option<StripePrice>,
827}
828#[derive(Clone, PartialEq, ::prost::Message)]
829pub struct StripeSubscription {
830    #[prost(string, tag = "1")]
831    pub address: ::prost::alloc::string::String,
832    #[prost(int32, tag = "2")]
833    pub balance: i32,
834    #[prost(string, tag = "3")]
835    pub currency: ::prost::alloc::string::String,
836    #[prost(message, repeated, tag = "4")]
837    pub subscriptions: ::prost::alloc::vec::Vec<StripeSubscription>,
838    #[prost(message, repeated, tag = "5")]
839    pub tax_ids: ::prost::alloc::vec::Vec<StripeTaxId>,
840    #[prost(message, repeated, tag = "6")]
841    pub items: ::prost::alloc::vec::Vec<StripeSubscriptionItem>,
842    #[prost(string, repeated, tag = "7")]
843    pub default_tax_rates: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
844}
845#[derive(Clone, PartialEq, ::prost::Message)]
846pub struct StripeCustomer {
847    #[prost(message, optional, tag = "1")]
848    pub address: ::core::option::Option<StripeCustomerAddress>,
849    #[prost(string, tag = "2")]
850    pub description: ::prost::alloc::string::String,
851    #[prost(string, tag = "3")]
852    pub name: ::prost::alloc::string::String,
853    #[prost(string, tag = "4")]
854    pub email: ::prost::alloc::string::String,
855    #[prost(message, repeated, tag = "5")]
856    pub tax_ids: ::prost::alloc::vec::Vec<StripeTaxId>,
857    #[prost(message, repeated, tag = "6")]
858    pub subscriptions: ::prost::alloc::vec::Vec<StripeSubscription>,
859    #[prost(message, optional, tag = "7")]
860    pub discount: ::core::option::Option<StripeCustomerDiscount>,
861}
862#[derive(Clone, PartialEq, ::prost::Message)]
863pub struct StartAgentRequest {
864    /// _id of an agent from the agents collection
865    #[prost(string, tag = "1")]
866    pub agentid: ::prost::alloc::string::String,
867}
868#[derive(Clone, Copy, PartialEq, ::prost::Message)]
869pub struct StartAgentResponse {}
870#[derive(Clone, PartialEq, ::prost::Message)]
871pub struct StopAgentRequest {
872    /// _id of an agent from the agents collection
873    #[prost(string, tag = "1")]
874    pub agentid: ::prost::alloc::string::String,
875}
876#[derive(Clone, Copy, PartialEq, ::prost::Message)]
877pub struct StopAgentResponse {}
878#[derive(Clone, PartialEq, ::prost::Message)]
879pub struct GetAgentLogRequest {
880    /// _id of an agent from the agents collection
881    #[prost(string, tag = "1")]
882    pub agentid: ::prost::alloc::string::String,
883    /// Pod name, found with GetAgentPods
884    #[prost(string, tag = "2")]
885    pub podname: ::prost::alloc::string::String,
886}
887#[derive(Clone, PartialEq, ::prost::Message)]
888pub struct GetAgentLogResponse {
889    #[prost(string, tag = "1")]
890    pub result: ::prost::alloc::string::String,
891}
892#[derive(Clone, PartialEq, ::prost::Message)]
893pub struct GetAgentPodsRequest {
894    /// _id of an agent from the agents collection
895    #[prost(string, tag = "1")]
896    pub agentid: ::prost::alloc::string::String,
897    /// get memory and cpu usage per pod, this is resource intensive and should be used sparringly
898    #[prost(bool, tag = "2")]
899    pub stats: bool,
900}
901#[derive(Clone, PartialEq, ::prost::Message)]
902pub struct GetAgentPodsResponse {
903    /// JSON array of pods
904    #[prost(string, tag = "1")]
905    pub results: ::prost::alloc::string::String,
906}
907#[derive(Clone, PartialEq, ::prost::Message)]
908pub struct DeleteAgentPodRequest {
909    /// _id of an agent from the agents collection
910    #[prost(string, tag = "1")]
911    pub agentid: ::prost::alloc::string::String,
912    /// Pod name, found with GetAgentPods
913    #[prost(string, tag = "2")]
914    pub podname: ::prost::alloc::string::String,
915}
916#[derive(Clone, Copy, PartialEq, ::prost::Message)]
917pub struct DeleteAgentPodResponse {}
918#[derive(Clone, PartialEq, ::prost::Message)]
919pub struct DeleteAgentRequest {
920    /// _id of an agent from the agents collection
921    #[prost(string, tag = "1")]
922    pub agentid: ::prost::alloc::string::String,
923}
924#[derive(Clone, Copy, PartialEq, ::prost::Message)]
925pub struct DeleteAgentResponse {}
926#[derive(Clone, PartialEq, ::prost::Message)]
927pub struct Envelope {
928    #[prost(string, tag = "1")]
929    pub command: ::prost::alloc::string::String,
930    #[prost(int32, tag = "2")]
931    pub priority: i32,
932    #[prost(int32, tag = "3")]
933    pub seq: i32,
934    #[prost(string, tag = "4")]
935    pub id: ::prost::alloc::string::String,
936    #[prost(string, tag = "5")]
937    pub rid: ::prost::alloc::string::String,
938    #[prost(message, optional, tag = "6")]
939    pub data: ::core::option::Option<::prost_types::Any>,
940    #[prost(string, tag = "7")]
941    pub jwt: ::prost::alloc::string::String,
942    #[prost(string, tag = "8")]
943    pub traceid: ::prost::alloc::string::String,
944    #[prost(string, tag = "9")]
945    pub spanid: ::prost::alloc::string::String,
946}
947#[derive(Clone, Copy, PartialEq, ::prost::Message)]
948pub struct PingRequest {}
949#[derive(Clone, Copy, PartialEq, ::prost::Message)]
950pub struct PingResponse {}
951#[derive(Clone, Copy, PartialEq, ::prost::Message)]
952pub struct Noop {}
953#[derive(Clone, PartialEq, ::prost::Message)]
954pub struct ErrorResponse {
955    #[prost(string, tag = "1")]
956    pub message: ::prost::alloc::string::String,
957    #[prost(int32, tag = "2")]
958    pub code: i32,
959    #[prost(string, tag = "3")]
960    pub stack: ::prost::alloc::string::String,
961}
962#[derive(Clone, PartialEq, ::prost::Message)]
963pub struct GetElementRequest {
964    #[prost(string, tag = "1")]
965    pub xpath: ::prost::alloc::string::String,
966}
967#[derive(Clone, PartialEq, ::prost::Message)]
968pub struct GetElementResponse {
969    #[prost(string, tag = "1")]
970    pub xpath: ::prost::alloc::string::String,
971}
972#[derive(Clone, PartialEq, ::prost::Message)]
973pub struct DownloadRequest {
974    #[prost(string, tag = "1")]
975    pub id: ::prost::alloc::string::String,
976    #[prost(string, tag = "2")]
977    pub filename: ::prost::alloc::string::String,
978    #[prost(string, tag = "3")]
979    pub collectionname: ::prost::alloc::string::String,
980}
981#[derive(Clone, PartialEq, ::prost::Message)]
982pub struct DownloadResponse {
983    #[prost(string, tag = "1")]
984    pub id: ::prost::alloc::string::String,
985    #[prost(string, tag = "2")]
986    pub filename: ::prost::alloc::string::String,
987    #[prost(string, tag = "3")]
988    pub mimetype: ::prost::alloc::string::String,
989}
990#[derive(Clone, PartialEq, ::prost::Message)]
991pub struct UploadRequest {
992    #[prost(string, tag = "1")]
993    pub filename: ::prost::alloc::string::String,
994    #[prost(string, tag = "2")]
995    pub mimetype: ::prost::alloc::string::String,
996    #[prost(string, tag = "3")]
997    pub metadata: ::prost::alloc::string::String,
998    #[prost(string, tag = "4")]
999    pub collectionname: ::prost::alloc::string::String,
1000}
1001#[derive(Clone, PartialEq, ::prost::Message)]
1002pub struct UploadResponse {
1003    #[prost(string, tag = "1")]
1004    pub id: ::prost::alloc::string::String,
1005    #[prost(string, tag = "2")]
1006    pub filename: ::prost::alloc::string::String,
1007    #[prost(int32, tag = "3")]
1008    pub bytes: i32,
1009    #[prost(int32, tag = "4")]
1010    pub chunks: i32,
1011    #[prost(float, tag = "5")]
1012    pub mb: f32,
1013    #[prost(int32, tag = "6")]
1014    pub elapsed_time: i32,
1015    #[prost(float, tag = "7")]
1016    pub mbps: f32,
1017}
1018#[derive(Clone, PartialEq, ::prost::Message)]
1019pub struct BeginStream {
1020    #[prost(string, tag = "1")]
1021    pub checksum: ::prost::alloc::string::String,
1022    #[prost(message, optional, tag = "2")]
1023    pub stat: ::core::option::Option<Stat>,
1024}
1025#[derive(Clone, PartialEq, ::prost::Message)]
1026pub struct Stream {
1027    #[prost(bytes = "vec", tag = "1")]
1028    pub data: ::prost::alloc::vec::Vec<u8>,
1029}
1030#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1031pub struct EndStream {}
1032#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1033pub struct Stat {
1034    #[prost(float, tag = "1")]
1035    pub birthtime_ms: f32,
1036    #[prost(int32, tag = "2")]
1037    pub blksize: i32,
1038    #[prost(int32, tag = "3")]
1039    pub blocks: i32,
1040    #[prost(message, optional, tag = "4")]
1041    pub ctime: ::core::option::Option<::prost_types::Timestamp>,
1042    #[prost(float, tag = "5")]
1043    pub ctime_ms: f32,
1044    #[prost(int32, tag = "6")]
1045    pub dev: i32,
1046    #[prost(int32, tag = "7")]
1047    pub gid: i32,
1048    #[prost(int32, tag = "8")]
1049    pub ino: i32,
1050    #[prost(int32, tag = "9")]
1051    pub mode: i32,
1052    #[prost(message, optional, tag = "10")]
1053    pub mtime: ::core::option::Option<::prost_types::Timestamp>,
1054    #[prost(float, tag = "11")]
1055    pub mtime_ms: f32,
1056    #[prost(int32, tag = "12")]
1057    pub nlink: i32,
1058    #[prost(int32, tag = "13")]
1059    pub rdev: i32,
1060    #[prost(int32, tag = "14")]
1061    pub size: i32,
1062    #[prost(int32, tag = "15")]
1063    pub uid: i32,
1064}
1065#[derive(Clone, PartialEq, ::prost::Message)]
1066pub struct CustomCommandRequest {
1067    #[prost(string, tag = "1")]
1068    pub command: ::prost::alloc::string::String,
1069    #[prost(string, tag = "2")]
1070    pub id: ::prost::alloc::string::String,
1071    #[prost(string, tag = "3")]
1072    pub name: ::prost::alloc::string::String,
1073    #[prost(string, tag = "4")]
1074    pub data: ::prost::alloc::string::String,
1075}
1076#[derive(Clone, PartialEq, ::prost::Message)]
1077pub struct CustomCommandResponse {
1078    #[prost(string, tag = "1")]
1079    pub result: ::prost::alloc::string::String,
1080}
1081#[derive(Clone, PartialEq, ::prost::Message)]
1082pub struct SigninRequest {
1083    #[prost(string, tag = "1")]
1084    pub username: ::prost::alloc::string::String,
1085    #[prost(string, tag = "2")]
1086    pub password: ::prost::alloc::string::String,
1087    #[prost(string, tag = "3")]
1088    pub jwt: ::prost::alloc::string::String,
1089    #[prost(bool, tag = "4")]
1090    pub ping: bool,
1091    #[prost(bool, tag = "5")]
1092    pub validateonly: bool,
1093    #[prost(string, tag = "6")]
1094    pub agent: ::prost::alloc::string::String,
1095    #[prost(string, tag = "7")]
1096    pub version: ::prost::alloc::string::String,
1097    #[prost(bool, tag = "8")]
1098    pub longtoken: bool,
1099}
1100#[derive(Clone, PartialEq, ::prost::Message)]
1101pub struct SigninResponse {
1102    #[prost(string, tag = "1")]
1103    pub jwt: ::prost::alloc::string::String,
1104    #[prost(message, optional, tag = "2")]
1105    pub user: ::core::option::Option<User>,
1106    #[prost(string, tag = "3")]
1107    pub config: ::prost::alloc::string::String,
1108}
1109#[derive(Clone, PartialEq, ::prost::Message)]
1110pub struct RefreshToken {
1111    #[prost(string, tag = "1")]
1112    pub username: ::prost::alloc::string::String,
1113    #[prost(string, tag = "2")]
1114    pub jwt: ::prost::alloc::string::String,
1115    #[prost(message, optional, tag = "3")]
1116    pub user: ::core::option::Option<User>,
1117}
1118#[derive(Clone, PartialEq, ::prost::Message)]
1119pub struct Role {
1120    #[prost(string, tag = "1")]
1121    pub id: ::prost::alloc::string::String,
1122    #[prost(string, tag = "2")]
1123    pub name: ::prost::alloc::string::String,
1124}
1125#[derive(Clone, PartialEq, ::prost::Message)]
1126pub struct User {
1127    #[prost(string, tag = "1")]
1128    pub id: ::prost::alloc::string::String,
1129    #[prost(string, tag = "2")]
1130    pub name: ::prost::alloc::string::String,
1131    #[prost(string, tag = "3")]
1132    pub username: ::prost::alloc::string::String,
1133    #[prost(string, tag = "4")]
1134    pub email: ::prost::alloc::string::String,
1135    #[prost(message, repeated, tag = "5")]
1136    pub roles: ::prost::alloc::vec::Vec<Role>,
1137}
1138#[derive(Clone, PartialEq, ::prost::Message)]
1139pub struct Customer {
1140    #[prost(string, tag = "1")]
1141    pub id: ::prost::alloc::string::String,
1142    #[prost(string, tag = "2")]
1143    pub r#type: ::prost::alloc::string::String,
1144    #[prost(string, tag = "3")]
1145    pub stripeid: ::prost::alloc::string::String,
1146    #[prost(string, tag = "4")]
1147    pub userid: ::prost::alloc::string::String,
1148    #[prost(string, tag = "5")]
1149    pub name: ::prost::alloc::string::String,
1150    #[prost(string, tag = "6")]
1151    pub country: ::prost::alloc::string::String,
1152    #[prost(string, tag = "7")]
1153    pub email: ::prost::alloc::string::String,
1154    #[prost(string, tag = "8")]
1155    pub address: ::prost::alloc::string::String,
1156    #[prost(string, tag = "9")]
1157    pub vattype: ::prost::alloc::string::String,
1158    #[prost(string, tag = "10")]
1159    pub vatnumber: ::prost::alloc::string::String,
1160    #[prost(string, tag = "11")]
1161    pub taxrate: ::prost::alloc::string::String,
1162    #[prost(int32, tag = "12")]
1163    pub tax: i32,
1164    #[prost(string, tag = "13")]
1165    pub coupon: ::prost::alloc::string::String,
1166    #[prost(bool, tag = "14")]
1167    pub hascard: bool,
1168    #[prost(string, tag = "15")]
1169    pub memory: ::prost::alloc::string::String,
1170    #[prost(string, tag = "16")]
1171    pub openflowuserplan: ::prost::alloc::string::String,
1172    #[prost(string, tag = "17")]
1173    pub supportplan: ::prost::alloc::string::String,
1174    #[prost(string, tag = "18")]
1175    pub supporthourplan: ::prost::alloc::string::String,
1176    #[prost(string, tag = "19")]
1177    pub subscriptionid: ::prost::alloc::string::String,
1178    #[prost(string, tag = "20")]
1179    pub admins: ::prost::alloc::string::String,
1180    #[prost(string, tag = "21")]
1181    pub users: ::prost::alloc::string::String,
1182    #[prost(string, tag = "22")]
1183    pub customattr1: ::prost::alloc::string::String,
1184    #[prost(string, tag = "23")]
1185    pub customattr2: ::prost::alloc::string::String,
1186    #[prost(string, tag = "24")]
1187    pub customattr3: ::prost::alloc::string::String,
1188    #[prost(string, tag = "25")]
1189    pub customattr4: ::prost::alloc::string::String,
1190    #[prost(string, tag = "26")]
1191    pub customattr5: ::prost::alloc::string::String,
1192    #[prost(string, repeated, tag = "27")]
1193    pub domains: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1194    #[prost(int32, tag = "28")]
1195    pub dbusage: i32,
1196    #[prost(bool, tag = "29")]
1197    pub dblocked: bool,
1198}
1199#[derive(Clone, PartialEq, ::prost::Message)]
1200pub struct EnsureCustomerRequest {
1201    #[prost(message, optional, tag = "1")]
1202    pub customer: ::core::option::Option<Customer>,
1203    #[prost(message, optional, tag = "2")]
1204    pub stripe: ::core::option::Option<StripeCustomer>,
1205    #[prost(string, tag = "3")]
1206    pub ensureas: ::prost::alloc::string::String,
1207}
1208#[derive(Clone, PartialEq, ::prost::Message)]
1209pub struct EnsureCustomerResponse {
1210    #[prost(message, optional, tag = "1")]
1211    pub customer: ::core::option::Option<Customer>,
1212    #[prost(message, optional, tag = "2")]
1213    pub stripe: ::core::option::Option<StripeCustomer>,
1214}
1215#[derive(Clone, PartialEq, ::prost::Message)]
1216pub struct CreateIndexRequest {
1217    /// Collection to create index on
1218    #[prost(string, tag = "1")]
1219    pub collectionname: ::prost::alloc::string::String,
1220    /// JSON string with indexes to create, for instance {"age": 1, "name": "text"}
1221    #[prost(string, tag = "2")]
1222    pub index: ::prost::alloc::string::String,
1223    /// optional JSON string with index option, for instance { unique: true }
1224    #[prost(string, tag = "3")]
1225    pub options: ::prost::alloc::string::String,
1226    /// Index name. Leave blank to let mongodb auto generate it
1227    #[prost(string, tag = "4")]
1228    pub name: ::prost::alloc::string::String,
1229}
1230#[derive(Clone, PartialEq, ::prost::Message)]
1231pub struct CreateIndexResponse {
1232    /// Index name
1233    #[prost(string, tag = "1")]
1234    pub result: ::prost::alloc::string::String,
1235}
1236#[derive(Clone, PartialEq, ::prost::Message)]
1237pub struct GetIndexesRequest {
1238    /// Collection to create index on
1239    #[prost(string, tag = "1")]
1240    pub collectionname: ::prost::alloc::string::String,
1241}
1242#[derive(Clone, PartialEq, ::prost::Message)]
1243pub struct GetIndexesResponse {
1244    /// List of indexes for collection
1245    #[prost(string, tag = "1")]
1246    pub results: ::prost::alloc::string::String,
1247}
1248#[derive(Clone, PartialEq, ::prost::Message)]
1249pub struct DropIndexRequest {
1250    /// Collection to create index on
1251    #[prost(string, tag = "1")]
1252    pub collectionname: ::prost::alloc::string::String,
1253    /// Index name
1254    #[prost(string, tag = "2")]
1255    pub name: ::prost::alloc::string::String,
1256}
1257#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1258pub struct DropIndexResponse {}
1259#[derive(Clone, PartialEq, ::prost::Message)]
1260pub struct DeletePackageRequest {
1261    /// id of package to delete,found in `agents` collection with {"_type": "package"}
1262    #[prost(string, tag = "1")]
1263    pub packageid: ::prost::alloc::string::String,
1264}
1265#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1266pub struct DeletePackageResponse {}
1267/// Generated client implementations.
1268pub mod flow_service_client {
1269    #![allow(
1270        unused_variables,
1271        dead_code,
1272        missing_docs,
1273        clippy::wildcard_imports,
1274        clippy::let_unit_value,
1275    )]
1276    use tonic::codegen::*;
1277    use tonic::codegen::http::Uri;
1278    /// Service for managing OpenIAP Flow (OpenFlow)
1279    #[derive(Debug, Clone)]
1280    pub struct FlowServiceClient<T> {
1281        inner: tonic::client::Grpc<T>,
1282    }
1283    impl FlowServiceClient<tonic::transport::Channel> {
1284        /// Attempt to create a new client by connecting to a given endpoint.
1285        pub async fn connect<D>(dst: D) -> Result<Self, tonic::transport::Error>
1286        where
1287            D: TryInto<tonic::transport::Endpoint>,
1288            D::Error: Into<StdError>,
1289        {
1290            let conn = tonic::transport::Endpoint::new(dst)?.connect().await?;
1291            Ok(Self::new(conn))
1292        }
1293    }
1294    impl<T> FlowServiceClient<T>
1295    where
1296        T: tonic::client::GrpcService<tonic::body::BoxBody>,
1297        T::Error: Into<StdError>,
1298        T::ResponseBody: Body<Data = Bytes> + std::marker::Send + 'static,
1299        <T::ResponseBody as Body>::Error: Into<StdError> + std::marker::Send,
1300    {
1301        pub fn new(inner: T) -> Self {
1302            let inner = tonic::client::Grpc::new(inner);
1303            Self { inner }
1304        }
1305        pub fn with_origin(inner: T, origin: Uri) -> Self {
1306            let inner = tonic::client::Grpc::with_origin(inner, origin);
1307            Self { inner }
1308        }
1309        pub fn with_interceptor<F>(
1310            inner: T,
1311            interceptor: F,
1312        ) -> FlowServiceClient<InterceptedService<T, F>>
1313        where
1314            F: tonic::service::Interceptor,
1315            T::ResponseBody: Default,
1316            T: tonic::codegen::Service<
1317                http::Request<tonic::body::BoxBody>,
1318                Response = http::Response<
1319                    <T as tonic::client::GrpcService<tonic::body::BoxBody>>::ResponseBody,
1320                >,
1321            >,
1322            <T as tonic::codegen::Service<
1323                http::Request<tonic::body::BoxBody>,
1324            >>::Error: Into<StdError> + std::marker::Send + std::marker::Sync,
1325        {
1326            FlowServiceClient::new(InterceptedService::new(inner, interceptor))
1327        }
1328        /// Compress requests with the given encoding.
1329        ///
1330        /// This requires the server to support it otherwise it might respond with an
1331        /// error.
1332        #[must_use]
1333        pub fn send_compressed(mut self, encoding: CompressionEncoding) -> Self {
1334            self.inner = self.inner.send_compressed(encoding);
1335            self
1336        }
1337        /// Enable decompressing responses.
1338        #[must_use]
1339        pub fn accept_compressed(mut self, encoding: CompressionEncoding) -> Self {
1340            self.inner = self.inner.accept_compressed(encoding);
1341            self
1342        }
1343        /// Limits the maximum size of a decoded message.
1344        ///
1345        /// Default: `4MB`
1346        #[must_use]
1347        pub fn max_decoding_message_size(mut self, limit: usize) -> Self {
1348            self.inner = self.inner.max_decoding_message_size(limit);
1349            self
1350        }
1351        /// Limits the maximum size of an encoded message.
1352        ///
1353        /// Default: `usize::MAX`
1354        #[must_use]
1355        pub fn max_encoding_message_size(mut self, limit: usize) -> Self {
1356            self.inner = self.inner.max_encoding_message_size(limit);
1357            self
1358        }
1359        /// Establishes a bidirectional streaming connection for sending and receiving Envelopes.
1360        /// This method is used to set up a real-time data stream for communication.
1361        /// Returns a bidirectional stream of Envelopes.
1362        pub async fn setup_stream(
1363            &mut self,
1364            request: impl tonic::IntoStreamingRequest<Message = super::Envelope>,
1365        ) -> std::result::Result<
1366            tonic::Response<tonic::codec::Streaming<super::Envelope>>,
1367            tonic::Status,
1368        > {
1369            self.inner
1370                .ready()
1371                .await
1372                .map_err(|e| {
1373                    tonic::Status::unknown(
1374                        format!("Service was not ready: {}", e.into()),
1375                    )
1376                })?;
1377            let codec = tonic::codec::ProstCodec::default();
1378            let path = http::uri::PathAndQuery::from_static(
1379                "/openiap.FlowService/SetupStream",
1380            );
1381            let mut req = request.into_streaming_request();
1382            req.extensions_mut()
1383                .insert(GrpcMethod::new("openiap.FlowService", "SetupStream"));
1384            self.inner.streaming(req, path, codec).await
1385        }
1386        /// Signs in a user with the provided SigninRequest and returns a SigninResponse.
1387        /// This method authenticates a user and provides access to the OpenFlow system.
1388        /// Returns a SigninResponse containing authentication details.
1389        pub async fn signin(
1390            &mut self,
1391            request: impl tonic::IntoRequest<super::SigninRequest>,
1392        ) -> std::result::Result<tonic::Response<super::SigninResponse>, tonic::Status> {
1393            self.inner
1394                .ready()
1395                .await
1396                .map_err(|e| {
1397                    tonic::Status::unknown(
1398                        format!("Service was not ready: {}", e.into()),
1399                    )
1400                })?;
1401            let codec = tonic::codec::ProstCodec::default();
1402            let path = http::uri::PathAndQuery::from_static(
1403                "/openiap.FlowService/Signin",
1404            );
1405            let mut req = request.into_request();
1406            req.extensions_mut()
1407                .insert(GrpcMethod::new("openiap.FlowService", "Signin"));
1408            self.inner.unary(req, path, codec).await
1409        }
1410        /// Downloads a file from OpenFlow
1411        /// This method retrieves files from the OpenFlow system based on the specified criteria.
1412        /// This will initiaize a DownLoad stream, and once completed send send a DownloadResponse
1413        pub async fn download(
1414            &mut self,
1415            request: impl tonic::IntoRequest<super::DownloadRequest>,
1416        ) -> std::result::Result<
1417            tonic::Response<super::DownloadResponse>,
1418            tonic::Status,
1419        > {
1420            self.inner
1421                .ready()
1422                .await
1423                .map_err(|e| {
1424                    tonic::Status::unknown(
1425                        format!("Service was not ready: {}", e.into()),
1426                    )
1427                })?;
1428            let codec = tonic::codec::ProstCodec::default();
1429            let path = http::uri::PathAndQuery::from_static(
1430                "/openiap.FlowService/Download",
1431            );
1432            let mut req = request.into_request();
1433            req.extensions_mut()
1434                .insert(GrpcMethod::new("openiap.FlowService", "Download"));
1435            self.inner.unary(req, path, codec).await
1436        }
1437        /// Uploads data based on the provided UploadRequest and returns an UploadResponse.
1438        /// This method allows users to upload data to the OpenFlow system.
1439        /// Returns an UploadResponse confirming the successful upload.
1440        pub async fn upload(
1441            &mut self,
1442            request: impl tonic::IntoRequest<super::UploadRequest>,
1443        ) -> std::result::Result<tonic::Response<super::UploadResponse>, tonic::Status> {
1444            self.inner
1445                .ready()
1446                .await
1447                .map_err(|e| {
1448                    tonic::Status::unknown(
1449                        format!("Service was not ready: {}", e.into()),
1450                    )
1451                })?;
1452            let codec = tonic::codec::ProstCodec::default();
1453            let path = http::uri::PathAndQuery::from_static(
1454                "/openiap.FlowService/Upload",
1455            );
1456            let mut req = request.into_request();
1457            req.extensions_mut()
1458                .insert(GrpcMethod::new("openiap.FlowService", "Upload"));
1459            self.inner.unary(req, path, codec).await
1460        }
1461        /// Executes a custom command in OpenIAP Flow.
1462        /// This method enables the execution of custom commands within the OpenFlow system.
1463        /// Returns a CustomCommandResponse with the result of the command execution.
1464        pub async fn custom_command(
1465            &mut self,
1466            request: impl tonic::IntoRequest<super::CustomCommandRequest>,
1467        ) -> std::result::Result<
1468            tonic::Response<super::CustomCommandResponse>,
1469            tonic::Status,
1470        > {
1471            self.inner
1472                .ready()
1473                .await
1474                .map_err(|e| {
1475                    tonic::Status::unknown(
1476                        format!("Service was not ready: {}", e.into()),
1477                    )
1478                })?;
1479            let codec = tonic::codec::ProstCodec::default();
1480            let path = http::uri::PathAndQuery::from_static(
1481                "/openiap.FlowService/CustomCommand",
1482            );
1483            let mut req = request.into_request();
1484            req.extensions_mut()
1485                .insert(GrpcMethod::new("openiap.FlowService", "CustomCommand"));
1486            self.inner.unary(req, path, codec).await
1487        }
1488        /// Lists all MongoDB collections the user has access to.
1489        /// This method provides a list of collections that the user can interact with in the MongoDB database.
1490        /// Returns a ListCollectionsResponse containing collection names.
1491        pub async fn list_collections(
1492            &mut self,
1493            request: impl tonic::IntoRequest<super::ListCollectionsRequest>,
1494        ) -> std::result::Result<
1495            tonic::Response<super::ListCollectionsResponse>,
1496            tonic::Status,
1497        > {
1498            self.inner
1499                .ready()
1500                .await
1501                .map_err(|e| {
1502                    tonic::Status::unknown(
1503                        format!("Service was not ready: {}", e.into()),
1504                    )
1505                })?;
1506            let codec = tonic::codec::ProstCodec::default();
1507            let path = http::uri::PathAndQuery::from_static(
1508                "/openiap.FlowService/ListCollections",
1509            );
1510            let mut req = request.into_request();
1511            req.extensions_mut()
1512                .insert(GrpcMethod::new("openiap.FlowService", "ListCollections"));
1513            self.inner.unary(req, path, codec).await
1514        }
1515        /// Drops a MongoDB Collection, requires user is a member of admins role.
1516        /// This method allows administrators to delete a MongoDB collection.
1517        /// Returns a DropCollectionResponse confirming the deletion.
1518        pub async fn drop_collection(
1519            &mut self,
1520            request: impl tonic::IntoRequest<super::DropCollectionRequest>,
1521        ) -> std::result::Result<
1522            tonic::Response<super::DropCollectionResponse>,
1523            tonic::Status,
1524        > {
1525            self.inner
1526                .ready()
1527                .await
1528                .map_err(|e| {
1529                    tonic::Status::unknown(
1530                        format!("Service was not ready: {}", e.into()),
1531                    )
1532                })?;
1533            let codec = tonic::codec::ProstCodec::default();
1534            let path = http::uri::PathAndQuery::from_static(
1535                "/openiap.FlowService/DropCollection",
1536            );
1537            let mut req = request.into_request();
1538            req.extensions_mut()
1539                .insert(GrpcMethod::new("openiap.FlowService", "DropCollection"));
1540            self.inner.unary(req, path, codec).await
1541        }
1542        /// Creates a new MongoDB collection, useful if you need to create with parameters like creating a TimeSeries Collection.
1543        /// This method creates a new MongoDB collection with optional parameters.
1544        /// Returns a CreateCollectionResponse indicating the success of collection creation.
1545        pub async fn create_collection(
1546            &mut self,
1547            request: impl tonic::IntoRequest<super::CreateCollectionRequest>,
1548        ) -> std::result::Result<
1549            tonic::Response<super::CreateCollectionResponse>,
1550            tonic::Status,
1551        > {
1552            self.inner
1553                .ready()
1554                .await
1555                .map_err(|e| {
1556                    tonic::Status::unknown(
1557                        format!("Service was not ready: {}", e.into()),
1558                    )
1559                })?;
1560            let codec = tonic::codec::ProstCodec::default();
1561            let path = http::uri::PathAndQuery::from_static(
1562                "/openiap.FlowService/CreateCollection",
1563            );
1564            let mut req = request.into_request();
1565            req.extensions_mut()
1566                .insert(GrpcMethod::new("openiap.FlowService", "CreateCollection"));
1567            self.inner.unary(req, path, codec).await
1568        }
1569        /// Performs a query using QueryRequest and returns a QueryResponse.
1570        /// This method executes a query operation in the MongoDB database.
1571        /// Returns a QueryResponse with query results.
1572        pub async fn query(
1573            &mut self,
1574            request: impl tonic::IntoRequest<super::QueryRequest>,
1575        ) -> std::result::Result<tonic::Response<super::QueryResponse>, tonic::Status> {
1576            self.inner
1577                .ready()
1578                .await
1579                .map_err(|e| {
1580                    tonic::Status::unknown(
1581                        format!("Service was not ready: {}", e.into()),
1582                    )
1583                })?;
1584            let codec = tonic::codec::ProstCodec::default();
1585            let path = http::uri::PathAndQuery::from_static(
1586                "/openiap.FlowService/Query",
1587            );
1588            let mut req = request.into_request();
1589            req.extensions_mut().insert(GrpcMethod::new("openiap.FlowService", "Query"));
1590            self.inner.unary(req, path, codec).await
1591        }
1592        /// Retrieves a document's version using GetDocumentVersionRequest and returns a GetDocumentVersionResponse.
1593        /// This method retrieves a specific version of a document.
1594        /// Returns a GetDocumentVersionResponse with the requested document version.
1595        pub async fn get_document_version(
1596            &mut self,
1597            request: impl tonic::IntoRequest<super::GetDocumentVersionRequest>,
1598        ) -> std::result::Result<
1599            tonic::Response<super::GetDocumentVersionResponse>,
1600            tonic::Status,
1601        > {
1602            self.inner
1603                .ready()
1604                .await
1605                .map_err(|e| {
1606                    tonic::Status::unknown(
1607                        format!("Service was not ready: {}", e.into()),
1608                    )
1609                })?;
1610            let codec = tonic::codec::ProstCodec::default();
1611            let path = http::uri::PathAndQuery::from_static(
1612                "/openiap.FlowService/GetDocumentVersion",
1613            );
1614            let mut req = request.into_request();
1615            req.extensions_mut()
1616                .insert(GrpcMethod::new("openiap.FlowService", "GetDocumentVersion"));
1617            self.inner.unary(req, path, codec).await
1618        }
1619        /// Aggregates data based on AggregateRequest and returns an AggregateResponse.
1620        /// This method performs data aggregation operations on the MongoDB database.
1621        /// Returns an AggregateResponse with the aggregated data.
1622        pub async fn aggregate(
1623            &mut self,
1624            request: impl tonic::IntoRequest<super::AggregateRequest>,
1625        ) -> std::result::Result<
1626            tonic::Response<super::AggregateResponse>,
1627            tonic::Status,
1628        > {
1629            self.inner
1630                .ready()
1631                .await
1632                .map_err(|e| {
1633                    tonic::Status::unknown(
1634                        format!("Service was not ready: {}", e.into()),
1635                    )
1636                })?;
1637            let codec = tonic::codec::ProstCodec::default();
1638            let path = http::uri::PathAndQuery::from_static(
1639                "/openiap.FlowService/Aggregate",
1640            );
1641            let mut req = request.into_request();
1642            req.extensions_mut()
1643                .insert(GrpcMethod::new("openiap.FlowService", "Aggregate"));
1644            self.inner.unary(req, path, codec).await
1645        }
1646        /// Counts documents based on CountRequest and returns a CountResponse.
1647        /// This method counts documents in the MongoDB database based on specified criteria.
1648        /// Returns a CountResponse with the count result.
1649        pub async fn count(
1650            &mut self,
1651            request: impl tonic::IntoRequest<super::CountRequest>,
1652        ) -> std::result::Result<tonic::Response<super::CountResponse>, tonic::Status> {
1653            self.inner
1654                .ready()
1655                .await
1656                .map_err(|e| {
1657                    tonic::Status::unknown(
1658                        format!("Service was not ready: {}", e.into()),
1659                    )
1660                })?;
1661            let codec = tonic::codec::ProstCodec::default();
1662            let path = http::uri::PathAndQuery::from_static(
1663                "/openiap.FlowService/Count",
1664            );
1665            let mut req = request.into_request();
1666            req.extensions_mut().insert(GrpcMethod::new("openiap.FlowService", "Count"));
1667            self.inner.unary(req, path, codec).await
1668        }
1669        /// Inserts a single document using InsertOneRequest and returns an InsertOneResponse.
1670        /// This method inserts a single document into the MongoDB database.
1671        /// Returns an InsertOneResponse confirming the insertion.
1672        pub async fn insert_one(
1673            &mut self,
1674            request: impl tonic::IntoRequest<super::InsertOneRequest>,
1675        ) -> std::result::Result<
1676            tonic::Response<super::InsertOneResponse>,
1677            tonic::Status,
1678        > {
1679            self.inner
1680                .ready()
1681                .await
1682                .map_err(|e| {
1683                    tonic::Status::unknown(
1684                        format!("Service was not ready: {}", e.into()),
1685                    )
1686                })?;
1687            let codec = tonic::codec::ProstCodec::default();
1688            let path = http::uri::PathAndQuery::from_static(
1689                "/openiap.FlowService/InsertOne",
1690            );
1691            let mut req = request.into_request();
1692            req.extensions_mut()
1693                .insert(GrpcMethod::new("openiap.FlowService", "InsertOne"));
1694            self.inner.unary(req, path, codec).await
1695        }
1696        /// Inserts multiple documents using InsertManyRequest and returns an InsertManyResponse.
1697        /// This method inserts multiple documents into the MongoDB database.
1698        /// Returns an InsertManyResponse confirming the insertions.
1699        pub async fn insert_many(
1700            &mut self,
1701            request: impl tonic::IntoRequest<super::InsertManyRequest>,
1702        ) -> std::result::Result<
1703            tonic::Response<super::InsertManyResponse>,
1704            tonic::Status,
1705        > {
1706            self.inner
1707                .ready()
1708                .await
1709                .map_err(|e| {
1710                    tonic::Status::unknown(
1711                        format!("Service was not ready: {}", e.into()),
1712                    )
1713                })?;
1714            let codec = tonic::codec::ProstCodec::default();
1715            let path = http::uri::PathAndQuery::from_static(
1716                "/openiap.FlowService/InsertMany",
1717            );
1718            let mut req = request.into_request();
1719            req.extensions_mut()
1720                .insert(GrpcMethod::new("openiap.FlowService", "InsertMany"));
1721            self.inner.unary(req, path, codec).await
1722        }
1723        /// Updates a single document using UpdateOneRequest and returns an UpdateOneResponse.
1724        /// This method updates a single document in the MongoDB database.
1725        /// Returns an UpdateOneResponse confirming the update.
1726        pub async fn update_one(
1727            &mut self,
1728            request: impl tonic::IntoRequest<super::UpdateOneRequest>,
1729        ) -> std::result::Result<
1730            tonic::Response<super::UpdateOneResponse>,
1731            tonic::Status,
1732        > {
1733            self.inner
1734                .ready()
1735                .await
1736                .map_err(|e| {
1737                    tonic::Status::unknown(
1738                        format!("Service was not ready: {}", e.into()),
1739                    )
1740                })?;
1741            let codec = tonic::codec::ProstCodec::default();
1742            let path = http::uri::PathAndQuery::from_static(
1743                "/openiap.FlowService/UpdateOne",
1744            );
1745            let mut req = request.into_request();
1746            req.extensions_mut()
1747                .insert(GrpcMethod::new("openiap.FlowService", "UpdateOne"));
1748            self.inner.unary(req, path, codec).await
1749        }
1750        /// Updates documents using UpdateDocumentRequest and returns an UpdateDocumentResponse.
1751        /// This method updates multiple documents in the MongoDB database.
1752        /// Returns an UpdateDocumentResponse confirming the updates.
1753        pub async fn update_document(
1754            &mut self,
1755            request: impl tonic::IntoRequest<super::UpdateDocumentRequest>,
1756        ) -> std::result::Result<
1757            tonic::Response<super::UpdateDocumentResponse>,
1758            tonic::Status,
1759        > {
1760            self.inner
1761                .ready()
1762                .await
1763                .map_err(|e| {
1764                    tonic::Status::unknown(
1765                        format!("Service was not ready: {}", e.into()),
1766                    )
1767                })?;
1768            let codec = tonic::codec::ProstCodec::default();
1769            let path = http::uri::PathAndQuery::from_static(
1770                "/openiap.FlowService/UpdateDocument",
1771            );
1772            let mut req = request.into_request();
1773            req.extensions_mut()
1774                .insert(GrpcMethod::new("openiap.FlowService", "UpdateDocument"));
1775            self.inner.unary(req, path, codec).await
1776        }
1777        /// Inserts or updates a single document using InsertOrUpdateOneRequest and returns an InsertOrUpdateOneResponse.
1778        /// This method either inserts or updates a single document in the MongoDB database.
1779        /// Returns an InsertOrUpdateOneResponse confirming the operation.
1780        pub async fn insert_or_update_one(
1781            &mut self,
1782            request: impl tonic::IntoRequest<super::InsertOrUpdateOneRequest>,
1783        ) -> std::result::Result<
1784            tonic::Response<super::InsertOrUpdateOneResponse>,
1785            tonic::Status,
1786        > {
1787            self.inner
1788                .ready()
1789                .await
1790                .map_err(|e| {
1791                    tonic::Status::unknown(
1792                        format!("Service was not ready: {}", e.into()),
1793                    )
1794                })?;
1795            let codec = tonic::codec::ProstCodec::default();
1796            let path = http::uri::PathAndQuery::from_static(
1797                "/openiap.FlowService/InsertOrUpdateOne",
1798            );
1799            let mut req = request.into_request();
1800            req.extensions_mut()
1801                .insert(GrpcMethod::new("openiap.FlowService", "InsertOrUpdateOne"));
1802            self.inner.unary(req, path, codec).await
1803        }
1804        /// Inserts or updates multiple documents using InsertOrUpdateManyRequest and returns an InsertOrUpdateManyResponse.
1805        /// This method either inserts or updates multiple documents in the MongoDB database.
1806        /// Returns an InsertOrUpdateManyResponse confirming the operation.
1807        pub async fn insert_or_update_many(
1808            &mut self,
1809            request: impl tonic::IntoRequest<super::InsertOrUpdateManyRequest>,
1810        ) -> std::result::Result<
1811            tonic::Response<super::InsertOrUpdateManyResponse>,
1812            tonic::Status,
1813        > {
1814            self.inner
1815                .ready()
1816                .await
1817                .map_err(|e| {
1818                    tonic::Status::unknown(
1819                        format!("Service was not ready: {}", e.into()),
1820                    )
1821                })?;
1822            let codec = tonic::codec::ProstCodec::default();
1823            let path = http::uri::PathAndQuery::from_static(
1824                "/openiap.FlowService/InsertOrUpdateMany",
1825            );
1826            let mut req = request.into_request();
1827            req.extensions_mut()
1828                .insert(GrpcMethod::new("openiap.FlowService", "InsertOrUpdateMany"));
1829            self.inner.unary(req, path, codec).await
1830        }
1831        /// Deletes a single document using DeleteOneRequest and returns a DeleteOneResponse.
1832        /// This method deletes a single document from the MongoDB database.
1833        /// Returns a DeleteOneResponse confirming the deletion.
1834        pub async fn delete_one(
1835            &mut self,
1836            request: impl tonic::IntoRequest<super::DeleteOneRequest>,
1837        ) -> std::result::Result<
1838            tonic::Response<super::DeleteOneResponse>,
1839            tonic::Status,
1840        > {
1841            self.inner
1842                .ready()
1843                .await
1844                .map_err(|e| {
1845                    tonic::Status::unknown(
1846                        format!("Service was not ready: {}", e.into()),
1847                    )
1848                })?;
1849            let codec = tonic::codec::ProstCodec::default();
1850            let path = http::uri::PathAndQuery::from_static(
1851                "/openiap.FlowService/DeleteOne",
1852            );
1853            let mut req = request.into_request();
1854            req.extensions_mut()
1855                .insert(GrpcMethod::new("openiap.FlowService", "DeleteOne"));
1856            self.inner.unary(req, path, codec).await
1857        }
1858        /// Deletes multiple documents using DeleteManyRequest and returns a DeleteManyResponse.
1859        /// This method deletes multiple documents from the MongoDB database.
1860        /// Returns a DeleteManyResponse confirming the deletions.
1861        pub async fn delete_many(
1862            &mut self,
1863            request: impl tonic::IntoRequest<super::DeleteManyRequest>,
1864        ) -> std::result::Result<
1865            tonic::Response<super::DeleteManyResponse>,
1866            tonic::Status,
1867        > {
1868            self.inner
1869                .ready()
1870                .await
1871                .map_err(|e| {
1872                    tonic::Status::unknown(
1873                        format!("Service was not ready: {}", e.into()),
1874                    )
1875                })?;
1876            let codec = tonic::codec::ProstCodec::default();
1877            let path = http::uri::PathAndQuery::from_static(
1878                "/openiap.FlowService/DeleteMany",
1879            );
1880            let mut req = request.into_request();
1881            req.extensions_mut()
1882                .insert(GrpcMethod::new("openiap.FlowService", "DeleteMany"));
1883            self.inner.unary(req, path, codec).await
1884        }
1885        /// Registers a queue using RegisterQueueRequest and returns a RegisterQueueResponse.
1886        /// This method registers and starts consuming a queue for message routing using AMQP
1887        /// Returns a RegisterQueueResponse confirming the registration.
1888        pub async fn register_queue(
1889            &mut self,
1890            request: impl tonic::IntoRequest<super::RegisterQueueRequest>,
1891        ) -> std::result::Result<
1892            tonic::Response<super::RegisterQueueResponse>,
1893            tonic::Status,
1894        > {
1895            self.inner
1896                .ready()
1897                .await
1898                .map_err(|e| {
1899                    tonic::Status::unknown(
1900                        format!("Service was not ready: {}", e.into()),
1901                    )
1902                })?;
1903            let codec = tonic::codec::ProstCodec::default();
1904            let path = http::uri::PathAndQuery::from_static(
1905                "/openiap.FlowService/RegisterQueue",
1906            );
1907            let mut req = request.into_request();
1908            req.extensions_mut()
1909                .insert(GrpcMethod::new("openiap.FlowService", "RegisterQueue"));
1910            self.inner.unary(req, path, codec).await
1911        }
1912        /// Registers an exchange using RegisterExchangeRequest and returns a RegisterExchangeResponse.
1913        /// This method registers an exchange and start consuming if for message routing using AMQP
1914        /// Returns a RegisterExchangeResponse confirming the registration.
1915        pub async fn register_exchange(
1916            &mut self,
1917            request: impl tonic::IntoRequest<super::RegisterExchangeRequest>,
1918        ) -> std::result::Result<
1919            tonic::Response<super::RegisterExchangeResponse>,
1920            tonic::Status,
1921        > {
1922            self.inner
1923                .ready()
1924                .await
1925                .map_err(|e| {
1926                    tonic::Status::unknown(
1927                        format!("Service was not ready: {}", e.into()),
1928                    )
1929                })?;
1930            let codec = tonic::codec::ProstCodec::default();
1931            let path = http::uri::PathAndQuery::from_static(
1932                "/openiap.FlowService/RegisterExchange",
1933            );
1934            let mut req = request.into_request();
1935            req.extensions_mut()
1936                .insert(GrpcMethod::new("openiap.FlowService", "RegisterExchange"));
1937            self.inner.unary(req, path, codec).await
1938        }
1939        /// Sends a message to a queue using QueueMessageRequest and returns a QueueMessageResponse.
1940        /// This method sends a message to a registered queue for processing.
1941        /// Returns a QueueMessageResponse confirming the message transmission.
1942        pub async fn queue_message(
1943            &mut self,
1944            request: impl tonic::IntoRequest<super::QueueMessageRequest>,
1945        ) -> std::result::Result<
1946            tonic::Response<super::QueueMessageResponse>,
1947            tonic::Status,
1948        > {
1949            self.inner
1950                .ready()
1951                .await
1952                .map_err(|e| {
1953                    tonic::Status::unknown(
1954                        format!("Service was not ready: {}", e.into()),
1955                    )
1956                })?;
1957            let codec = tonic::codec::ProstCodec::default();
1958            let path = http::uri::PathAndQuery::from_static(
1959                "/openiap.FlowService/QueueMessage",
1960            );
1961            let mut req = request.into_request();
1962            req.extensions_mut()
1963                .insert(GrpcMethod::new("openiap.FlowService", "QueueMessage"));
1964            self.inner.unary(req, path, codec).await
1965        }
1966        /// Unregisters a queue using UnRegisterQueueRequest and returns an UnRegisterQueueResponse.
1967        /// This method unregisters a previously registered queue or Exchange.
1968        /// Returns an UnRegisterQueueResponse confirming the unregistration.
1969        pub async fn un_register_queue(
1970            &mut self,
1971            request: impl tonic::IntoRequest<super::UnRegisterQueueRequest>,
1972        ) -> std::result::Result<
1973            tonic::Response<super::UnRegisterQueueResponse>,
1974            tonic::Status,
1975        > {
1976            self.inner
1977                .ready()
1978                .await
1979                .map_err(|e| {
1980                    tonic::Status::unknown(
1981                        format!("Service was not ready: {}", e.into()),
1982                    )
1983                })?;
1984            let codec = tonic::codec::ProstCodec::default();
1985            let path = http::uri::PathAndQuery::from_static(
1986                "/openiap.FlowService/UnRegisterQueue",
1987            );
1988            let mut req = request.into_request();
1989            req.extensions_mut()
1990                .insert(GrpcMethod::new("openiap.FlowService", "UnRegisterQueue"));
1991            self.inner.unary(req, path, codec).await
1992        }
1993        /// Watches for changes using WatchRequest and returns a WatchResponse.
1994        /// This method enables clients to watch for changes in a MongoDB collections, use paths (JSONQuerys) to limit what documents to wath.
1995        /// Returns a WatchResponse with relevant notifications.
1996        pub async fn watch(
1997            &mut self,
1998            request: impl tonic::IntoRequest<super::WatchRequest>,
1999        ) -> std::result::Result<tonic::Response<super::WatchResponse>, tonic::Status> {
2000            self.inner
2001                .ready()
2002                .await
2003                .map_err(|e| {
2004                    tonic::Status::unknown(
2005                        format!("Service was not ready: {}", e.into()),
2006                    )
2007                })?;
2008            let codec = tonic::codec::ProstCodec::default();
2009            let path = http::uri::PathAndQuery::from_static(
2010                "/openiap.FlowService/Watch",
2011            );
2012            let mut req = request.into_request();
2013            req.extensions_mut().insert(GrpcMethod::new("openiap.FlowService", "Watch"));
2014            self.inner.unary(req, path, codec).await
2015        }
2016        /// Stops watching for changes using UnWatchRequest and returns an UnWatchResponse.
2017        /// This method stops the client from watching for changes formerly registered using Watch
2018        /// Returns an UnWatchResponse confirming the cessation of watching.
2019        pub async fn un_watch(
2020            &mut self,
2021            request: impl tonic::IntoRequest<super::UnWatchRequest>,
2022        ) -> std::result::Result<
2023            tonic::Response<super::UnWatchResponse>,
2024            tonic::Status,
2025        > {
2026            self.inner
2027                .ready()
2028                .await
2029                .map_err(|e| {
2030                    tonic::Status::unknown(
2031                        format!("Service was not ready: {}", e.into()),
2032                    )
2033                })?;
2034            let codec = tonic::codec::ProstCodec::default();
2035            let path = http::uri::PathAndQuery::from_static(
2036                "/openiap.FlowService/UnWatch",
2037            );
2038            let mut req = request.into_request();
2039            req.extensions_mut()
2040                .insert(GrpcMethod::new("openiap.FlowService", "UnWatch"));
2041            self.inner.unary(req, path, codec).await
2042        }
2043        /// This method pushes (adds) a `Workitem` to a 'WorkItemQueue'
2044        /// Returns a PushWorkitemResponse confirming the operation.
2045        pub async fn push_workitem(
2046            &mut self,
2047            request: impl tonic::IntoRequest<super::PushWorkitemRequest>,
2048        ) -> std::result::Result<
2049            tonic::Response<super::PushWorkitemResponse>,
2050            tonic::Status,
2051        > {
2052            self.inner
2053                .ready()
2054                .await
2055                .map_err(|e| {
2056                    tonic::Status::unknown(
2057                        format!("Service was not ready: {}", e.into()),
2058                    )
2059                })?;
2060            let codec = tonic::codec::ProstCodec::default();
2061            let path = http::uri::PathAndQuery::from_static(
2062                "/openiap.FlowService/PushWorkitem",
2063            );
2064            let mut req = request.into_request();
2065            req.extensions_mut()
2066                .insert(GrpcMethod::new("openiap.FlowService", "PushWorkitem"));
2067            self.inner.unary(req, path, codec).await
2068        }
2069        /// Pushes multiple `Workitem`s using PushWorkitemsRequest and returns a PushWorkitemsResponse.
2070        /// This method pushes multiple `Workitem`s to a 'WorkItemQueue'.
2071        /// Returns a PushWorkitemsResponse confirming the operation.
2072        pub async fn push_workitems(
2073            &mut self,
2074            request: impl tonic::IntoRequest<super::PushWorkitemsRequest>,
2075        ) -> std::result::Result<
2076            tonic::Response<super::PushWorkitemsResponse>,
2077            tonic::Status,
2078        > {
2079            self.inner
2080                .ready()
2081                .await
2082                .map_err(|e| {
2083                    tonic::Status::unknown(
2084                        format!("Service was not ready: {}", e.into()),
2085                    )
2086                })?;
2087            let codec = tonic::codec::ProstCodec::default();
2088            let path = http::uri::PathAndQuery::from_static(
2089                "/openiap.FlowService/PushWorkitems",
2090            );
2091            let mut req = request.into_request();
2092            req.extensions_mut()
2093                .insert(GrpcMethod::new("openiap.FlowService", "PushWorkitems"));
2094            self.inner.unary(req, path, codec).await
2095        }
2096        /// Updates a `Workitem` using UpdateWorkitemRequest and returns an UpdateWorkitemResponse.
2097        /// This method updates a `Workitem` in the 'WorkItemQueue'.
2098        /// Returns an UpdateWorkitemResponse confirming the update.
2099        pub async fn update_workitem(
2100            &mut self,
2101            request: impl tonic::IntoRequest<super::UpdateWorkitemRequest>,
2102        ) -> std::result::Result<
2103            tonic::Response<super::UpdateWorkitemResponse>,
2104            tonic::Status,
2105        > {
2106            self.inner
2107                .ready()
2108                .await
2109                .map_err(|e| {
2110                    tonic::Status::unknown(
2111                        format!("Service was not ready: {}", e.into()),
2112                    )
2113                })?;
2114            let codec = tonic::codec::ProstCodec::default();
2115            let path = http::uri::PathAndQuery::from_static(
2116                "/openiap.FlowService/UpdateWorkitem",
2117            );
2118            let mut req = request.into_request();
2119            req.extensions_mut()
2120                .insert(GrpcMethod::new("openiap.FlowService", "UpdateWorkitem"));
2121            self.inner.unary(req, path, codec).await
2122        }
2123        /// Pops a `Workitem` using PopWorkitemRequest and returns a PopWorkitemResponse.
2124        /// This method pops a `Workitem` from the 'WorkItemQueue' for execution.
2125        /// Returns a PopWorkitemResponse with the popped `Workitem`.
2126        pub async fn pop_workitem(
2127            &mut self,
2128            request: impl tonic::IntoRequest<super::PopWorkitemRequest>,
2129        ) -> std::result::Result<
2130            tonic::Response<super::PopWorkitemResponse>,
2131            tonic::Status,
2132        > {
2133            self.inner
2134                .ready()
2135                .await
2136                .map_err(|e| {
2137                    tonic::Status::unknown(
2138                        format!("Service was not ready: {}", e.into()),
2139                    )
2140                })?;
2141            let codec = tonic::codec::ProstCodec::default();
2142            let path = http::uri::PathAndQuery::from_static(
2143                "/openiap.FlowService/PopWorkitem",
2144            );
2145            let mut req = request.into_request();
2146            req.extensions_mut()
2147                .insert(GrpcMethod::new("openiap.FlowService", "PopWorkitem"));
2148            self.inner.unary(req, path, codec).await
2149        }
2150        /// Deletes a `Workitem` using DeleteWorkitemRequest and returns a DeleteWorkitemResponse.
2151        /// This method deletes a `Workitem` from the 'WorkItemQueue'.
2152        /// Returns a DeleteWorkitemResponse confirming the deletion.
2153        pub async fn delete_workitem(
2154            &mut self,
2155            request: impl tonic::IntoRequest<super::DeleteWorkitemRequest>,
2156        ) -> std::result::Result<
2157            tonic::Response<super::DeleteWorkitemResponse>,
2158            tonic::Status,
2159        > {
2160            self.inner
2161                .ready()
2162                .await
2163                .map_err(|e| {
2164                    tonic::Status::unknown(
2165                        format!("Service was not ready: {}", e.into()),
2166                    )
2167                })?;
2168            let codec = tonic::codec::ProstCodec::default();
2169            let path = http::uri::PathAndQuery::from_static(
2170                "/openiap.FlowService/DeleteWorkitem",
2171            );
2172            let mut req = request.into_request();
2173            req.extensions_mut()
2174                .insert(GrpcMethod::new("openiap.FlowService", "DeleteWorkitem"));
2175            self.inner.unary(req, path, codec).await
2176        }
2177        /// This Created a new `WorkitemQueue'. These Queues can store `Workitem`s
2178        /// Returns an AddWorkItemQueueResponse confirming the addition.
2179        pub async fn add_work_item_queue(
2180            &mut self,
2181            request: impl tonic::IntoRequest<super::AddWorkItemQueueRequest>,
2182        ) -> std::result::Result<
2183            tonic::Response<super::AddWorkItemQueueResponse>,
2184            tonic::Status,
2185        > {
2186            self.inner
2187                .ready()
2188                .await
2189                .map_err(|e| {
2190                    tonic::Status::unknown(
2191                        format!("Service was not ready: {}", e.into()),
2192                    )
2193                })?;
2194            let codec = tonic::codec::ProstCodec::default();
2195            let path = http::uri::PathAndQuery::from_static(
2196                "/openiap.FlowService/AddWorkItemQueue",
2197            );
2198            let mut req = request.into_request();
2199            req.extensions_mut()
2200                .insert(GrpcMethod::new("openiap.FlowService", "AddWorkItemQueue"));
2201            self.inner.unary(req, path, codec).await
2202        }
2203        /// Updates an existing `WorkitemQueue'
2204        /// This method updates the configuration of a `WorkitemQueue'.
2205        /// Will also deleted all associated `Workitem`s if purge is enabled.
2206        /// Returns an UpdateWorkItemQueueResponse confirming the update.
2207        pub async fn update_work_item_queue(
2208            &mut self,
2209            request: impl tonic::IntoRequest<super::UpdateWorkItemQueueRequest>,
2210        ) -> std::result::Result<
2211            tonic::Response<super::UpdateWorkItemQueueResponse>,
2212            tonic::Status,
2213        > {
2214            self.inner
2215                .ready()
2216                .await
2217                .map_err(|e| {
2218                    tonic::Status::unknown(
2219                        format!("Service was not ready: {}", e.into()),
2220                    )
2221                })?;
2222            let codec = tonic::codec::ProstCodec::default();
2223            let path = http::uri::PathAndQuery::from_static(
2224                "/openiap.FlowService/UpdateWorkItemQueue",
2225            );
2226            let mut req = request.into_request();
2227            req.extensions_mut()
2228                .insert(GrpcMethod::new("openiap.FlowService", "UpdateWorkItemQueue"));
2229            self.inner.unary(req, path, codec).await
2230        }
2231        /// Deletes a `WorkitemQueue'
2232        /// This method deletes a `WorkitemQueue' queue. Will also deleted all associated `Workitem`s if purge is enabled.
2233        /// Returns a DeleteWorkItemQueueResponse confirming the deletion.
2234        pub async fn delete_work_item_queue(
2235            &mut self,
2236            request: impl tonic::IntoRequest<super::DeleteWorkItemQueueRequest>,
2237        ) -> std::result::Result<
2238            tonic::Response<super::DeleteWorkItemQueueResponse>,
2239            tonic::Status,
2240        > {
2241            self.inner
2242                .ready()
2243                .await
2244                .map_err(|e| {
2245                    tonic::Status::unknown(
2246                        format!("Service was not ready: {}", e.into()),
2247                    )
2248                })?;
2249            let codec = tonic::codec::ProstCodec::default();
2250            let path = http::uri::PathAndQuery::from_static(
2251                "/openiap.FlowService/DeleteWorkItemQueue",
2252            );
2253            let mut req = request.into_request();
2254            req.extensions_mut()
2255                .insert(GrpcMethod::new("openiap.FlowService", "DeleteWorkItemQueue"));
2256            self.inner.unary(req, path, codec).await
2257        }
2258        /// Ensures the existence of a customer using EnsureCustomerRequest and returns an EnsureCustomerResponse.
2259        /// This method ensures that a customer exists in the system and performs necessary actions.
2260        /// Returns an EnsureCustomerResponse confirming the operation.
2261        pub async fn ensure_customer(
2262            &mut self,
2263            request: impl tonic::IntoRequest<super::EnsureCustomerRequest>,
2264        ) -> std::result::Result<
2265            tonic::Response<super::EnsureCustomerResponse>,
2266            tonic::Status,
2267        > {
2268            self.inner
2269                .ready()
2270                .await
2271                .map_err(|e| {
2272                    tonic::Status::unknown(
2273                        format!("Service was not ready: {}", e.into()),
2274                    )
2275                })?;
2276            let codec = tonic::codec::ProstCodec::default();
2277            let path = http::uri::PathAndQuery::from_static(
2278                "/openiap.FlowService/EnsureCustomer",
2279            );
2280            let mut req = request.into_request();
2281            req.extensions_mut()
2282                .insert(GrpcMethod::new("openiap.FlowService", "EnsureCustomer"));
2283            self.inner.unary(req, path, codec).await
2284        }
2285        /// Execute a workflow on a OpenRPA robot. If rpc is true, will wait for reply and return reply ( this can take a long time !)
2286        pub async fn invoke_open_rpa(
2287            &mut self,
2288            request: impl tonic::IntoRequest<super::InvokeOpenRpaRequest>,
2289        ) -> std::result::Result<
2290            tonic::Response<super::InvokeOpenRpaResponse>,
2291            tonic::Status,
2292        > {
2293            self.inner
2294                .ready()
2295                .await
2296                .map_err(|e| {
2297                    tonic::Status::unknown(
2298                        format!("Service was not ready: {}", e.into()),
2299                    )
2300                })?;
2301            let codec = tonic::codec::ProstCodec::default();
2302            let path = http::uri::PathAndQuery::from_static(
2303                "/openiap.FlowService/InvokeOpenRPA",
2304            );
2305            let mut req = request.into_request();
2306            req.extensions_mut()
2307                .insert(GrpcMethod::new("openiap.FlowService", "InvokeOpenRPA"));
2308            self.inner.unary(req, path, codec).await
2309        }
2310        /// Start an agent inside Docker or Kubernetes
2311        /// agentid is the _id of an agent from the agents collection
2312        /// Requires invoke permission on agent
2313        pub async fn start_agent(
2314            &mut self,
2315            request: impl tonic::IntoRequest<super::StartAgentRequest>,
2316        ) -> std::result::Result<
2317            tonic::Response<super::StartAgentResponse>,
2318            tonic::Status,
2319        > {
2320            self.inner
2321                .ready()
2322                .await
2323                .map_err(|e| {
2324                    tonic::Status::unknown(
2325                        format!("Service was not ready: {}", e.into()),
2326                    )
2327                })?;
2328            let codec = tonic::codec::ProstCodec::default();
2329            let path = http::uri::PathAndQuery::from_static(
2330                "/openiap.FlowService/StartAgent",
2331            );
2332            let mut req = request.into_request();
2333            req.extensions_mut()
2334                .insert(GrpcMethod::new("openiap.FlowService", "StartAgent"));
2335            self.inner.unary(req, path, codec).await
2336        }
2337        /// Stop an agent running inside Docker or Kubernetes
2338        /// agentid is the _id of an agent from the agents collection
2339        /// Requires invoke permission on agent
2340        pub async fn stop_agent(
2341            &mut self,
2342            request: impl tonic::IntoRequest<super::StopAgentRequest>,
2343        ) -> std::result::Result<
2344            tonic::Response<super::StopAgentResponse>,
2345            tonic::Status,
2346        > {
2347            self.inner
2348                .ready()
2349                .await
2350                .map_err(|e| {
2351                    tonic::Status::unknown(
2352                        format!("Service was not ready: {}", e.into()),
2353                    )
2354                })?;
2355            let codec = tonic::codec::ProstCodec::default();
2356            let path = http::uri::PathAndQuery::from_static(
2357                "/openiap.FlowService/StopAgent",
2358            );
2359            let mut req = request.into_request();
2360            req.extensions_mut()
2361                .insert(GrpcMethod::new("openiap.FlowService", "StopAgent"));
2362            self.inner.unary(req, path, codec).await
2363        }
2364        /// Return the console output of an running agent, can be in docker, kubernetes or running remote.
2365        /// agentid is the _id of an agent from the agents collection
2366        /// Requires invoke permission on agent
2367        pub async fn get_agent_log(
2368            &mut self,
2369            request: impl tonic::IntoRequest<super::GetAgentLogRequest>,
2370        ) -> std::result::Result<
2371            tonic::Response<super::GetAgentLogResponse>,
2372            tonic::Status,
2373        > {
2374            self.inner
2375                .ready()
2376                .await
2377                .map_err(|e| {
2378                    tonic::Status::unknown(
2379                        format!("Service was not ready: {}", e.into()),
2380                    )
2381                })?;
2382            let codec = tonic::codec::ProstCodec::default();
2383            let path = http::uri::PathAndQuery::from_static(
2384                "/openiap.FlowService/GetAgentLog",
2385            );
2386            let mut req = request.into_request();
2387            req.extensions_mut()
2388                .insert(GrpcMethod::new("openiap.FlowService", "GetAgentLog"));
2389            self.inner.unary(req, path, codec).await
2390        }
2391        /// Return a list of pods for an running agent. Docker and Kubernetes only.
2392        /// agentid is the _id of an agent from the agents collection
2393        /// Requires invoke permission on agent
2394        pub async fn get_agent_pods(
2395            &mut self,
2396            request: impl tonic::IntoRequest<super::GetAgentPodsRequest>,
2397        ) -> std::result::Result<
2398            tonic::Response<super::GetAgentPodsResponse>,
2399            tonic::Status,
2400        > {
2401            self.inner
2402                .ready()
2403                .await
2404                .map_err(|e| {
2405                    tonic::Status::unknown(
2406                        format!("Service was not ready: {}", e.into()),
2407                    )
2408                })?;
2409            let codec = tonic::codec::ProstCodec::default();
2410            let path = http::uri::PathAndQuery::from_static(
2411                "/openiap.FlowService/GetAgentPods",
2412            );
2413            let mut req = request.into_request();
2414            req.extensions_mut()
2415                .insert(GrpcMethod::new("openiap.FlowService", "GetAgentPods"));
2416            self.inner.unary(req, path, codec).await
2417        }
2418        /// Remove an agent pod, found with GetAgentPods. Docker and Kubernetes only.
2419        /// On kubernetes this will restart it, on Docker this will kill it
2420        /// agentid is the _id of an agent from the agents collection
2421        /// Requires invoke permission on agent
2422        pub async fn delete_agent_pod(
2423            &mut self,
2424            request: impl tonic::IntoRequest<super::DeleteAgentPodRequest>,
2425        ) -> std::result::Result<
2426            tonic::Response<super::DeleteAgentPodResponse>,
2427            tonic::Status,
2428        > {
2429            self.inner
2430                .ready()
2431                .await
2432                .map_err(|e| {
2433                    tonic::Status::unknown(
2434                        format!("Service was not ready: {}", e.into()),
2435                    )
2436                })?;
2437            let codec = tonic::codec::ProstCodec::default();
2438            let path = http::uri::PathAndQuery::from_static(
2439                "/openiap.FlowService/DeleteAgentPod",
2440            );
2441            let mut req = request.into_request();
2442            req.extensions_mut()
2443                .insert(GrpcMethod::new("openiap.FlowService", "DeleteAgentPod"));
2444            self.inner.unary(req, path, codec).await
2445        }
2446        /// Remove an agent if running. Docker and Kubernetes only.
2447        /// Removes instance on docker, remove deployment, ingress and other resources on Kubernetes
2448        /// agentid is the _id of an agent from the agents collection
2449        /// Requires delete permission on agent
2450        pub async fn delete_agent(
2451            &mut self,
2452            request: impl tonic::IntoRequest<super::DeleteAgentRequest>,
2453        ) -> std::result::Result<
2454            tonic::Response<super::DeleteAgentResponse>,
2455            tonic::Status,
2456        > {
2457            self.inner
2458                .ready()
2459                .await
2460                .map_err(|e| {
2461                    tonic::Status::unknown(
2462                        format!("Service was not ready: {}", e.into()),
2463                    )
2464                })?;
2465            let codec = tonic::codec::ProstCodec::default();
2466            let path = http::uri::PathAndQuery::from_static(
2467                "/openiap.FlowService/DeleteAgent",
2468            );
2469            let mut req = request.into_request();
2470            req.extensions_mut()
2471                .insert(GrpcMethod::new("openiap.FlowService", "DeleteAgent"));
2472            self.inner.unary(req, path, codec).await
2473        }
2474        /// Create an Index on a MongoDB Collection
2475        /// Will not fail if exists, but will fail if spec is different from existing.
2476        /// Require admins rights
2477        pub async fn create_index(
2478            &mut self,
2479            request: impl tonic::IntoRequest<super::CreateIndexRequest>,
2480        ) -> std::result::Result<
2481            tonic::Response<super::CreateIndexResponse>,
2482            tonic::Status,
2483        > {
2484            self.inner
2485                .ready()
2486                .await
2487                .map_err(|e| {
2488                    tonic::Status::unknown(
2489                        format!("Service was not ready: {}", e.into()),
2490                    )
2491                })?;
2492            let codec = tonic::codec::ProstCodec::default();
2493            let path = http::uri::PathAndQuery::from_static(
2494                "/openiap.FlowService/CreateIndex",
2495            );
2496            let mut req = request.into_request();
2497            req.extensions_mut()
2498                .insert(GrpcMethod::new("openiap.FlowService", "CreateIndex"));
2499            self.inner.unary(req, path, codec).await
2500        }
2501        /// Create an Index on a MongoDB Collection
2502        /// Will not fail if exists, but will fail if spec is different from existing.
2503        /// Require admins rights
2504        pub async fn get_indexes(
2505            &mut self,
2506            request: impl tonic::IntoRequest<super::GetIndexesRequest>,
2507        ) -> std::result::Result<
2508            tonic::Response<super::GetIndexesResponse>,
2509            tonic::Status,
2510        > {
2511            self.inner
2512                .ready()
2513                .await
2514                .map_err(|e| {
2515                    tonic::Status::unknown(
2516                        format!("Service was not ready: {}", e.into()),
2517                    )
2518                })?;
2519            let codec = tonic::codec::ProstCodec::default();
2520            let path = http::uri::PathAndQuery::from_static(
2521                "/openiap.FlowService/GetIndexes",
2522            );
2523            let mut req = request.into_request();
2524            req.extensions_mut()
2525                .insert(GrpcMethod::new("openiap.FlowService", "GetIndexes"));
2526            self.inner.unary(req, path, codec).await
2527        }
2528        /// Delete an Index from a MongoDB Collection
2529        /// Require admins rights
2530        pub async fn drop_index(
2531            &mut self,
2532            request: impl tonic::IntoRequest<super::DropIndexRequest>,
2533        ) -> std::result::Result<
2534            tonic::Response<super::DropIndexResponse>,
2535            tonic::Status,
2536        > {
2537            self.inner
2538                .ready()
2539                .await
2540                .map_err(|e| {
2541                    tonic::Status::unknown(
2542                        format!("Service was not ready: {}", e.into()),
2543                    )
2544                })?;
2545            let codec = tonic::codec::ProstCodec::default();
2546            let path = http::uri::PathAndQuery::from_static(
2547                "/openiap.FlowService/DropIndex",
2548            );
2549            let mut req = request.into_request();
2550            req.extensions_mut()
2551                .insert(GrpcMethod::new("openiap.FlowService", "DropIndex"));
2552            self.inner.unary(req, path, codec).await
2553        }
2554        /// Delete an agent Package.
2555        /// Removes the associated file and then delete te package from the agents collection.
2556        /// Requires delete permission on the Package
2557        pub async fn delete_package(
2558            &mut self,
2559            request: impl tonic::IntoRequest<super::DeletePackageRequest>,
2560        ) -> std::result::Result<
2561            tonic::Response<super::DeletePackageResponse>,
2562            tonic::Status,
2563        > {
2564            self.inner
2565                .ready()
2566                .await
2567                .map_err(|e| {
2568                    tonic::Status::unknown(
2569                        format!("Service was not ready: {}", e.into()),
2570                    )
2571                })?;
2572            let codec = tonic::codec::ProstCodec::default();
2573            let path = http::uri::PathAndQuery::from_static(
2574                "/openiap.FlowService/DeletePackage",
2575            );
2576            let mut req = request.into_request();
2577            req.extensions_mut()
2578                .insert(GrpcMethod::new("openiap.FlowService", "DeletePackage"));
2579            self.inner.unary(req, path, codec).await
2580        }
2581    }
2582}
2583/// Generated server implementations.
2584pub mod flow_service_server {
2585    #![allow(
2586        unused_variables,
2587        dead_code,
2588        missing_docs,
2589        clippy::wildcard_imports,
2590        clippy::let_unit_value,
2591    )]
2592    use tonic::codegen::*;
2593    /// Generated trait containing gRPC methods that should be implemented for use with FlowServiceServer.
2594    #[async_trait]
2595    pub trait FlowService: std::marker::Send + std::marker::Sync + 'static {
2596        /// Server streaming response type for the SetupStream method.
2597        type SetupStreamStream: tonic::codegen::tokio_stream::Stream<
2598                Item = std::result::Result<super::Envelope, tonic::Status>,
2599            >
2600            + std::marker::Send
2601            + 'static;
2602        /// Establishes a bidirectional streaming connection for sending and receiving Envelopes.
2603        /// This method is used to set up a real-time data stream for communication.
2604        /// Returns a bidirectional stream of Envelopes.
2605        async fn setup_stream(
2606            &self,
2607            request: tonic::Request<tonic::Streaming<super::Envelope>>,
2608        ) -> std::result::Result<
2609            tonic::Response<Self::SetupStreamStream>,
2610            tonic::Status,
2611        >;
2612        /// Signs in a user with the provided SigninRequest and returns a SigninResponse.
2613        /// This method authenticates a user and provides access to the OpenFlow system.
2614        /// Returns a SigninResponse containing authentication details.
2615        async fn signin(
2616            &self,
2617            request: tonic::Request<super::SigninRequest>,
2618        ) -> std::result::Result<tonic::Response<super::SigninResponse>, tonic::Status>;
2619        /// Downloads a file from OpenFlow
2620        /// This method retrieves files from the OpenFlow system based on the specified criteria.
2621        /// This will initiaize a DownLoad stream, and once completed send send a DownloadResponse
2622        async fn download(
2623            &self,
2624            request: tonic::Request<super::DownloadRequest>,
2625        ) -> std::result::Result<
2626            tonic::Response<super::DownloadResponse>,
2627            tonic::Status,
2628        >;
2629        /// Uploads data based on the provided UploadRequest and returns an UploadResponse.
2630        /// This method allows users to upload data to the OpenFlow system.
2631        /// Returns an UploadResponse confirming the successful upload.
2632        async fn upload(
2633            &self,
2634            request: tonic::Request<super::UploadRequest>,
2635        ) -> std::result::Result<tonic::Response<super::UploadResponse>, tonic::Status>;
2636        /// Executes a custom command in OpenIAP Flow.
2637        /// This method enables the execution of custom commands within the OpenFlow system.
2638        /// Returns a CustomCommandResponse with the result of the command execution.
2639        async fn custom_command(
2640            &self,
2641            request: tonic::Request<super::CustomCommandRequest>,
2642        ) -> std::result::Result<
2643            tonic::Response<super::CustomCommandResponse>,
2644            tonic::Status,
2645        >;
2646        /// Lists all MongoDB collections the user has access to.
2647        /// This method provides a list of collections that the user can interact with in the MongoDB database.
2648        /// Returns a ListCollectionsResponse containing collection names.
2649        async fn list_collections(
2650            &self,
2651            request: tonic::Request<super::ListCollectionsRequest>,
2652        ) -> std::result::Result<
2653            tonic::Response<super::ListCollectionsResponse>,
2654            tonic::Status,
2655        >;
2656        /// Drops a MongoDB Collection, requires user is a member of admins role.
2657        /// This method allows administrators to delete a MongoDB collection.
2658        /// Returns a DropCollectionResponse confirming the deletion.
2659        async fn drop_collection(
2660            &self,
2661            request: tonic::Request<super::DropCollectionRequest>,
2662        ) -> std::result::Result<
2663            tonic::Response<super::DropCollectionResponse>,
2664            tonic::Status,
2665        >;
2666        /// Creates a new MongoDB collection, useful if you need to create with parameters like creating a TimeSeries Collection.
2667        /// This method creates a new MongoDB collection with optional parameters.
2668        /// Returns a CreateCollectionResponse indicating the success of collection creation.
2669        async fn create_collection(
2670            &self,
2671            request: tonic::Request<super::CreateCollectionRequest>,
2672        ) -> std::result::Result<
2673            tonic::Response<super::CreateCollectionResponse>,
2674            tonic::Status,
2675        >;
2676        /// Performs a query using QueryRequest and returns a QueryResponse.
2677        /// This method executes a query operation in the MongoDB database.
2678        /// Returns a QueryResponse with query results.
2679        async fn query(
2680            &self,
2681            request: tonic::Request<super::QueryRequest>,
2682        ) -> std::result::Result<tonic::Response<super::QueryResponse>, tonic::Status>;
2683        /// Retrieves a document's version using GetDocumentVersionRequest and returns a GetDocumentVersionResponse.
2684        /// This method retrieves a specific version of a document.
2685        /// Returns a GetDocumentVersionResponse with the requested document version.
2686        async fn get_document_version(
2687            &self,
2688            request: tonic::Request<super::GetDocumentVersionRequest>,
2689        ) -> std::result::Result<
2690            tonic::Response<super::GetDocumentVersionResponse>,
2691            tonic::Status,
2692        >;
2693        /// Aggregates data based on AggregateRequest and returns an AggregateResponse.
2694        /// This method performs data aggregation operations on the MongoDB database.
2695        /// Returns an AggregateResponse with the aggregated data.
2696        async fn aggregate(
2697            &self,
2698            request: tonic::Request<super::AggregateRequest>,
2699        ) -> std::result::Result<
2700            tonic::Response<super::AggregateResponse>,
2701            tonic::Status,
2702        >;
2703        /// Counts documents based on CountRequest and returns a CountResponse.
2704        /// This method counts documents in the MongoDB database based on specified criteria.
2705        /// Returns a CountResponse with the count result.
2706        async fn count(
2707            &self,
2708            request: tonic::Request<super::CountRequest>,
2709        ) -> std::result::Result<tonic::Response<super::CountResponse>, tonic::Status>;
2710        /// Inserts a single document using InsertOneRequest and returns an InsertOneResponse.
2711        /// This method inserts a single document into the MongoDB database.
2712        /// Returns an InsertOneResponse confirming the insertion.
2713        async fn insert_one(
2714            &self,
2715            request: tonic::Request<super::InsertOneRequest>,
2716        ) -> std::result::Result<
2717            tonic::Response<super::InsertOneResponse>,
2718            tonic::Status,
2719        >;
2720        /// Inserts multiple documents using InsertManyRequest and returns an InsertManyResponse.
2721        /// This method inserts multiple documents into the MongoDB database.
2722        /// Returns an InsertManyResponse confirming the insertions.
2723        async fn insert_many(
2724            &self,
2725            request: tonic::Request<super::InsertManyRequest>,
2726        ) -> std::result::Result<
2727            tonic::Response<super::InsertManyResponse>,
2728            tonic::Status,
2729        >;
2730        /// Updates a single document using UpdateOneRequest and returns an UpdateOneResponse.
2731        /// This method updates a single document in the MongoDB database.
2732        /// Returns an UpdateOneResponse confirming the update.
2733        async fn update_one(
2734            &self,
2735            request: tonic::Request<super::UpdateOneRequest>,
2736        ) -> std::result::Result<
2737            tonic::Response<super::UpdateOneResponse>,
2738            tonic::Status,
2739        >;
2740        /// Updates documents using UpdateDocumentRequest and returns an UpdateDocumentResponse.
2741        /// This method updates multiple documents in the MongoDB database.
2742        /// Returns an UpdateDocumentResponse confirming the updates.
2743        async fn update_document(
2744            &self,
2745            request: tonic::Request<super::UpdateDocumentRequest>,
2746        ) -> std::result::Result<
2747            tonic::Response<super::UpdateDocumentResponse>,
2748            tonic::Status,
2749        >;
2750        /// Inserts or updates a single document using InsertOrUpdateOneRequest and returns an InsertOrUpdateOneResponse.
2751        /// This method either inserts or updates a single document in the MongoDB database.
2752        /// Returns an InsertOrUpdateOneResponse confirming the operation.
2753        async fn insert_or_update_one(
2754            &self,
2755            request: tonic::Request<super::InsertOrUpdateOneRequest>,
2756        ) -> std::result::Result<
2757            tonic::Response<super::InsertOrUpdateOneResponse>,
2758            tonic::Status,
2759        >;
2760        /// Inserts or updates multiple documents using InsertOrUpdateManyRequest and returns an InsertOrUpdateManyResponse.
2761        /// This method either inserts or updates multiple documents in the MongoDB database.
2762        /// Returns an InsertOrUpdateManyResponse confirming the operation.
2763        async fn insert_or_update_many(
2764            &self,
2765            request: tonic::Request<super::InsertOrUpdateManyRequest>,
2766        ) -> std::result::Result<
2767            tonic::Response<super::InsertOrUpdateManyResponse>,
2768            tonic::Status,
2769        >;
2770        /// Deletes a single document using DeleteOneRequest and returns a DeleteOneResponse.
2771        /// This method deletes a single document from the MongoDB database.
2772        /// Returns a DeleteOneResponse confirming the deletion.
2773        async fn delete_one(
2774            &self,
2775            request: tonic::Request<super::DeleteOneRequest>,
2776        ) -> std::result::Result<
2777            tonic::Response<super::DeleteOneResponse>,
2778            tonic::Status,
2779        >;
2780        /// Deletes multiple documents using DeleteManyRequest and returns a DeleteManyResponse.
2781        /// This method deletes multiple documents from the MongoDB database.
2782        /// Returns a DeleteManyResponse confirming the deletions.
2783        async fn delete_many(
2784            &self,
2785            request: tonic::Request<super::DeleteManyRequest>,
2786        ) -> std::result::Result<
2787            tonic::Response<super::DeleteManyResponse>,
2788            tonic::Status,
2789        >;
2790        /// Registers a queue using RegisterQueueRequest and returns a RegisterQueueResponse.
2791        /// This method registers and starts consuming a queue for message routing using AMQP
2792        /// Returns a RegisterQueueResponse confirming the registration.
2793        async fn register_queue(
2794            &self,
2795            request: tonic::Request<super::RegisterQueueRequest>,
2796        ) -> std::result::Result<
2797            tonic::Response<super::RegisterQueueResponse>,
2798            tonic::Status,
2799        >;
2800        /// Registers an exchange using RegisterExchangeRequest and returns a RegisterExchangeResponse.
2801        /// This method registers an exchange and start consuming if for message routing using AMQP
2802        /// Returns a RegisterExchangeResponse confirming the registration.
2803        async fn register_exchange(
2804            &self,
2805            request: tonic::Request<super::RegisterExchangeRequest>,
2806        ) -> std::result::Result<
2807            tonic::Response<super::RegisterExchangeResponse>,
2808            tonic::Status,
2809        >;
2810        /// Sends a message to a queue using QueueMessageRequest and returns a QueueMessageResponse.
2811        /// This method sends a message to a registered queue for processing.
2812        /// Returns a QueueMessageResponse confirming the message transmission.
2813        async fn queue_message(
2814            &self,
2815            request: tonic::Request<super::QueueMessageRequest>,
2816        ) -> std::result::Result<
2817            tonic::Response<super::QueueMessageResponse>,
2818            tonic::Status,
2819        >;
2820        /// Unregisters a queue using UnRegisterQueueRequest and returns an UnRegisterQueueResponse.
2821        /// This method unregisters a previously registered queue or Exchange.
2822        /// Returns an UnRegisterQueueResponse confirming the unregistration.
2823        async fn un_register_queue(
2824            &self,
2825            request: tonic::Request<super::UnRegisterQueueRequest>,
2826        ) -> std::result::Result<
2827            tonic::Response<super::UnRegisterQueueResponse>,
2828            tonic::Status,
2829        >;
2830        /// Watches for changes using WatchRequest and returns a WatchResponse.
2831        /// This method enables clients to watch for changes in a MongoDB collections, use paths (JSONQuerys) to limit what documents to wath.
2832        /// Returns a WatchResponse with relevant notifications.
2833        async fn watch(
2834            &self,
2835            request: tonic::Request<super::WatchRequest>,
2836        ) -> std::result::Result<tonic::Response<super::WatchResponse>, tonic::Status>;
2837        /// Stops watching for changes using UnWatchRequest and returns an UnWatchResponse.
2838        /// This method stops the client from watching for changes formerly registered using Watch
2839        /// Returns an UnWatchResponse confirming the cessation of watching.
2840        async fn un_watch(
2841            &self,
2842            request: tonic::Request<super::UnWatchRequest>,
2843        ) -> std::result::Result<tonic::Response<super::UnWatchResponse>, tonic::Status>;
2844        /// This method pushes (adds) a `Workitem` to a 'WorkItemQueue'
2845        /// Returns a PushWorkitemResponse confirming the operation.
2846        async fn push_workitem(
2847            &self,
2848            request: tonic::Request<super::PushWorkitemRequest>,
2849        ) -> std::result::Result<
2850            tonic::Response<super::PushWorkitemResponse>,
2851            tonic::Status,
2852        >;
2853        /// Pushes multiple `Workitem`s using PushWorkitemsRequest and returns a PushWorkitemsResponse.
2854        /// This method pushes multiple `Workitem`s to a 'WorkItemQueue'.
2855        /// Returns a PushWorkitemsResponse confirming the operation.
2856        async fn push_workitems(
2857            &self,
2858            request: tonic::Request<super::PushWorkitemsRequest>,
2859        ) -> std::result::Result<
2860            tonic::Response<super::PushWorkitemsResponse>,
2861            tonic::Status,
2862        >;
2863        /// Updates a `Workitem` using UpdateWorkitemRequest and returns an UpdateWorkitemResponse.
2864        /// This method updates a `Workitem` in the 'WorkItemQueue'.
2865        /// Returns an UpdateWorkitemResponse confirming the update.
2866        async fn update_workitem(
2867            &self,
2868            request: tonic::Request<super::UpdateWorkitemRequest>,
2869        ) -> std::result::Result<
2870            tonic::Response<super::UpdateWorkitemResponse>,
2871            tonic::Status,
2872        >;
2873        /// Pops a `Workitem` using PopWorkitemRequest and returns a PopWorkitemResponse.
2874        /// This method pops a `Workitem` from the 'WorkItemQueue' for execution.
2875        /// Returns a PopWorkitemResponse with the popped `Workitem`.
2876        async fn pop_workitem(
2877            &self,
2878            request: tonic::Request<super::PopWorkitemRequest>,
2879        ) -> std::result::Result<
2880            tonic::Response<super::PopWorkitemResponse>,
2881            tonic::Status,
2882        >;
2883        /// Deletes a `Workitem` using DeleteWorkitemRequest and returns a DeleteWorkitemResponse.
2884        /// This method deletes a `Workitem` from the 'WorkItemQueue'.
2885        /// Returns a DeleteWorkitemResponse confirming the deletion.
2886        async fn delete_workitem(
2887            &self,
2888            request: tonic::Request<super::DeleteWorkitemRequest>,
2889        ) -> std::result::Result<
2890            tonic::Response<super::DeleteWorkitemResponse>,
2891            tonic::Status,
2892        >;
2893        /// This Created a new `WorkitemQueue'. These Queues can store `Workitem`s
2894        /// Returns an AddWorkItemQueueResponse confirming the addition.
2895        async fn add_work_item_queue(
2896            &self,
2897            request: tonic::Request<super::AddWorkItemQueueRequest>,
2898        ) -> std::result::Result<
2899            tonic::Response<super::AddWorkItemQueueResponse>,
2900            tonic::Status,
2901        >;
2902        /// Updates an existing `WorkitemQueue'
2903        /// This method updates the configuration of a `WorkitemQueue'.
2904        /// Will also deleted all associated `Workitem`s if purge is enabled.
2905        /// Returns an UpdateWorkItemQueueResponse confirming the update.
2906        async fn update_work_item_queue(
2907            &self,
2908            request: tonic::Request<super::UpdateWorkItemQueueRequest>,
2909        ) -> std::result::Result<
2910            tonic::Response<super::UpdateWorkItemQueueResponse>,
2911            tonic::Status,
2912        >;
2913        /// Deletes a `WorkitemQueue'
2914        /// This method deletes a `WorkitemQueue' queue. Will also deleted all associated `Workitem`s if purge is enabled.
2915        /// Returns a DeleteWorkItemQueueResponse confirming the deletion.
2916        async fn delete_work_item_queue(
2917            &self,
2918            request: tonic::Request<super::DeleteWorkItemQueueRequest>,
2919        ) -> std::result::Result<
2920            tonic::Response<super::DeleteWorkItemQueueResponse>,
2921            tonic::Status,
2922        >;
2923        /// Ensures the existence of a customer using EnsureCustomerRequest and returns an EnsureCustomerResponse.
2924        /// This method ensures that a customer exists in the system and performs necessary actions.
2925        /// Returns an EnsureCustomerResponse confirming the operation.
2926        async fn ensure_customer(
2927            &self,
2928            request: tonic::Request<super::EnsureCustomerRequest>,
2929        ) -> std::result::Result<
2930            tonic::Response<super::EnsureCustomerResponse>,
2931            tonic::Status,
2932        >;
2933        /// Execute a workflow on a OpenRPA robot. If rpc is true, will wait for reply and return reply ( this can take a long time !)
2934        async fn invoke_open_rpa(
2935            &self,
2936            request: tonic::Request<super::InvokeOpenRpaRequest>,
2937        ) -> std::result::Result<
2938            tonic::Response<super::InvokeOpenRpaResponse>,
2939            tonic::Status,
2940        >;
2941        /// Start an agent inside Docker or Kubernetes
2942        /// agentid is the _id of an agent from the agents collection
2943        /// Requires invoke permission on agent
2944        async fn start_agent(
2945            &self,
2946            request: tonic::Request<super::StartAgentRequest>,
2947        ) -> std::result::Result<
2948            tonic::Response<super::StartAgentResponse>,
2949            tonic::Status,
2950        >;
2951        /// Stop an agent running inside Docker or Kubernetes
2952        /// agentid is the _id of an agent from the agents collection
2953        /// Requires invoke permission on agent
2954        async fn stop_agent(
2955            &self,
2956            request: tonic::Request<super::StopAgentRequest>,
2957        ) -> std::result::Result<
2958            tonic::Response<super::StopAgentResponse>,
2959            tonic::Status,
2960        >;
2961        /// Return the console output of an running agent, can be in docker, kubernetes or running remote.
2962        /// agentid is the _id of an agent from the agents collection
2963        /// Requires invoke permission on agent
2964        async fn get_agent_log(
2965            &self,
2966            request: tonic::Request<super::GetAgentLogRequest>,
2967        ) -> std::result::Result<
2968            tonic::Response<super::GetAgentLogResponse>,
2969            tonic::Status,
2970        >;
2971        /// Return a list of pods for an running agent. Docker and Kubernetes only.
2972        /// agentid is the _id of an agent from the agents collection
2973        /// Requires invoke permission on agent
2974        async fn get_agent_pods(
2975            &self,
2976            request: tonic::Request<super::GetAgentPodsRequest>,
2977        ) -> std::result::Result<
2978            tonic::Response<super::GetAgentPodsResponse>,
2979            tonic::Status,
2980        >;
2981        /// Remove an agent pod, found with GetAgentPods. Docker and Kubernetes only.
2982        /// On kubernetes this will restart it, on Docker this will kill it
2983        /// agentid is the _id of an agent from the agents collection
2984        /// Requires invoke permission on agent
2985        async fn delete_agent_pod(
2986            &self,
2987            request: tonic::Request<super::DeleteAgentPodRequest>,
2988        ) -> std::result::Result<
2989            tonic::Response<super::DeleteAgentPodResponse>,
2990            tonic::Status,
2991        >;
2992        /// Remove an agent if running. Docker and Kubernetes only.
2993        /// Removes instance on docker, remove deployment, ingress and other resources on Kubernetes
2994        /// agentid is the _id of an agent from the agents collection
2995        /// Requires delete permission on agent
2996        async fn delete_agent(
2997            &self,
2998            request: tonic::Request<super::DeleteAgentRequest>,
2999        ) -> std::result::Result<
3000            tonic::Response<super::DeleteAgentResponse>,
3001            tonic::Status,
3002        >;
3003        /// Create an Index on a MongoDB Collection
3004        /// Will not fail if exists, but will fail if spec is different from existing.
3005        /// Require admins rights
3006        async fn create_index(
3007            &self,
3008            request: tonic::Request<super::CreateIndexRequest>,
3009        ) -> std::result::Result<
3010            tonic::Response<super::CreateIndexResponse>,
3011            tonic::Status,
3012        >;
3013        /// Create an Index on a MongoDB Collection
3014        /// Will not fail if exists, but will fail if spec is different from existing.
3015        /// Require admins rights
3016        async fn get_indexes(
3017            &self,
3018            request: tonic::Request<super::GetIndexesRequest>,
3019        ) -> std::result::Result<
3020            tonic::Response<super::GetIndexesResponse>,
3021            tonic::Status,
3022        >;
3023        /// Delete an Index from a MongoDB Collection
3024        /// Require admins rights
3025        async fn drop_index(
3026            &self,
3027            request: tonic::Request<super::DropIndexRequest>,
3028        ) -> std::result::Result<
3029            tonic::Response<super::DropIndexResponse>,
3030            tonic::Status,
3031        >;
3032        /// Delete an agent Package.
3033        /// Removes the associated file and then delete te package from the agents collection.
3034        /// Requires delete permission on the Package
3035        async fn delete_package(
3036            &self,
3037            request: tonic::Request<super::DeletePackageRequest>,
3038        ) -> std::result::Result<
3039            tonic::Response<super::DeletePackageResponse>,
3040            tonic::Status,
3041        >;
3042    }
3043    /// Service for managing OpenIAP Flow (OpenFlow)
3044    #[derive(Debug)]
3045    pub struct FlowServiceServer<T> {
3046        inner: Arc<T>,
3047        accept_compression_encodings: EnabledCompressionEncodings,
3048        send_compression_encodings: EnabledCompressionEncodings,
3049        max_decoding_message_size: Option<usize>,
3050        max_encoding_message_size: Option<usize>,
3051    }
3052    impl<T> FlowServiceServer<T> {
3053        pub fn new(inner: T) -> Self {
3054            Self::from_arc(Arc::new(inner))
3055        }
3056        pub fn from_arc(inner: Arc<T>) -> Self {
3057            Self {
3058                inner,
3059                accept_compression_encodings: Default::default(),
3060                send_compression_encodings: Default::default(),
3061                max_decoding_message_size: None,
3062                max_encoding_message_size: None,
3063            }
3064        }
3065        pub fn with_interceptor<F>(
3066            inner: T,
3067            interceptor: F,
3068        ) -> InterceptedService<Self, F>
3069        where
3070            F: tonic::service::Interceptor,
3071        {
3072            InterceptedService::new(Self::new(inner), interceptor)
3073        }
3074        /// Enable decompressing requests with the given encoding.
3075        #[must_use]
3076        pub fn accept_compressed(mut self, encoding: CompressionEncoding) -> Self {
3077            self.accept_compression_encodings.enable(encoding);
3078            self
3079        }
3080        /// Compress responses with the given encoding, if the client supports it.
3081        #[must_use]
3082        pub fn send_compressed(mut self, encoding: CompressionEncoding) -> Self {
3083            self.send_compression_encodings.enable(encoding);
3084            self
3085        }
3086        /// Limits the maximum size of a decoded message.
3087        ///
3088        /// Default: `4MB`
3089        #[must_use]
3090        pub fn max_decoding_message_size(mut self, limit: usize) -> Self {
3091            self.max_decoding_message_size = Some(limit);
3092            self
3093        }
3094        /// Limits the maximum size of an encoded message.
3095        ///
3096        /// Default: `usize::MAX`
3097        #[must_use]
3098        pub fn max_encoding_message_size(mut self, limit: usize) -> Self {
3099            self.max_encoding_message_size = Some(limit);
3100            self
3101        }
3102    }
3103    impl<T, B> tonic::codegen::Service<http::Request<B>> for FlowServiceServer<T>
3104    where
3105        T: FlowService,
3106        B: Body + std::marker::Send + 'static,
3107        B::Error: Into<StdError> + std::marker::Send + 'static,
3108    {
3109        type Response = http::Response<tonic::body::BoxBody>;
3110        type Error = std::convert::Infallible;
3111        type Future = BoxFuture<Self::Response, Self::Error>;
3112        fn poll_ready(
3113            &mut self,
3114            _cx: &mut Context<'_>,
3115        ) -> Poll<std::result::Result<(), Self::Error>> {
3116            Poll::Ready(Ok(()))
3117        }
3118        fn call(&mut self, req: http::Request<B>) -> Self::Future {
3119            match req.uri().path() {
3120                "/openiap.FlowService/SetupStream" => {
3121                    #[allow(non_camel_case_types)]
3122                    struct SetupStreamSvc<T: FlowService>(pub Arc<T>);
3123                    impl<T: FlowService> tonic::server::StreamingService<super::Envelope>
3124                    for SetupStreamSvc<T> {
3125                        type Response = super::Envelope;
3126                        type ResponseStream = T::SetupStreamStream;
3127                        type Future = BoxFuture<
3128                            tonic::Response<Self::ResponseStream>,
3129                            tonic::Status,
3130                        >;
3131                        fn call(
3132                            &mut self,
3133                            request: tonic::Request<tonic::Streaming<super::Envelope>>,
3134                        ) -> Self::Future {
3135                            let inner = Arc::clone(&self.0);
3136                            let fut = async move {
3137                                <T as FlowService>::setup_stream(&inner, request).await
3138                            };
3139                            Box::pin(fut)
3140                        }
3141                    }
3142                    let accept_compression_encodings = self.accept_compression_encodings;
3143                    let send_compression_encodings = self.send_compression_encodings;
3144                    let max_decoding_message_size = self.max_decoding_message_size;
3145                    let max_encoding_message_size = self.max_encoding_message_size;
3146                    let inner = self.inner.clone();
3147                    let fut = async move {
3148                        let method = SetupStreamSvc(inner);
3149                        let codec = tonic::codec::ProstCodec::default();
3150                        let mut grpc = tonic::server::Grpc::new(codec)
3151                            .apply_compression_config(
3152                                accept_compression_encodings,
3153                                send_compression_encodings,
3154                            )
3155                            .apply_max_message_size_config(
3156                                max_decoding_message_size,
3157                                max_encoding_message_size,
3158                            );
3159                        let res = grpc.streaming(method, req).await;
3160                        Ok(res)
3161                    };
3162                    Box::pin(fut)
3163                }
3164                "/openiap.FlowService/Signin" => {
3165                    #[allow(non_camel_case_types)]
3166                    struct SigninSvc<T: FlowService>(pub Arc<T>);
3167                    impl<
3168                        T: FlowService,
3169                    > tonic::server::UnaryService<super::SigninRequest>
3170                    for SigninSvc<T> {
3171                        type Response = super::SigninResponse;
3172                        type Future = BoxFuture<
3173                            tonic::Response<Self::Response>,
3174                            tonic::Status,
3175                        >;
3176                        fn call(
3177                            &mut self,
3178                            request: tonic::Request<super::SigninRequest>,
3179                        ) -> Self::Future {
3180                            let inner = Arc::clone(&self.0);
3181                            let fut = async move {
3182                                <T as FlowService>::signin(&inner, request).await
3183                            };
3184                            Box::pin(fut)
3185                        }
3186                    }
3187                    let accept_compression_encodings = self.accept_compression_encodings;
3188                    let send_compression_encodings = self.send_compression_encodings;
3189                    let max_decoding_message_size = self.max_decoding_message_size;
3190                    let max_encoding_message_size = self.max_encoding_message_size;
3191                    let inner = self.inner.clone();
3192                    let fut = async move {
3193                        let method = SigninSvc(inner);
3194                        let codec = tonic::codec::ProstCodec::default();
3195                        let mut grpc = tonic::server::Grpc::new(codec)
3196                            .apply_compression_config(
3197                                accept_compression_encodings,
3198                                send_compression_encodings,
3199                            )
3200                            .apply_max_message_size_config(
3201                                max_decoding_message_size,
3202                                max_encoding_message_size,
3203                            );
3204                        let res = grpc.unary(method, req).await;
3205                        Ok(res)
3206                    };
3207                    Box::pin(fut)
3208                }
3209                "/openiap.FlowService/Download" => {
3210                    #[allow(non_camel_case_types)]
3211                    struct DownloadSvc<T: FlowService>(pub Arc<T>);
3212                    impl<
3213                        T: FlowService,
3214                    > tonic::server::UnaryService<super::DownloadRequest>
3215                    for DownloadSvc<T> {
3216                        type Response = super::DownloadResponse;
3217                        type Future = BoxFuture<
3218                            tonic::Response<Self::Response>,
3219                            tonic::Status,
3220                        >;
3221                        fn call(
3222                            &mut self,
3223                            request: tonic::Request<super::DownloadRequest>,
3224                        ) -> Self::Future {
3225                            let inner = Arc::clone(&self.0);
3226                            let fut = async move {
3227                                <T as FlowService>::download(&inner, request).await
3228                            };
3229                            Box::pin(fut)
3230                        }
3231                    }
3232                    let accept_compression_encodings = self.accept_compression_encodings;
3233                    let send_compression_encodings = self.send_compression_encodings;
3234                    let max_decoding_message_size = self.max_decoding_message_size;
3235                    let max_encoding_message_size = self.max_encoding_message_size;
3236                    let inner = self.inner.clone();
3237                    let fut = async move {
3238                        let method = DownloadSvc(inner);
3239                        let codec = tonic::codec::ProstCodec::default();
3240                        let mut grpc = tonic::server::Grpc::new(codec)
3241                            .apply_compression_config(
3242                                accept_compression_encodings,
3243                                send_compression_encodings,
3244                            )
3245                            .apply_max_message_size_config(
3246                                max_decoding_message_size,
3247                                max_encoding_message_size,
3248                            );
3249                        let res = grpc.unary(method, req).await;
3250                        Ok(res)
3251                    };
3252                    Box::pin(fut)
3253                }
3254                "/openiap.FlowService/Upload" => {
3255                    #[allow(non_camel_case_types)]
3256                    struct UploadSvc<T: FlowService>(pub Arc<T>);
3257                    impl<
3258                        T: FlowService,
3259                    > tonic::server::UnaryService<super::UploadRequest>
3260                    for UploadSvc<T> {
3261                        type Response = super::UploadResponse;
3262                        type Future = BoxFuture<
3263                            tonic::Response<Self::Response>,
3264                            tonic::Status,
3265                        >;
3266                        fn call(
3267                            &mut self,
3268                            request: tonic::Request<super::UploadRequest>,
3269                        ) -> Self::Future {
3270                            let inner = Arc::clone(&self.0);
3271                            let fut = async move {
3272                                <T as FlowService>::upload(&inner, request).await
3273                            };
3274                            Box::pin(fut)
3275                        }
3276                    }
3277                    let accept_compression_encodings = self.accept_compression_encodings;
3278                    let send_compression_encodings = self.send_compression_encodings;
3279                    let max_decoding_message_size = self.max_decoding_message_size;
3280                    let max_encoding_message_size = self.max_encoding_message_size;
3281                    let inner = self.inner.clone();
3282                    let fut = async move {
3283                        let method = UploadSvc(inner);
3284                        let codec = tonic::codec::ProstCodec::default();
3285                        let mut grpc = tonic::server::Grpc::new(codec)
3286                            .apply_compression_config(
3287                                accept_compression_encodings,
3288                                send_compression_encodings,
3289                            )
3290                            .apply_max_message_size_config(
3291                                max_decoding_message_size,
3292                                max_encoding_message_size,
3293                            );
3294                        let res = grpc.unary(method, req).await;
3295                        Ok(res)
3296                    };
3297                    Box::pin(fut)
3298                }
3299                "/openiap.FlowService/CustomCommand" => {
3300                    #[allow(non_camel_case_types)]
3301                    struct CustomCommandSvc<T: FlowService>(pub Arc<T>);
3302                    impl<
3303                        T: FlowService,
3304                    > tonic::server::UnaryService<super::CustomCommandRequest>
3305                    for CustomCommandSvc<T> {
3306                        type Response = super::CustomCommandResponse;
3307                        type Future = BoxFuture<
3308                            tonic::Response<Self::Response>,
3309                            tonic::Status,
3310                        >;
3311                        fn call(
3312                            &mut self,
3313                            request: tonic::Request<super::CustomCommandRequest>,
3314                        ) -> Self::Future {
3315                            let inner = Arc::clone(&self.0);
3316                            let fut = async move {
3317                                <T as FlowService>::custom_command(&inner, request).await
3318                            };
3319                            Box::pin(fut)
3320                        }
3321                    }
3322                    let accept_compression_encodings = self.accept_compression_encodings;
3323                    let send_compression_encodings = self.send_compression_encodings;
3324                    let max_decoding_message_size = self.max_decoding_message_size;
3325                    let max_encoding_message_size = self.max_encoding_message_size;
3326                    let inner = self.inner.clone();
3327                    let fut = async move {
3328                        let method = CustomCommandSvc(inner);
3329                        let codec = tonic::codec::ProstCodec::default();
3330                        let mut grpc = tonic::server::Grpc::new(codec)
3331                            .apply_compression_config(
3332                                accept_compression_encodings,
3333                                send_compression_encodings,
3334                            )
3335                            .apply_max_message_size_config(
3336                                max_decoding_message_size,
3337                                max_encoding_message_size,
3338                            );
3339                        let res = grpc.unary(method, req).await;
3340                        Ok(res)
3341                    };
3342                    Box::pin(fut)
3343                }
3344                "/openiap.FlowService/ListCollections" => {
3345                    #[allow(non_camel_case_types)]
3346                    struct ListCollectionsSvc<T: FlowService>(pub Arc<T>);
3347                    impl<
3348                        T: FlowService,
3349                    > tonic::server::UnaryService<super::ListCollectionsRequest>
3350                    for ListCollectionsSvc<T> {
3351                        type Response = super::ListCollectionsResponse;
3352                        type Future = BoxFuture<
3353                            tonic::Response<Self::Response>,
3354                            tonic::Status,
3355                        >;
3356                        fn call(
3357                            &mut self,
3358                            request: tonic::Request<super::ListCollectionsRequest>,
3359                        ) -> Self::Future {
3360                            let inner = Arc::clone(&self.0);
3361                            let fut = async move {
3362                                <T as FlowService>::list_collections(&inner, request).await
3363                            };
3364                            Box::pin(fut)
3365                        }
3366                    }
3367                    let accept_compression_encodings = self.accept_compression_encodings;
3368                    let send_compression_encodings = self.send_compression_encodings;
3369                    let max_decoding_message_size = self.max_decoding_message_size;
3370                    let max_encoding_message_size = self.max_encoding_message_size;
3371                    let inner = self.inner.clone();
3372                    let fut = async move {
3373                        let method = ListCollectionsSvc(inner);
3374                        let codec = tonic::codec::ProstCodec::default();
3375                        let mut grpc = tonic::server::Grpc::new(codec)
3376                            .apply_compression_config(
3377                                accept_compression_encodings,
3378                                send_compression_encodings,
3379                            )
3380                            .apply_max_message_size_config(
3381                                max_decoding_message_size,
3382                                max_encoding_message_size,
3383                            );
3384                        let res = grpc.unary(method, req).await;
3385                        Ok(res)
3386                    };
3387                    Box::pin(fut)
3388                }
3389                "/openiap.FlowService/DropCollection" => {
3390                    #[allow(non_camel_case_types)]
3391                    struct DropCollectionSvc<T: FlowService>(pub Arc<T>);
3392                    impl<
3393                        T: FlowService,
3394                    > tonic::server::UnaryService<super::DropCollectionRequest>
3395                    for DropCollectionSvc<T> {
3396                        type Response = super::DropCollectionResponse;
3397                        type Future = BoxFuture<
3398                            tonic::Response<Self::Response>,
3399                            tonic::Status,
3400                        >;
3401                        fn call(
3402                            &mut self,
3403                            request: tonic::Request<super::DropCollectionRequest>,
3404                        ) -> Self::Future {
3405                            let inner = Arc::clone(&self.0);
3406                            let fut = async move {
3407                                <T as FlowService>::drop_collection(&inner, request).await
3408                            };
3409                            Box::pin(fut)
3410                        }
3411                    }
3412                    let accept_compression_encodings = self.accept_compression_encodings;
3413                    let send_compression_encodings = self.send_compression_encodings;
3414                    let max_decoding_message_size = self.max_decoding_message_size;
3415                    let max_encoding_message_size = self.max_encoding_message_size;
3416                    let inner = self.inner.clone();
3417                    let fut = async move {
3418                        let method = DropCollectionSvc(inner);
3419                        let codec = tonic::codec::ProstCodec::default();
3420                        let mut grpc = tonic::server::Grpc::new(codec)
3421                            .apply_compression_config(
3422                                accept_compression_encodings,
3423                                send_compression_encodings,
3424                            )
3425                            .apply_max_message_size_config(
3426                                max_decoding_message_size,
3427                                max_encoding_message_size,
3428                            );
3429                        let res = grpc.unary(method, req).await;
3430                        Ok(res)
3431                    };
3432                    Box::pin(fut)
3433                }
3434                "/openiap.FlowService/CreateCollection" => {
3435                    #[allow(non_camel_case_types)]
3436                    struct CreateCollectionSvc<T: FlowService>(pub Arc<T>);
3437                    impl<
3438                        T: FlowService,
3439                    > tonic::server::UnaryService<super::CreateCollectionRequest>
3440                    for CreateCollectionSvc<T> {
3441                        type Response = super::CreateCollectionResponse;
3442                        type Future = BoxFuture<
3443                            tonic::Response<Self::Response>,
3444                            tonic::Status,
3445                        >;
3446                        fn call(
3447                            &mut self,
3448                            request: tonic::Request<super::CreateCollectionRequest>,
3449                        ) -> Self::Future {
3450                            let inner = Arc::clone(&self.0);
3451                            let fut = async move {
3452                                <T as FlowService>::create_collection(&inner, request).await
3453                            };
3454                            Box::pin(fut)
3455                        }
3456                    }
3457                    let accept_compression_encodings = self.accept_compression_encodings;
3458                    let send_compression_encodings = self.send_compression_encodings;
3459                    let max_decoding_message_size = self.max_decoding_message_size;
3460                    let max_encoding_message_size = self.max_encoding_message_size;
3461                    let inner = self.inner.clone();
3462                    let fut = async move {
3463                        let method = CreateCollectionSvc(inner);
3464                        let codec = tonic::codec::ProstCodec::default();
3465                        let mut grpc = tonic::server::Grpc::new(codec)
3466                            .apply_compression_config(
3467                                accept_compression_encodings,
3468                                send_compression_encodings,
3469                            )
3470                            .apply_max_message_size_config(
3471                                max_decoding_message_size,
3472                                max_encoding_message_size,
3473                            );
3474                        let res = grpc.unary(method, req).await;
3475                        Ok(res)
3476                    };
3477                    Box::pin(fut)
3478                }
3479                "/openiap.FlowService/Query" => {
3480                    #[allow(non_camel_case_types)]
3481                    struct QuerySvc<T: FlowService>(pub Arc<T>);
3482                    impl<T: FlowService> tonic::server::UnaryService<super::QueryRequest>
3483                    for QuerySvc<T> {
3484                        type Response = super::QueryResponse;
3485                        type Future = BoxFuture<
3486                            tonic::Response<Self::Response>,
3487                            tonic::Status,
3488                        >;
3489                        fn call(
3490                            &mut self,
3491                            request: tonic::Request<super::QueryRequest>,
3492                        ) -> Self::Future {
3493                            let inner = Arc::clone(&self.0);
3494                            let fut = async move {
3495                                <T as FlowService>::query(&inner, request).await
3496                            };
3497                            Box::pin(fut)
3498                        }
3499                    }
3500                    let accept_compression_encodings = self.accept_compression_encodings;
3501                    let send_compression_encodings = self.send_compression_encodings;
3502                    let max_decoding_message_size = self.max_decoding_message_size;
3503                    let max_encoding_message_size = self.max_encoding_message_size;
3504                    let inner = self.inner.clone();
3505                    let fut = async move {
3506                        let method = QuerySvc(inner);
3507                        let codec = tonic::codec::ProstCodec::default();
3508                        let mut grpc = tonic::server::Grpc::new(codec)
3509                            .apply_compression_config(
3510                                accept_compression_encodings,
3511                                send_compression_encodings,
3512                            )
3513                            .apply_max_message_size_config(
3514                                max_decoding_message_size,
3515                                max_encoding_message_size,
3516                            );
3517                        let res = grpc.unary(method, req).await;
3518                        Ok(res)
3519                    };
3520                    Box::pin(fut)
3521                }
3522                "/openiap.FlowService/GetDocumentVersion" => {
3523                    #[allow(non_camel_case_types)]
3524                    struct GetDocumentVersionSvc<T: FlowService>(pub Arc<T>);
3525                    impl<
3526                        T: FlowService,
3527                    > tonic::server::UnaryService<super::GetDocumentVersionRequest>
3528                    for GetDocumentVersionSvc<T> {
3529                        type Response = super::GetDocumentVersionResponse;
3530                        type Future = BoxFuture<
3531                            tonic::Response<Self::Response>,
3532                            tonic::Status,
3533                        >;
3534                        fn call(
3535                            &mut self,
3536                            request: tonic::Request<super::GetDocumentVersionRequest>,
3537                        ) -> Self::Future {
3538                            let inner = Arc::clone(&self.0);
3539                            let fut = async move {
3540                                <T as FlowService>::get_document_version(&inner, request)
3541                                    .await
3542                            };
3543                            Box::pin(fut)
3544                        }
3545                    }
3546                    let accept_compression_encodings = self.accept_compression_encodings;
3547                    let send_compression_encodings = self.send_compression_encodings;
3548                    let max_decoding_message_size = self.max_decoding_message_size;
3549                    let max_encoding_message_size = self.max_encoding_message_size;
3550                    let inner = self.inner.clone();
3551                    let fut = async move {
3552                        let method = GetDocumentVersionSvc(inner);
3553                        let codec = tonic::codec::ProstCodec::default();
3554                        let mut grpc = tonic::server::Grpc::new(codec)
3555                            .apply_compression_config(
3556                                accept_compression_encodings,
3557                                send_compression_encodings,
3558                            )
3559                            .apply_max_message_size_config(
3560                                max_decoding_message_size,
3561                                max_encoding_message_size,
3562                            );
3563                        let res = grpc.unary(method, req).await;
3564                        Ok(res)
3565                    };
3566                    Box::pin(fut)
3567                }
3568                "/openiap.FlowService/Aggregate" => {
3569                    #[allow(non_camel_case_types)]
3570                    struct AggregateSvc<T: FlowService>(pub Arc<T>);
3571                    impl<
3572                        T: FlowService,
3573                    > tonic::server::UnaryService<super::AggregateRequest>
3574                    for AggregateSvc<T> {
3575                        type Response = super::AggregateResponse;
3576                        type Future = BoxFuture<
3577                            tonic::Response<Self::Response>,
3578                            tonic::Status,
3579                        >;
3580                        fn call(
3581                            &mut self,
3582                            request: tonic::Request<super::AggregateRequest>,
3583                        ) -> Self::Future {
3584                            let inner = Arc::clone(&self.0);
3585                            let fut = async move {
3586                                <T as FlowService>::aggregate(&inner, request).await
3587                            };
3588                            Box::pin(fut)
3589                        }
3590                    }
3591                    let accept_compression_encodings = self.accept_compression_encodings;
3592                    let send_compression_encodings = self.send_compression_encodings;
3593                    let max_decoding_message_size = self.max_decoding_message_size;
3594                    let max_encoding_message_size = self.max_encoding_message_size;
3595                    let inner = self.inner.clone();
3596                    let fut = async move {
3597                        let method = AggregateSvc(inner);
3598                        let codec = tonic::codec::ProstCodec::default();
3599                        let mut grpc = tonic::server::Grpc::new(codec)
3600                            .apply_compression_config(
3601                                accept_compression_encodings,
3602                                send_compression_encodings,
3603                            )
3604                            .apply_max_message_size_config(
3605                                max_decoding_message_size,
3606                                max_encoding_message_size,
3607                            );
3608                        let res = grpc.unary(method, req).await;
3609                        Ok(res)
3610                    };
3611                    Box::pin(fut)
3612                }
3613                "/openiap.FlowService/Count" => {
3614                    #[allow(non_camel_case_types)]
3615                    struct CountSvc<T: FlowService>(pub Arc<T>);
3616                    impl<T: FlowService> tonic::server::UnaryService<super::CountRequest>
3617                    for CountSvc<T> {
3618                        type Response = super::CountResponse;
3619                        type Future = BoxFuture<
3620                            tonic::Response<Self::Response>,
3621                            tonic::Status,
3622                        >;
3623                        fn call(
3624                            &mut self,
3625                            request: tonic::Request<super::CountRequest>,
3626                        ) -> Self::Future {
3627                            let inner = Arc::clone(&self.0);
3628                            let fut = async move {
3629                                <T as FlowService>::count(&inner, request).await
3630                            };
3631                            Box::pin(fut)
3632                        }
3633                    }
3634                    let accept_compression_encodings = self.accept_compression_encodings;
3635                    let send_compression_encodings = self.send_compression_encodings;
3636                    let max_decoding_message_size = self.max_decoding_message_size;
3637                    let max_encoding_message_size = self.max_encoding_message_size;
3638                    let inner = self.inner.clone();
3639                    let fut = async move {
3640                        let method = CountSvc(inner);
3641                        let codec = tonic::codec::ProstCodec::default();
3642                        let mut grpc = tonic::server::Grpc::new(codec)
3643                            .apply_compression_config(
3644                                accept_compression_encodings,
3645                                send_compression_encodings,
3646                            )
3647                            .apply_max_message_size_config(
3648                                max_decoding_message_size,
3649                                max_encoding_message_size,
3650                            );
3651                        let res = grpc.unary(method, req).await;
3652                        Ok(res)
3653                    };
3654                    Box::pin(fut)
3655                }
3656                "/openiap.FlowService/InsertOne" => {
3657                    #[allow(non_camel_case_types)]
3658                    struct InsertOneSvc<T: FlowService>(pub Arc<T>);
3659                    impl<
3660                        T: FlowService,
3661                    > tonic::server::UnaryService<super::InsertOneRequest>
3662                    for InsertOneSvc<T> {
3663                        type Response = super::InsertOneResponse;
3664                        type Future = BoxFuture<
3665                            tonic::Response<Self::Response>,
3666                            tonic::Status,
3667                        >;
3668                        fn call(
3669                            &mut self,
3670                            request: tonic::Request<super::InsertOneRequest>,
3671                        ) -> Self::Future {
3672                            let inner = Arc::clone(&self.0);
3673                            let fut = async move {
3674                                <T as FlowService>::insert_one(&inner, request).await
3675                            };
3676                            Box::pin(fut)
3677                        }
3678                    }
3679                    let accept_compression_encodings = self.accept_compression_encodings;
3680                    let send_compression_encodings = self.send_compression_encodings;
3681                    let max_decoding_message_size = self.max_decoding_message_size;
3682                    let max_encoding_message_size = self.max_encoding_message_size;
3683                    let inner = self.inner.clone();
3684                    let fut = async move {
3685                        let method = InsertOneSvc(inner);
3686                        let codec = tonic::codec::ProstCodec::default();
3687                        let mut grpc = tonic::server::Grpc::new(codec)
3688                            .apply_compression_config(
3689                                accept_compression_encodings,
3690                                send_compression_encodings,
3691                            )
3692                            .apply_max_message_size_config(
3693                                max_decoding_message_size,
3694                                max_encoding_message_size,
3695                            );
3696                        let res = grpc.unary(method, req).await;
3697                        Ok(res)
3698                    };
3699                    Box::pin(fut)
3700                }
3701                "/openiap.FlowService/InsertMany" => {
3702                    #[allow(non_camel_case_types)]
3703                    struct InsertManySvc<T: FlowService>(pub Arc<T>);
3704                    impl<
3705                        T: FlowService,
3706                    > tonic::server::UnaryService<super::InsertManyRequest>
3707                    for InsertManySvc<T> {
3708                        type Response = super::InsertManyResponse;
3709                        type Future = BoxFuture<
3710                            tonic::Response<Self::Response>,
3711                            tonic::Status,
3712                        >;
3713                        fn call(
3714                            &mut self,
3715                            request: tonic::Request<super::InsertManyRequest>,
3716                        ) -> Self::Future {
3717                            let inner = Arc::clone(&self.0);
3718                            let fut = async move {
3719                                <T as FlowService>::insert_many(&inner, request).await
3720                            };
3721                            Box::pin(fut)
3722                        }
3723                    }
3724                    let accept_compression_encodings = self.accept_compression_encodings;
3725                    let send_compression_encodings = self.send_compression_encodings;
3726                    let max_decoding_message_size = self.max_decoding_message_size;
3727                    let max_encoding_message_size = self.max_encoding_message_size;
3728                    let inner = self.inner.clone();
3729                    let fut = async move {
3730                        let method = InsertManySvc(inner);
3731                        let codec = tonic::codec::ProstCodec::default();
3732                        let mut grpc = tonic::server::Grpc::new(codec)
3733                            .apply_compression_config(
3734                                accept_compression_encodings,
3735                                send_compression_encodings,
3736                            )
3737                            .apply_max_message_size_config(
3738                                max_decoding_message_size,
3739                                max_encoding_message_size,
3740                            );
3741                        let res = grpc.unary(method, req).await;
3742                        Ok(res)
3743                    };
3744                    Box::pin(fut)
3745                }
3746                "/openiap.FlowService/UpdateOne" => {
3747                    #[allow(non_camel_case_types)]
3748                    struct UpdateOneSvc<T: FlowService>(pub Arc<T>);
3749                    impl<
3750                        T: FlowService,
3751                    > tonic::server::UnaryService<super::UpdateOneRequest>
3752                    for UpdateOneSvc<T> {
3753                        type Response = super::UpdateOneResponse;
3754                        type Future = BoxFuture<
3755                            tonic::Response<Self::Response>,
3756                            tonic::Status,
3757                        >;
3758                        fn call(
3759                            &mut self,
3760                            request: tonic::Request<super::UpdateOneRequest>,
3761                        ) -> Self::Future {
3762                            let inner = Arc::clone(&self.0);
3763                            let fut = async move {
3764                                <T as FlowService>::update_one(&inner, request).await
3765                            };
3766                            Box::pin(fut)
3767                        }
3768                    }
3769                    let accept_compression_encodings = self.accept_compression_encodings;
3770                    let send_compression_encodings = self.send_compression_encodings;
3771                    let max_decoding_message_size = self.max_decoding_message_size;
3772                    let max_encoding_message_size = self.max_encoding_message_size;
3773                    let inner = self.inner.clone();
3774                    let fut = async move {
3775                        let method = UpdateOneSvc(inner);
3776                        let codec = tonic::codec::ProstCodec::default();
3777                        let mut grpc = tonic::server::Grpc::new(codec)
3778                            .apply_compression_config(
3779                                accept_compression_encodings,
3780                                send_compression_encodings,
3781                            )
3782                            .apply_max_message_size_config(
3783                                max_decoding_message_size,
3784                                max_encoding_message_size,
3785                            );
3786                        let res = grpc.unary(method, req).await;
3787                        Ok(res)
3788                    };
3789                    Box::pin(fut)
3790                }
3791                "/openiap.FlowService/UpdateDocument" => {
3792                    #[allow(non_camel_case_types)]
3793                    struct UpdateDocumentSvc<T: FlowService>(pub Arc<T>);
3794                    impl<
3795                        T: FlowService,
3796                    > tonic::server::UnaryService<super::UpdateDocumentRequest>
3797                    for UpdateDocumentSvc<T> {
3798                        type Response = super::UpdateDocumentResponse;
3799                        type Future = BoxFuture<
3800                            tonic::Response<Self::Response>,
3801                            tonic::Status,
3802                        >;
3803                        fn call(
3804                            &mut self,
3805                            request: tonic::Request<super::UpdateDocumentRequest>,
3806                        ) -> Self::Future {
3807                            let inner = Arc::clone(&self.0);
3808                            let fut = async move {
3809                                <T as FlowService>::update_document(&inner, request).await
3810                            };
3811                            Box::pin(fut)
3812                        }
3813                    }
3814                    let accept_compression_encodings = self.accept_compression_encodings;
3815                    let send_compression_encodings = self.send_compression_encodings;
3816                    let max_decoding_message_size = self.max_decoding_message_size;
3817                    let max_encoding_message_size = self.max_encoding_message_size;
3818                    let inner = self.inner.clone();
3819                    let fut = async move {
3820                        let method = UpdateDocumentSvc(inner);
3821                        let codec = tonic::codec::ProstCodec::default();
3822                        let mut grpc = tonic::server::Grpc::new(codec)
3823                            .apply_compression_config(
3824                                accept_compression_encodings,
3825                                send_compression_encodings,
3826                            )
3827                            .apply_max_message_size_config(
3828                                max_decoding_message_size,
3829                                max_encoding_message_size,
3830                            );
3831                        let res = grpc.unary(method, req).await;
3832                        Ok(res)
3833                    };
3834                    Box::pin(fut)
3835                }
3836                "/openiap.FlowService/InsertOrUpdateOne" => {
3837                    #[allow(non_camel_case_types)]
3838                    struct InsertOrUpdateOneSvc<T: FlowService>(pub Arc<T>);
3839                    impl<
3840                        T: FlowService,
3841                    > tonic::server::UnaryService<super::InsertOrUpdateOneRequest>
3842                    for InsertOrUpdateOneSvc<T> {
3843                        type Response = super::InsertOrUpdateOneResponse;
3844                        type Future = BoxFuture<
3845                            tonic::Response<Self::Response>,
3846                            tonic::Status,
3847                        >;
3848                        fn call(
3849                            &mut self,
3850                            request: tonic::Request<super::InsertOrUpdateOneRequest>,
3851                        ) -> Self::Future {
3852                            let inner = Arc::clone(&self.0);
3853                            let fut = async move {
3854                                <T as FlowService>::insert_or_update_one(&inner, request)
3855                                    .await
3856                            };
3857                            Box::pin(fut)
3858                        }
3859                    }
3860                    let accept_compression_encodings = self.accept_compression_encodings;
3861                    let send_compression_encodings = self.send_compression_encodings;
3862                    let max_decoding_message_size = self.max_decoding_message_size;
3863                    let max_encoding_message_size = self.max_encoding_message_size;
3864                    let inner = self.inner.clone();
3865                    let fut = async move {
3866                        let method = InsertOrUpdateOneSvc(inner);
3867                        let codec = tonic::codec::ProstCodec::default();
3868                        let mut grpc = tonic::server::Grpc::new(codec)
3869                            .apply_compression_config(
3870                                accept_compression_encodings,
3871                                send_compression_encodings,
3872                            )
3873                            .apply_max_message_size_config(
3874                                max_decoding_message_size,
3875                                max_encoding_message_size,
3876                            );
3877                        let res = grpc.unary(method, req).await;
3878                        Ok(res)
3879                    };
3880                    Box::pin(fut)
3881                }
3882                "/openiap.FlowService/InsertOrUpdateMany" => {
3883                    #[allow(non_camel_case_types)]
3884                    struct InsertOrUpdateManySvc<T: FlowService>(pub Arc<T>);
3885                    impl<
3886                        T: FlowService,
3887                    > tonic::server::UnaryService<super::InsertOrUpdateManyRequest>
3888                    for InsertOrUpdateManySvc<T> {
3889                        type Response = super::InsertOrUpdateManyResponse;
3890                        type Future = BoxFuture<
3891                            tonic::Response<Self::Response>,
3892                            tonic::Status,
3893                        >;
3894                        fn call(
3895                            &mut self,
3896                            request: tonic::Request<super::InsertOrUpdateManyRequest>,
3897                        ) -> Self::Future {
3898                            let inner = Arc::clone(&self.0);
3899                            let fut = async move {
3900                                <T as FlowService>::insert_or_update_many(&inner, request)
3901                                    .await
3902                            };
3903                            Box::pin(fut)
3904                        }
3905                    }
3906                    let accept_compression_encodings = self.accept_compression_encodings;
3907                    let send_compression_encodings = self.send_compression_encodings;
3908                    let max_decoding_message_size = self.max_decoding_message_size;
3909                    let max_encoding_message_size = self.max_encoding_message_size;
3910                    let inner = self.inner.clone();
3911                    let fut = async move {
3912                        let method = InsertOrUpdateManySvc(inner);
3913                        let codec = tonic::codec::ProstCodec::default();
3914                        let mut grpc = tonic::server::Grpc::new(codec)
3915                            .apply_compression_config(
3916                                accept_compression_encodings,
3917                                send_compression_encodings,
3918                            )
3919                            .apply_max_message_size_config(
3920                                max_decoding_message_size,
3921                                max_encoding_message_size,
3922                            );
3923                        let res = grpc.unary(method, req).await;
3924                        Ok(res)
3925                    };
3926                    Box::pin(fut)
3927                }
3928                "/openiap.FlowService/DeleteOne" => {
3929                    #[allow(non_camel_case_types)]
3930                    struct DeleteOneSvc<T: FlowService>(pub Arc<T>);
3931                    impl<
3932                        T: FlowService,
3933                    > tonic::server::UnaryService<super::DeleteOneRequest>
3934                    for DeleteOneSvc<T> {
3935                        type Response = super::DeleteOneResponse;
3936                        type Future = BoxFuture<
3937                            tonic::Response<Self::Response>,
3938                            tonic::Status,
3939                        >;
3940                        fn call(
3941                            &mut self,
3942                            request: tonic::Request<super::DeleteOneRequest>,
3943                        ) -> Self::Future {
3944                            let inner = Arc::clone(&self.0);
3945                            let fut = async move {
3946                                <T as FlowService>::delete_one(&inner, request).await
3947                            };
3948                            Box::pin(fut)
3949                        }
3950                    }
3951                    let accept_compression_encodings = self.accept_compression_encodings;
3952                    let send_compression_encodings = self.send_compression_encodings;
3953                    let max_decoding_message_size = self.max_decoding_message_size;
3954                    let max_encoding_message_size = self.max_encoding_message_size;
3955                    let inner = self.inner.clone();
3956                    let fut = async move {
3957                        let method = DeleteOneSvc(inner);
3958                        let codec = tonic::codec::ProstCodec::default();
3959                        let mut grpc = tonic::server::Grpc::new(codec)
3960                            .apply_compression_config(
3961                                accept_compression_encodings,
3962                                send_compression_encodings,
3963                            )
3964                            .apply_max_message_size_config(
3965                                max_decoding_message_size,
3966                                max_encoding_message_size,
3967                            );
3968                        let res = grpc.unary(method, req).await;
3969                        Ok(res)
3970                    };
3971                    Box::pin(fut)
3972                }
3973                "/openiap.FlowService/DeleteMany" => {
3974                    #[allow(non_camel_case_types)]
3975                    struct DeleteManySvc<T: FlowService>(pub Arc<T>);
3976                    impl<
3977                        T: FlowService,
3978                    > tonic::server::UnaryService<super::DeleteManyRequest>
3979                    for DeleteManySvc<T> {
3980                        type Response = super::DeleteManyResponse;
3981                        type Future = BoxFuture<
3982                            tonic::Response<Self::Response>,
3983                            tonic::Status,
3984                        >;
3985                        fn call(
3986                            &mut self,
3987                            request: tonic::Request<super::DeleteManyRequest>,
3988                        ) -> Self::Future {
3989                            let inner = Arc::clone(&self.0);
3990                            let fut = async move {
3991                                <T as FlowService>::delete_many(&inner, request).await
3992                            };
3993                            Box::pin(fut)
3994                        }
3995                    }
3996                    let accept_compression_encodings = self.accept_compression_encodings;
3997                    let send_compression_encodings = self.send_compression_encodings;
3998                    let max_decoding_message_size = self.max_decoding_message_size;
3999                    let max_encoding_message_size = self.max_encoding_message_size;
4000                    let inner = self.inner.clone();
4001                    let fut = async move {
4002                        let method = DeleteManySvc(inner);
4003                        let codec = tonic::codec::ProstCodec::default();
4004                        let mut grpc = tonic::server::Grpc::new(codec)
4005                            .apply_compression_config(
4006                                accept_compression_encodings,
4007                                send_compression_encodings,
4008                            )
4009                            .apply_max_message_size_config(
4010                                max_decoding_message_size,
4011                                max_encoding_message_size,
4012                            );
4013                        let res = grpc.unary(method, req).await;
4014                        Ok(res)
4015                    };
4016                    Box::pin(fut)
4017                }
4018                "/openiap.FlowService/RegisterQueue" => {
4019                    #[allow(non_camel_case_types)]
4020                    struct RegisterQueueSvc<T: FlowService>(pub Arc<T>);
4021                    impl<
4022                        T: FlowService,
4023                    > tonic::server::UnaryService<super::RegisterQueueRequest>
4024                    for RegisterQueueSvc<T> {
4025                        type Response = super::RegisterQueueResponse;
4026                        type Future = BoxFuture<
4027                            tonic::Response<Self::Response>,
4028                            tonic::Status,
4029                        >;
4030                        fn call(
4031                            &mut self,
4032                            request: tonic::Request<super::RegisterQueueRequest>,
4033                        ) -> Self::Future {
4034                            let inner = Arc::clone(&self.0);
4035                            let fut = async move {
4036                                <T as FlowService>::register_queue(&inner, request).await
4037                            };
4038                            Box::pin(fut)
4039                        }
4040                    }
4041                    let accept_compression_encodings = self.accept_compression_encodings;
4042                    let send_compression_encodings = self.send_compression_encodings;
4043                    let max_decoding_message_size = self.max_decoding_message_size;
4044                    let max_encoding_message_size = self.max_encoding_message_size;
4045                    let inner = self.inner.clone();
4046                    let fut = async move {
4047                        let method = RegisterQueueSvc(inner);
4048                        let codec = tonic::codec::ProstCodec::default();
4049                        let mut grpc = tonic::server::Grpc::new(codec)
4050                            .apply_compression_config(
4051                                accept_compression_encodings,
4052                                send_compression_encodings,
4053                            )
4054                            .apply_max_message_size_config(
4055                                max_decoding_message_size,
4056                                max_encoding_message_size,
4057                            );
4058                        let res = grpc.unary(method, req).await;
4059                        Ok(res)
4060                    };
4061                    Box::pin(fut)
4062                }
4063                "/openiap.FlowService/RegisterExchange" => {
4064                    #[allow(non_camel_case_types)]
4065                    struct RegisterExchangeSvc<T: FlowService>(pub Arc<T>);
4066                    impl<
4067                        T: FlowService,
4068                    > tonic::server::UnaryService<super::RegisterExchangeRequest>
4069                    for RegisterExchangeSvc<T> {
4070                        type Response = super::RegisterExchangeResponse;
4071                        type Future = BoxFuture<
4072                            tonic::Response<Self::Response>,
4073                            tonic::Status,
4074                        >;
4075                        fn call(
4076                            &mut self,
4077                            request: tonic::Request<super::RegisterExchangeRequest>,
4078                        ) -> Self::Future {
4079                            let inner = Arc::clone(&self.0);
4080                            let fut = async move {
4081                                <T as FlowService>::register_exchange(&inner, request).await
4082                            };
4083                            Box::pin(fut)
4084                        }
4085                    }
4086                    let accept_compression_encodings = self.accept_compression_encodings;
4087                    let send_compression_encodings = self.send_compression_encodings;
4088                    let max_decoding_message_size = self.max_decoding_message_size;
4089                    let max_encoding_message_size = self.max_encoding_message_size;
4090                    let inner = self.inner.clone();
4091                    let fut = async move {
4092                        let method = RegisterExchangeSvc(inner);
4093                        let codec = tonic::codec::ProstCodec::default();
4094                        let mut grpc = tonic::server::Grpc::new(codec)
4095                            .apply_compression_config(
4096                                accept_compression_encodings,
4097                                send_compression_encodings,
4098                            )
4099                            .apply_max_message_size_config(
4100                                max_decoding_message_size,
4101                                max_encoding_message_size,
4102                            );
4103                        let res = grpc.unary(method, req).await;
4104                        Ok(res)
4105                    };
4106                    Box::pin(fut)
4107                }
4108                "/openiap.FlowService/QueueMessage" => {
4109                    #[allow(non_camel_case_types)]
4110                    struct QueueMessageSvc<T: FlowService>(pub Arc<T>);
4111                    impl<
4112                        T: FlowService,
4113                    > tonic::server::UnaryService<super::QueueMessageRequest>
4114                    for QueueMessageSvc<T> {
4115                        type Response = super::QueueMessageResponse;
4116                        type Future = BoxFuture<
4117                            tonic::Response<Self::Response>,
4118                            tonic::Status,
4119                        >;
4120                        fn call(
4121                            &mut self,
4122                            request: tonic::Request<super::QueueMessageRequest>,
4123                        ) -> Self::Future {
4124                            let inner = Arc::clone(&self.0);
4125                            let fut = async move {
4126                                <T as FlowService>::queue_message(&inner, request).await
4127                            };
4128                            Box::pin(fut)
4129                        }
4130                    }
4131                    let accept_compression_encodings = self.accept_compression_encodings;
4132                    let send_compression_encodings = self.send_compression_encodings;
4133                    let max_decoding_message_size = self.max_decoding_message_size;
4134                    let max_encoding_message_size = self.max_encoding_message_size;
4135                    let inner = self.inner.clone();
4136                    let fut = async move {
4137                        let method = QueueMessageSvc(inner);
4138                        let codec = tonic::codec::ProstCodec::default();
4139                        let mut grpc = tonic::server::Grpc::new(codec)
4140                            .apply_compression_config(
4141                                accept_compression_encodings,
4142                                send_compression_encodings,
4143                            )
4144                            .apply_max_message_size_config(
4145                                max_decoding_message_size,
4146                                max_encoding_message_size,
4147                            );
4148                        let res = grpc.unary(method, req).await;
4149                        Ok(res)
4150                    };
4151                    Box::pin(fut)
4152                }
4153                "/openiap.FlowService/UnRegisterQueue" => {
4154                    #[allow(non_camel_case_types)]
4155                    struct UnRegisterQueueSvc<T: FlowService>(pub Arc<T>);
4156                    impl<
4157                        T: FlowService,
4158                    > tonic::server::UnaryService<super::UnRegisterQueueRequest>
4159                    for UnRegisterQueueSvc<T> {
4160                        type Response = super::UnRegisterQueueResponse;
4161                        type Future = BoxFuture<
4162                            tonic::Response<Self::Response>,
4163                            tonic::Status,
4164                        >;
4165                        fn call(
4166                            &mut self,
4167                            request: tonic::Request<super::UnRegisterQueueRequest>,
4168                        ) -> Self::Future {
4169                            let inner = Arc::clone(&self.0);
4170                            let fut = async move {
4171                                <T as FlowService>::un_register_queue(&inner, request).await
4172                            };
4173                            Box::pin(fut)
4174                        }
4175                    }
4176                    let accept_compression_encodings = self.accept_compression_encodings;
4177                    let send_compression_encodings = self.send_compression_encodings;
4178                    let max_decoding_message_size = self.max_decoding_message_size;
4179                    let max_encoding_message_size = self.max_encoding_message_size;
4180                    let inner = self.inner.clone();
4181                    let fut = async move {
4182                        let method = UnRegisterQueueSvc(inner);
4183                        let codec = tonic::codec::ProstCodec::default();
4184                        let mut grpc = tonic::server::Grpc::new(codec)
4185                            .apply_compression_config(
4186                                accept_compression_encodings,
4187                                send_compression_encodings,
4188                            )
4189                            .apply_max_message_size_config(
4190                                max_decoding_message_size,
4191                                max_encoding_message_size,
4192                            );
4193                        let res = grpc.unary(method, req).await;
4194                        Ok(res)
4195                    };
4196                    Box::pin(fut)
4197                }
4198                "/openiap.FlowService/Watch" => {
4199                    #[allow(non_camel_case_types)]
4200                    struct WatchSvc<T: FlowService>(pub Arc<T>);
4201                    impl<T: FlowService> tonic::server::UnaryService<super::WatchRequest>
4202                    for WatchSvc<T> {
4203                        type Response = super::WatchResponse;
4204                        type Future = BoxFuture<
4205                            tonic::Response<Self::Response>,
4206                            tonic::Status,
4207                        >;
4208                        fn call(
4209                            &mut self,
4210                            request: tonic::Request<super::WatchRequest>,
4211                        ) -> Self::Future {
4212                            let inner = Arc::clone(&self.0);
4213                            let fut = async move {
4214                                <T as FlowService>::watch(&inner, request).await
4215                            };
4216                            Box::pin(fut)
4217                        }
4218                    }
4219                    let accept_compression_encodings = self.accept_compression_encodings;
4220                    let send_compression_encodings = self.send_compression_encodings;
4221                    let max_decoding_message_size = self.max_decoding_message_size;
4222                    let max_encoding_message_size = self.max_encoding_message_size;
4223                    let inner = self.inner.clone();
4224                    let fut = async move {
4225                        let method = WatchSvc(inner);
4226                        let codec = tonic::codec::ProstCodec::default();
4227                        let mut grpc = tonic::server::Grpc::new(codec)
4228                            .apply_compression_config(
4229                                accept_compression_encodings,
4230                                send_compression_encodings,
4231                            )
4232                            .apply_max_message_size_config(
4233                                max_decoding_message_size,
4234                                max_encoding_message_size,
4235                            );
4236                        let res = grpc.unary(method, req).await;
4237                        Ok(res)
4238                    };
4239                    Box::pin(fut)
4240                }
4241                "/openiap.FlowService/UnWatch" => {
4242                    #[allow(non_camel_case_types)]
4243                    struct UnWatchSvc<T: FlowService>(pub Arc<T>);
4244                    impl<
4245                        T: FlowService,
4246                    > tonic::server::UnaryService<super::UnWatchRequest>
4247                    for UnWatchSvc<T> {
4248                        type Response = super::UnWatchResponse;
4249                        type Future = BoxFuture<
4250                            tonic::Response<Self::Response>,
4251                            tonic::Status,
4252                        >;
4253                        fn call(
4254                            &mut self,
4255                            request: tonic::Request<super::UnWatchRequest>,
4256                        ) -> Self::Future {
4257                            let inner = Arc::clone(&self.0);
4258                            let fut = async move {
4259                                <T as FlowService>::un_watch(&inner, request).await
4260                            };
4261                            Box::pin(fut)
4262                        }
4263                    }
4264                    let accept_compression_encodings = self.accept_compression_encodings;
4265                    let send_compression_encodings = self.send_compression_encodings;
4266                    let max_decoding_message_size = self.max_decoding_message_size;
4267                    let max_encoding_message_size = self.max_encoding_message_size;
4268                    let inner = self.inner.clone();
4269                    let fut = async move {
4270                        let method = UnWatchSvc(inner);
4271                        let codec = tonic::codec::ProstCodec::default();
4272                        let mut grpc = tonic::server::Grpc::new(codec)
4273                            .apply_compression_config(
4274                                accept_compression_encodings,
4275                                send_compression_encodings,
4276                            )
4277                            .apply_max_message_size_config(
4278                                max_decoding_message_size,
4279                                max_encoding_message_size,
4280                            );
4281                        let res = grpc.unary(method, req).await;
4282                        Ok(res)
4283                    };
4284                    Box::pin(fut)
4285                }
4286                "/openiap.FlowService/PushWorkitem" => {
4287                    #[allow(non_camel_case_types)]
4288                    struct PushWorkitemSvc<T: FlowService>(pub Arc<T>);
4289                    impl<
4290                        T: FlowService,
4291                    > tonic::server::UnaryService<super::PushWorkitemRequest>
4292                    for PushWorkitemSvc<T> {
4293                        type Response = super::PushWorkitemResponse;
4294                        type Future = BoxFuture<
4295                            tonic::Response<Self::Response>,
4296                            tonic::Status,
4297                        >;
4298                        fn call(
4299                            &mut self,
4300                            request: tonic::Request<super::PushWorkitemRequest>,
4301                        ) -> Self::Future {
4302                            let inner = Arc::clone(&self.0);
4303                            let fut = async move {
4304                                <T as FlowService>::push_workitem(&inner, request).await
4305                            };
4306                            Box::pin(fut)
4307                        }
4308                    }
4309                    let accept_compression_encodings = self.accept_compression_encodings;
4310                    let send_compression_encodings = self.send_compression_encodings;
4311                    let max_decoding_message_size = self.max_decoding_message_size;
4312                    let max_encoding_message_size = self.max_encoding_message_size;
4313                    let inner = self.inner.clone();
4314                    let fut = async move {
4315                        let method = PushWorkitemSvc(inner);
4316                        let codec = tonic::codec::ProstCodec::default();
4317                        let mut grpc = tonic::server::Grpc::new(codec)
4318                            .apply_compression_config(
4319                                accept_compression_encodings,
4320                                send_compression_encodings,
4321                            )
4322                            .apply_max_message_size_config(
4323                                max_decoding_message_size,
4324                                max_encoding_message_size,
4325                            );
4326                        let res = grpc.unary(method, req).await;
4327                        Ok(res)
4328                    };
4329                    Box::pin(fut)
4330                }
4331                "/openiap.FlowService/PushWorkitems" => {
4332                    #[allow(non_camel_case_types)]
4333                    struct PushWorkitemsSvc<T: FlowService>(pub Arc<T>);
4334                    impl<
4335                        T: FlowService,
4336                    > tonic::server::UnaryService<super::PushWorkitemsRequest>
4337                    for PushWorkitemsSvc<T> {
4338                        type Response = super::PushWorkitemsResponse;
4339                        type Future = BoxFuture<
4340                            tonic::Response<Self::Response>,
4341                            tonic::Status,
4342                        >;
4343                        fn call(
4344                            &mut self,
4345                            request: tonic::Request<super::PushWorkitemsRequest>,
4346                        ) -> Self::Future {
4347                            let inner = Arc::clone(&self.0);
4348                            let fut = async move {
4349                                <T as FlowService>::push_workitems(&inner, request).await
4350                            };
4351                            Box::pin(fut)
4352                        }
4353                    }
4354                    let accept_compression_encodings = self.accept_compression_encodings;
4355                    let send_compression_encodings = self.send_compression_encodings;
4356                    let max_decoding_message_size = self.max_decoding_message_size;
4357                    let max_encoding_message_size = self.max_encoding_message_size;
4358                    let inner = self.inner.clone();
4359                    let fut = async move {
4360                        let method = PushWorkitemsSvc(inner);
4361                        let codec = tonic::codec::ProstCodec::default();
4362                        let mut grpc = tonic::server::Grpc::new(codec)
4363                            .apply_compression_config(
4364                                accept_compression_encodings,
4365                                send_compression_encodings,
4366                            )
4367                            .apply_max_message_size_config(
4368                                max_decoding_message_size,
4369                                max_encoding_message_size,
4370                            );
4371                        let res = grpc.unary(method, req).await;
4372                        Ok(res)
4373                    };
4374                    Box::pin(fut)
4375                }
4376                "/openiap.FlowService/UpdateWorkitem" => {
4377                    #[allow(non_camel_case_types)]
4378                    struct UpdateWorkitemSvc<T: FlowService>(pub Arc<T>);
4379                    impl<
4380                        T: FlowService,
4381                    > tonic::server::UnaryService<super::UpdateWorkitemRequest>
4382                    for UpdateWorkitemSvc<T> {
4383                        type Response = super::UpdateWorkitemResponse;
4384                        type Future = BoxFuture<
4385                            tonic::Response<Self::Response>,
4386                            tonic::Status,
4387                        >;
4388                        fn call(
4389                            &mut self,
4390                            request: tonic::Request<super::UpdateWorkitemRequest>,
4391                        ) -> Self::Future {
4392                            let inner = Arc::clone(&self.0);
4393                            let fut = async move {
4394                                <T as FlowService>::update_workitem(&inner, request).await
4395                            };
4396                            Box::pin(fut)
4397                        }
4398                    }
4399                    let accept_compression_encodings = self.accept_compression_encodings;
4400                    let send_compression_encodings = self.send_compression_encodings;
4401                    let max_decoding_message_size = self.max_decoding_message_size;
4402                    let max_encoding_message_size = self.max_encoding_message_size;
4403                    let inner = self.inner.clone();
4404                    let fut = async move {
4405                        let method = UpdateWorkitemSvc(inner);
4406                        let codec = tonic::codec::ProstCodec::default();
4407                        let mut grpc = tonic::server::Grpc::new(codec)
4408                            .apply_compression_config(
4409                                accept_compression_encodings,
4410                                send_compression_encodings,
4411                            )
4412                            .apply_max_message_size_config(
4413                                max_decoding_message_size,
4414                                max_encoding_message_size,
4415                            );
4416                        let res = grpc.unary(method, req).await;
4417                        Ok(res)
4418                    };
4419                    Box::pin(fut)
4420                }
4421                "/openiap.FlowService/PopWorkitem" => {
4422                    #[allow(non_camel_case_types)]
4423                    struct PopWorkitemSvc<T: FlowService>(pub Arc<T>);
4424                    impl<
4425                        T: FlowService,
4426                    > tonic::server::UnaryService<super::PopWorkitemRequest>
4427                    for PopWorkitemSvc<T> {
4428                        type Response = super::PopWorkitemResponse;
4429                        type Future = BoxFuture<
4430                            tonic::Response<Self::Response>,
4431                            tonic::Status,
4432                        >;
4433                        fn call(
4434                            &mut self,
4435                            request: tonic::Request<super::PopWorkitemRequest>,
4436                        ) -> Self::Future {
4437                            let inner = Arc::clone(&self.0);
4438                            let fut = async move {
4439                                <T as FlowService>::pop_workitem(&inner, request).await
4440                            };
4441                            Box::pin(fut)
4442                        }
4443                    }
4444                    let accept_compression_encodings = self.accept_compression_encodings;
4445                    let send_compression_encodings = self.send_compression_encodings;
4446                    let max_decoding_message_size = self.max_decoding_message_size;
4447                    let max_encoding_message_size = self.max_encoding_message_size;
4448                    let inner = self.inner.clone();
4449                    let fut = async move {
4450                        let method = PopWorkitemSvc(inner);
4451                        let codec = tonic::codec::ProstCodec::default();
4452                        let mut grpc = tonic::server::Grpc::new(codec)
4453                            .apply_compression_config(
4454                                accept_compression_encodings,
4455                                send_compression_encodings,
4456                            )
4457                            .apply_max_message_size_config(
4458                                max_decoding_message_size,
4459                                max_encoding_message_size,
4460                            );
4461                        let res = grpc.unary(method, req).await;
4462                        Ok(res)
4463                    };
4464                    Box::pin(fut)
4465                }
4466                "/openiap.FlowService/DeleteWorkitem" => {
4467                    #[allow(non_camel_case_types)]
4468                    struct DeleteWorkitemSvc<T: FlowService>(pub Arc<T>);
4469                    impl<
4470                        T: FlowService,
4471                    > tonic::server::UnaryService<super::DeleteWorkitemRequest>
4472                    for DeleteWorkitemSvc<T> {
4473                        type Response = super::DeleteWorkitemResponse;
4474                        type Future = BoxFuture<
4475                            tonic::Response<Self::Response>,
4476                            tonic::Status,
4477                        >;
4478                        fn call(
4479                            &mut self,
4480                            request: tonic::Request<super::DeleteWorkitemRequest>,
4481                        ) -> Self::Future {
4482                            let inner = Arc::clone(&self.0);
4483                            let fut = async move {
4484                                <T as FlowService>::delete_workitem(&inner, request).await
4485                            };
4486                            Box::pin(fut)
4487                        }
4488                    }
4489                    let accept_compression_encodings = self.accept_compression_encodings;
4490                    let send_compression_encodings = self.send_compression_encodings;
4491                    let max_decoding_message_size = self.max_decoding_message_size;
4492                    let max_encoding_message_size = self.max_encoding_message_size;
4493                    let inner = self.inner.clone();
4494                    let fut = async move {
4495                        let method = DeleteWorkitemSvc(inner);
4496                        let codec = tonic::codec::ProstCodec::default();
4497                        let mut grpc = tonic::server::Grpc::new(codec)
4498                            .apply_compression_config(
4499                                accept_compression_encodings,
4500                                send_compression_encodings,
4501                            )
4502                            .apply_max_message_size_config(
4503                                max_decoding_message_size,
4504                                max_encoding_message_size,
4505                            );
4506                        let res = grpc.unary(method, req).await;
4507                        Ok(res)
4508                    };
4509                    Box::pin(fut)
4510                }
4511                "/openiap.FlowService/AddWorkItemQueue" => {
4512                    #[allow(non_camel_case_types)]
4513                    struct AddWorkItemQueueSvc<T: FlowService>(pub Arc<T>);
4514                    impl<
4515                        T: FlowService,
4516                    > tonic::server::UnaryService<super::AddWorkItemQueueRequest>
4517                    for AddWorkItemQueueSvc<T> {
4518                        type Response = super::AddWorkItemQueueResponse;
4519                        type Future = BoxFuture<
4520                            tonic::Response<Self::Response>,
4521                            tonic::Status,
4522                        >;
4523                        fn call(
4524                            &mut self,
4525                            request: tonic::Request<super::AddWorkItemQueueRequest>,
4526                        ) -> Self::Future {
4527                            let inner = Arc::clone(&self.0);
4528                            let fut = async move {
4529                                <T as FlowService>::add_work_item_queue(&inner, request)
4530                                    .await
4531                            };
4532                            Box::pin(fut)
4533                        }
4534                    }
4535                    let accept_compression_encodings = self.accept_compression_encodings;
4536                    let send_compression_encodings = self.send_compression_encodings;
4537                    let max_decoding_message_size = self.max_decoding_message_size;
4538                    let max_encoding_message_size = self.max_encoding_message_size;
4539                    let inner = self.inner.clone();
4540                    let fut = async move {
4541                        let method = AddWorkItemQueueSvc(inner);
4542                        let codec = tonic::codec::ProstCodec::default();
4543                        let mut grpc = tonic::server::Grpc::new(codec)
4544                            .apply_compression_config(
4545                                accept_compression_encodings,
4546                                send_compression_encodings,
4547                            )
4548                            .apply_max_message_size_config(
4549                                max_decoding_message_size,
4550                                max_encoding_message_size,
4551                            );
4552                        let res = grpc.unary(method, req).await;
4553                        Ok(res)
4554                    };
4555                    Box::pin(fut)
4556                }
4557                "/openiap.FlowService/UpdateWorkItemQueue" => {
4558                    #[allow(non_camel_case_types)]
4559                    struct UpdateWorkItemQueueSvc<T: FlowService>(pub Arc<T>);
4560                    impl<
4561                        T: FlowService,
4562                    > tonic::server::UnaryService<super::UpdateWorkItemQueueRequest>
4563                    for UpdateWorkItemQueueSvc<T> {
4564                        type Response = super::UpdateWorkItemQueueResponse;
4565                        type Future = BoxFuture<
4566                            tonic::Response<Self::Response>,
4567                            tonic::Status,
4568                        >;
4569                        fn call(
4570                            &mut self,
4571                            request: tonic::Request<super::UpdateWorkItemQueueRequest>,
4572                        ) -> Self::Future {
4573                            let inner = Arc::clone(&self.0);
4574                            let fut = async move {
4575                                <T as FlowService>::update_work_item_queue(&inner, request)
4576                                    .await
4577                            };
4578                            Box::pin(fut)
4579                        }
4580                    }
4581                    let accept_compression_encodings = self.accept_compression_encodings;
4582                    let send_compression_encodings = self.send_compression_encodings;
4583                    let max_decoding_message_size = self.max_decoding_message_size;
4584                    let max_encoding_message_size = self.max_encoding_message_size;
4585                    let inner = self.inner.clone();
4586                    let fut = async move {
4587                        let method = UpdateWorkItemQueueSvc(inner);
4588                        let codec = tonic::codec::ProstCodec::default();
4589                        let mut grpc = tonic::server::Grpc::new(codec)
4590                            .apply_compression_config(
4591                                accept_compression_encodings,
4592                                send_compression_encodings,
4593                            )
4594                            .apply_max_message_size_config(
4595                                max_decoding_message_size,
4596                                max_encoding_message_size,
4597                            );
4598                        let res = grpc.unary(method, req).await;
4599                        Ok(res)
4600                    };
4601                    Box::pin(fut)
4602                }
4603                "/openiap.FlowService/DeleteWorkItemQueue" => {
4604                    #[allow(non_camel_case_types)]
4605                    struct DeleteWorkItemQueueSvc<T: FlowService>(pub Arc<T>);
4606                    impl<
4607                        T: FlowService,
4608                    > tonic::server::UnaryService<super::DeleteWorkItemQueueRequest>
4609                    for DeleteWorkItemQueueSvc<T> {
4610                        type Response = super::DeleteWorkItemQueueResponse;
4611                        type Future = BoxFuture<
4612                            tonic::Response<Self::Response>,
4613                            tonic::Status,
4614                        >;
4615                        fn call(
4616                            &mut self,
4617                            request: tonic::Request<super::DeleteWorkItemQueueRequest>,
4618                        ) -> Self::Future {
4619                            let inner = Arc::clone(&self.0);
4620                            let fut = async move {
4621                                <T as FlowService>::delete_work_item_queue(&inner, request)
4622                                    .await
4623                            };
4624                            Box::pin(fut)
4625                        }
4626                    }
4627                    let accept_compression_encodings = self.accept_compression_encodings;
4628                    let send_compression_encodings = self.send_compression_encodings;
4629                    let max_decoding_message_size = self.max_decoding_message_size;
4630                    let max_encoding_message_size = self.max_encoding_message_size;
4631                    let inner = self.inner.clone();
4632                    let fut = async move {
4633                        let method = DeleteWorkItemQueueSvc(inner);
4634                        let codec = tonic::codec::ProstCodec::default();
4635                        let mut grpc = tonic::server::Grpc::new(codec)
4636                            .apply_compression_config(
4637                                accept_compression_encodings,
4638                                send_compression_encodings,
4639                            )
4640                            .apply_max_message_size_config(
4641                                max_decoding_message_size,
4642                                max_encoding_message_size,
4643                            );
4644                        let res = grpc.unary(method, req).await;
4645                        Ok(res)
4646                    };
4647                    Box::pin(fut)
4648                }
4649                "/openiap.FlowService/EnsureCustomer" => {
4650                    #[allow(non_camel_case_types)]
4651                    struct EnsureCustomerSvc<T: FlowService>(pub Arc<T>);
4652                    impl<
4653                        T: FlowService,
4654                    > tonic::server::UnaryService<super::EnsureCustomerRequest>
4655                    for EnsureCustomerSvc<T> {
4656                        type Response = super::EnsureCustomerResponse;
4657                        type Future = BoxFuture<
4658                            tonic::Response<Self::Response>,
4659                            tonic::Status,
4660                        >;
4661                        fn call(
4662                            &mut self,
4663                            request: tonic::Request<super::EnsureCustomerRequest>,
4664                        ) -> Self::Future {
4665                            let inner = Arc::clone(&self.0);
4666                            let fut = async move {
4667                                <T as FlowService>::ensure_customer(&inner, request).await
4668                            };
4669                            Box::pin(fut)
4670                        }
4671                    }
4672                    let accept_compression_encodings = self.accept_compression_encodings;
4673                    let send_compression_encodings = self.send_compression_encodings;
4674                    let max_decoding_message_size = self.max_decoding_message_size;
4675                    let max_encoding_message_size = self.max_encoding_message_size;
4676                    let inner = self.inner.clone();
4677                    let fut = async move {
4678                        let method = EnsureCustomerSvc(inner);
4679                        let codec = tonic::codec::ProstCodec::default();
4680                        let mut grpc = tonic::server::Grpc::new(codec)
4681                            .apply_compression_config(
4682                                accept_compression_encodings,
4683                                send_compression_encodings,
4684                            )
4685                            .apply_max_message_size_config(
4686                                max_decoding_message_size,
4687                                max_encoding_message_size,
4688                            );
4689                        let res = grpc.unary(method, req).await;
4690                        Ok(res)
4691                    };
4692                    Box::pin(fut)
4693                }
4694                "/openiap.FlowService/InvokeOpenRPA" => {
4695                    #[allow(non_camel_case_types)]
4696                    struct InvokeOpenRPASvc<T: FlowService>(pub Arc<T>);
4697                    impl<
4698                        T: FlowService,
4699                    > tonic::server::UnaryService<super::InvokeOpenRpaRequest>
4700                    for InvokeOpenRPASvc<T> {
4701                        type Response = super::InvokeOpenRpaResponse;
4702                        type Future = BoxFuture<
4703                            tonic::Response<Self::Response>,
4704                            tonic::Status,
4705                        >;
4706                        fn call(
4707                            &mut self,
4708                            request: tonic::Request<super::InvokeOpenRpaRequest>,
4709                        ) -> Self::Future {
4710                            let inner = Arc::clone(&self.0);
4711                            let fut = async move {
4712                                <T as FlowService>::invoke_open_rpa(&inner, request).await
4713                            };
4714                            Box::pin(fut)
4715                        }
4716                    }
4717                    let accept_compression_encodings = self.accept_compression_encodings;
4718                    let send_compression_encodings = self.send_compression_encodings;
4719                    let max_decoding_message_size = self.max_decoding_message_size;
4720                    let max_encoding_message_size = self.max_encoding_message_size;
4721                    let inner = self.inner.clone();
4722                    let fut = async move {
4723                        let method = InvokeOpenRPASvc(inner);
4724                        let codec = tonic::codec::ProstCodec::default();
4725                        let mut grpc = tonic::server::Grpc::new(codec)
4726                            .apply_compression_config(
4727                                accept_compression_encodings,
4728                                send_compression_encodings,
4729                            )
4730                            .apply_max_message_size_config(
4731                                max_decoding_message_size,
4732                                max_encoding_message_size,
4733                            );
4734                        let res = grpc.unary(method, req).await;
4735                        Ok(res)
4736                    };
4737                    Box::pin(fut)
4738                }
4739                "/openiap.FlowService/StartAgent" => {
4740                    #[allow(non_camel_case_types)]
4741                    struct StartAgentSvc<T: FlowService>(pub Arc<T>);
4742                    impl<
4743                        T: FlowService,
4744                    > tonic::server::UnaryService<super::StartAgentRequest>
4745                    for StartAgentSvc<T> {
4746                        type Response = super::StartAgentResponse;
4747                        type Future = BoxFuture<
4748                            tonic::Response<Self::Response>,
4749                            tonic::Status,
4750                        >;
4751                        fn call(
4752                            &mut self,
4753                            request: tonic::Request<super::StartAgentRequest>,
4754                        ) -> Self::Future {
4755                            let inner = Arc::clone(&self.0);
4756                            let fut = async move {
4757                                <T as FlowService>::start_agent(&inner, request).await
4758                            };
4759                            Box::pin(fut)
4760                        }
4761                    }
4762                    let accept_compression_encodings = self.accept_compression_encodings;
4763                    let send_compression_encodings = self.send_compression_encodings;
4764                    let max_decoding_message_size = self.max_decoding_message_size;
4765                    let max_encoding_message_size = self.max_encoding_message_size;
4766                    let inner = self.inner.clone();
4767                    let fut = async move {
4768                        let method = StartAgentSvc(inner);
4769                        let codec = tonic::codec::ProstCodec::default();
4770                        let mut grpc = tonic::server::Grpc::new(codec)
4771                            .apply_compression_config(
4772                                accept_compression_encodings,
4773                                send_compression_encodings,
4774                            )
4775                            .apply_max_message_size_config(
4776                                max_decoding_message_size,
4777                                max_encoding_message_size,
4778                            );
4779                        let res = grpc.unary(method, req).await;
4780                        Ok(res)
4781                    };
4782                    Box::pin(fut)
4783                }
4784                "/openiap.FlowService/StopAgent" => {
4785                    #[allow(non_camel_case_types)]
4786                    struct StopAgentSvc<T: FlowService>(pub Arc<T>);
4787                    impl<
4788                        T: FlowService,
4789                    > tonic::server::UnaryService<super::StopAgentRequest>
4790                    for StopAgentSvc<T> {
4791                        type Response = super::StopAgentResponse;
4792                        type Future = BoxFuture<
4793                            tonic::Response<Self::Response>,
4794                            tonic::Status,
4795                        >;
4796                        fn call(
4797                            &mut self,
4798                            request: tonic::Request<super::StopAgentRequest>,
4799                        ) -> Self::Future {
4800                            let inner = Arc::clone(&self.0);
4801                            let fut = async move {
4802                                <T as FlowService>::stop_agent(&inner, request).await
4803                            };
4804                            Box::pin(fut)
4805                        }
4806                    }
4807                    let accept_compression_encodings = self.accept_compression_encodings;
4808                    let send_compression_encodings = self.send_compression_encodings;
4809                    let max_decoding_message_size = self.max_decoding_message_size;
4810                    let max_encoding_message_size = self.max_encoding_message_size;
4811                    let inner = self.inner.clone();
4812                    let fut = async move {
4813                        let method = StopAgentSvc(inner);
4814                        let codec = tonic::codec::ProstCodec::default();
4815                        let mut grpc = tonic::server::Grpc::new(codec)
4816                            .apply_compression_config(
4817                                accept_compression_encodings,
4818                                send_compression_encodings,
4819                            )
4820                            .apply_max_message_size_config(
4821                                max_decoding_message_size,
4822                                max_encoding_message_size,
4823                            );
4824                        let res = grpc.unary(method, req).await;
4825                        Ok(res)
4826                    };
4827                    Box::pin(fut)
4828                }
4829                "/openiap.FlowService/GetAgentLog" => {
4830                    #[allow(non_camel_case_types)]
4831                    struct GetAgentLogSvc<T: FlowService>(pub Arc<T>);
4832                    impl<
4833                        T: FlowService,
4834                    > tonic::server::UnaryService<super::GetAgentLogRequest>
4835                    for GetAgentLogSvc<T> {
4836                        type Response = super::GetAgentLogResponse;
4837                        type Future = BoxFuture<
4838                            tonic::Response<Self::Response>,
4839                            tonic::Status,
4840                        >;
4841                        fn call(
4842                            &mut self,
4843                            request: tonic::Request<super::GetAgentLogRequest>,
4844                        ) -> Self::Future {
4845                            let inner = Arc::clone(&self.0);
4846                            let fut = async move {
4847                                <T as FlowService>::get_agent_log(&inner, request).await
4848                            };
4849                            Box::pin(fut)
4850                        }
4851                    }
4852                    let accept_compression_encodings = self.accept_compression_encodings;
4853                    let send_compression_encodings = self.send_compression_encodings;
4854                    let max_decoding_message_size = self.max_decoding_message_size;
4855                    let max_encoding_message_size = self.max_encoding_message_size;
4856                    let inner = self.inner.clone();
4857                    let fut = async move {
4858                        let method = GetAgentLogSvc(inner);
4859                        let codec = tonic::codec::ProstCodec::default();
4860                        let mut grpc = tonic::server::Grpc::new(codec)
4861                            .apply_compression_config(
4862                                accept_compression_encodings,
4863                                send_compression_encodings,
4864                            )
4865                            .apply_max_message_size_config(
4866                                max_decoding_message_size,
4867                                max_encoding_message_size,
4868                            );
4869                        let res = grpc.unary(method, req).await;
4870                        Ok(res)
4871                    };
4872                    Box::pin(fut)
4873                }
4874                "/openiap.FlowService/GetAgentPods" => {
4875                    #[allow(non_camel_case_types)]
4876                    struct GetAgentPodsSvc<T: FlowService>(pub Arc<T>);
4877                    impl<
4878                        T: FlowService,
4879                    > tonic::server::UnaryService<super::GetAgentPodsRequest>
4880                    for GetAgentPodsSvc<T> {
4881                        type Response = super::GetAgentPodsResponse;
4882                        type Future = BoxFuture<
4883                            tonic::Response<Self::Response>,
4884                            tonic::Status,
4885                        >;
4886                        fn call(
4887                            &mut self,
4888                            request: tonic::Request<super::GetAgentPodsRequest>,
4889                        ) -> Self::Future {
4890                            let inner = Arc::clone(&self.0);
4891                            let fut = async move {
4892                                <T as FlowService>::get_agent_pods(&inner, request).await
4893                            };
4894                            Box::pin(fut)
4895                        }
4896                    }
4897                    let accept_compression_encodings = self.accept_compression_encodings;
4898                    let send_compression_encodings = self.send_compression_encodings;
4899                    let max_decoding_message_size = self.max_decoding_message_size;
4900                    let max_encoding_message_size = self.max_encoding_message_size;
4901                    let inner = self.inner.clone();
4902                    let fut = async move {
4903                        let method = GetAgentPodsSvc(inner);
4904                        let codec = tonic::codec::ProstCodec::default();
4905                        let mut grpc = tonic::server::Grpc::new(codec)
4906                            .apply_compression_config(
4907                                accept_compression_encodings,
4908                                send_compression_encodings,
4909                            )
4910                            .apply_max_message_size_config(
4911                                max_decoding_message_size,
4912                                max_encoding_message_size,
4913                            );
4914                        let res = grpc.unary(method, req).await;
4915                        Ok(res)
4916                    };
4917                    Box::pin(fut)
4918                }
4919                "/openiap.FlowService/DeleteAgentPod" => {
4920                    #[allow(non_camel_case_types)]
4921                    struct DeleteAgentPodSvc<T: FlowService>(pub Arc<T>);
4922                    impl<
4923                        T: FlowService,
4924                    > tonic::server::UnaryService<super::DeleteAgentPodRequest>
4925                    for DeleteAgentPodSvc<T> {
4926                        type Response = super::DeleteAgentPodResponse;
4927                        type Future = BoxFuture<
4928                            tonic::Response<Self::Response>,
4929                            tonic::Status,
4930                        >;
4931                        fn call(
4932                            &mut self,
4933                            request: tonic::Request<super::DeleteAgentPodRequest>,
4934                        ) -> Self::Future {
4935                            let inner = Arc::clone(&self.0);
4936                            let fut = async move {
4937                                <T as FlowService>::delete_agent_pod(&inner, request).await
4938                            };
4939                            Box::pin(fut)
4940                        }
4941                    }
4942                    let accept_compression_encodings = self.accept_compression_encodings;
4943                    let send_compression_encodings = self.send_compression_encodings;
4944                    let max_decoding_message_size = self.max_decoding_message_size;
4945                    let max_encoding_message_size = self.max_encoding_message_size;
4946                    let inner = self.inner.clone();
4947                    let fut = async move {
4948                        let method = DeleteAgentPodSvc(inner);
4949                        let codec = tonic::codec::ProstCodec::default();
4950                        let mut grpc = tonic::server::Grpc::new(codec)
4951                            .apply_compression_config(
4952                                accept_compression_encodings,
4953                                send_compression_encodings,
4954                            )
4955                            .apply_max_message_size_config(
4956                                max_decoding_message_size,
4957                                max_encoding_message_size,
4958                            );
4959                        let res = grpc.unary(method, req).await;
4960                        Ok(res)
4961                    };
4962                    Box::pin(fut)
4963                }
4964                "/openiap.FlowService/DeleteAgent" => {
4965                    #[allow(non_camel_case_types)]
4966                    struct DeleteAgentSvc<T: FlowService>(pub Arc<T>);
4967                    impl<
4968                        T: FlowService,
4969                    > tonic::server::UnaryService<super::DeleteAgentRequest>
4970                    for DeleteAgentSvc<T> {
4971                        type Response = super::DeleteAgentResponse;
4972                        type Future = BoxFuture<
4973                            tonic::Response<Self::Response>,
4974                            tonic::Status,
4975                        >;
4976                        fn call(
4977                            &mut self,
4978                            request: tonic::Request<super::DeleteAgentRequest>,
4979                        ) -> Self::Future {
4980                            let inner = Arc::clone(&self.0);
4981                            let fut = async move {
4982                                <T as FlowService>::delete_agent(&inner, request).await
4983                            };
4984                            Box::pin(fut)
4985                        }
4986                    }
4987                    let accept_compression_encodings = self.accept_compression_encodings;
4988                    let send_compression_encodings = self.send_compression_encodings;
4989                    let max_decoding_message_size = self.max_decoding_message_size;
4990                    let max_encoding_message_size = self.max_encoding_message_size;
4991                    let inner = self.inner.clone();
4992                    let fut = async move {
4993                        let method = DeleteAgentSvc(inner);
4994                        let codec = tonic::codec::ProstCodec::default();
4995                        let mut grpc = tonic::server::Grpc::new(codec)
4996                            .apply_compression_config(
4997                                accept_compression_encodings,
4998                                send_compression_encodings,
4999                            )
5000                            .apply_max_message_size_config(
5001                                max_decoding_message_size,
5002                                max_encoding_message_size,
5003                            );
5004                        let res = grpc.unary(method, req).await;
5005                        Ok(res)
5006                    };
5007                    Box::pin(fut)
5008                }
5009                "/openiap.FlowService/CreateIndex" => {
5010                    #[allow(non_camel_case_types)]
5011                    struct CreateIndexSvc<T: FlowService>(pub Arc<T>);
5012                    impl<
5013                        T: FlowService,
5014                    > tonic::server::UnaryService<super::CreateIndexRequest>
5015                    for CreateIndexSvc<T> {
5016                        type Response = super::CreateIndexResponse;
5017                        type Future = BoxFuture<
5018                            tonic::Response<Self::Response>,
5019                            tonic::Status,
5020                        >;
5021                        fn call(
5022                            &mut self,
5023                            request: tonic::Request<super::CreateIndexRequest>,
5024                        ) -> Self::Future {
5025                            let inner = Arc::clone(&self.0);
5026                            let fut = async move {
5027                                <T as FlowService>::create_index(&inner, request).await
5028                            };
5029                            Box::pin(fut)
5030                        }
5031                    }
5032                    let accept_compression_encodings = self.accept_compression_encodings;
5033                    let send_compression_encodings = self.send_compression_encodings;
5034                    let max_decoding_message_size = self.max_decoding_message_size;
5035                    let max_encoding_message_size = self.max_encoding_message_size;
5036                    let inner = self.inner.clone();
5037                    let fut = async move {
5038                        let method = CreateIndexSvc(inner);
5039                        let codec = tonic::codec::ProstCodec::default();
5040                        let mut grpc = tonic::server::Grpc::new(codec)
5041                            .apply_compression_config(
5042                                accept_compression_encodings,
5043                                send_compression_encodings,
5044                            )
5045                            .apply_max_message_size_config(
5046                                max_decoding_message_size,
5047                                max_encoding_message_size,
5048                            );
5049                        let res = grpc.unary(method, req).await;
5050                        Ok(res)
5051                    };
5052                    Box::pin(fut)
5053                }
5054                "/openiap.FlowService/GetIndexes" => {
5055                    #[allow(non_camel_case_types)]
5056                    struct GetIndexesSvc<T: FlowService>(pub Arc<T>);
5057                    impl<
5058                        T: FlowService,
5059                    > tonic::server::UnaryService<super::GetIndexesRequest>
5060                    for GetIndexesSvc<T> {
5061                        type Response = super::GetIndexesResponse;
5062                        type Future = BoxFuture<
5063                            tonic::Response<Self::Response>,
5064                            tonic::Status,
5065                        >;
5066                        fn call(
5067                            &mut self,
5068                            request: tonic::Request<super::GetIndexesRequest>,
5069                        ) -> Self::Future {
5070                            let inner = Arc::clone(&self.0);
5071                            let fut = async move {
5072                                <T as FlowService>::get_indexes(&inner, request).await
5073                            };
5074                            Box::pin(fut)
5075                        }
5076                    }
5077                    let accept_compression_encodings = self.accept_compression_encodings;
5078                    let send_compression_encodings = self.send_compression_encodings;
5079                    let max_decoding_message_size = self.max_decoding_message_size;
5080                    let max_encoding_message_size = self.max_encoding_message_size;
5081                    let inner = self.inner.clone();
5082                    let fut = async move {
5083                        let method = GetIndexesSvc(inner);
5084                        let codec = tonic::codec::ProstCodec::default();
5085                        let mut grpc = tonic::server::Grpc::new(codec)
5086                            .apply_compression_config(
5087                                accept_compression_encodings,
5088                                send_compression_encodings,
5089                            )
5090                            .apply_max_message_size_config(
5091                                max_decoding_message_size,
5092                                max_encoding_message_size,
5093                            );
5094                        let res = grpc.unary(method, req).await;
5095                        Ok(res)
5096                    };
5097                    Box::pin(fut)
5098                }
5099                "/openiap.FlowService/DropIndex" => {
5100                    #[allow(non_camel_case_types)]
5101                    struct DropIndexSvc<T: FlowService>(pub Arc<T>);
5102                    impl<
5103                        T: FlowService,
5104                    > tonic::server::UnaryService<super::DropIndexRequest>
5105                    for DropIndexSvc<T> {
5106                        type Response = super::DropIndexResponse;
5107                        type Future = BoxFuture<
5108                            tonic::Response<Self::Response>,
5109                            tonic::Status,
5110                        >;
5111                        fn call(
5112                            &mut self,
5113                            request: tonic::Request<super::DropIndexRequest>,
5114                        ) -> Self::Future {
5115                            let inner = Arc::clone(&self.0);
5116                            let fut = async move {
5117                                <T as FlowService>::drop_index(&inner, request).await
5118                            };
5119                            Box::pin(fut)
5120                        }
5121                    }
5122                    let accept_compression_encodings = self.accept_compression_encodings;
5123                    let send_compression_encodings = self.send_compression_encodings;
5124                    let max_decoding_message_size = self.max_decoding_message_size;
5125                    let max_encoding_message_size = self.max_encoding_message_size;
5126                    let inner = self.inner.clone();
5127                    let fut = async move {
5128                        let method = DropIndexSvc(inner);
5129                        let codec = tonic::codec::ProstCodec::default();
5130                        let mut grpc = tonic::server::Grpc::new(codec)
5131                            .apply_compression_config(
5132                                accept_compression_encodings,
5133                                send_compression_encodings,
5134                            )
5135                            .apply_max_message_size_config(
5136                                max_decoding_message_size,
5137                                max_encoding_message_size,
5138                            );
5139                        let res = grpc.unary(method, req).await;
5140                        Ok(res)
5141                    };
5142                    Box::pin(fut)
5143                }
5144                "/openiap.FlowService/DeletePackage" => {
5145                    #[allow(non_camel_case_types)]
5146                    struct DeletePackageSvc<T: FlowService>(pub Arc<T>);
5147                    impl<
5148                        T: FlowService,
5149                    > tonic::server::UnaryService<super::DeletePackageRequest>
5150                    for DeletePackageSvc<T> {
5151                        type Response = super::DeletePackageResponse;
5152                        type Future = BoxFuture<
5153                            tonic::Response<Self::Response>,
5154                            tonic::Status,
5155                        >;
5156                        fn call(
5157                            &mut self,
5158                            request: tonic::Request<super::DeletePackageRequest>,
5159                        ) -> Self::Future {
5160                            let inner = Arc::clone(&self.0);
5161                            let fut = async move {
5162                                <T as FlowService>::delete_package(&inner, request).await
5163                            };
5164                            Box::pin(fut)
5165                        }
5166                    }
5167                    let accept_compression_encodings = self.accept_compression_encodings;
5168                    let send_compression_encodings = self.send_compression_encodings;
5169                    let max_decoding_message_size = self.max_decoding_message_size;
5170                    let max_encoding_message_size = self.max_encoding_message_size;
5171                    let inner = self.inner.clone();
5172                    let fut = async move {
5173                        let method = DeletePackageSvc(inner);
5174                        let codec = tonic::codec::ProstCodec::default();
5175                        let mut grpc = tonic::server::Grpc::new(codec)
5176                            .apply_compression_config(
5177                                accept_compression_encodings,
5178                                send_compression_encodings,
5179                            )
5180                            .apply_max_message_size_config(
5181                                max_decoding_message_size,
5182                                max_encoding_message_size,
5183                            );
5184                        let res = grpc.unary(method, req).await;
5185                        Ok(res)
5186                    };
5187                    Box::pin(fut)
5188                }
5189                _ => {
5190                    Box::pin(async move {
5191                        let mut response = http::Response::new(empty_body());
5192                        let headers = response.headers_mut();
5193                        headers
5194                            .insert(
5195                                tonic::Status::GRPC_STATUS,
5196                                (tonic::Code::Unimplemented as i32).into(),
5197                            );
5198                        headers
5199                            .insert(
5200                                http::header::CONTENT_TYPE,
5201                                tonic::metadata::GRPC_CONTENT_TYPE,
5202                            );
5203                        Ok(response)
5204                    })
5205                }
5206            }
5207        }
5208    }
5209    impl<T> Clone for FlowServiceServer<T> {
5210        fn clone(&self) -> Self {
5211            let inner = self.inner.clone();
5212            Self {
5213                inner,
5214                accept_compression_encodings: self.accept_compression_encodings,
5215                send_compression_encodings: self.send_compression_encodings,
5216                max_decoding_message_size: self.max_decoding_message_size,
5217                max_encoding_message_size: self.max_encoding_message_size,
5218            }
5219        }
5220    }
5221    /// Generated gRPC service name
5222    pub const SERVICE_NAME: &str = "openiap.FlowService";
5223    impl<T> tonic::server::NamedService for FlowServiceServer<T> {
5224        const NAME: &'static str = SERVICE_NAME;
5225    }
5226}