cx_api/generated/
com.coralogixapis.slo.v1.rs

1// This file is @generated by prost-build.
2#[derive(serde::Serialize, serde::Deserialize)]
3#[serde(rename_all = "snake_case")]
4#[derive(Clone, PartialEq, ::prost::Message)]
5pub struct Metric {
6    #[prost(string, tag = "1")]
7    pub query: ::prost::alloc::string::String,
8}
9#[derive(serde::Serialize, serde::Deserialize)]
10#[serde(rename_all = "snake_case")]
11#[derive(Clone, PartialEq, ::prost::Message)]
12pub struct RequestBasedMetricSli {
13    #[prost(message, optional, tag = "1")]
14    pub good_events: ::core::option::Option<Metric>,
15    #[prost(message, optional, tag = "2")]
16    pub total_events: ::core::option::Option<Metric>,
17}
18#[derive(serde::Serialize, serde::Deserialize)]
19#[serde(rename_all = "snake_case")]
20#[derive(Clone, PartialEq, ::prost::Message)]
21pub struct WindowBasedMetricSli {
22    #[prost(message, optional, tag = "1")]
23    pub query: ::core::option::Option<Metric>,
24    #[prost(enumeration = "WindowSloWindow", tag = "2")]
25    pub window: i32,
26    #[prost(enumeration = "ComparisonOperator", tag = "3")]
27    pub comparison_operator: i32,
28    #[prost(float, tag = "4")]
29    pub threshold: f32,
30    #[prost(enumeration = "MissingDataStrategy", tag = "5")]
31    pub missing_data_strategy: i32,
32}
33#[derive(serde::Serialize, serde::Deserialize)]
34#[serde(rename_all = "snake_case")]
35#[derive(Clone, Copy, PartialEq, ::prost::Message)]
36pub struct Revision {
37    #[prost(int32, tag = "1")]
38    pub revision: i32,
39    #[prost(message, optional, tag = "2")]
40    pub update_time: ::core::option::Option<::prost_wkt_types::Timestamp>,
41}
42#[derive(serde::Serialize, serde::Deserialize)]
43#[serde(rename_all = "snake_case")]
44#[derive(Clone, PartialEq, ::prost::Message)]
45pub struct Grouping {
46    #[prost(string, repeated, tag = "1")]
47    pub labels: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
48}
49#[derive(serde::Serialize, serde::Deserialize)]
50#[serde(rename_all = "snake_case")]
51#[derive(Clone, PartialEq, ::prost::Message)]
52pub struct Slo {
53    #[prost(string, optional, tag = "1")]
54    pub id: ::core::option::Option<::prost::alloc::string::String>,
55    #[prost(string, tag = "2")]
56    pub name: ::prost::alloc::string::String,
57    #[prost(string, optional, tag = "3")]
58    pub description: ::core::option::Option<::prost::alloc::string::String>,
59    #[prost(string, optional, tag = "4")]
60    pub creator: ::core::option::Option<::prost::alloc::string::String>,
61    #[prost(map = "string, string", tag = "5")]
62    pub labels: ::std::collections::HashMap<
63        ::prost::alloc::string::String,
64        ::prost::alloc::string::String,
65    >,
66    #[prost(message, optional, tag = "6")]
67    pub revision: ::core::option::Option<Revision>,
68    #[prost(message, optional, tag = "7")]
69    pub grouping: ::core::option::Option<Grouping>,
70    #[prost(message, optional, tag = "8")]
71    pub create_time: ::core::option::Option<::prost_wkt_types::Timestamp>,
72    #[prost(message, optional, tag = "9")]
73    pub update_time: ::core::option::Option<::prost_wkt_types::Timestamp>,
74    #[prost(float, tag = "10")]
75    pub target_threshold_percentage: f32,
76    #[prost(oneof = "slo::Window", tags = "11")]
77    pub window: ::core::option::Option<slo::Window>,
78    #[prost(oneof = "slo::Sli", tags = "12, 13")]
79    pub sli: ::core::option::Option<slo::Sli>,
80}
81/// Nested message and enum types in `Slo`.
82pub mod slo {
83    #[derive(serde::Serialize, serde::Deserialize)]
84    #[serde(rename_all = "snake_case")]
85    #[derive(Clone, Copy, PartialEq, ::prost::Oneof)]
86    pub enum Window {
87        #[prost(enumeration = "super::SloTimeFrame", tag = "11")]
88        SloTimeFrame(i32),
89    }
90    #[derive(serde::Serialize, serde::Deserialize)]
91    #[serde(rename_all = "snake_case")]
92    #[derive(Clone, PartialEq, ::prost::Oneof)]
93    pub enum Sli {
94        #[prost(message, tag = "12")]
95        RequestBasedMetricSli(super::RequestBasedMetricSli),
96        #[prost(message, tag = "13")]
97        WindowBasedMetricSli(super::WindowBasedMetricSli),
98    }
99}
100#[derive(serde::Serialize, serde::Deserialize)]
101#[serde(rename_all = "snake_case")]
102#[derive(Clone, PartialEq, ::prost::Message)]
103pub struct SloFilterField {
104    #[prost(oneof = "slo_filter_field::Field", tags = "1, 2")]
105    pub field: ::core::option::Option<slo_filter_field::Field>,
106}
107/// Nested message and enum types in `SloFilterField`.
108pub mod slo_filter_field {
109    #[derive(serde::Serialize, serde::Deserialize)]
110    #[serde(rename_all = "snake_case")]
111    #[derive(Clone, PartialEq, ::prost::Oneof)]
112    pub enum Field {
113        #[prost(enumeration = "super::SloConstantFilterField", tag = "1")]
114        ConstFilter(i32),
115        #[prost(string, tag = "2")]
116        LabelName(::prost::alloc::string::String),
117    }
118}
119#[derive(serde::Serialize, serde::Deserialize)]
120#[serde(rename_all = "snake_case")]
121#[derive(Clone, PartialEq, ::prost::Message)]
122pub struct IsFilterPredicate {
123    #[prost(string, repeated, tag = "1")]
124    pub is: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
125}
126#[derive(serde::Serialize, serde::Deserialize)]
127#[serde(rename_all = "snake_case")]
128#[derive(Clone, PartialEq, ::prost::Message)]
129pub struct SloFilterPredicate {
130    #[prost(oneof = "slo_filter_predicate::Predicate", tags = "1")]
131    pub predicate: ::core::option::Option<slo_filter_predicate::Predicate>,
132}
133/// Nested message and enum types in `SloFilterPredicate`.
134pub mod slo_filter_predicate {
135    #[derive(serde::Serialize, serde::Deserialize)]
136    #[serde(rename_all = "snake_case")]
137    #[derive(Clone, PartialEq, ::prost::Oneof)]
138    pub enum Predicate {
139        #[prost(message, tag = "1")]
140        Is(super::IsFilterPredicate),
141    }
142}
143#[derive(serde::Serialize, serde::Deserialize)]
144#[serde(rename_all = "snake_case")]
145#[derive(Clone, PartialEq, ::prost::Message)]
146pub struct SloFilter {
147    #[prost(message, optional, tag = "1")]
148    pub field: ::core::option::Option<SloFilterField>,
149    #[prost(message, optional, tag = "2")]
150    pub predicate: ::core::option::Option<SloFilterPredicate>,
151}
152#[derive(serde::Serialize, serde::Deserialize)]
153#[serde(rename_all = "snake_case")]
154#[derive(Clone, PartialEq, ::prost::Message)]
155pub struct SloFilters {
156    #[prost(message, repeated, tag = "1")]
157    pub filters: ::prost::alloc::vec::Vec<SloFilter>,
158}
159#[derive(serde::Serialize, serde::Deserialize)]
160#[serde(rename_all = "snake_case")]
161#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
162#[repr(i32)]
163pub enum ComparisonOperator {
164    Unspecified = 0,
165    GreaterThan = 1,
166    GreaterThanOrEquals = 2,
167    LessThan = 3,
168    LessThanOrEquals = 4,
169}
170impl ComparisonOperator {
171    /// String value of the enum field names used in the ProtoBuf definition.
172    ///
173    /// The values are not transformed in any way and thus are considered stable
174    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
175    pub fn as_str_name(&self) -> &'static str {
176        match self {
177            Self::Unspecified => "COMPARISON_OPERATOR_UNSPECIFIED",
178            Self::GreaterThan => "COMPARISON_OPERATOR_GREATER_THAN",
179            Self::GreaterThanOrEquals => "COMPARISON_OPERATOR_GREATER_THAN_OR_EQUALS",
180            Self::LessThan => "COMPARISON_OPERATOR_LESS_THAN",
181            Self::LessThanOrEquals => "COMPARISON_OPERATOR_LESS_THAN_OR_EQUALS",
182        }
183    }
184    /// Creates an enum from field names used in the ProtoBuf definition.
185    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
186        match value {
187            "COMPARISON_OPERATOR_UNSPECIFIED" => Some(Self::Unspecified),
188            "COMPARISON_OPERATOR_GREATER_THAN" => Some(Self::GreaterThan),
189            "COMPARISON_OPERATOR_GREATER_THAN_OR_EQUALS" => {
190                Some(Self::GreaterThanOrEquals)
191            }
192            "COMPARISON_OPERATOR_LESS_THAN" => Some(Self::LessThan),
193            "COMPARISON_OPERATOR_LESS_THAN_OR_EQUALS" => Some(Self::LessThanOrEquals),
194            _ => None,
195        }
196    }
197}
198#[derive(serde::Serialize, serde::Deserialize)]
199#[serde(rename_all = "snake_case")]
200#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
201#[repr(i32)]
202pub enum WindowSloWindow {
203    Unspecified = 0,
204    WindowSloWindow1Minute = 1,
205    WindowSloWindow5Minutes = 2,
206}
207impl WindowSloWindow {
208    /// String value of the enum field names used in the ProtoBuf definition.
209    ///
210    /// The values are not transformed in any way and thus are considered stable
211    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
212    pub fn as_str_name(&self) -> &'static str {
213        match self {
214            Self::Unspecified => "WINDOW_SLO_WINDOW_UNSPECIFIED",
215            Self::WindowSloWindow1Minute => "WINDOW_SLO_WINDOW_1_MINUTE",
216            Self::WindowSloWindow5Minutes => "WINDOW_SLO_WINDOW_5_MINUTES",
217        }
218    }
219    /// Creates an enum from field names used in the ProtoBuf definition.
220    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
221        match value {
222            "WINDOW_SLO_WINDOW_UNSPECIFIED" => Some(Self::Unspecified),
223            "WINDOW_SLO_WINDOW_1_MINUTE" => Some(Self::WindowSloWindow1Minute),
224            "WINDOW_SLO_WINDOW_5_MINUTES" => Some(Self::WindowSloWindow5Minutes),
225            _ => None,
226        }
227    }
228}
229#[derive(serde::Serialize, serde::Deserialize)]
230#[serde(rename_all = "snake_case")]
231#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
232#[repr(i32)]
233pub enum MissingDataStrategy {
234    Uncounted = 0,
235    Good = 1,
236    Bad = 2,
237}
238impl MissingDataStrategy {
239    /// String value of the enum field names used in the ProtoBuf definition.
240    ///
241    /// The values are not transformed in any way and thus are considered stable
242    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
243    pub fn as_str_name(&self) -> &'static str {
244        match self {
245            Self::Uncounted => "MISSING_DATA_STRATEGY_UNCOUNTED",
246            Self::Good => "MISSING_DATA_STRATEGY_GOOD",
247            Self::Bad => "MISSING_DATA_STRATEGY_BAD",
248        }
249    }
250    /// Creates an enum from field names used in the ProtoBuf definition.
251    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
252        match value {
253            "MISSING_DATA_STRATEGY_UNCOUNTED" => Some(Self::Uncounted),
254            "MISSING_DATA_STRATEGY_GOOD" => Some(Self::Good),
255            "MISSING_DATA_STRATEGY_BAD" => Some(Self::Bad),
256            _ => None,
257        }
258    }
259}
260#[derive(serde::Serialize, serde::Deserialize)]
261#[serde(rename_all = "snake_case")]
262#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
263#[repr(i32)]
264pub enum SloTimeFrame {
265    Unspecified = 0,
266    SloTimeFrame7Days = 1,
267    SloTimeFrame14Days = 2,
268    SloTimeFrame21Days = 3,
269    SloTimeFrame28Days = 4,
270}
271impl SloTimeFrame {
272    /// String value of the enum field names used in the ProtoBuf definition.
273    ///
274    /// The values are not transformed in any way and thus are considered stable
275    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
276    pub fn as_str_name(&self) -> &'static str {
277        match self {
278            Self::Unspecified => "SLO_TIME_FRAME_UNSPECIFIED",
279            Self::SloTimeFrame7Days => "SLO_TIME_FRAME_7_DAYS",
280            Self::SloTimeFrame14Days => "SLO_TIME_FRAME_14_DAYS",
281            Self::SloTimeFrame21Days => "SLO_TIME_FRAME_21_DAYS",
282            Self::SloTimeFrame28Days => "SLO_TIME_FRAME_28_DAYS",
283        }
284    }
285    /// Creates an enum from field names used in the ProtoBuf definition.
286    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
287        match value {
288            "SLO_TIME_FRAME_UNSPECIFIED" => Some(Self::Unspecified),
289            "SLO_TIME_FRAME_7_DAYS" => Some(Self::SloTimeFrame7Days),
290            "SLO_TIME_FRAME_14_DAYS" => Some(Self::SloTimeFrame14Days),
291            "SLO_TIME_FRAME_21_DAYS" => Some(Self::SloTimeFrame21Days),
292            "SLO_TIME_FRAME_28_DAYS" => Some(Self::SloTimeFrame28Days),
293            _ => None,
294        }
295    }
296}
297#[derive(serde::Serialize, serde::Deserialize)]
298#[serde(rename_all = "snake_case")]
299#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
300#[repr(i32)]
301pub enum SloConstantFilterField {
302    SloConstFilterFieldUnspecified = 0,
303    SloConstFilterFieldUserName = 1,
304    SloConstFilterFieldSloName = 2,
305}
306impl SloConstantFilterField {
307    /// String value of the enum field names used in the ProtoBuf definition.
308    ///
309    /// The values are not transformed in any way and thus are considered stable
310    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
311    pub fn as_str_name(&self) -> &'static str {
312        match self {
313            Self::SloConstFilterFieldUnspecified => "SLO_CONST_FILTER_FIELD_UNSPECIFIED",
314            Self::SloConstFilterFieldUserName => "SLO_CONST_FILTER_FIELD_USER_NAME",
315            Self::SloConstFilterFieldSloName => "SLO_CONST_FILTER_FIELD_SLO_NAME",
316        }
317    }
318    /// Creates an enum from field names used in the ProtoBuf definition.
319    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
320        match value {
321            "SLO_CONST_FILTER_FIELD_UNSPECIFIED" => {
322                Some(Self::SloConstFilterFieldUnspecified)
323            }
324            "SLO_CONST_FILTER_FIELD_USER_NAME" => Some(Self::SloConstFilterFieldUserName),
325            "SLO_CONST_FILTER_FIELD_SLO_NAME" => Some(Self::SloConstFilterFieldSloName),
326            _ => None,
327        }
328    }
329}
330#[derive(serde::Serialize, serde::Deserialize)]
331#[serde(rename_all = "snake_case")]
332#[derive(Clone, Copy, PartialEq, ::prost::Message)]
333pub struct SloMetricTimeWindow {
334    #[prost(oneof = "slo_metric_time_window::Type", tags = "1")]
335    pub r#type: ::core::option::Option<slo_metric_time_window::Type>,
336}
337/// Nested message and enum types in `SloMetricTimeWindow`.
338pub mod slo_metric_time_window {
339    #[derive(serde::Serialize, serde::Deserialize)]
340    #[serde(rename_all = "snake_case")]
341    #[derive(Clone, Copy, PartialEq, ::prost::Oneof)]
342    pub enum Type {
343        #[prost(enumeration = "super::SloMetricTimeWindowValue", tag = "1")]
344        SloMetricTimeWindowSpecificValue(i32),
345    }
346}
347#[derive(serde::Serialize, serde::Deserialize)]
348#[serde(rename_all = "snake_case")]
349#[derive(Clone, PartialEq, ::prost::Message)]
350pub struct SloMetricFilter {
351    #[prost(oneof = "slo_metric_filter::Type", tags = "1")]
352    pub r#type: ::core::option::Option<slo_metric_filter::Type>,
353}
354/// Nested message and enum types in `SloMetricFilter`.
355pub mod slo_metric_filter {
356    #[derive(serde::Serialize, serde::Deserialize)]
357    #[serde(rename_all = "snake_case")]
358    #[derive(Clone, PartialEq, ::prost::Oneof)]
359    pub enum Type {
360        #[prost(message, tag = "1")]
361        Promql(::prost::alloc::string::String),
362    }
363}
364#[derive(serde::Serialize, serde::Deserialize)]
365#[serde(rename_all = "snake_case")]
366#[derive(Clone, Copy, PartialEq, ::prost::Message)]
367pub struct SloMetricMissingValues {
368    #[prost(oneof = "slo_metric_missing_values::MissingValues", tags = "1, 2")]
369    pub missing_values: ::core::option::Option<slo_metric_missing_values::MissingValues>,
370}
371/// Nested message and enum types in `SloMetricMissingValues`.
372pub mod slo_metric_missing_values {
373    #[derive(serde::Serialize, serde::Deserialize)]
374    #[serde(rename_all = "snake_case")]
375    #[derive(Clone, Copy, PartialEq, ::prost::Oneof)]
376    pub enum MissingValues {
377        #[prost(message, tag = "1")]
378        ReplaceWithZero(bool),
379        #[prost(message, tag = "2")]
380        MinNonNullValuesPct(u32),
381    }
382}
383#[derive(serde::Serialize, serde::Deserialize)]
384#[serde(rename_all = "snake_case")]
385#[derive(Clone, PartialEq, ::prost::Message)]
386pub struct BurnRateMetricTypeDual {
387    #[prost(message, optional, tag = "1")]
388    pub long_metric_filter: ::core::option::Option<SloMetricFilter>,
389    #[prost(message, optional, tag = "2")]
390    pub short_metric_filter: ::core::option::Option<SloMetricFilter>,
391}
392#[derive(serde::Serialize, serde::Deserialize)]
393#[serde(rename_all = "snake_case")]
394#[derive(Clone, PartialEq, ::prost::Message)]
395pub struct BurnRateMetricTypeSingle {
396    #[prost(message, optional, tag = "1")]
397    pub metric_filter: ::core::option::Option<SloMetricFilter>,
398}
399#[derive(serde::Serialize, serde::Deserialize)]
400#[serde(rename_all = "snake_case")]
401#[derive(Clone, PartialEq, ::prost::Message)]
402pub struct ErrorBudgetMetricType {
403    #[prost(message, optional, tag = "1")]
404    pub metric_filter: ::core::option::Option<SloMetricFilter>,
405}
406#[derive(serde::Serialize, serde::Deserialize)]
407#[serde(rename_all = "snake_case")]
408#[derive(Clone, PartialEq, ::prost::Message)]
409pub struct BurnRateAlertTypeDual {
410    #[prost(message, optional, tag = "1")]
411    pub long_window: ::core::option::Option<::prost_wkt_types::Duration>,
412    #[prost(message, optional, tag = "2")]
413    pub short_window: ::core::option::Option<::prost_wkt_types::Duration>,
414    #[prost(message, repeated, tag = "3")]
415    pub thresholds: ::prost::alloc::vec::Vec<f64>,
416}
417#[derive(serde::Serialize, serde::Deserialize)]
418#[serde(rename_all = "snake_case")]
419#[derive(Clone, PartialEq, ::prost::Message)]
420pub struct BurnRateAlertTypeSingle {
421    #[prost(message, optional, tag = "1")]
422    pub window: ::core::option::Option<::prost_wkt_types::Duration>,
423    #[prost(message, repeated, tag = "2")]
424    pub thresholds: ::prost::alloc::vec::Vec<f64>,
425}
426#[derive(serde::Serialize, serde::Deserialize)]
427#[serde(rename_all = "snake_case")]
428#[derive(Clone, PartialEq, ::prost::Message)]
429pub struct BurnRateAlertDefinition {
430    #[prost(oneof = "burn_rate_alert_definition::BurnRate", tags = "2, 3")]
431    pub burn_rate: ::core::option::Option<burn_rate_alert_definition::BurnRate>,
432}
433/// Nested message and enum types in `BurnRateAlertDefinition`.
434pub mod burn_rate_alert_definition {
435    #[derive(serde::Serialize, serde::Deserialize)]
436    #[serde(rename_all = "snake_case")]
437    #[derive(Clone, PartialEq, ::prost::Oneof)]
438    pub enum BurnRate {
439        #[prost(message, tag = "2")]
440        Dual(super::BurnRateAlertTypeDual),
441        #[prost(message, tag = "3")]
442        Single(super::BurnRateAlertTypeSingle),
443    }
444}
445#[derive(serde::Serialize, serde::Deserialize)]
446#[serde(rename_all = "snake_case")]
447#[derive(Clone, PartialEq, ::prost::Message)]
448pub struct SloDefinition {
449    #[prost(string, tag = "1")]
450    pub slo_id: ::prost::alloc::string::String,
451}
452#[derive(serde::Serialize, serde::Deserialize)]
453#[serde(rename_all = "snake_case")]
454#[derive(Clone, Copy, PartialEq, ::prost::Message)]
455pub struct ErrorBudgetAlertDefinition {}
456#[derive(serde::Serialize, serde::Deserialize)]
457#[serde(rename_all = "snake_case")]
458#[derive(Clone, Copy, PartialEq, ::prost::Message)]
459pub struct MoreThanConditionOperator {}
460#[derive(serde::Serialize, serde::Deserialize)]
461#[serde(rename_all = "snake_case")]
462#[derive(Clone, Copy, PartialEq, ::prost::Message)]
463pub struct MoreThanOrEqualsConditionOperator {}
464#[derive(serde::Serialize, serde::Deserialize)]
465#[serde(rename_all = "snake_case")]
466#[derive(Clone, Copy, PartialEq, ::prost::Message)]
467pub struct LessThanConditionOperator {
468    #[prost(message, optional, tag = "1")]
469    pub undetected_values_management: ::core::option::Option<UndetectedValuesManagement>,
470}
471#[derive(serde::Serialize, serde::Deserialize)]
472#[serde(rename_all = "snake_case")]
473#[derive(Clone, Copy, PartialEq, ::prost::Message)]
474pub struct LessThanOrEqualsConditionOperator {
475    #[prost(message, optional, tag = "1")]
476    pub undetected_values_management: ::core::option::Option<UndetectedValuesManagement>,
477}
478#[derive(serde::Serialize, serde::Deserialize)]
479#[serde(rename_all = "snake_case")]
480#[derive(Clone, Copy, PartialEq, ::prost::Message)]
481pub struct UndetectedValuesManagement {
482    #[prost(message, optional, tag = "1")]
483    pub trigger_undetected_values: ::core::option::Option<bool>,
484    #[prost(enumeration = "AutoRetireTimeframe", optional, tag = "2")]
485    pub auto_retire_timeframe: ::core::option::Option<i32>,
486}
487#[derive(serde::Serialize, serde::Deserialize)]
488#[serde(rename_all = "snake_case")]
489#[derive(Clone, PartialEq, ::prost::Message)]
490pub struct SloAlertValidityResult {
491    #[prost(string, tag = "1")]
492    pub id: ::prost::alloc::string::String,
493    #[prost(string, tag = "2")]
494    pub name: ::prost::alloc::string::String,
495    #[prost(string, optional, tag = "3")]
496    pub error_message: ::core::option::Option<::prost::alloc::string::String>,
497    #[prost(string, tag = "4")]
498    pub alert_version_id: ::prost::alloc::string::String,
499}
500#[derive(serde::Serialize, serde::Deserialize)]
501#[serde(rename_all = "snake_case")]
502#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
503#[repr(i32)]
504pub enum SloMetricThresholdConditionType {
505    MetricThresholdConditionTypeMoreThanOrUnspecified = 0,
506    MetricThresholdConditionTypeMoreThanOrEquals = 1,
507}
508impl SloMetricThresholdConditionType {
509    /// String value of the enum field names used in the ProtoBuf definition.
510    ///
511    /// The values are not transformed in any way and thus are considered stable
512    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
513    pub fn as_str_name(&self) -> &'static str {
514        match self {
515            Self::MetricThresholdConditionTypeMoreThanOrUnspecified => {
516                "METRIC_THRESHOLD_CONDITION_TYPE_MORE_THAN_OR_UNSPECIFIED"
517            }
518            Self::MetricThresholdConditionTypeMoreThanOrEquals => {
519                "METRIC_THRESHOLD_CONDITION_TYPE_MORE_THAN_OR_EQUALS"
520            }
521        }
522    }
523    /// Creates an enum from field names used in the ProtoBuf definition.
524    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
525        match value {
526            "METRIC_THRESHOLD_CONDITION_TYPE_MORE_THAN_OR_UNSPECIFIED" => {
527                Some(Self::MetricThresholdConditionTypeMoreThanOrUnspecified)
528            }
529            "METRIC_THRESHOLD_CONDITION_TYPE_MORE_THAN_OR_EQUALS" => {
530                Some(Self::MetricThresholdConditionTypeMoreThanOrEquals)
531            }
532            _ => None,
533        }
534    }
535}
536#[derive(serde::Serialize, serde::Deserialize)]
537#[serde(rename_all = "snake_case")]
538#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
539#[repr(i32)]
540pub enum SloMetricTimeWindowValue {
541    Unspecified = 0,
542    SloMetricTimeWindowValue1Minute = 1,
543}
544impl SloMetricTimeWindowValue {
545    /// String value of the enum field names used in the ProtoBuf definition.
546    ///
547    /// The values are not transformed in any way and thus are considered stable
548    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
549    pub fn as_str_name(&self) -> &'static str {
550        match self {
551            Self::Unspecified => "SLO_METRIC_TIME_WINDOW_VALUE_UNSPECIFIED",
552            Self::SloMetricTimeWindowValue1Minute => {
553                "SLO_METRIC_TIME_WINDOW_VALUE_1_MINUTE"
554            }
555        }
556    }
557    /// Creates an enum from field names used in the ProtoBuf definition.
558    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
559        match value {
560            "SLO_METRIC_TIME_WINDOW_VALUE_UNSPECIFIED" => Some(Self::Unspecified),
561            "SLO_METRIC_TIME_WINDOW_VALUE_1_MINUTE" => {
562                Some(Self::SloMetricTimeWindowValue1Minute)
563            }
564            _ => None,
565        }
566    }
567}
568#[derive(serde::Serialize, serde::Deserialize)]
569#[serde(rename_all = "snake_case")]
570#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
571#[repr(i32)]
572pub enum AutoRetireTimeframe {
573    NeverOrUnspecified = 0,
574    Minutes5 = 1,
575    Minutes10 = 2,
576    Hour1 = 3,
577    Hours2 = 4,
578    Hours6 = 5,
579    Hours12 = 6,
580    Hours24 = 7,
581}
582impl AutoRetireTimeframe {
583    /// String value of the enum field names used in the ProtoBuf definition.
584    ///
585    /// The values are not transformed in any way and thus are considered stable
586    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
587    pub fn as_str_name(&self) -> &'static str {
588        match self {
589            Self::NeverOrUnspecified => "AUTO_RETIRE_TIMEFRAME_NEVER_OR_UNSPECIFIED",
590            Self::Minutes5 => "AUTO_RETIRE_TIMEFRAME_MINUTES_5",
591            Self::Minutes10 => "AUTO_RETIRE_TIMEFRAME_MINUTES_10",
592            Self::Hour1 => "AUTO_RETIRE_TIMEFRAME_HOUR_1",
593            Self::Hours2 => "AUTO_RETIRE_TIMEFRAME_HOURS_2",
594            Self::Hours6 => "AUTO_RETIRE_TIMEFRAME_HOURS_6",
595            Self::Hours12 => "AUTO_RETIRE_TIMEFRAME_HOURS_12",
596            Self::Hours24 => "AUTO_RETIRE_TIMEFRAME_HOURS_24",
597        }
598    }
599    /// Creates an enum from field names used in the ProtoBuf definition.
600    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
601        match value {
602            "AUTO_RETIRE_TIMEFRAME_NEVER_OR_UNSPECIFIED" => {
603                Some(Self::NeverOrUnspecified)
604            }
605            "AUTO_RETIRE_TIMEFRAME_MINUTES_5" => Some(Self::Minutes5),
606            "AUTO_RETIRE_TIMEFRAME_MINUTES_10" => Some(Self::Minutes10),
607            "AUTO_RETIRE_TIMEFRAME_HOUR_1" => Some(Self::Hour1),
608            "AUTO_RETIRE_TIMEFRAME_HOURS_2" => Some(Self::Hours2),
609            "AUTO_RETIRE_TIMEFRAME_HOURS_6" => Some(Self::Hours6),
610            "AUTO_RETIRE_TIMEFRAME_HOURS_12" => Some(Self::Hours12),
611            "AUTO_RETIRE_TIMEFRAME_HOURS_24" => Some(Self::Hours24),
612            _ => None,
613        }
614    }
615}
616#[derive(serde::Serialize, serde::Deserialize)]
617#[serde(rename_all = "snake_case")]
618#[derive(Clone, PartialEq, ::prost::Message)]
619pub struct ResponseStatus {
620    #[prost(enumeration = "super::super::super::super::google::rpc::Code", tag = "1")]
621    pub status_code: i32,
622    #[prost(string, optional, tag = "2")]
623    pub message: ::core::option::Option<::prost::alloc::string::String>,
624    #[prost(map = "string, string", tag = "3")]
625    pub details: ::std::collections::HashMap<
626        ::prost::alloc::string::String,
627        ::prost::alloc::string::String,
628    >,
629}
630#[derive(serde::Serialize, serde::Deserialize)]
631#[serde(rename_all = "snake_case")]
632#[derive(Clone, PartialEq, ::prost::Message)]
633pub struct ReplaceSloAlertsValidationsRequest {
634    #[prost(message, optional, tag = "1")]
635    pub slo: ::core::option::Option<Slo>,
636}
637#[derive(serde::Serialize, serde::Deserialize)]
638#[serde(rename_all = "snake_case")]
639#[derive(Clone, PartialEq, ::prost::Message)]
640pub struct ReplaceSloAlertsValidationsResponse {
641    #[prost(message, repeated, tag = "1")]
642    pub alerts_validation_result: ::prost::alloc::vec::Vec<SloAlertValidityResult>,
643}
644#[derive(serde::Serialize, serde::Deserialize)]
645#[serde(rename_all = "snake_case")]
646#[derive(Clone, PartialEq, ::prost::Message)]
647pub struct CreateSloRequest {
648    #[prost(message, optional, tag = "1")]
649    pub slo: ::core::option::Option<Slo>,
650    #[deprecated]
651    #[prost(bool, optional, tag = "2")]
652    pub silence_data_validations: ::core::option::Option<bool>,
653}
654#[derive(serde::Serialize, serde::Deserialize)]
655#[serde(rename_all = "snake_case")]
656#[derive(Clone, PartialEq, ::prost::Message)]
657pub struct CreateSloResponse {
658    #[prost(message, optional, tag = "1")]
659    pub slo: ::core::option::Option<Slo>,
660}
661#[derive(serde::Serialize, serde::Deserialize)]
662#[serde(rename_all = "snake_case")]
663#[derive(Clone, PartialEq, ::prost::Message)]
664pub struct ReplaceSloRequest {
665    #[prost(message, optional, tag = "1")]
666    pub slo: ::core::option::Option<Slo>,
667    #[deprecated]
668    #[prost(bool, optional, tag = "2")]
669    pub silence_data_validations: ::core::option::Option<bool>,
670}
671#[derive(serde::Serialize, serde::Deserialize)]
672#[serde(rename_all = "snake_case")]
673#[derive(Clone, PartialEq, ::prost::Message)]
674pub struct ReplaceSloResponse {
675    #[prost(message, optional, tag = "1")]
676    pub slo: ::core::option::Option<Slo>,
677    #[prost(string, repeated, tag = "2")]
678    pub effected_slo_alert_ids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
679}
680#[derive(serde::Serialize, serde::Deserialize)]
681#[serde(rename_all = "snake_case")]
682#[derive(Clone, PartialEq, ::prost::Message)]
683pub struct DeleteSloRequest {
684    #[prost(string, tag = "1")]
685    pub id: ::prost::alloc::string::String,
686}
687#[derive(serde::Serialize, serde::Deserialize)]
688#[serde(rename_all = "snake_case")]
689#[derive(Clone, PartialEq, ::prost::Message)]
690pub struct DeleteSloResponse {
691    #[prost(string, repeated, tag = "1")]
692    pub effected_slo_alert_ids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
693}
694#[derive(serde::Serialize, serde::Deserialize)]
695#[serde(rename_all = "snake_case")]
696#[derive(Clone, PartialEq, ::prost::Message)]
697pub struct GetSloRequest {
698    #[prost(string, tag = "1")]
699    pub id: ::prost::alloc::string::String,
700}
701#[derive(serde::Serialize, serde::Deserialize)]
702#[serde(rename_all = "snake_case")]
703#[derive(Clone, PartialEq, ::prost::Message)]
704pub struct GetSloResponse {
705    #[prost(message, optional, tag = "1")]
706    pub slo: ::core::option::Option<Slo>,
707}
708#[derive(serde::Serialize, serde::Deserialize)]
709#[serde(rename_all = "snake_case")]
710#[derive(Clone, PartialEq, ::prost::Message)]
711pub struct ListSlosRequest {
712    #[prost(message, optional, tag = "1")]
713    pub filters: ::core::option::Option<SloFilters>,
714}
715#[derive(serde::Serialize, serde::Deserialize)]
716#[serde(rename_all = "snake_case")]
717#[derive(Clone, PartialEq, ::prost::Message)]
718pub struct ListSlosResponse {
719    #[prost(message, repeated, tag = "1")]
720    pub slos: ::prost::alloc::vec::Vec<Slo>,
721}
722#[derive(serde::Serialize, serde::Deserialize)]
723#[serde(rename_all = "snake_case")]
724#[derive(Clone, PartialEq, ::prost::Message)]
725pub struct BatchGetSlosRequest {
726    #[prost(string, repeated, tag = "1")]
727    pub ids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
728}
729#[derive(serde::Serialize, serde::Deserialize)]
730#[serde(rename_all = "snake_case")]
731#[derive(Clone, PartialEq, ::prost::Message)]
732pub struct BatchGetSlosResponse {
733    #[prost(message, repeated, tag = "1")]
734    pub slos: ::prost::alloc::vec::Vec<Slo>,
735    #[prost(string, repeated, tag = "2")]
736    pub not_found_ids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
737}
738#[derive(serde::Serialize, serde::Deserialize)]
739#[serde(rename_all = "snake_case")]
740#[derive(Clone, PartialEq, ::prost::Message)]
741pub struct SloExecutionRequest {
742    #[prost(oneof = "slo_execution_request::Request", tags = "1, 2, 3")]
743    pub request: ::core::option::Option<slo_execution_request::Request>,
744}
745/// Nested message and enum types in `SloExecutionRequest`.
746pub mod slo_execution_request {
747    #[derive(serde::Serialize, serde::Deserialize)]
748    #[serde(rename_all = "snake_case")]
749    #[derive(Clone, PartialEq, ::prost::Oneof)]
750    pub enum Request {
751        #[prost(message, tag = "1")]
752        CreateSloRequest(super::CreateSloRequest),
753        #[prost(message, tag = "2")]
754        ReplaceSloRequest(super::ReplaceSloRequest),
755        #[prost(message, tag = "3")]
756        DeleteSloRequest(super::DeleteSloRequest),
757    }
758}
759#[derive(serde::Serialize, serde::Deserialize)]
760#[serde(rename_all = "snake_case")]
761#[derive(Clone, PartialEq, ::prost::Message)]
762pub struct SloExecutionResponse {
763    #[prost(oneof = "slo_execution_response::Response", tags = "1, 2, 3")]
764    pub response: ::core::option::Option<slo_execution_response::Response>,
765}
766/// Nested message and enum types in `SloExecutionResponse`.
767pub mod slo_execution_response {
768    #[derive(serde::Serialize, serde::Deserialize)]
769    #[serde(rename_all = "snake_case")]
770    #[derive(Clone, PartialEq, ::prost::Oneof)]
771    pub enum Response {
772        #[prost(message, tag = "1")]
773        CreateSloResponse(super::CreateSloResponse),
774        #[prost(message, tag = "2")]
775        ReplaceSloResponse(super::ReplaceSloResponse),
776        #[prost(message, tag = "3")]
777        DeleteSloResponse(super::DeleteSloResponse),
778    }
779}
780#[derive(serde::Serialize, serde::Deserialize)]
781#[serde(rename_all = "snake_case")]
782#[derive(Clone, PartialEq, ::prost::Message)]
783pub struct BatchExecuteSloRequest {
784    #[prost(message, repeated, tag = "1")]
785    pub requests: ::prost::alloc::vec::Vec<SloExecutionRequest>,
786}
787#[derive(serde::Serialize, serde::Deserialize)]
788#[serde(rename_all = "snake_case")]
789#[derive(Clone, PartialEq, ::prost::Message)]
790pub struct BatchExecuteSloResponse {
791    #[prost(message, repeated, tag = "1")]
792    pub matching_responses: ::prost::alloc::vec::Vec<SloExecutionResponse>,
793    #[prost(message, optional, tag = "2")]
794    pub status: ::core::option::Option<ResponseStatus>,
795}
796#[derive(serde::Serialize, serde::Deserialize)]
797#[serde(rename_all = "snake_case")]
798#[derive(Clone, Copy, PartialEq, ::prost::Message)]
799pub struct GetZeroStateRequest {}
800#[derive(serde::Serialize, serde::Deserialize)]
801#[serde(rename_all = "snake_case")]
802#[derive(Clone, Copy, PartialEq, ::prost::Message)]
803pub struct GetZeroStateResponse {
804    #[prost(bool, tag = "1")]
805    pub zero_state: bool,
806}
807/// Generated client implementations.
808pub mod slos_service_client {
809    #![allow(
810        unused_variables,
811        dead_code,
812        missing_docs,
813        clippy::wildcard_imports,
814        clippy::let_unit_value,
815    )]
816    use tonic::codegen::*;
817    use tonic::codegen::http::Uri;
818    #[derive(Debug, Clone)]
819    pub struct SlosServiceClient<T> {
820        inner: tonic::client::Grpc<T>,
821    }
822    impl SlosServiceClient<tonic::transport::Channel> {
823        /// Attempt to create a new client by connecting to a given endpoint.
824        pub async fn connect<D>(dst: D) -> Result<Self, tonic::transport::Error>
825        where
826            D: TryInto<tonic::transport::Endpoint>,
827            D::Error: Into<StdError>,
828        {
829            let conn = tonic::transport::Endpoint::new(dst)?.connect().await?;
830            Ok(Self::new(conn))
831        }
832    }
833    impl<T> SlosServiceClient<T>
834    where
835        T: tonic::client::GrpcService<tonic::body::BoxBody>,
836        T::Error: Into<StdError>,
837        T::ResponseBody: Body<Data = Bytes> + std::marker::Send + 'static,
838        <T::ResponseBody as Body>::Error: Into<StdError> + std::marker::Send,
839    {
840        pub fn new(inner: T) -> Self {
841            let inner = tonic::client::Grpc::new(inner);
842            Self { inner }
843        }
844        pub fn with_origin(inner: T, origin: Uri) -> Self {
845            let inner = tonic::client::Grpc::with_origin(inner, origin);
846            Self { inner }
847        }
848        pub fn with_interceptor<F>(
849            inner: T,
850            interceptor: F,
851        ) -> SlosServiceClient<InterceptedService<T, F>>
852        where
853            F: tonic::service::Interceptor,
854            T::ResponseBody: Default,
855            T: tonic::codegen::Service<
856                http::Request<tonic::body::BoxBody>,
857                Response = http::Response<
858                    <T as tonic::client::GrpcService<tonic::body::BoxBody>>::ResponseBody,
859                >,
860            >,
861            <T as tonic::codegen::Service<
862                http::Request<tonic::body::BoxBody>,
863            >>::Error: Into<StdError> + std::marker::Send + std::marker::Sync,
864        {
865            SlosServiceClient::new(InterceptedService::new(inner, interceptor))
866        }
867        /// Compress requests with the given encoding.
868        ///
869        /// This requires the server to support it otherwise it might respond with an
870        /// error.
871        #[must_use]
872        pub fn send_compressed(mut self, encoding: CompressionEncoding) -> Self {
873            self.inner = self.inner.send_compressed(encoding);
874            self
875        }
876        /// Enable decompressing responses.
877        #[must_use]
878        pub fn accept_compressed(mut self, encoding: CompressionEncoding) -> Self {
879            self.inner = self.inner.accept_compressed(encoding);
880            self
881        }
882        /// Limits the maximum size of a decoded message.
883        ///
884        /// Default: `4MB`
885        #[must_use]
886        pub fn max_decoding_message_size(mut self, limit: usize) -> Self {
887            self.inner = self.inner.max_decoding_message_size(limit);
888            self
889        }
890        /// Limits the maximum size of an encoded message.
891        ///
892        /// Default: `usize::MAX`
893        #[must_use]
894        pub fn max_encoding_message_size(mut self, limit: usize) -> Self {
895            self.inner = self.inner.max_encoding_message_size(limit);
896            self
897        }
898        pub async fn create_slo(
899            &mut self,
900            request: impl tonic::IntoRequest<super::CreateSloRequest>,
901        ) -> std::result::Result<
902            tonic::Response<super::CreateSloResponse>,
903            tonic::Status,
904        > {
905            self.inner
906                .ready()
907                .await
908                .map_err(|e| {
909                    tonic::Status::unknown(
910                        format!("Service was not ready: {}", e.into()),
911                    )
912                })?;
913            let codec = tonic::codec::ProstCodec::default();
914            let path = http::uri::PathAndQuery::from_static(
915                "/com.coralogixapis.slo.v1.SlosService/CreateSlo",
916            );
917            let mut req = request.into_request();
918            req.extensions_mut()
919                .insert(
920                    GrpcMethod::new("com.coralogixapis.slo.v1.SlosService", "CreateSlo"),
921                );
922            self.inner.unary(req, path, codec).await
923        }
924        pub async fn replace_slo(
925            &mut self,
926            request: impl tonic::IntoRequest<super::ReplaceSloRequest>,
927        ) -> std::result::Result<
928            tonic::Response<super::ReplaceSloResponse>,
929            tonic::Status,
930        > {
931            self.inner
932                .ready()
933                .await
934                .map_err(|e| {
935                    tonic::Status::unknown(
936                        format!("Service was not ready: {}", e.into()),
937                    )
938                })?;
939            let codec = tonic::codec::ProstCodec::default();
940            let path = http::uri::PathAndQuery::from_static(
941                "/com.coralogixapis.slo.v1.SlosService/ReplaceSlo",
942            );
943            let mut req = request.into_request();
944            req.extensions_mut()
945                .insert(
946                    GrpcMethod::new("com.coralogixapis.slo.v1.SlosService", "ReplaceSlo"),
947                );
948            self.inner.unary(req, path, codec).await
949        }
950        pub async fn validate_replace_slo_alerts(
951            &mut self,
952            request: impl tonic::IntoRequest<super::ReplaceSloAlertsValidationsRequest>,
953        ) -> std::result::Result<
954            tonic::Response<super::ReplaceSloAlertsValidationsResponse>,
955            tonic::Status,
956        > {
957            self.inner
958                .ready()
959                .await
960                .map_err(|e| {
961                    tonic::Status::unknown(
962                        format!("Service was not ready: {}", e.into()),
963                    )
964                })?;
965            let codec = tonic::codec::ProstCodec::default();
966            let path = http::uri::PathAndQuery::from_static(
967                "/com.coralogixapis.slo.v1.SlosService/ValidateReplaceSloAlerts",
968            );
969            let mut req = request.into_request();
970            req.extensions_mut()
971                .insert(
972                    GrpcMethod::new(
973                        "com.coralogixapis.slo.v1.SlosService",
974                        "ValidateReplaceSloAlerts",
975                    ),
976                );
977            self.inner.unary(req, path, codec).await
978        }
979        pub async fn delete_slo(
980            &mut self,
981            request: impl tonic::IntoRequest<super::DeleteSloRequest>,
982        ) -> std::result::Result<
983            tonic::Response<super::DeleteSloResponse>,
984            tonic::Status,
985        > {
986            self.inner
987                .ready()
988                .await
989                .map_err(|e| {
990                    tonic::Status::unknown(
991                        format!("Service was not ready: {}", e.into()),
992                    )
993                })?;
994            let codec = tonic::codec::ProstCodec::default();
995            let path = http::uri::PathAndQuery::from_static(
996                "/com.coralogixapis.slo.v1.SlosService/DeleteSlo",
997            );
998            let mut req = request.into_request();
999            req.extensions_mut()
1000                .insert(
1001                    GrpcMethod::new("com.coralogixapis.slo.v1.SlosService", "DeleteSlo"),
1002                );
1003            self.inner.unary(req, path, codec).await
1004        }
1005        pub async fn get_slo(
1006            &mut self,
1007            request: impl tonic::IntoRequest<super::GetSloRequest>,
1008        ) -> std::result::Result<tonic::Response<super::GetSloResponse>, tonic::Status> {
1009            self.inner
1010                .ready()
1011                .await
1012                .map_err(|e| {
1013                    tonic::Status::unknown(
1014                        format!("Service was not ready: {}", e.into()),
1015                    )
1016                })?;
1017            let codec = tonic::codec::ProstCodec::default();
1018            let path = http::uri::PathAndQuery::from_static(
1019                "/com.coralogixapis.slo.v1.SlosService/GetSlo",
1020            );
1021            let mut req = request.into_request();
1022            req.extensions_mut()
1023                .insert(
1024                    GrpcMethod::new("com.coralogixapis.slo.v1.SlosService", "GetSlo"),
1025                );
1026            self.inner.unary(req, path, codec).await
1027        }
1028        pub async fn list_slos(
1029            &mut self,
1030            request: impl tonic::IntoRequest<super::ListSlosRequest>,
1031        ) -> std::result::Result<
1032            tonic::Response<super::ListSlosResponse>,
1033            tonic::Status,
1034        > {
1035            self.inner
1036                .ready()
1037                .await
1038                .map_err(|e| {
1039                    tonic::Status::unknown(
1040                        format!("Service was not ready: {}", e.into()),
1041                    )
1042                })?;
1043            let codec = tonic::codec::ProstCodec::default();
1044            let path = http::uri::PathAndQuery::from_static(
1045                "/com.coralogixapis.slo.v1.SlosService/ListSlos",
1046            );
1047            let mut req = request.into_request();
1048            req.extensions_mut()
1049                .insert(
1050                    GrpcMethod::new("com.coralogixapis.slo.v1.SlosService", "ListSlos"),
1051                );
1052            self.inner.unary(req, path, codec).await
1053        }
1054        pub async fn get_zero_state(
1055            &mut self,
1056            request: impl tonic::IntoRequest<super::GetZeroStateRequest>,
1057        ) -> std::result::Result<
1058            tonic::Response<super::GetZeroStateResponse>,
1059            tonic::Status,
1060        > {
1061            self.inner
1062                .ready()
1063                .await
1064                .map_err(|e| {
1065                    tonic::Status::unknown(
1066                        format!("Service was not ready: {}", e.into()),
1067                    )
1068                })?;
1069            let codec = tonic::codec::ProstCodec::default();
1070            let path = http::uri::PathAndQuery::from_static(
1071                "/com.coralogixapis.slo.v1.SlosService/GetZeroState",
1072            );
1073            let mut req = request.into_request();
1074            req.extensions_mut()
1075                .insert(
1076                    GrpcMethod::new(
1077                        "com.coralogixapis.slo.v1.SlosService",
1078                        "GetZeroState",
1079                    ),
1080                );
1081            self.inner.unary(req, path, codec).await
1082        }
1083        pub async fn batch_get_slos(
1084            &mut self,
1085            request: impl tonic::IntoRequest<super::BatchGetSlosRequest>,
1086        ) -> std::result::Result<
1087            tonic::Response<super::BatchGetSlosResponse>,
1088            tonic::Status,
1089        > {
1090            self.inner
1091                .ready()
1092                .await
1093                .map_err(|e| {
1094                    tonic::Status::unknown(
1095                        format!("Service was not ready: {}", e.into()),
1096                    )
1097                })?;
1098            let codec = tonic::codec::ProstCodec::default();
1099            let path = http::uri::PathAndQuery::from_static(
1100                "/com.coralogixapis.slo.v1.SlosService/BatchGetSlos",
1101            );
1102            let mut req = request.into_request();
1103            req.extensions_mut()
1104                .insert(
1105                    GrpcMethod::new(
1106                        "com.coralogixapis.slo.v1.SlosService",
1107                        "BatchGetSlos",
1108                    ),
1109                );
1110            self.inner.unary(req, path, codec).await
1111        }
1112        pub async fn batch_execute_slo(
1113            &mut self,
1114            request: impl tonic::IntoRequest<super::BatchExecuteSloRequest>,
1115        ) -> std::result::Result<
1116            tonic::Response<super::BatchExecuteSloResponse>,
1117            tonic::Status,
1118        > {
1119            self.inner
1120                .ready()
1121                .await
1122                .map_err(|e| {
1123                    tonic::Status::unknown(
1124                        format!("Service was not ready: {}", e.into()),
1125                    )
1126                })?;
1127            let codec = tonic::codec::ProstCodec::default();
1128            let path = http::uri::PathAndQuery::from_static(
1129                "/com.coralogixapis.slo.v1.SlosService/BatchExecuteSlo",
1130            );
1131            let mut req = request.into_request();
1132            req.extensions_mut()
1133                .insert(
1134                    GrpcMethod::new(
1135                        "com.coralogixapis.slo.v1.SlosService",
1136                        "BatchExecuteSlo",
1137                    ),
1138                );
1139            self.inner.unary(req, path, codec).await
1140        }
1141    }
1142}