cx_api/generated/
com.coralogixapis.alerts.v3.rs

1// This file is @generated by prost-build.
2#[derive(serde::Serialize, serde::Deserialize)]
3#[serde(rename_all = "snake_case")]
4#[derive(Clone, Copy, PartialEq, ::prost::Message)]
5pub struct TimeDuration {
6    #[prost(message, optional, tag = "1")]
7    pub duration: ::core::option::Option<u64>,
8    #[prost(enumeration = "DurationUnit", tag = "2")]
9    pub unit: i32,
10}
11#[derive(serde::Serialize, serde::Deserialize)]
12#[serde(rename_all = "snake_case")]
13#[derive(Clone, PartialEq, ::prost::Message)]
14pub struct OrderByList {
15    #[prost(message, repeated, tag = "1")]
16    pub order_bys: ::prost::alloc::vec::Vec<OrderBy>,
17}
18#[derive(serde::Serialize, serde::Deserialize)]
19#[serde(rename_all = "snake_case")]
20#[derive(Clone, Copy, PartialEq, ::prost::Message)]
21pub struct OrderBy {
22    #[prost(enumeration = "OrderByFields", tag = "1")]
23    pub field_name: i32,
24    #[prost(enumeration = "OrderByDirection", tag = "2")]
25    pub direction: i32,
26}
27#[derive(serde::Serialize, serde::Deserialize)]
28#[serde(rename_all = "snake_case")]
29#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
30#[repr(i32)]
31pub enum NotifyOn {
32    TriggeredOnlyUnspecified = 0,
33    TriggeredAndResolved = 1,
34}
35impl NotifyOn {
36    /// String value of the enum field names used in the ProtoBuf definition.
37    ///
38    /// The values are not transformed in any way and thus are considered stable
39    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
40    pub fn as_str_name(&self) -> &'static str {
41        match self {
42            Self::TriggeredOnlyUnspecified => "NOTIFY_ON_TRIGGERED_ONLY_UNSPECIFIED",
43            Self::TriggeredAndResolved => "NOTIFY_ON_TRIGGERED_AND_RESOLVED",
44        }
45    }
46    /// Creates an enum from field names used in the ProtoBuf definition.
47    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
48        match value {
49            "NOTIFY_ON_TRIGGERED_ONLY_UNSPECIFIED" => {
50                Some(Self::TriggeredOnlyUnspecified)
51            }
52            "NOTIFY_ON_TRIGGERED_AND_RESOLVED" => Some(Self::TriggeredAndResolved),
53            _ => None,
54        }
55    }
56}
57#[derive(serde::Serialize, serde::Deserialize)]
58#[serde(rename_all = "snake_case")]
59#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
60#[repr(i32)]
61pub enum DurationUnit {
62    Unspecified = 0,
63    Hours = 1,
64}
65impl DurationUnit {
66    /// String value of the enum field names used in the ProtoBuf definition.
67    ///
68    /// The values are not transformed in any way and thus are considered stable
69    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
70    pub fn as_str_name(&self) -> &'static str {
71        match self {
72            Self::Unspecified => "DURATION_UNIT_UNSPECIFIED",
73            Self::Hours => "DURATION_UNIT_HOURS",
74        }
75    }
76    /// Creates an enum from field names used in the ProtoBuf definition.
77    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
78        match value {
79            "DURATION_UNIT_UNSPECIFIED" => Some(Self::Unspecified),
80            "DURATION_UNIT_HOURS" => Some(Self::Hours),
81            _ => None,
82        }
83    }
84}
85#[derive(serde::Serialize, serde::Deserialize)]
86#[serde(rename_all = "snake_case")]
87#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
88#[repr(i32)]
89pub enum BooleanOperator {
90    AndUnspecified = 0,
91    Or = 1,
92}
93impl BooleanOperator {
94    /// String value of the enum field names used in the ProtoBuf definition.
95    ///
96    /// The values are not transformed in any way and thus are considered stable
97    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
98    pub fn as_str_name(&self) -> &'static str {
99        match self {
100            Self::AndUnspecified => "BOOLEAN_OPERATOR_AND_UNSPECIFIED",
101            Self::Or => "BOOLEAN_OPERATOR_OR",
102        }
103    }
104    /// Creates an enum from field names used in the ProtoBuf definition.
105    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
106        match value {
107            "BOOLEAN_OPERATOR_AND_UNSPECIFIED" => Some(Self::AndUnspecified),
108            "BOOLEAN_OPERATOR_OR" => Some(Self::Or),
109            _ => None,
110        }
111    }
112}
113#[derive(serde::Serialize, serde::Deserialize)]
114#[serde(rename_all = "snake_case")]
115#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
116#[repr(i32)]
117pub enum OrderByDirection {
118    AscOrUnspecified = 0,
119    Desc = 1,
120}
121impl OrderByDirection {
122    /// String value of the enum field names used in the ProtoBuf definition.
123    ///
124    /// The values are not transformed in any way and thus are considered stable
125    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
126    pub fn as_str_name(&self) -> &'static str {
127        match self {
128            Self::AscOrUnspecified => "ORDER_BY_DIRECTION_ASC_OR_UNSPECIFIED",
129            Self::Desc => "ORDER_BY_DIRECTION_DESC",
130        }
131    }
132    /// Creates an enum from field names used in the ProtoBuf definition.
133    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
134        match value {
135            "ORDER_BY_DIRECTION_ASC_OR_UNSPECIFIED" => Some(Self::AscOrUnspecified),
136            "ORDER_BY_DIRECTION_DESC" => Some(Self::Desc),
137            _ => None,
138        }
139    }
140}
141#[derive(serde::Serialize, serde::Deserialize)]
142#[serde(rename_all = "snake_case")]
143#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
144#[repr(i32)]
145pub enum OrderByFields {
146    Unspecified = 0,
147    Name = 1,
148    Id = 2,
149    Severity = 3,
150    CreatedTime = 4,
151    UpdatedTime = 5,
152    LastTriggered = 6,
153}
154impl OrderByFields {
155    /// String value of the enum field names used in the ProtoBuf definition.
156    ///
157    /// The values are not transformed in any way and thus are considered stable
158    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
159    pub fn as_str_name(&self) -> &'static str {
160        match self {
161            Self::Unspecified => "ORDER_BY_FIELDS_UNSPECIFIED",
162            Self::Name => "ORDER_BY_FIELDS_NAME",
163            Self::Id => "ORDER_BY_FIELDS_ID",
164            Self::Severity => "ORDER_BY_FIELDS_SEVERITY",
165            Self::CreatedTime => "ORDER_BY_FIELDS_CREATED_TIME",
166            Self::UpdatedTime => "ORDER_BY_FIELDS_UPDATED_TIME",
167            Self::LastTriggered => "ORDER_BY_FIELDS_LAST_TRIGGERED",
168        }
169    }
170    /// Creates an enum from field names used in the ProtoBuf definition.
171    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
172        match value {
173            "ORDER_BY_FIELDS_UNSPECIFIED" => Some(Self::Unspecified),
174            "ORDER_BY_FIELDS_NAME" => Some(Self::Name),
175            "ORDER_BY_FIELDS_ID" => Some(Self::Id),
176            "ORDER_BY_FIELDS_SEVERITY" => Some(Self::Severity),
177            "ORDER_BY_FIELDS_CREATED_TIME" => Some(Self::CreatedTime),
178            "ORDER_BY_FIELDS_UPDATED_TIME" => Some(Self::UpdatedTime),
179            "ORDER_BY_FIELDS_LAST_TRIGGERED" => Some(Self::LastTriggered),
180            _ => None,
181        }
182    }
183}
184#[derive(serde::Serialize, serde::Deserialize)]
185#[serde(rename_all = "snake_case")]
186#[derive(Clone, PartialEq, ::prost::Message)]
187pub struct NotificationDestination {
188    #[prost(string, tag = "1")]
189    pub connector_id: ::prost::alloc::string::String,
190    #[prost(string, optional, tag = "2")]
191    pub preset_id: ::core::option::Option<::prost::alloc::string::String>,
192    #[prost(enumeration = "NotifyOn", tag = "3")]
193    pub notify_on: i32,
194    #[prost(message, optional, tag = "4")]
195    pub triggered_routing_overrides: ::core::option::Option<NotificationRouting>,
196    #[prost(message, optional, tag = "5")]
197    pub resolved_route_overrides: ::core::option::Option<NotificationRouting>,
198}
199#[derive(serde::Serialize, serde::Deserialize)]
200#[serde(rename_all = "snake_case")]
201#[derive(Clone, PartialEq, ::prost::Message)]
202pub struct NotificationRouting {
203    #[prost(message, optional, tag = "1")]
204    pub config_overrides: ::core::option::Option<SourceOverrides>,
205}
206#[derive(serde::Serialize, serde::Deserialize)]
207#[serde(rename_all = "snake_case")]
208#[derive(Clone, PartialEq, ::prost::Message)]
209pub struct SourceOverrides {
210    #[prost(string, tag = "1")]
211    pub output_schema_id: ::prost::alloc::string::String,
212    #[prost(message, repeated, tag = "2")]
213    pub message_config_fields: ::prost::alloc::vec::Vec<MessageConfigField>,
214    #[prost(message, repeated, tag = "3")]
215    pub connector_config_fields: ::prost::alloc::vec::Vec<ConnectorConfigField>,
216}
217#[derive(serde::Serialize, serde::Deserialize)]
218#[serde(rename_all = "snake_case")]
219#[derive(Clone, PartialEq, ::prost::Message)]
220pub struct ConnectorConfigField {
221    #[prost(string, tag = "1")]
222    pub field_name: ::prost::alloc::string::String,
223    #[prost(string, tag = "2")]
224    pub template: ::prost::alloc::string::String,
225}
226#[derive(serde::Serialize, serde::Deserialize)]
227#[serde(rename_all = "snake_case")]
228#[derive(Clone, PartialEq, ::prost::Message)]
229pub struct MessageConfigField {
230    #[prost(string, tag = "1")]
231    pub field_name: ::prost::alloc::string::String,
232    #[prost(string, tag = "2")]
233    pub template: ::prost::alloc::string::String,
234}
235#[derive(serde::Serialize, serde::Deserialize)]
236#[serde(rename_all = "snake_case")]
237#[derive(Clone, PartialEq, ::prost::Message)]
238pub struct NotificationRouter {
239    #[prost(string, tag = "1")]
240    pub id: ::prost::alloc::string::String,
241    #[prost(enumeration = "NotifyOn", optional, tag = "2")]
242    pub notify_on: ::core::option::Option<i32>,
243}
244#[derive(serde::Serialize, serde::Deserialize)]
245#[serde(rename_all = "snake_case")]
246#[derive(Clone, Copy, PartialEq, ::prost::Message)]
247pub struct AlertDefIncidentSettings {
248    #[prost(enumeration = "NotifyOn", tag = "2")]
249    pub notify_on: i32,
250    #[prost(oneof = "alert_def_incident_settings::RetriggeringPeriod", tags = "100")]
251    pub retriggering_period: ::core::option::Option<
252        alert_def_incident_settings::RetriggeringPeriod,
253    >,
254}
255/// Nested message and enum types in `AlertDefIncidentSettings`.
256pub mod alert_def_incident_settings {
257    #[derive(serde::Serialize, serde::Deserialize)]
258    #[serde(rename_all = "snake_case")]
259    #[derive(Clone, Copy, PartialEq, ::prost::Oneof)]
260    pub enum RetriggeringPeriod {
261        #[prost(message, tag = "100")]
262        Minutes(u32),
263    }
264}
265#[derive(serde::Serialize, serde::Deserialize)]
266#[serde(rename_all = "snake_case")]
267#[derive(Clone, PartialEq, ::prost::Message)]
268pub struct AlertDefNotificationGroup {
269    #[prost(message, repeated, tag = "1")]
270    pub group_by_keys: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
271    #[prost(message, repeated, tag = "2")]
272    pub webhooks: ::prost::alloc::vec::Vec<AlertDefWebhooksSettings>,
273    #[prost(message, repeated, tag = "3")]
274    pub destinations: ::prost::alloc::vec::Vec<NotificationDestination>,
275    #[prost(message, optional, tag = "4")]
276    pub router: ::core::option::Option<NotificationRouter>,
277}
278#[derive(serde::Serialize, serde::Deserialize)]
279#[serde(rename_all = "snake_case")]
280#[derive(Clone, PartialEq, ::prost::Message)]
281pub struct AlertDefWebhooksSettings {
282    #[prost(enumeration = "NotifyOn", optional, tag = "1")]
283    pub notify_on: ::core::option::Option<i32>,
284    #[prost(message, optional, tag = "2")]
285    pub integration: ::core::option::Option<IntegrationType>,
286    #[prost(oneof = "alert_def_webhooks_settings::RetriggeringPeriod", tags = "100")]
287    pub retriggering_period: ::core::option::Option<
288        alert_def_webhooks_settings::RetriggeringPeriod,
289    >,
290}
291/// Nested message and enum types in `AlertDefWebhooksSettings`.
292pub mod alert_def_webhooks_settings {
293    #[derive(serde::Serialize, serde::Deserialize)]
294    #[serde(rename_all = "snake_case")]
295    #[derive(Clone, Copy, PartialEq, ::prost::Oneof)]
296    pub enum RetriggeringPeriod {
297        #[prost(message, tag = "100")]
298        Minutes(u32),
299    }
300}
301#[derive(serde::Serialize, serde::Deserialize)]
302#[serde(rename_all = "snake_case")]
303#[derive(Clone, PartialEq, ::prost::Message)]
304pub struct IntegrationType {
305    #[prost(oneof = "integration_type::IntegrationType", tags = "2, 3")]
306    pub integration_type: ::core::option::Option<integration_type::IntegrationType>,
307}
308/// Nested message and enum types in `IntegrationType`.
309pub mod integration_type {
310    #[derive(serde::Serialize, serde::Deserialize)]
311    #[serde(rename_all = "snake_case")]
312    #[derive(Clone, PartialEq, ::prost::Oneof)]
313    pub enum IntegrationType {
314        #[prost(message, tag = "2")]
315        IntegrationId(u32),
316        #[prost(message, tag = "3")]
317        Recipients(super::Recipients),
318    }
319}
320#[derive(serde::Serialize, serde::Deserialize)]
321#[serde(rename_all = "snake_case")]
322#[derive(Clone, PartialEq, ::prost::Message)]
323pub struct Recipients {
324    #[prost(message, repeated, tag = "1")]
325    pub emails: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
326}
327#[derive(serde::Serialize, serde::Deserialize)]
328#[serde(rename_all = "snake_case")]
329#[derive(Clone, PartialEq, ::prost::Message)]
330pub struct Priority {
331    #[prost(enumeration = "AlertDefPriority", tag = "1")]
332    pub value: i32,
333    #[prost(message, optional, tag = "2")]
334    pub name: ::core::option::Option<::prost::alloc::string::String>,
335}
336#[derive(serde::Serialize, serde::Deserialize)]
337#[serde(rename_all = "snake_case")]
338#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
339#[repr(i32)]
340pub enum AlertDefPriority {
341    P5OrUnspecified = 0,
342    P4 = 1,
343    P3 = 2,
344    P2 = 3,
345    P1 = 4,
346}
347impl AlertDefPriority {
348    /// String value of the enum field names used in the ProtoBuf definition.
349    ///
350    /// The values are not transformed in any way and thus are considered stable
351    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
352    pub fn as_str_name(&self) -> &'static str {
353        match self {
354            Self::P5OrUnspecified => "ALERT_DEF_PRIORITY_P5_OR_UNSPECIFIED",
355            Self::P4 => "ALERT_DEF_PRIORITY_P4",
356            Self::P3 => "ALERT_DEF_PRIORITY_P3",
357            Self::P2 => "ALERT_DEF_PRIORITY_P2",
358            Self::P1 => "ALERT_DEF_PRIORITY_P1",
359        }
360    }
361    /// Creates an enum from field names used in the ProtoBuf definition.
362    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
363        match value {
364            "ALERT_DEF_PRIORITY_P5_OR_UNSPECIFIED" => Some(Self::P5OrUnspecified),
365            "ALERT_DEF_PRIORITY_P4" => Some(Self::P4),
366            "ALERT_DEF_PRIORITY_P3" => Some(Self::P3),
367            "ALERT_DEF_PRIORITY_P2" => Some(Self::P2),
368            "ALERT_DEF_PRIORITY_P1" => Some(Self::P1),
369            _ => None,
370        }
371    }
372}
373#[derive(serde::Serialize, serde::Deserialize)]
374#[serde(rename_all = "snake_case")]
375#[derive(Clone, PartialEq, ::prost::Message)]
376pub struct ActivitySchedule {
377    #[prost(enumeration = "DayOfWeek", repeated, packed = "false", tag = "1")]
378    pub day_of_week: ::prost::alloc::vec::Vec<i32>,
379    #[prost(message, optional, tag = "2")]
380    pub start_time: ::core::option::Option<TimeOfDay>,
381    #[prost(message, optional, tag = "3")]
382    pub end_time: ::core::option::Option<TimeOfDay>,
383}
384#[derive(serde::Serialize, serde::Deserialize)]
385#[serde(rename_all = "snake_case")]
386#[derive(Clone, Copy, PartialEq, ::prost::Message)]
387pub struct TimeOfDay {
388    /// Hours of day in 24 hour format. Should be from 0 to 23.
389    #[prost(int32, tag = "1")]
390    pub hours: i32,
391    /// Minutes of hour of day. Must be from 0 to 59.
392    #[prost(int32, tag = "2")]
393    pub minutes: i32,
394}
395#[derive(serde::Serialize, serde::Deserialize)]
396#[serde(rename_all = "snake_case")]
397#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
398#[repr(i32)]
399pub enum DayOfWeek {
400    MondayOrUnspecified = 0,
401    Tuesday = 1,
402    Wednesday = 2,
403    Thursday = 3,
404    Friday = 4,
405    Saturday = 5,
406    Sunday = 6,
407}
408impl DayOfWeek {
409    /// String value of the enum field names used in the ProtoBuf definition.
410    ///
411    /// The values are not transformed in any way and thus are considered stable
412    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
413    pub fn as_str_name(&self) -> &'static str {
414        match self {
415            Self::MondayOrUnspecified => "DAY_OF_WEEK_MONDAY_OR_UNSPECIFIED",
416            Self::Tuesday => "DAY_OF_WEEK_TUESDAY",
417            Self::Wednesday => "DAY_OF_WEEK_WEDNESDAY",
418            Self::Thursday => "DAY_OF_WEEK_THURSDAY",
419            Self::Friday => "DAY_OF_WEEK_FRIDAY",
420            Self::Saturday => "DAY_OF_WEEK_SATURDAY",
421            Self::Sunday => "DAY_OF_WEEK_SUNDAY",
422        }
423    }
424    /// Creates an enum from field names used in the ProtoBuf definition.
425    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
426        match value {
427            "DAY_OF_WEEK_MONDAY_OR_UNSPECIFIED" => Some(Self::MondayOrUnspecified),
428            "DAY_OF_WEEK_TUESDAY" => Some(Self::Tuesday),
429            "DAY_OF_WEEK_WEDNESDAY" => Some(Self::Wednesday),
430            "DAY_OF_WEEK_THURSDAY" => Some(Self::Thursday),
431            "DAY_OF_WEEK_FRIDAY" => Some(Self::Friday),
432            "DAY_OF_WEEK_SATURDAY" => Some(Self::Saturday),
433            "DAY_OF_WEEK_SUNDAY" => Some(Self::Sunday),
434            _ => None,
435        }
436    }
437}
438#[derive(serde::Serialize, serde::Deserialize)]
439#[serde(rename_all = "snake_case")]
440#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
441#[repr(i32)]
442pub enum AlertDefType {
443    LogsImmediateOrUnspecified = 0,
444    LogsThreshold = 1,
445    LogsAnomaly = 3,
446    LogsRatioThreshold = 4,
447    LogsNewValue = 6,
448    LogsUniqueCount = 7,
449    LogsTimeRelativeThreshold = 8,
450    MetricThreshold = 10,
451    MetricAnomaly = 14,
452    TracingImmediate = 15,
453    TracingThreshold = 16,
454    Flow = 17,
455    SloThreshold = 18,
456}
457impl AlertDefType {
458    /// String value of the enum field names used in the ProtoBuf definition.
459    ///
460    /// The values are not transformed in any way and thus are considered stable
461    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
462    pub fn as_str_name(&self) -> &'static str {
463        match self {
464            Self::LogsImmediateOrUnspecified => {
465                "ALERT_DEF_TYPE_LOGS_IMMEDIATE_OR_UNSPECIFIED"
466            }
467            Self::LogsThreshold => "ALERT_DEF_TYPE_LOGS_THRESHOLD",
468            Self::LogsAnomaly => "ALERT_DEF_TYPE_LOGS_ANOMALY",
469            Self::LogsRatioThreshold => "ALERT_DEF_TYPE_LOGS_RATIO_THRESHOLD",
470            Self::LogsNewValue => "ALERT_DEF_TYPE_LOGS_NEW_VALUE",
471            Self::LogsUniqueCount => "ALERT_DEF_TYPE_LOGS_UNIQUE_COUNT",
472            Self::LogsTimeRelativeThreshold => {
473                "ALERT_DEF_TYPE_LOGS_TIME_RELATIVE_THRESHOLD"
474            }
475            Self::MetricThreshold => "ALERT_DEF_TYPE_METRIC_THRESHOLD",
476            Self::MetricAnomaly => "ALERT_DEF_TYPE_METRIC_ANOMALY",
477            Self::TracingImmediate => "ALERT_DEF_TYPE_TRACING_IMMEDIATE",
478            Self::TracingThreshold => "ALERT_DEF_TYPE_TRACING_THRESHOLD",
479            Self::Flow => "ALERT_DEF_TYPE_FLOW",
480            Self::SloThreshold => "ALERT_DEF_TYPE_SLO_THRESHOLD",
481        }
482    }
483    /// Creates an enum from field names used in the ProtoBuf definition.
484    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
485        match value {
486            "ALERT_DEF_TYPE_LOGS_IMMEDIATE_OR_UNSPECIFIED" => {
487                Some(Self::LogsImmediateOrUnspecified)
488            }
489            "ALERT_DEF_TYPE_LOGS_THRESHOLD" => Some(Self::LogsThreshold),
490            "ALERT_DEF_TYPE_LOGS_ANOMALY" => Some(Self::LogsAnomaly),
491            "ALERT_DEF_TYPE_LOGS_RATIO_THRESHOLD" => Some(Self::LogsRatioThreshold),
492            "ALERT_DEF_TYPE_LOGS_NEW_VALUE" => Some(Self::LogsNewValue),
493            "ALERT_DEF_TYPE_LOGS_UNIQUE_COUNT" => Some(Self::LogsUniqueCount),
494            "ALERT_DEF_TYPE_LOGS_TIME_RELATIVE_THRESHOLD" => {
495                Some(Self::LogsTimeRelativeThreshold)
496            }
497            "ALERT_DEF_TYPE_METRIC_THRESHOLD" => Some(Self::MetricThreshold),
498            "ALERT_DEF_TYPE_METRIC_ANOMALY" => Some(Self::MetricAnomaly),
499            "ALERT_DEF_TYPE_TRACING_IMMEDIATE" => Some(Self::TracingImmediate),
500            "ALERT_DEF_TYPE_TRACING_THRESHOLD" => Some(Self::TracingThreshold),
501            "ALERT_DEF_TYPE_FLOW" => Some(Self::Flow),
502            "ALERT_DEF_TYPE_SLO_THRESHOLD" => Some(Self::SloThreshold),
503            _ => None,
504        }
505    }
506}
507#[derive(serde::Serialize, serde::Deserialize)]
508#[serde(rename_all = "snake_case")]
509#[derive(Clone, PartialEq, ::prost::Message)]
510pub struct FlowType {
511    #[prost(message, repeated, tag = "1")]
512    pub stages: ::prost::alloc::vec::Vec<FlowStages>,
513    #[prost(message, optional, tag = "2")]
514    pub enforce_suppression: ::core::option::Option<bool>,
515}
516#[derive(serde::Serialize, serde::Deserialize)]
517#[serde(rename_all = "snake_case")]
518#[derive(Clone, PartialEq, ::prost::Message)]
519pub struct FlowStages {
520    #[prost(message, optional, tag = "3")]
521    pub timeframe_ms: ::core::option::Option<i64>,
522    #[prost(enumeration = "TimeframeType", tag = "4")]
523    pub timeframe_type: i32,
524    #[prost(oneof = "flow_stages::FlowStages", tags = "10")]
525    pub flow_stages: ::core::option::Option<flow_stages::FlowStages>,
526}
527/// Nested message and enum types in `FlowStages`.
528pub mod flow_stages {
529    #[derive(serde::Serialize, serde::Deserialize)]
530    #[serde(rename_all = "snake_case")]
531    #[derive(Clone, PartialEq, ::prost::Oneof)]
532    pub enum FlowStages {
533        #[prost(message, tag = "10")]
534        FlowStagesGroups(super::FlowStagesGroups),
535    }
536}
537#[derive(serde::Serialize, serde::Deserialize)]
538#[serde(rename_all = "snake_case")]
539#[derive(Clone, PartialEq, ::prost::Message)]
540pub struct FlowStagesGroups {
541    #[prost(message, repeated, tag = "1")]
542    pub groups: ::prost::alloc::vec::Vec<FlowStagesGroup>,
543}
544#[derive(serde::Serialize, serde::Deserialize)]
545#[serde(rename_all = "snake_case")]
546#[derive(Clone, PartialEq, ::prost::Message)]
547pub struct FlowStagesGroup {
548    #[prost(message, repeated, tag = "1")]
549    pub alert_defs: ::prost::alloc::vec::Vec<FlowStagesGroupsAlertDefs>,
550    #[prost(enumeration = "NextOp", tag = "2")]
551    pub next_op: i32,
552    #[prost(enumeration = "AlertsOp", tag = "3")]
553    pub alerts_op: i32,
554}
555#[derive(serde::Serialize, serde::Deserialize)]
556#[serde(rename_all = "snake_case")]
557#[derive(Clone, PartialEq, ::prost::Message)]
558pub struct FlowStagesGroupsAlertDefs {
559    #[prost(message, optional, tag = "1")]
560    pub id: ::core::option::Option<::prost::alloc::string::String>,
561    #[prost(message, optional, tag = "2")]
562    pub not: ::core::option::Option<bool>,
563}
564#[derive(serde::Serialize, serde::Deserialize)]
565#[serde(rename_all = "snake_case")]
566#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
567#[repr(i32)]
568pub enum NextOp {
569    AndOrUnspecified = 0,
570    Or = 1,
571}
572impl NextOp {
573    /// String value of the enum field names used in the ProtoBuf definition.
574    ///
575    /// The values are not transformed in any way and thus are considered stable
576    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
577    pub fn as_str_name(&self) -> &'static str {
578        match self {
579            Self::AndOrUnspecified => "NEXT_OP_AND_OR_UNSPECIFIED",
580            Self::Or => "NEXT_OP_OR",
581        }
582    }
583    /// Creates an enum from field names used in the ProtoBuf definition.
584    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
585        match value {
586            "NEXT_OP_AND_OR_UNSPECIFIED" => Some(Self::AndOrUnspecified),
587            "NEXT_OP_OR" => Some(Self::Or),
588            _ => None,
589        }
590    }
591}
592#[derive(serde::Serialize, serde::Deserialize)]
593#[serde(rename_all = "snake_case")]
594#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
595#[repr(i32)]
596pub enum AlertsOp {
597    AndOrUnspecified = 0,
598    Or = 1,
599}
600impl AlertsOp {
601    /// String value of the enum field names used in the ProtoBuf definition.
602    ///
603    /// The values are not transformed in any way and thus are considered stable
604    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
605    pub fn as_str_name(&self) -> &'static str {
606        match self {
607            Self::AndOrUnspecified => "ALERTS_OP_AND_OR_UNSPECIFIED",
608            Self::Or => "ALERTS_OP_OR",
609        }
610    }
611    /// Creates an enum from field names used in the ProtoBuf definition.
612    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
613        match value {
614            "ALERTS_OP_AND_OR_UNSPECIFIED" => Some(Self::AndOrUnspecified),
615            "ALERTS_OP_OR" => Some(Self::Or),
616            _ => None,
617        }
618    }
619}
620#[derive(serde::Serialize, serde::Deserialize)]
621#[serde(rename_all = "snake_case")]
622#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
623#[repr(i32)]
624pub enum TimeframeType {
625    Unspecified = 0,
626    UpTo = 1,
627}
628impl TimeframeType {
629    /// String value of the enum field names used in the ProtoBuf definition.
630    ///
631    /// The values are not transformed in any way and thus are considered stable
632    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
633    pub fn as_str_name(&self) -> &'static str {
634        match self {
635            Self::Unspecified => "TIMEFRAME_TYPE_UNSPECIFIED",
636            Self::UpTo => "TIMEFRAME_TYPE_UP_TO",
637        }
638    }
639    /// Creates an enum from field names used in the ProtoBuf definition.
640    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
641        match value {
642            "TIMEFRAME_TYPE_UNSPECIFIED" => Some(Self::Unspecified),
643            "TIMEFRAME_TYPE_UP_TO" => Some(Self::UpTo),
644            _ => None,
645        }
646    }
647}
648#[derive(serde::Serialize, serde::Deserialize)]
649#[serde(rename_all = "snake_case")]
650#[derive(Clone, Copy, PartialEq, ::prost::Message)]
651pub struct AnomalyAlertSettings {
652    #[prost(message, optional, tag = "1")]
653    pub percentage_of_deviation: ::core::option::Option<f32>,
654}
655#[derive(serde::Serialize, serde::Deserialize)]
656#[serde(rename_all = "snake_case")]
657#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
658#[repr(i32)]
659pub enum LogsAnomalyConditionType {
660    MoreThanUsualOrUnspecified = 0,
661}
662impl LogsAnomalyConditionType {
663    /// String value of the enum field names used in the ProtoBuf definition.
664    ///
665    /// The values are not transformed in any way and thus are considered stable
666    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
667    pub fn as_str_name(&self) -> &'static str {
668        match self {
669            Self::MoreThanUsualOrUnspecified => {
670                "LOGS_ANOMALY_CONDITION_TYPE_MORE_THAN_USUAL_OR_UNSPECIFIED"
671            }
672        }
673    }
674    /// Creates an enum from field names used in the ProtoBuf definition.
675    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
676        match value {
677            "LOGS_ANOMALY_CONDITION_TYPE_MORE_THAN_USUAL_OR_UNSPECIFIED" => {
678                Some(Self::MoreThanUsualOrUnspecified)
679            }
680            _ => None,
681        }
682    }
683}
684#[derive(serde::Serialize, serde::Deserialize)]
685#[serde(rename_all = "snake_case")]
686#[derive(Clone, PartialEq, ::prost::Message)]
687pub struct LogsFilter {
688    #[prost(oneof = "logs_filter::FilterType", tags = "1")]
689    pub filter_type: ::core::option::Option<logs_filter::FilterType>,
690}
691/// Nested message and enum types in `LogsFilter`.
692pub mod logs_filter {
693    #[derive(serde::Serialize, serde::Deserialize)]
694    #[serde(rename_all = "snake_case")]
695    #[derive(Clone, PartialEq, ::prost::Oneof)]
696    pub enum FilterType {
697        #[prost(message, tag = "1")]
698        SimpleFilter(super::LogsSimpleFilter),
699    }
700}
701#[derive(serde::Serialize, serde::Deserialize)]
702#[serde(rename_all = "snake_case")]
703#[derive(Clone, PartialEq, ::prost::Message)]
704pub struct LogsSimpleFilter {
705    #[prost(message, optional, tag = "1")]
706    pub lucene_query: ::core::option::Option<::prost::alloc::string::String>,
707    #[prost(message, optional, tag = "2")]
708    pub label_filters: ::core::option::Option<LabelFilters>,
709}
710#[derive(serde::Serialize, serde::Deserialize)]
711#[serde(rename_all = "snake_case")]
712#[derive(Clone, PartialEq, ::prost::Message)]
713pub struct LabelFilters {
714    #[prost(message, repeated, tag = "1")]
715    pub application_name: ::prost::alloc::vec::Vec<LabelFilterType>,
716    #[prost(message, repeated, tag = "2")]
717    pub subsystem_name: ::prost::alloc::vec::Vec<LabelFilterType>,
718    #[prost(enumeration = "LogSeverity", repeated, tag = "3")]
719    pub severities: ::prost::alloc::vec::Vec<i32>,
720}
721#[derive(serde::Serialize, serde::Deserialize)]
722#[serde(rename_all = "snake_case")]
723#[derive(Clone, PartialEq, ::prost::Message)]
724pub struct LabelFilterType {
725    #[prost(message, optional, tag = "1")]
726    pub value: ::core::option::Option<::prost::alloc::string::String>,
727    #[prost(enumeration = "LogFilterOperationType", tag = "2")]
728    pub operation: i32,
729}
730#[derive(serde::Serialize, serde::Deserialize)]
731#[serde(rename_all = "snake_case")]
732#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
733#[repr(i32)]
734pub enum LogFilterOperationType {
735    IsOrUnspecified = 0,
736    Includes = 1,
737    EndsWith = 2,
738    StartsWith = 3,
739}
740impl LogFilterOperationType {
741    /// String value of the enum field names used in the ProtoBuf definition.
742    ///
743    /// The values are not transformed in any way and thus are considered stable
744    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
745    pub fn as_str_name(&self) -> &'static str {
746        match self {
747            Self::IsOrUnspecified => "LOG_FILTER_OPERATION_TYPE_IS_OR_UNSPECIFIED",
748            Self::Includes => "LOG_FILTER_OPERATION_TYPE_INCLUDES",
749            Self::EndsWith => "LOG_FILTER_OPERATION_TYPE_ENDS_WITH",
750            Self::StartsWith => "LOG_FILTER_OPERATION_TYPE_STARTS_WITH",
751        }
752    }
753    /// Creates an enum from field names used in the ProtoBuf definition.
754    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
755        match value {
756            "LOG_FILTER_OPERATION_TYPE_IS_OR_UNSPECIFIED" => Some(Self::IsOrUnspecified),
757            "LOG_FILTER_OPERATION_TYPE_INCLUDES" => Some(Self::Includes),
758            "LOG_FILTER_OPERATION_TYPE_ENDS_WITH" => Some(Self::EndsWith),
759            "LOG_FILTER_OPERATION_TYPE_STARTS_WITH" => Some(Self::StartsWith),
760            _ => None,
761        }
762    }
763}
764#[derive(serde::Serialize, serde::Deserialize)]
765#[serde(rename_all = "snake_case")]
766#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
767#[repr(i32)]
768pub enum LogSeverity {
769    VerboseUnspecified = 0,
770    Debug = 1,
771    Info = 2,
772    Warning = 3,
773    Error = 4,
774    Critical = 5,
775}
776impl LogSeverity {
777    /// String value of the enum field names used in the ProtoBuf definition.
778    ///
779    /// The values are not transformed in any way and thus are considered stable
780    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
781    pub fn as_str_name(&self) -> &'static str {
782        match self {
783            Self::VerboseUnspecified => "LOG_SEVERITY_VERBOSE_UNSPECIFIED",
784            Self::Debug => "LOG_SEVERITY_DEBUG",
785            Self::Info => "LOG_SEVERITY_INFO",
786            Self::Warning => "LOG_SEVERITY_WARNING",
787            Self::Error => "LOG_SEVERITY_ERROR",
788            Self::Critical => "LOG_SEVERITY_CRITICAL",
789        }
790    }
791    /// Creates an enum from field names used in the ProtoBuf definition.
792    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
793        match value {
794            "LOG_SEVERITY_VERBOSE_UNSPECIFIED" => Some(Self::VerboseUnspecified),
795            "LOG_SEVERITY_DEBUG" => Some(Self::Debug),
796            "LOG_SEVERITY_INFO" => Some(Self::Info),
797            "LOG_SEVERITY_WARNING" => Some(Self::Warning),
798            "LOG_SEVERITY_ERROR" => Some(Self::Error),
799            "LOG_SEVERITY_CRITICAL" => Some(Self::Critical),
800            _ => None,
801        }
802    }
803}
804#[derive(serde::Serialize, serde::Deserialize)]
805#[serde(rename_all = "snake_case")]
806#[derive(Clone, Copy, PartialEq, ::prost::Message)]
807pub struct LogsTimeWindow {
808    #[prost(oneof = "logs_time_window::Type", tags = "1")]
809    pub r#type: ::core::option::Option<logs_time_window::Type>,
810}
811/// Nested message and enum types in `LogsTimeWindow`.
812pub mod logs_time_window {
813    #[derive(serde::Serialize, serde::Deserialize)]
814    #[serde(rename_all = "snake_case")]
815    #[derive(Clone, Copy, PartialEq, ::prost::Oneof)]
816    pub enum Type {
817        #[prost(enumeration = "super::LogsTimeWindowValue", tag = "1")]
818        LogsTimeWindowSpecificValue(i32),
819    }
820}
821#[derive(serde::Serialize, serde::Deserialize)]
822#[serde(rename_all = "snake_case")]
823#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
824#[repr(i32)]
825pub enum LogsTimeWindowValue {
826    Minutes5OrUnspecified = 0,
827    Minutes10 = 1,
828    Minutes20 = 2,
829    Minutes15 = 3,
830    Minutes30 = 4,
831    Hour1 = 5,
832    Hours2 = 6,
833    Hours4 = 7,
834    Hours6 = 8,
835    Hours12 = 9,
836    Hours24 = 10,
837    Hours36 = 11,
838}
839impl LogsTimeWindowValue {
840    /// String value of the enum field names used in the ProtoBuf definition.
841    ///
842    /// The values are not transformed in any way and thus are considered stable
843    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
844    pub fn as_str_name(&self) -> &'static str {
845        match self {
846            Self::Minutes5OrUnspecified => {
847                "LOGS_TIME_WINDOW_VALUE_MINUTES_5_OR_UNSPECIFIED"
848            }
849            Self::Minutes10 => "LOGS_TIME_WINDOW_VALUE_MINUTES_10",
850            Self::Minutes20 => "LOGS_TIME_WINDOW_VALUE_MINUTES_20",
851            Self::Minutes15 => "LOGS_TIME_WINDOW_VALUE_MINUTES_15",
852            Self::Minutes30 => "LOGS_TIME_WINDOW_VALUE_MINUTES_30",
853            Self::Hour1 => "LOGS_TIME_WINDOW_VALUE_HOUR_1",
854            Self::Hours2 => "LOGS_TIME_WINDOW_VALUE_HOURS_2",
855            Self::Hours4 => "LOGS_TIME_WINDOW_VALUE_HOURS_4",
856            Self::Hours6 => "LOGS_TIME_WINDOW_VALUE_HOURS_6",
857            Self::Hours12 => "LOGS_TIME_WINDOW_VALUE_HOURS_12",
858            Self::Hours24 => "LOGS_TIME_WINDOW_VALUE_HOURS_24",
859            Self::Hours36 => "LOGS_TIME_WINDOW_VALUE_HOURS_36",
860        }
861    }
862    /// Creates an enum from field names used in the ProtoBuf definition.
863    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
864        match value {
865            "LOGS_TIME_WINDOW_VALUE_MINUTES_5_OR_UNSPECIFIED" => {
866                Some(Self::Minutes5OrUnspecified)
867            }
868            "LOGS_TIME_WINDOW_VALUE_MINUTES_10" => Some(Self::Minutes10),
869            "LOGS_TIME_WINDOW_VALUE_MINUTES_20" => Some(Self::Minutes20),
870            "LOGS_TIME_WINDOW_VALUE_MINUTES_15" => Some(Self::Minutes15),
871            "LOGS_TIME_WINDOW_VALUE_MINUTES_30" => Some(Self::Minutes30),
872            "LOGS_TIME_WINDOW_VALUE_HOUR_1" => Some(Self::Hour1),
873            "LOGS_TIME_WINDOW_VALUE_HOURS_2" => Some(Self::Hours2),
874            "LOGS_TIME_WINDOW_VALUE_HOURS_4" => Some(Self::Hours4),
875            "LOGS_TIME_WINDOW_VALUE_HOURS_6" => Some(Self::Hours6),
876            "LOGS_TIME_WINDOW_VALUE_HOURS_12" => Some(Self::Hours12),
877            "LOGS_TIME_WINDOW_VALUE_HOURS_24" => Some(Self::Hours24),
878            "LOGS_TIME_WINDOW_VALUE_HOURS_36" => Some(Self::Hours36),
879            _ => None,
880        }
881    }
882}
883#[derive(serde::Serialize, serde::Deserialize)]
884#[serde(rename_all = "snake_case")]
885#[derive(Clone, PartialEq, ::prost::Message)]
886pub struct LogsAnomalyType {
887    #[prost(message, optional, tag = "1")]
888    pub logs_filter: ::core::option::Option<LogsFilter>,
889    #[prost(message, repeated, tag = "2")]
890    pub rules: ::prost::alloc::vec::Vec<LogsAnomalyRule>,
891    #[prost(message, repeated, tag = "3")]
892    pub notification_payload_filter: ::prost::alloc::vec::Vec<
893        ::prost::alloc::string::String,
894    >,
895    #[prost(message, optional, tag = "4")]
896    pub evaluation_delay_ms: ::core::option::Option<i32>,
897    #[prost(message, optional, tag = "5")]
898    pub anomaly_alert_settings: ::core::option::Option<AnomalyAlertSettings>,
899}
900#[derive(serde::Serialize, serde::Deserialize)]
901#[serde(rename_all = "snake_case")]
902#[derive(Clone, Copy, PartialEq, ::prost::Message)]
903pub struct LogsAnomalyRule {
904    #[prost(message, optional, tag = "1")]
905    pub condition: ::core::option::Option<LogsAnomalyCondition>,
906}
907#[derive(serde::Serialize, serde::Deserialize)]
908#[serde(rename_all = "snake_case")]
909#[derive(Clone, Copy, PartialEq, ::prost::Message)]
910pub struct LogsAnomalyCondition {
911    #[prost(message, optional, tag = "1")]
912    pub minimum_threshold: ::core::option::Option<f64>,
913    #[prost(message, optional, tag = "2")]
914    pub time_window: ::core::option::Option<LogsTimeWindow>,
915    #[prost(enumeration = "LogsAnomalyConditionType", tag = "3")]
916    pub condition_type: i32,
917}
918#[derive(serde::Serialize, serde::Deserialize)]
919#[serde(rename_all = "snake_case")]
920#[derive(Clone, PartialEq, ::prost::Message)]
921pub struct LogsImmediateType {
922    #[prost(message, optional, tag = "1")]
923    pub logs_filter: ::core::option::Option<LogsFilter>,
924    #[prost(message, repeated, tag = "2")]
925    pub notification_payload_filter: ::prost::alloc::vec::Vec<
926        ::prost::alloc::string::String,
927    >,
928}
929#[derive(serde::Serialize, serde::Deserialize)]
930#[serde(rename_all = "snake_case")]
931#[derive(Clone, Copy, PartialEq, ::prost::Message)]
932pub struct LogsNewValueTimeWindow {
933    #[prost(oneof = "logs_new_value_time_window::Type", tags = "1")]
934    pub r#type: ::core::option::Option<logs_new_value_time_window::Type>,
935}
936/// Nested message and enum types in `LogsNewValueTimeWindow`.
937pub mod logs_new_value_time_window {
938    #[derive(serde::Serialize, serde::Deserialize)]
939    #[serde(rename_all = "snake_case")]
940    #[derive(Clone, Copy, PartialEq, ::prost::Oneof)]
941    pub enum Type {
942        #[prost(enumeration = "super::LogsNewValueTimeWindowValue", tag = "1")]
943        LogsNewValueTimeWindowSpecificValue(i32),
944    }
945}
946#[derive(serde::Serialize, serde::Deserialize)]
947#[serde(rename_all = "snake_case")]
948#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
949#[repr(i32)]
950pub enum LogsNewValueTimeWindowValue {
951    Hours12OrUnspecified = 0,
952    Hours24 = 1,
953    Hours48 = 2,
954    Hours72 = 3,
955    Week1 = 4,
956    Month1 = 5,
957    Months2 = 6,
958    Months3 = 7,
959}
960impl LogsNewValueTimeWindowValue {
961    /// String value of the enum field names used in the ProtoBuf definition.
962    ///
963    /// The values are not transformed in any way and thus are considered stable
964    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
965    pub fn as_str_name(&self) -> &'static str {
966        match self {
967            Self::Hours12OrUnspecified => {
968                "LOGS_NEW_VALUE_TIME_WINDOW_VALUE_HOURS_12_OR_UNSPECIFIED"
969            }
970            Self::Hours24 => "LOGS_NEW_VALUE_TIME_WINDOW_VALUE_HOURS_24",
971            Self::Hours48 => "LOGS_NEW_VALUE_TIME_WINDOW_VALUE_HOURS_48",
972            Self::Hours72 => "LOGS_NEW_VALUE_TIME_WINDOW_VALUE_HOURS_72",
973            Self::Week1 => "LOGS_NEW_VALUE_TIME_WINDOW_VALUE_WEEK_1",
974            Self::Month1 => "LOGS_NEW_VALUE_TIME_WINDOW_VALUE_MONTH_1",
975            Self::Months2 => "LOGS_NEW_VALUE_TIME_WINDOW_VALUE_MONTHS_2",
976            Self::Months3 => "LOGS_NEW_VALUE_TIME_WINDOW_VALUE_MONTHS_3",
977        }
978    }
979    /// Creates an enum from field names used in the ProtoBuf definition.
980    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
981        match value {
982            "LOGS_NEW_VALUE_TIME_WINDOW_VALUE_HOURS_12_OR_UNSPECIFIED" => {
983                Some(Self::Hours12OrUnspecified)
984            }
985            "LOGS_NEW_VALUE_TIME_WINDOW_VALUE_HOURS_24" => Some(Self::Hours24),
986            "LOGS_NEW_VALUE_TIME_WINDOW_VALUE_HOURS_48" => Some(Self::Hours48),
987            "LOGS_NEW_VALUE_TIME_WINDOW_VALUE_HOURS_72" => Some(Self::Hours72),
988            "LOGS_NEW_VALUE_TIME_WINDOW_VALUE_WEEK_1" => Some(Self::Week1),
989            "LOGS_NEW_VALUE_TIME_WINDOW_VALUE_MONTH_1" => Some(Self::Month1),
990            "LOGS_NEW_VALUE_TIME_WINDOW_VALUE_MONTHS_2" => Some(Self::Months2),
991            "LOGS_NEW_VALUE_TIME_WINDOW_VALUE_MONTHS_3" => Some(Self::Months3),
992            _ => None,
993        }
994    }
995}
996#[derive(serde::Serialize, serde::Deserialize)]
997#[serde(rename_all = "snake_case")]
998#[derive(Clone, PartialEq, ::prost::Message)]
999pub struct LogsNewValueType {
1000    #[prost(message, optional, tag = "1")]
1001    pub logs_filter: ::core::option::Option<LogsFilter>,
1002    #[prost(message, repeated, tag = "2")]
1003    pub rules: ::prost::alloc::vec::Vec<LogsNewValueRule>,
1004    #[prost(message, repeated, tag = "3")]
1005    pub notification_payload_filter: ::prost::alloc::vec::Vec<
1006        ::prost::alloc::string::String,
1007    >,
1008}
1009#[derive(serde::Serialize, serde::Deserialize)]
1010#[serde(rename_all = "snake_case")]
1011#[derive(Clone, PartialEq, ::prost::Message)]
1012pub struct LogsNewValueRule {
1013    #[prost(message, optional, tag = "1")]
1014    pub condition: ::core::option::Option<LogsNewValueCondition>,
1015}
1016#[derive(serde::Serialize, serde::Deserialize)]
1017#[serde(rename_all = "snake_case")]
1018#[derive(Clone, PartialEq, ::prost::Message)]
1019pub struct LogsNewValueCondition {
1020    #[prost(message, optional, tag = "1")]
1021    pub keypath_to_track: ::core::option::Option<::prost::alloc::string::String>,
1022    #[prost(message, optional, tag = "2")]
1023    pub time_window: ::core::option::Option<LogsNewValueTimeWindow>,
1024}
1025#[derive(serde::Serialize, serde::Deserialize)]
1026#[serde(rename_all = "snake_case")]
1027#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1028#[repr(i32)]
1029pub enum LogsRatioConditionType {
1030    MoreThanOrUnspecified = 0,
1031    LessThan = 1,
1032}
1033impl LogsRatioConditionType {
1034    /// String value of the enum field names used in the ProtoBuf definition.
1035    ///
1036    /// The values are not transformed in any way and thus are considered stable
1037    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1038    pub fn as_str_name(&self) -> &'static str {
1039        match self {
1040            Self::MoreThanOrUnspecified => {
1041                "LOGS_RATIO_CONDITION_TYPE_MORE_THAN_OR_UNSPECIFIED"
1042            }
1043            Self::LessThan => "LOGS_RATIO_CONDITION_TYPE_LESS_THAN",
1044        }
1045    }
1046    /// Creates an enum from field names used in the ProtoBuf definition.
1047    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1048        match value {
1049            "LOGS_RATIO_CONDITION_TYPE_MORE_THAN_OR_UNSPECIFIED" => {
1050                Some(Self::MoreThanOrUnspecified)
1051            }
1052            "LOGS_RATIO_CONDITION_TYPE_LESS_THAN" => Some(Self::LessThan),
1053            _ => None,
1054        }
1055    }
1056}
1057#[derive(serde::Serialize, serde::Deserialize)]
1058#[serde(rename_all = "snake_case")]
1059#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1060#[repr(i32)]
1061pub enum LogsRatioGroupByFor {
1062    BothOrUnspecified = 0,
1063    NumeratorOnly = 1,
1064    DenumeratorOnly = 2,
1065}
1066impl LogsRatioGroupByFor {
1067    /// String value of the enum field names used in the ProtoBuf definition.
1068    ///
1069    /// The values are not transformed in any way and thus are considered stable
1070    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1071    pub fn as_str_name(&self) -> &'static str {
1072        match self {
1073            Self::BothOrUnspecified => "LOGS_RATIO_GROUP_BY_FOR_BOTH_OR_UNSPECIFIED",
1074            Self::NumeratorOnly => "LOGS_RATIO_GROUP_BY_FOR_NUMERATOR_ONLY",
1075            Self::DenumeratorOnly => "LOGS_RATIO_GROUP_BY_FOR_DENUMERATOR_ONLY",
1076        }
1077    }
1078    /// Creates an enum from field names used in the ProtoBuf definition.
1079    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1080        match value {
1081            "LOGS_RATIO_GROUP_BY_FOR_BOTH_OR_UNSPECIFIED" => {
1082                Some(Self::BothOrUnspecified)
1083            }
1084            "LOGS_RATIO_GROUP_BY_FOR_NUMERATOR_ONLY" => Some(Self::NumeratorOnly),
1085            "LOGS_RATIO_GROUP_BY_FOR_DENUMERATOR_ONLY" => Some(Self::DenumeratorOnly),
1086            _ => None,
1087        }
1088    }
1089}
1090#[derive(serde::Serialize, serde::Deserialize)]
1091#[serde(rename_all = "snake_case")]
1092#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1093pub struct LogsRatioTimeWindow {
1094    #[prost(oneof = "logs_ratio_time_window::Type", tags = "1")]
1095    pub r#type: ::core::option::Option<logs_ratio_time_window::Type>,
1096}
1097/// Nested message and enum types in `LogsRatioTimeWindow`.
1098pub mod logs_ratio_time_window {
1099    #[derive(serde::Serialize, serde::Deserialize)]
1100    #[serde(rename_all = "snake_case")]
1101    #[derive(Clone, Copy, PartialEq, ::prost::Oneof)]
1102    pub enum Type {
1103        #[prost(enumeration = "super::LogsRatioTimeWindowValue", tag = "1")]
1104        LogsRatioTimeWindowSpecificValue(i32),
1105    }
1106}
1107#[derive(serde::Serialize, serde::Deserialize)]
1108#[serde(rename_all = "snake_case")]
1109#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1110#[repr(i32)]
1111pub enum LogsRatioTimeWindowValue {
1112    Minutes5OrUnspecified = 0,
1113    Minutes10 = 1,
1114    Minutes15 = 2,
1115    Minutes30 = 3,
1116    Hour1 = 4,
1117    Hours2 = 5,
1118    Hours4 = 6,
1119    Hours6 = 7,
1120    Hours12 = 8,
1121    Hours24 = 9,
1122    Hours36 = 10,
1123}
1124impl LogsRatioTimeWindowValue {
1125    /// String value of the enum field names used in the ProtoBuf definition.
1126    ///
1127    /// The values are not transformed in any way and thus are considered stable
1128    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1129    pub fn as_str_name(&self) -> &'static str {
1130        match self {
1131            Self::Minutes5OrUnspecified => {
1132                "LOGS_RATIO_TIME_WINDOW_VALUE_MINUTES_5_OR_UNSPECIFIED"
1133            }
1134            Self::Minutes10 => "LOGS_RATIO_TIME_WINDOW_VALUE_MINUTES_10",
1135            Self::Minutes15 => "LOGS_RATIO_TIME_WINDOW_VALUE_MINUTES_15",
1136            Self::Minutes30 => "LOGS_RATIO_TIME_WINDOW_VALUE_MINUTES_30",
1137            Self::Hour1 => "LOGS_RATIO_TIME_WINDOW_VALUE_HOUR_1",
1138            Self::Hours2 => "LOGS_RATIO_TIME_WINDOW_VALUE_HOURS_2",
1139            Self::Hours4 => "LOGS_RATIO_TIME_WINDOW_VALUE_HOURS_4",
1140            Self::Hours6 => "LOGS_RATIO_TIME_WINDOW_VALUE_HOURS_6",
1141            Self::Hours12 => "LOGS_RATIO_TIME_WINDOW_VALUE_HOURS_12",
1142            Self::Hours24 => "LOGS_RATIO_TIME_WINDOW_VALUE_HOURS_24",
1143            Self::Hours36 => "LOGS_RATIO_TIME_WINDOW_VALUE_HOURS_36",
1144        }
1145    }
1146    /// Creates an enum from field names used in the ProtoBuf definition.
1147    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1148        match value {
1149            "LOGS_RATIO_TIME_WINDOW_VALUE_MINUTES_5_OR_UNSPECIFIED" => {
1150                Some(Self::Minutes5OrUnspecified)
1151            }
1152            "LOGS_RATIO_TIME_WINDOW_VALUE_MINUTES_10" => Some(Self::Minutes10),
1153            "LOGS_RATIO_TIME_WINDOW_VALUE_MINUTES_15" => Some(Self::Minutes15),
1154            "LOGS_RATIO_TIME_WINDOW_VALUE_MINUTES_30" => Some(Self::Minutes30),
1155            "LOGS_RATIO_TIME_WINDOW_VALUE_HOUR_1" => Some(Self::Hour1),
1156            "LOGS_RATIO_TIME_WINDOW_VALUE_HOURS_2" => Some(Self::Hours2),
1157            "LOGS_RATIO_TIME_WINDOW_VALUE_HOURS_4" => Some(Self::Hours4),
1158            "LOGS_RATIO_TIME_WINDOW_VALUE_HOURS_6" => Some(Self::Hours6),
1159            "LOGS_RATIO_TIME_WINDOW_VALUE_HOURS_12" => Some(Self::Hours12),
1160            "LOGS_RATIO_TIME_WINDOW_VALUE_HOURS_24" => Some(Self::Hours24),
1161            "LOGS_RATIO_TIME_WINDOW_VALUE_HOURS_36" => Some(Self::Hours36),
1162            _ => None,
1163        }
1164    }
1165}
1166#[derive(serde::Serialize, serde::Deserialize)]
1167#[serde(rename_all = "snake_case")]
1168#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1169pub struct AlertDefOverride {
1170    #[prost(enumeration = "AlertDefPriority", tag = "1")]
1171    pub priority: i32,
1172}
1173#[derive(serde::Serialize, serde::Deserialize)]
1174#[serde(rename_all = "snake_case")]
1175#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1176pub struct UndetectedValuesManagement {
1177    #[prost(message, optional, tag = "1")]
1178    pub trigger_undetected_values: ::core::option::Option<bool>,
1179    #[prost(enumeration = "AutoRetireTimeframe", optional, tag = "2")]
1180    pub auto_retire_timeframe: ::core::option::Option<i32>,
1181}
1182#[derive(serde::Serialize, serde::Deserialize)]
1183#[serde(rename_all = "snake_case")]
1184#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1185#[repr(i32)]
1186pub enum AutoRetireTimeframe {
1187    NeverOrUnspecified = 0,
1188    Minutes5 = 1,
1189    Minutes10 = 2,
1190    Hour1 = 3,
1191    Hours2 = 4,
1192    Hours6 = 5,
1193    Hours12 = 6,
1194    Hours24 = 7,
1195}
1196impl AutoRetireTimeframe {
1197    /// String value of the enum field names used in the ProtoBuf definition.
1198    ///
1199    /// The values are not transformed in any way and thus are considered stable
1200    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1201    pub fn as_str_name(&self) -> &'static str {
1202        match self {
1203            Self::NeverOrUnspecified => "AUTO_RETIRE_TIMEFRAME_NEVER_OR_UNSPECIFIED",
1204            Self::Minutes5 => "AUTO_RETIRE_TIMEFRAME_MINUTES_5",
1205            Self::Minutes10 => "AUTO_RETIRE_TIMEFRAME_MINUTES_10",
1206            Self::Hour1 => "AUTO_RETIRE_TIMEFRAME_HOUR_1",
1207            Self::Hours2 => "AUTO_RETIRE_TIMEFRAME_HOURS_2",
1208            Self::Hours6 => "AUTO_RETIRE_TIMEFRAME_HOURS_6",
1209            Self::Hours12 => "AUTO_RETIRE_TIMEFRAME_HOURS_12",
1210            Self::Hours24 => "AUTO_RETIRE_TIMEFRAME_HOURS_24",
1211        }
1212    }
1213    /// Creates an enum from field names used in the ProtoBuf definition.
1214    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1215        match value {
1216            "AUTO_RETIRE_TIMEFRAME_NEVER_OR_UNSPECIFIED" => {
1217                Some(Self::NeverOrUnspecified)
1218            }
1219            "AUTO_RETIRE_TIMEFRAME_MINUTES_5" => Some(Self::Minutes5),
1220            "AUTO_RETIRE_TIMEFRAME_MINUTES_10" => Some(Self::Minutes10),
1221            "AUTO_RETIRE_TIMEFRAME_HOUR_1" => Some(Self::Hour1),
1222            "AUTO_RETIRE_TIMEFRAME_HOURS_2" => Some(Self::Hours2),
1223            "AUTO_RETIRE_TIMEFRAME_HOURS_6" => Some(Self::Hours6),
1224            "AUTO_RETIRE_TIMEFRAME_HOURS_12" => Some(Self::Hours12),
1225            "AUTO_RETIRE_TIMEFRAME_HOURS_24" => Some(Self::Hours24),
1226            _ => None,
1227        }
1228    }
1229}
1230#[derive(serde::Serialize, serde::Deserialize)]
1231#[serde(rename_all = "snake_case")]
1232#[derive(Clone, PartialEq, ::prost::Message)]
1233pub struct LogsRatioThresholdType {
1234    #[prost(message, optional, tag = "1")]
1235    pub numerator: ::core::option::Option<LogsFilter>,
1236    #[prost(message, optional, tag = "2")]
1237    pub numerator_alias: ::core::option::Option<::prost::alloc::string::String>,
1238    #[prost(message, optional, tag = "3")]
1239    pub denominator: ::core::option::Option<LogsFilter>,
1240    #[prost(message, optional, tag = "4")]
1241    pub denominator_alias: ::core::option::Option<::prost::alloc::string::String>,
1242    #[prost(message, repeated, tag = "5")]
1243    pub rules: ::prost::alloc::vec::Vec<LogsRatioRules>,
1244    #[prost(message, repeated, tag = "6")]
1245    pub notification_payload_filter: ::prost::alloc::vec::Vec<
1246        ::prost::alloc::string::String,
1247    >,
1248    #[prost(enumeration = "LogsRatioGroupByFor", tag = "7")]
1249    pub group_by_for: i32,
1250    #[prost(message, optional, tag = "8")]
1251    pub undetected_values_management: ::core::option::Option<UndetectedValuesManagement>,
1252    #[prost(message, optional, tag = "9")]
1253    pub ignore_infinity: ::core::option::Option<bool>,
1254    #[prost(message, optional, tag = "10")]
1255    pub evaluation_delay_ms: ::core::option::Option<i32>,
1256}
1257#[derive(serde::Serialize, serde::Deserialize)]
1258#[serde(rename_all = "snake_case")]
1259#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1260pub struct LogsRatioRules {
1261    #[prost(message, optional, tag = "1")]
1262    pub condition: ::core::option::Option<LogsRatioCondition>,
1263    #[prost(message, optional, tag = "2")]
1264    pub r#override: ::core::option::Option<AlertDefOverride>,
1265}
1266#[derive(serde::Serialize, serde::Deserialize)]
1267#[serde(rename_all = "snake_case")]
1268#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1269pub struct LogsRatioCondition {
1270    #[prost(message, optional, tag = "1")]
1271    pub threshold: ::core::option::Option<f64>,
1272    #[prost(message, optional, tag = "2")]
1273    pub time_window: ::core::option::Option<LogsRatioTimeWindow>,
1274    #[prost(enumeration = "LogsRatioConditionType", tag = "4")]
1275    pub condition_type: i32,
1276}
1277#[derive(serde::Serialize, serde::Deserialize)]
1278#[serde(rename_all = "snake_case")]
1279#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1280#[repr(i32)]
1281pub enum LogsThresholdConditionType {
1282    MoreThanOrUnspecified = 0,
1283    LessThan = 1,
1284}
1285impl LogsThresholdConditionType {
1286    /// String value of the enum field names used in the ProtoBuf definition.
1287    ///
1288    /// The values are not transformed in any way and thus are considered stable
1289    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1290    pub fn as_str_name(&self) -> &'static str {
1291        match self {
1292            Self::MoreThanOrUnspecified => {
1293                "LOGS_THRESHOLD_CONDITION_TYPE_MORE_THAN_OR_UNSPECIFIED"
1294            }
1295            Self::LessThan => "LOGS_THRESHOLD_CONDITION_TYPE_LESS_THAN",
1296        }
1297    }
1298    /// Creates an enum from field names used in the ProtoBuf definition.
1299    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1300        match value {
1301            "LOGS_THRESHOLD_CONDITION_TYPE_MORE_THAN_OR_UNSPECIFIED" => {
1302                Some(Self::MoreThanOrUnspecified)
1303            }
1304            "LOGS_THRESHOLD_CONDITION_TYPE_LESS_THAN" => Some(Self::LessThan),
1305            _ => None,
1306        }
1307    }
1308}
1309#[derive(serde::Serialize, serde::Deserialize)]
1310#[serde(rename_all = "snake_case")]
1311#[derive(Clone, PartialEq, ::prost::Message)]
1312pub struct LogsThresholdType {
1313    #[prost(message, optional, tag = "1")]
1314    pub logs_filter: ::core::option::Option<LogsFilter>,
1315    #[prost(message, optional, tag = "2")]
1316    pub undetected_values_management: ::core::option::Option<UndetectedValuesManagement>,
1317    #[prost(message, repeated, tag = "3")]
1318    pub rules: ::prost::alloc::vec::Vec<LogsThresholdRule>,
1319    #[prost(message, repeated, tag = "4")]
1320    pub notification_payload_filter: ::prost::alloc::vec::Vec<
1321        ::prost::alloc::string::String,
1322    >,
1323    #[prost(message, optional, tag = "5")]
1324    pub evaluation_delay_ms: ::core::option::Option<i32>,
1325}
1326#[derive(serde::Serialize, serde::Deserialize)]
1327#[serde(rename_all = "snake_case")]
1328#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1329pub struct LogsThresholdRule {
1330    #[prost(message, optional, tag = "1")]
1331    pub condition: ::core::option::Option<LogsThresholdCondition>,
1332    #[prost(message, optional, tag = "2")]
1333    pub r#override: ::core::option::Option<AlertDefOverride>,
1334}
1335#[derive(serde::Serialize, serde::Deserialize)]
1336#[serde(rename_all = "snake_case")]
1337#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1338pub struct LogsThresholdCondition {
1339    #[prost(message, optional, tag = "1")]
1340    pub threshold: ::core::option::Option<f64>,
1341    #[prost(message, optional, tag = "2")]
1342    pub time_window: ::core::option::Option<LogsTimeWindow>,
1343    #[prost(enumeration = "LogsThresholdConditionType", tag = "3")]
1344    pub condition_type: i32,
1345}
1346#[derive(serde::Serialize, serde::Deserialize)]
1347#[serde(rename_all = "snake_case")]
1348#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1349#[repr(i32)]
1350pub enum LogsTimeRelativeComparedTo {
1351    PreviousHourOrUnspecified = 0,
1352    SameHourYesterday = 1,
1353    SameHourLastWeek = 2,
1354    Yesterday = 3,
1355    SameDayLastWeek = 4,
1356    SameDayLastMonth = 5,
1357}
1358impl LogsTimeRelativeComparedTo {
1359    /// String value of the enum field names used in the ProtoBuf definition.
1360    ///
1361    /// The values are not transformed in any way and thus are considered stable
1362    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1363    pub fn as_str_name(&self) -> &'static str {
1364        match self {
1365            Self::PreviousHourOrUnspecified => {
1366                "LOGS_TIME_RELATIVE_COMPARED_TO_PREVIOUS_HOUR_OR_UNSPECIFIED"
1367            }
1368            Self::SameHourYesterday => {
1369                "LOGS_TIME_RELATIVE_COMPARED_TO_SAME_HOUR_YESTERDAY"
1370            }
1371            Self::SameHourLastWeek => {
1372                "LOGS_TIME_RELATIVE_COMPARED_TO_SAME_HOUR_LAST_WEEK"
1373            }
1374            Self::Yesterday => "LOGS_TIME_RELATIVE_COMPARED_TO_YESTERDAY",
1375            Self::SameDayLastWeek => "LOGS_TIME_RELATIVE_COMPARED_TO_SAME_DAY_LAST_WEEK",
1376            Self::SameDayLastMonth => {
1377                "LOGS_TIME_RELATIVE_COMPARED_TO_SAME_DAY_LAST_MONTH"
1378            }
1379        }
1380    }
1381    /// Creates an enum from field names used in the ProtoBuf definition.
1382    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1383        match value {
1384            "LOGS_TIME_RELATIVE_COMPARED_TO_PREVIOUS_HOUR_OR_UNSPECIFIED" => {
1385                Some(Self::PreviousHourOrUnspecified)
1386            }
1387            "LOGS_TIME_RELATIVE_COMPARED_TO_SAME_HOUR_YESTERDAY" => {
1388                Some(Self::SameHourYesterday)
1389            }
1390            "LOGS_TIME_RELATIVE_COMPARED_TO_SAME_HOUR_LAST_WEEK" => {
1391                Some(Self::SameHourLastWeek)
1392            }
1393            "LOGS_TIME_RELATIVE_COMPARED_TO_YESTERDAY" => Some(Self::Yesterday),
1394            "LOGS_TIME_RELATIVE_COMPARED_TO_SAME_DAY_LAST_WEEK" => {
1395                Some(Self::SameDayLastWeek)
1396            }
1397            "LOGS_TIME_RELATIVE_COMPARED_TO_SAME_DAY_LAST_MONTH" => {
1398                Some(Self::SameDayLastMonth)
1399            }
1400            _ => None,
1401        }
1402    }
1403}
1404#[derive(serde::Serialize, serde::Deserialize)]
1405#[serde(rename_all = "snake_case")]
1406#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1407#[repr(i32)]
1408pub enum LogsTimeRelativeConditionType {
1409    MoreThanOrUnspecified = 0,
1410    LessThan = 1,
1411}
1412impl LogsTimeRelativeConditionType {
1413    /// String value of the enum field names used in the ProtoBuf definition.
1414    ///
1415    /// The values are not transformed in any way and thus are considered stable
1416    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1417    pub fn as_str_name(&self) -> &'static str {
1418        match self {
1419            Self::MoreThanOrUnspecified => {
1420                "LOGS_TIME_RELATIVE_CONDITION_TYPE_MORE_THAN_OR_UNSPECIFIED"
1421            }
1422            Self::LessThan => "LOGS_TIME_RELATIVE_CONDITION_TYPE_LESS_THAN",
1423        }
1424    }
1425    /// Creates an enum from field names used in the ProtoBuf definition.
1426    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1427        match value {
1428            "LOGS_TIME_RELATIVE_CONDITION_TYPE_MORE_THAN_OR_UNSPECIFIED" => {
1429                Some(Self::MoreThanOrUnspecified)
1430            }
1431            "LOGS_TIME_RELATIVE_CONDITION_TYPE_LESS_THAN" => Some(Self::LessThan),
1432            _ => None,
1433        }
1434    }
1435}
1436#[derive(serde::Serialize, serde::Deserialize)]
1437#[serde(rename_all = "snake_case")]
1438#[derive(Clone, PartialEq, ::prost::Message)]
1439pub struct LogsTimeRelativeThresholdType {
1440    #[prost(message, optional, tag = "1")]
1441    pub logs_filter: ::core::option::Option<LogsFilter>,
1442    #[prost(message, repeated, tag = "2")]
1443    pub rules: ::prost::alloc::vec::Vec<LogsTimeRelativeRule>,
1444    #[prost(message, optional, tag = "3")]
1445    pub ignore_infinity: ::core::option::Option<bool>,
1446    #[prost(message, repeated, tag = "4")]
1447    pub notification_payload_filter: ::prost::alloc::vec::Vec<
1448        ::prost::alloc::string::String,
1449    >,
1450    #[prost(message, optional, tag = "5")]
1451    pub undetected_values_management: ::core::option::Option<UndetectedValuesManagement>,
1452    #[prost(message, optional, tag = "6")]
1453    pub evaluation_delay_ms: ::core::option::Option<i32>,
1454}
1455#[derive(serde::Serialize, serde::Deserialize)]
1456#[serde(rename_all = "snake_case")]
1457#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1458pub struct LogsTimeRelativeRule {
1459    #[prost(message, optional, tag = "1")]
1460    pub condition: ::core::option::Option<LogsTimeRelativeCondition>,
1461    #[prost(message, optional, tag = "2")]
1462    pub r#override: ::core::option::Option<AlertDefOverride>,
1463}
1464#[derive(serde::Serialize, serde::Deserialize)]
1465#[serde(rename_all = "snake_case")]
1466#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1467pub struct LogsTimeRelativeCondition {
1468    #[prost(message, optional, tag = "1")]
1469    pub threshold: ::core::option::Option<f64>,
1470    #[prost(enumeration = "LogsTimeRelativeComparedTo", tag = "2")]
1471    pub compared_to: i32,
1472    #[prost(enumeration = "LogsTimeRelativeConditionType", tag = "4")]
1473    pub condition_type: i32,
1474}
1475#[derive(serde::Serialize, serde::Deserialize)]
1476#[serde(rename_all = "snake_case")]
1477#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1478pub struct LogsUniqueValueTimeWindow {
1479    #[prost(oneof = "logs_unique_value_time_window::Type", tags = "1")]
1480    pub r#type: ::core::option::Option<logs_unique_value_time_window::Type>,
1481}
1482/// Nested message and enum types in `LogsUniqueValueTimeWindow`.
1483pub mod logs_unique_value_time_window {
1484    #[derive(serde::Serialize, serde::Deserialize)]
1485    #[serde(rename_all = "snake_case")]
1486    #[derive(Clone, Copy, PartialEq, ::prost::Oneof)]
1487    pub enum Type {
1488        #[prost(enumeration = "super::LogsUniqueValueTimeWindowValue", tag = "1")]
1489        LogsUniqueValueTimeWindowSpecificValue(i32),
1490    }
1491}
1492#[derive(serde::Serialize, serde::Deserialize)]
1493#[serde(rename_all = "snake_case")]
1494#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1495#[repr(i32)]
1496pub enum LogsUniqueValueTimeWindowValue {
1497    Minute1OrUnspecified = 0,
1498    Minutes5 = 10,
1499    Minutes10 = 11,
1500    Minutes15 = 1,
1501    Minutes20 = 2,
1502    Minutes30 = 3,
1503    Hours1 = 4,
1504    Hours2 = 5,
1505    Hours4 = 6,
1506    Hours6 = 7,
1507    Hours12 = 8,
1508    Hours24 = 9,
1509    Hours36 = 12,
1510}
1511impl LogsUniqueValueTimeWindowValue {
1512    /// String value of the enum field names used in the ProtoBuf definition.
1513    ///
1514    /// The values are not transformed in any way and thus are considered stable
1515    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1516    pub fn as_str_name(&self) -> &'static str {
1517        match self {
1518            Self::Minute1OrUnspecified => {
1519                "LOGS_UNIQUE_VALUE_TIME_WINDOW_VALUE_MINUTE_1_OR_UNSPECIFIED"
1520            }
1521            Self::Minutes5 => "LOGS_UNIQUE_VALUE_TIME_WINDOW_VALUE_MINUTES_5",
1522            Self::Minutes10 => "LOGS_UNIQUE_VALUE_TIME_WINDOW_VALUE_MINUTES_10",
1523            Self::Minutes15 => "LOGS_UNIQUE_VALUE_TIME_WINDOW_VALUE_MINUTES_15",
1524            Self::Minutes20 => "LOGS_UNIQUE_VALUE_TIME_WINDOW_VALUE_MINUTES_20",
1525            Self::Minutes30 => "LOGS_UNIQUE_VALUE_TIME_WINDOW_VALUE_MINUTES_30",
1526            Self::Hours1 => "LOGS_UNIQUE_VALUE_TIME_WINDOW_VALUE_HOURS_1",
1527            Self::Hours2 => "LOGS_UNIQUE_VALUE_TIME_WINDOW_VALUE_HOURS_2",
1528            Self::Hours4 => "LOGS_UNIQUE_VALUE_TIME_WINDOW_VALUE_HOURS_4",
1529            Self::Hours6 => "LOGS_UNIQUE_VALUE_TIME_WINDOW_VALUE_HOURS_6",
1530            Self::Hours12 => "LOGS_UNIQUE_VALUE_TIME_WINDOW_VALUE_HOURS_12",
1531            Self::Hours24 => "LOGS_UNIQUE_VALUE_TIME_WINDOW_VALUE_HOURS_24",
1532            Self::Hours36 => "LOGS_UNIQUE_VALUE_TIME_WINDOW_VALUE_HOURS_36",
1533        }
1534    }
1535    /// Creates an enum from field names used in the ProtoBuf definition.
1536    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1537        match value {
1538            "LOGS_UNIQUE_VALUE_TIME_WINDOW_VALUE_MINUTE_1_OR_UNSPECIFIED" => {
1539                Some(Self::Minute1OrUnspecified)
1540            }
1541            "LOGS_UNIQUE_VALUE_TIME_WINDOW_VALUE_MINUTES_5" => Some(Self::Minutes5),
1542            "LOGS_UNIQUE_VALUE_TIME_WINDOW_VALUE_MINUTES_10" => Some(Self::Minutes10),
1543            "LOGS_UNIQUE_VALUE_TIME_WINDOW_VALUE_MINUTES_15" => Some(Self::Minutes15),
1544            "LOGS_UNIQUE_VALUE_TIME_WINDOW_VALUE_MINUTES_20" => Some(Self::Minutes20),
1545            "LOGS_UNIQUE_VALUE_TIME_WINDOW_VALUE_MINUTES_30" => Some(Self::Minutes30),
1546            "LOGS_UNIQUE_VALUE_TIME_WINDOW_VALUE_HOURS_1" => Some(Self::Hours1),
1547            "LOGS_UNIQUE_VALUE_TIME_WINDOW_VALUE_HOURS_2" => Some(Self::Hours2),
1548            "LOGS_UNIQUE_VALUE_TIME_WINDOW_VALUE_HOURS_4" => Some(Self::Hours4),
1549            "LOGS_UNIQUE_VALUE_TIME_WINDOW_VALUE_HOURS_6" => Some(Self::Hours6),
1550            "LOGS_UNIQUE_VALUE_TIME_WINDOW_VALUE_HOURS_12" => Some(Self::Hours12),
1551            "LOGS_UNIQUE_VALUE_TIME_WINDOW_VALUE_HOURS_24" => Some(Self::Hours24),
1552            "LOGS_UNIQUE_VALUE_TIME_WINDOW_VALUE_HOURS_36" => Some(Self::Hours36),
1553            _ => None,
1554        }
1555    }
1556}
1557#[derive(serde::Serialize, serde::Deserialize)]
1558#[serde(rename_all = "snake_case")]
1559#[derive(Clone, PartialEq, ::prost::Message)]
1560pub struct LogsUniqueCountType {
1561    #[prost(message, optional, tag = "1")]
1562    pub logs_filter: ::core::option::Option<LogsFilter>,
1563    #[prost(message, repeated, tag = "2")]
1564    pub rules: ::prost::alloc::vec::Vec<LogsUniqueCountRule>,
1565    #[prost(message, repeated, tag = "3")]
1566    pub notification_payload_filter: ::prost::alloc::vec::Vec<
1567        ::prost::alloc::string::String,
1568    >,
1569    #[prost(message, optional, tag = "4")]
1570    pub max_unique_count_per_group_by_key: ::core::option::Option<i64>,
1571    #[prost(message, optional, tag = "5")]
1572    pub unique_count_keypath: ::core::option::Option<::prost::alloc::string::String>,
1573}
1574#[derive(serde::Serialize, serde::Deserialize)]
1575#[serde(rename_all = "snake_case")]
1576#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1577pub struct LogsUniqueCountRule {
1578    #[prost(message, optional, tag = "1")]
1579    pub condition: ::core::option::Option<LogsUniqueCountCondition>,
1580}
1581#[derive(serde::Serialize, serde::Deserialize)]
1582#[serde(rename_all = "snake_case")]
1583#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1584pub struct LogsUniqueCountCondition {
1585    #[prost(message, optional, tag = "2")]
1586    pub max_unique_count: ::core::option::Option<i64>,
1587    #[prost(message, optional, tag = "3")]
1588    pub time_window: ::core::option::Option<LogsUniqueValueTimeWindow>,
1589}
1590#[derive(serde::Serialize, serde::Deserialize)]
1591#[serde(rename_all = "snake_case")]
1592#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1593#[repr(i32)]
1594pub enum MetricAnomalyConditionType {
1595    MoreThanUsualOrUnspecified = 0,
1596    LessThanUsual = 1,
1597}
1598impl MetricAnomalyConditionType {
1599    /// String value of the enum field names used in the ProtoBuf definition.
1600    ///
1601    /// The values are not transformed in any way and thus are considered stable
1602    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1603    pub fn as_str_name(&self) -> &'static str {
1604        match self {
1605            Self::MoreThanUsualOrUnspecified => {
1606                "METRIC_ANOMALY_CONDITION_TYPE_MORE_THAN_USUAL_OR_UNSPECIFIED"
1607            }
1608            Self::LessThanUsual => "METRIC_ANOMALY_CONDITION_TYPE_LESS_THAN_USUAL",
1609        }
1610    }
1611    /// Creates an enum from field names used in the ProtoBuf definition.
1612    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1613        match value {
1614            "METRIC_ANOMALY_CONDITION_TYPE_MORE_THAN_USUAL_OR_UNSPECIFIED" => {
1615                Some(Self::MoreThanUsualOrUnspecified)
1616            }
1617            "METRIC_ANOMALY_CONDITION_TYPE_LESS_THAN_USUAL" => Some(Self::LessThanUsual),
1618            _ => None,
1619        }
1620    }
1621}
1622#[derive(serde::Serialize, serde::Deserialize)]
1623#[serde(rename_all = "snake_case")]
1624#[derive(Clone, PartialEq, ::prost::Message)]
1625pub struct MetricTimeWindow {
1626    #[prost(oneof = "metric_time_window::Type", tags = "1, 2")]
1627    pub r#type: ::core::option::Option<metric_time_window::Type>,
1628}
1629/// Nested message and enum types in `MetricTimeWindow`.
1630pub mod metric_time_window {
1631    #[derive(serde::Serialize, serde::Deserialize)]
1632    #[serde(rename_all = "snake_case")]
1633    #[derive(Clone, PartialEq, ::prost::Oneof)]
1634    pub enum Type {
1635        #[prost(enumeration = "super::MetricTimeWindowValue", tag = "1")]
1636        MetricTimeWindowSpecificValue(i32),
1637        #[prost(message, tag = "2")]
1638        MetricTimeWindowDynamicDuration(::prost::alloc::string::String),
1639    }
1640}
1641#[derive(serde::Serialize, serde::Deserialize)]
1642#[serde(rename_all = "snake_case")]
1643#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1644#[repr(i32)]
1645pub enum MetricTimeWindowValue {
1646    Minutes1OrUnspecified = 0,
1647    Minutes5 = 1,
1648    Minutes10 = 2,
1649    Minutes15 = 3,
1650    Minutes20 = 11,
1651    Minutes30 = 4,
1652    Hour1 = 5,
1653    Hours2 = 6,
1654    Hours4 = 7,
1655    Hours6 = 8,
1656    Hours12 = 9,
1657    Hours24 = 10,
1658    Hours36 = 12,
1659}
1660impl MetricTimeWindowValue {
1661    /// String value of the enum field names used in the ProtoBuf definition.
1662    ///
1663    /// The values are not transformed in any way and thus are considered stable
1664    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1665    pub fn as_str_name(&self) -> &'static str {
1666        match self {
1667            Self::Minutes1OrUnspecified => {
1668                "METRIC_TIME_WINDOW_VALUE_MINUTES_1_OR_UNSPECIFIED"
1669            }
1670            Self::Minutes5 => "METRIC_TIME_WINDOW_VALUE_MINUTES_5",
1671            Self::Minutes10 => "METRIC_TIME_WINDOW_VALUE_MINUTES_10",
1672            Self::Minutes15 => "METRIC_TIME_WINDOW_VALUE_MINUTES_15",
1673            Self::Minutes20 => "METRIC_TIME_WINDOW_VALUE_MINUTES_20",
1674            Self::Minutes30 => "METRIC_TIME_WINDOW_VALUE_MINUTES_30",
1675            Self::Hour1 => "METRIC_TIME_WINDOW_VALUE_HOUR_1",
1676            Self::Hours2 => "METRIC_TIME_WINDOW_VALUE_HOURS_2",
1677            Self::Hours4 => "METRIC_TIME_WINDOW_VALUE_HOURS_4",
1678            Self::Hours6 => "METRIC_TIME_WINDOW_VALUE_HOURS_6",
1679            Self::Hours12 => "METRIC_TIME_WINDOW_VALUE_HOURS_12",
1680            Self::Hours24 => "METRIC_TIME_WINDOW_VALUE_HOURS_24",
1681            Self::Hours36 => "METRIC_TIME_WINDOW_VALUE_HOURS_36",
1682        }
1683    }
1684    /// Creates an enum from field names used in the ProtoBuf definition.
1685    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1686        match value {
1687            "METRIC_TIME_WINDOW_VALUE_MINUTES_1_OR_UNSPECIFIED" => {
1688                Some(Self::Minutes1OrUnspecified)
1689            }
1690            "METRIC_TIME_WINDOW_VALUE_MINUTES_5" => Some(Self::Minutes5),
1691            "METRIC_TIME_WINDOW_VALUE_MINUTES_10" => Some(Self::Minutes10),
1692            "METRIC_TIME_WINDOW_VALUE_MINUTES_15" => Some(Self::Minutes15),
1693            "METRIC_TIME_WINDOW_VALUE_MINUTES_20" => Some(Self::Minutes20),
1694            "METRIC_TIME_WINDOW_VALUE_MINUTES_30" => Some(Self::Minutes30),
1695            "METRIC_TIME_WINDOW_VALUE_HOUR_1" => Some(Self::Hour1),
1696            "METRIC_TIME_WINDOW_VALUE_HOURS_2" => Some(Self::Hours2),
1697            "METRIC_TIME_WINDOW_VALUE_HOURS_4" => Some(Self::Hours4),
1698            "METRIC_TIME_WINDOW_VALUE_HOURS_6" => Some(Self::Hours6),
1699            "METRIC_TIME_WINDOW_VALUE_HOURS_12" => Some(Self::Hours12),
1700            "METRIC_TIME_WINDOW_VALUE_HOURS_24" => Some(Self::Hours24),
1701            "METRIC_TIME_WINDOW_VALUE_HOURS_36" => Some(Self::Hours36),
1702            _ => None,
1703        }
1704    }
1705}
1706#[derive(serde::Serialize, serde::Deserialize)]
1707#[serde(rename_all = "snake_case")]
1708#[derive(Clone, PartialEq, ::prost::Message)]
1709pub struct MetricFilter {
1710    #[prost(oneof = "metric_filter::Type", tags = "1")]
1711    pub r#type: ::core::option::Option<metric_filter::Type>,
1712}
1713/// Nested message and enum types in `MetricFilter`.
1714pub mod metric_filter {
1715    #[derive(serde::Serialize, serde::Deserialize)]
1716    #[serde(rename_all = "snake_case")]
1717    #[derive(Clone, PartialEq, ::prost::Oneof)]
1718    pub enum Type {
1719        #[prost(message, tag = "1")]
1720        Promql(::prost::alloc::string::String),
1721    }
1722}
1723#[derive(serde::Serialize, serde::Deserialize)]
1724#[serde(rename_all = "snake_case")]
1725#[derive(Clone, PartialEq, ::prost::Message)]
1726pub struct MetricAnomalyType {
1727    #[prost(message, optional, tag = "1")]
1728    pub metric_filter: ::core::option::Option<MetricFilter>,
1729    #[prost(message, repeated, tag = "2")]
1730    pub rules: ::prost::alloc::vec::Vec<MetricAnomalyRule>,
1731    #[prost(message, optional, tag = "3")]
1732    pub evaluation_delay_ms: ::core::option::Option<i32>,
1733    #[prost(message, optional, tag = "4")]
1734    pub anomaly_alert_settings: ::core::option::Option<AnomalyAlertSettings>,
1735}
1736#[derive(serde::Serialize, serde::Deserialize)]
1737#[serde(rename_all = "snake_case")]
1738#[derive(Clone, PartialEq, ::prost::Message)]
1739pub struct MetricAnomalyRule {
1740    #[prost(message, optional, tag = "1")]
1741    pub condition: ::core::option::Option<MetricAnomalyCondition>,
1742}
1743#[derive(serde::Serialize, serde::Deserialize)]
1744#[serde(rename_all = "snake_case")]
1745#[derive(Clone, PartialEq, ::prost::Message)]
1746pub struct MetricAnomalyCondition {
1747    #[prost(message, optional, tag = "1")]
1748    pub threshold: ::core::option::Option<f64>,
1749    #[prost(message, optional, tag = "2")]
1750    pub for_over_pct: ::core::option::Option<u32>,
1751    #[prost(message, optional, tag = "3")]
1752    pub of_the_last: ::core::option::Option<MetricTimeWindow>,
1753    #[prost(message, optional, tag = "4")]
1754    pub min_non_null_values_pct: ::core::option::Option<u32>,
1755    #[prost(enumeration = "MetricAnomalyConditionType", tag = "5")]
1756    pub condition_type: i32,
1757}
1758#[derive(serde::Serialize, serde::Deserialize)]
1759#[serde(rename_all = "snake_case")]
1760#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1761#[repr(i32)]
1762pub enum MetricThresholdConditionType {
1763    MoreThanOrUnspecified = 0,
1764    LessThan = 1,
1765    MoreThanOrEquals = 2,
1766    LessThanOrEquals = 3,
1767}
1768impl MetricThresholdConditionType {
1769    /// String value of the enum field names used in the ProtoBuf definition.
1770    ///
1771    /// The values are not transformed in any way and thus are considered stable
1772    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1773    pub fn as_str_name(&self) -> &'static str {
1774        match self {
1775            Self::MoreThanOrUnspecified => {
1776                "METRIC_THRESHOLD_CONDITION_TYPE_MORE_THAN_OR_UNSPECIFIED"
1777            }
1778            Self::LessThan => "METRIC_THRESHOLD_CONDITION_TYPE_LESS_THAN",
1779            Self::MoreThanOrEquals => {
1780                "METRIC_THRESHOLD_CONDITION_TYPE_MORE_THAN_OR_EQUALS"
1781            }
1782            Self::LessThanOrEquals => {
1783                "METRIC_THRESHOLD_CONDITION_TYPE_LESS_THAN_OR_EQUALS"
1784            }
1785        }
1786    }
1787    /// Creates an enum from field names used in the ProtoBuf definition.
1788    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1789        match value {
1790            "METRIC_THRESHOLD_CONDITION_TYPE_MORE_THAN_OR_UNSPECIFIED" => {
1791                Some(Self::MoreThanOrUnspecified)
1792            }
1793            "METRIC_THRESHOLD_CONDITION_TYPE_LESS_THAN" => Some(Self::LessThan),
1794            "METRIC_THRESHOLD_CONDITION_TYPE_MORE_THAN_OR_EQUALS" => {
1795                Some(Self::MoreThanOrEquals)
1796            }
1797            "METRIC_THRESHOLD_CONDITION_TYPE_LESS_THAN_OR_EQUALS" => {
1798                Some(Self::LessThanOrEquals)
1799            }
1800            _ => None,
1801        }
1802    }
1803}
1804#[derive(serde::Serialize, serde::Deserialize)]
1805#[serde(rename_all = "snake_case")]
1806#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1807pub struct MetricMissingValues {
1808    #[prost(oneof = "metric_missing_values::MissingValues", tags = "1, 2")]
1809    pub missing_values: ::core::option::Option<metric_missing_values::MissingValues>,
1810}
1811/// Nested message and enum types in `MetricMissingValues`.
1812pub mod metric_missing_values {
1813    #[derive(serde::Serialize, serde::Deserialize)]
1814    #[serde(rename_all = "snake_case")]
1815    #[derive(Clone, Copy, PartialEq, ::prost::Oneof)]
1816    pub enum MissingValues {
1817        #[prost(message, tag = "1")]
1818        ReplaceWithZero(bool),
1819        #[prost(message, tag = "2")]
1820        MinNonNullValuesPct(u32),
1821    }
1822}
1823#[derive(serde::Serialize, serde::Deserialize)]
1824#[serde(rename_all = "snake_case")]
1825#[derive(Clone, PartialEq, ::prost::Message)]
1826pub struct MetricThresholdType {
1827    #[prost(message, optional, tag = "1")]
1828    pub metric_filter: ::core::option::Option<MetricFilter>,
1829    #[prost(message, repeated, tag = "2")]
1830    pub rules: ::prost::alloc::vec::Vec<MetricThresholdRule>,
1831    #[prost(message, optional, tag = "3")]
1832    pub undetected_values_management: ::core::option::Option<UndetectedValuesManagement>,
1833    #[prost(message, optional, tag = "4")]
1834    pub missing_values: ::core::option::Option<MetricMissingValues>,
1835    #[prost(message, optional, tag = "5")]
1836    pub evaluation_delay_ms: ::core::option::Option<i32>,
1837}
1838#[derive(serde::Serialize, serde::Deserialize)]
1839#[serde(rename_all = "snake_case")]
1840#[derive(Clone, PartialEq, ::prost::Message)]
1841pub struct MetricThresholdRule {
1842    #[prost(message, optional, tag = "1")]
1843    pub condition: ::core::option::Option<MetricThresholdCondition>,
1844    #[prost(message, optional, tag = "2")]
1845    pub r#override: ::core::option::Option<AlertDefOverride>,
1846}
1847#[derive(serde::Serialize, serde::Deserialize)]
1848#[serde(rename_all = "snake_case")]
1849#[derive(Clone, PartialEq, ::prost::Message)]
1850pub struct MetricThresholdCondition {
1851    #[prost(message, optional, tag = "1")]
1852    pub threshold: ::core::option::Option<f64>,
1853    #[prost(message, optional, tag = "2")]
1854    pub for_over_pct: ::core::option::Option<u32>,
1855    #[prost(message, optional, tag = "3")]
1856    pub of_the_last: ::core::option::Option<MetricTimeWindow>,
1857    #[prost(enumeration = "MetricThresholdConditionType", tag = "5")]
1858    pub condition_type: i32,
1859}
1860#[derive(serde::Serialize, serde::Deserialize)]
1861#[serde(rename_all = "snake_case")]
1862#[derive(Clone, PartialEq, ::prost::Message)]
1863pub struct SloDefinition {
1864    #[prost(message, optional, tag = "1")]
1865    pub slo_id: ::core::option::Option<::prost::alloc::string::String>,
1866}
1867#[derive(serde::Serialize, serde::Deserialize)]
1868#[serde(rename_all = "snake_case")]
1869#[derive(Clone, PartialEq, ::prost::Message)]
1870pub struct SloThresholdType {
1871    #[prost(message, optional, tag = "1")]
1872    pub slo_definition: ::core::option::Option<SloDefinition>,
1873    #[prost(oneof = "slo_threshold_type::Threshold", tags = "2, 3")]
1874    pub threshold: ::core::option::Option<slo_threshold_type::Threshold>,
1875}
1876/// Nested message and enum types in `SloThresholdType`.
1877pub mod slo_threshold_type {
1878    #[derive(serde::Serialize, serde::Deserialize)]
1879    #[serde(rename_all = "snake_case")]
1880    #[derive(Clone, PartialEq, ::prost::Oneof)]
1881    pub enum Threshold {
1882        #[prost(message, tag = "2")]
1883        ErrorBudget(super::ErrorBudgetThreshold),
1884        #[prost(message, tag = "3")]
1885        BurnRate(super::BurnRateThreshold),
1886    }
1887}
1888#[derive(serde::Serialize, serde::Deserialize)]
1889#[serde(rename_all = "snake_case")]
1890#[derive(Clone, PartialEq, ::prost::Message)]
1891pub struct ErrorBudgetThreshold {
1892    #[prost(message, repeated, tag = "1")]
1893    pub rules: ::prost::alloc::vec::Vec<SloThresholdRule>,
1894}
1895#[derive(serde::Serialize, serde::Deserialize)]
1896#[serde(rename_all = "snake_case")]
1897#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1898pub struct SloThresholdRule {
1899    #[prost(message, optional, tag = "1")]
1900    pub condition: ::core::option::Option<SloThresholdCondition>,
1901    #[prost(message, optional, tag = "2")]
1902    pub r#override: ::core::option::Option<AlertDefOverride>,
1903}
1904#[derive(serde::Serialize, serde::Deserialize)]
1905#[serde(rename_all = "snake_case")]
1906#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1907pub struct SloThresholdCondition {
1908    #[prost(message, optional, tag = "1")]
1909    pub threshold: ::core::option::Option<f64>,
1910}
1911#[derive(serde::Serialize, serde::Deserialize)]
1912#[serde(rename_all = "snake_case")]
1913#[derive(Clone, PartialEq, ::prost::Message)]
1914pub struct BurnRateThreshold {
1915    #[prost(message, repeated, tag = "1")]
1916    pub rules: ::prost::alloc::vec::Vec<SloThresholdRule>,
1917    #[prost(oneof = "burn_rate_threshold::Type", tags = "2, 3")]
1918    pub r#type: ::core::option::Option<burn_rate_threshold::Type>,
1919}
1920/// Nested message and enum types in `BurnRateThreshold`.
1921pub mod burn_rate_threshold {
1922    #[derive(serde::Serialize, serde::Deserialize)]
1923    #[serde(rename_all = "snake_case")]
1924    #[derive(Clone, Copy, PartialEq, ::prost::Oneof)]
1925    pub enum Type {
1926        #[prost(message, tag = "2")]
1927        Dual(super::BurnRateTypeDual),
1928        #[prost(message, tag = "3")]
1929        Single(super::BurnRateTypeSingle),
1930    }
1931}
1932#[derive(serde::Serialize, serde::Deserialize)]
1933#[serde(rename_all = "snake_case")]
1934#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1935pub struct BurnRateTypeSingle {
1936    #[prost(message, optional, tag = "1")]
1937    pub time_duration: ::core::option::Option<TimeDuration>,
1938}
1939#[derive(serde::Serialize, serde::Deserialize)]
1940#[serde(rename_all = "snake_case")]
1941#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1942pub struct BurnRateTypeDual {
1943    #[prost(message, optional, tag = "1")]
1944    pub time_duration: ::core::option::Option<TimeDuration>,
1945}
1946#[derive(serde::Serialize, serde::Deserialize)]
1947#[serde(rename_all = "snake_case")]
1948#[derive(Clone, PartialEq, ::prost::Message)]
1949pub struct TracingFilter {
1950    #[prost(oneof = "tracing_filter::FilterType", tags = "1")]
1951    pub filter_type: ::core::option::Option<tracing_filter::FilterType>,
1952}
1953/// Nested message and enum types in `TracingFilter`.
1954pub mod tracing_filter {
1955    #[derive(serde::Serialize, serde::Deserialize)]
1956    #[serde(rename_all = "snake_case")]
1957    #[derive(Clone, PartialEq, ::prost::Oneof)]
1958    pub enum FilterType {
1959        #[prost(message, tag = "1")]
1960        SimpleFilter(super::TracingSimpleFilter),
1961    }
1962}
1963#[derive(serde::Serialize, serde::Deserialize)]
1964#[serde(rename_all = "snake_case")]
1965#[derive(Clone, PartialEq, ::prost::Message)]
1966pub struct TracingSimpleFilter {
1967    #[prost(message, optional, tag = "1")]
1968    pub tracing_label_filters: ::core::option::Option<TracingLabelFilters>,
1969    #[prost(message, optional, tag = "2")]
1970    pub latency_threshold_ms: ::core::option::Option<u64>,
1971}
1972#[derive(serde::Serialize, serde::Deserialize)]
1973#[serde(rename_all = "snake_case")]
1974#[derive(Clone, PartialEq, ::prost::Message)]
1975pub struct TracingLabelFilters {
1976    #[prost(message, repeated, tag = "1")]
1977    pub application_name: ::prost::alloc::vec::Vec<TracingFilterType>,
1978    #[prost(message, repeated, tag = "2")]
1979    pub subsystem_name: ::prost::alloc::vec::Vec<TracingFilterType>,
1980    #[prost(message, repeated, tag = "3")]
1981    pub service_name: ::prost::alloc::vec::Vec<TracingFilterType>,
1982    #[prost(message, repeated, tag = "4")]
1983    pub operation_name: ::prost::alloc::vec::Vec<TracingFilterType>,
1984    #[prost(message, repeated, tag = "5")]
1985    pub span_fields: ::prost::alloc::vec::Vec<TracingSpanFieldsFilterType>,
1986}
1987#[derive(serde::Serialize, serde::Deserialize)]
1988#[serde(rename_all = "snake_case")]
1989#[derive(Clone, PartialEq, ::prost::Message)]
1990pub struct TracingSpanFieldsFilterType {
1991    #[prost(message, optional, tag = "1")]
1992    pub key: ::core::option::Option<::prost::alloc::string::String>,
1993    #[prost(message, optional, tag = "2")]
1994    pub filter_type: ::core::option::Option<TracingFilterType>,
1995}
1996#[derive(serde::Serialize, serde::Deserialize)]
1997#[serde(rename_all = "snake_case")]
1998#[derive(Clone, PartialEq, ::prost::Message)]
1999pub struct TracingFilterType {
2000    #[prost(message, repeated, tag = "1")]
2001    pub values: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2002    #[prost(enumeration = "TracingFilterOperationType", tag = "2")]
2003    pub operation: i32,
2004}
2005#[derive(serde::Serialize, serde::Deserialize)]
2006#[serde(rename_all = "snake_case")]
2007#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2008#[repr(i32)]
2009pub enum TracingFilterOperationType {
2010    IsOrUnspecified = 0,
2011    Includes = 1,
2012    EndsWith = 2,
2013    StartsWith = 3,
2014    IsNot = 4,
2015}
2016impl TracingFilterOperationType {
2017    /// String value of the enum field names used in the ProtoBuf definition.
2018    ///
2019    /// The values are not transformed in any way and thus are considered stable
2020    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2021    pub fn as_str_name(&self) -> &'static str {
2022        match self {
2023            Self::IsOrUnspecified => "TRACING_FILTER_OPERATION_TYPE_IS_OR_UNSPECIFIED",
2024            Self::Includes => "TRACING_FILTER_OPERATION_TYPE_INCLUDES",
2025            Self::EndsWith => "TRACING_FILTER_OPERATION_TYPE_ENDS_WITH",
2026            Self::StartsWith => "TRACING_FILTER_OPERATION_TYPE_STARTS_WITH",
2027            Self::IsNot => "TRACING_FILTER_OPERATION_TYPE_IS_NOT",
2028        }
2029    }
2030    /// Creates an enum from field names used in the ProtoBuf definition.
2031    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2032        match value {
2033            "TRACING_FILTER_OPERATION_TYPE_IS_OR_UNSPECIFIED" => {
2034                Some(Self::IsOrUnspecified)
2035            }
2036            "TRACING_FILTER_OPERATION_TYPE_INCLUDES" => Some(Self::Includes),
2037            "TRACING_FILTER_OPERATION_TYPE_ENDS_WITH" => Some(Self::EndsWith),
2038            "TRACING_FILTER_OPERATION_TYPE_STARTS_WITH" => Some(Self::StartsWith),
2039            "TRACING_FILTER_OPERATION_TYPE_IS_NOT" => Some(Self::IsNot),
2040            _ => None,
2041        }
2042    }
2043}
2044#[derive(serde::Serialize, serde::Deserialize)]
2045#[serde(rename_all = "snake_case")]
2046#[derive(Clone, PartialEq, ::prost::Message)]
2047pub struct TracingImmediateType {
2048    #[prost(message, optional, tag = "1")]
2049    pub tracing_filter: ::core::option::Option<TracingFilter>,
2050    #[prost(message, repeated, tag = "2")]
2051    pub notification_payload_filter: ::prost::alloc::vec::Vec<
2052        ::prost::alloc::string::String,
2053    >,
2054}
2055#[derive(serde::Serialize, serde::Deserialize)]
2056#[serde(rename_all = "snake_case")]
2057#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2058#[repr(i32)]
2059pub enum TracingThresholdConditionType {
2060    MoreThanOrUnspecified = 0,
2061}
2062impl TracingThresholdConditionType {
2063    /// String value of the enum field names used in the ProtoBuf definition.
2064    ///
2065    /// The values are not transformed in any way and thus are considered stable
2066    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2067    pub fn as_str_name(&self) -> &'static str {
2068        match self {
2069            Self::MoreThanOrUnspecified => {
2070                "TRACING_THRESHOLD_CONDITION_TYPE_MORE_THAN_OR_UNSPECIFIED"
2071            }
2072        }
2073    }
2074    /// Creates an enum from field names used in the ProtoBuf definition.
2075    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2076        match value {
2077            "TRACING_THRESHOLD_CONDITION_TYPE_MORE_THAN_OR_UNSPECIFIED" => {
2078                Some(Self::MoreThanOrUnspecified)
2079            }
2080            _ => None,
2081        }
2082    }
2083}
2084#[derive(serde::Serialize, serde::Deserialize)]
2085#[serde(rename_all = "snake_case")]
2086#[derive(Clone, Copy, PartialEq, ::prost::Message)]
2087pub struct TracingTimeWindow {
2088    #[prost(oneof = "tracing_time_window::Type", tags = "1")]
2089    pub r#type: ::core::option::Option<tracing_time_window::Type>,
2090}
2091/// Nested message and enum types in `TracingTimeWindow`.
2092pub mod tracing_time_window {
2093    #[derive(serde::Serialize, serde::Deserialize)]
2094    #[serde(rename_all = "snake_case")]
2095    #[derive(Clone, Copy, PartialEq, ::prost::Oneof)]
2096    pub enum Type {
2097        #[prost(enumeration = "super::TracingTimeWindowValue", tag = "1")]
2098        TracingTimeWindowValue(i32),
2099    }
2100}
2101#[derive(serde::Serialize, serde::Deserialize)]
2102#[serde(rename_all = "snake_case")]
2103#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2104#[repr(i32)]
2105pub enum TracingTimeWindowValue {
2106    Minutes5OrUnspecified = 0,
2107    Minutes10 = 1,
2108    Minutes15 = 2,
2109    Minutes20 = 11,
2110    Minutes30 = 3,
2111    Hour1 = 4,
2112    Hours2 = 5,
2113    Hours4 = 6,
2114    Hours6 = 7,
2115    Hours12 = 8,
2116    Hours24 = 9,
2117    Hours36 = 10,
2118}
2119impl TracingTimeWindowValue {
2120    /// String value of the enum field names used in the ProtoBuf definition.
2121    ///
2122    /// The values are not transformed in any way and thus are considered stable
2123    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2124    pub fn as_str_name(&self) -> &'static str {
2125        match self {
2126            Self::Minutes5OrUnspecified => {
2127                "TRACING_TIME_WINDOW_VALUE_MINUTES_5_OR_UNSPECIFIED"
2128            }
2129            Self::Minutes10 => "TRACING_TIME_WINDOW_VALUE_MINUTES_10",
2130            Self::Minutes15 => "TRACING_TIME_WINDOW_VALUE_MINUTES_15",
2131            Self::Minutes20 => "TRACING_TIME_WINDOW_VALUE_MINUTES_20",
2132            Self::Minutes30 => "TRACING_TIME_WINDOW_VALUE_MINUTES_30",
2133            Self::Hour1 => "TRACING_TIME_WINDOW_VALUE_HOUR_1",
2134            Self::Hours2 => "TRACING_TIME_WINDOW_VALUE_HOURS_2",
2135            Self::Hours4 => "TRACING_TIME_WINDOW_VALUE_HOURS_4",
2136            Self::Hours6 => "TRACING_TIME_WINDOW_VALUE_HOURS_6",
2137            Self::Hours12 => "TRACING_TIME_WINDOW_VALUE_HOURS_12",
2138            Self::Hours24 => "TRACING_TIME_WINDOW_VALUE_HOURS_24",
2139            Self::Hours36 => "TRACING_TIME_WINDOW_VALUE_HOURS_36",
2140        }
2141    }
2142    /// Creates an enum from field names used in the ProtoBuf definition.
2143    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2144        match value {
2145            "TRACING_TIME_WINDOW_VALUE_MINUTES_5_OR_UNSPECIFIED" => {
2146                Some(Self::Minutes5OrUnspecified)
2147            }
2148            "TRACING_TIME_WINDOW_VALUE_MINUTES_10" => Some(Self::Minutes10),
2149            "TRACING_TIME_WINDOW_VALUE_MINUTES_15" => Some(Self::Minutes15),
2150            "TRACING_TIME_WINDOW_VALUE_MINUTES_20" => Some(Self::Minutes20),
2151            "TRACING_TIME_WINDOW_VALUE_MINUTES_30" => Some(Self::Minutes30),
2152            "TRACING_TIME_WINDOW_VALUE_HOUR_1" => Some(Self::Hour1),
2153            "TRACING_TIME_WINDOW_VALUE_HOURS_2" => Some(Self::Hours2),
2154            "TRACING_TIME_WINDOW_VALUE_HOURS_4" => Some(Self::Hours4),
2155            "TRACING_TIME_WINDOW_VALUE_HOURS_6" => Some(Self::Hours6),
2156            "TRACING_TIME_WINDOW_VALUE_HOURS_12" => Some(Self::Hours12),
2157            "TRACING_TIME_WINDOW_VALUE_HOURS_24" => Some(Self::Hours24),
2158            "TRACING_TIME_WINDOW_VALUE_HOURS_36" => Some(Self::Hours36),
2159            _ => None,
2160        }
2161    }
2162}
2163#[derive(serde::Serialize, serde::Deserialize)]
2164#[serde(rename_all = "snake_case")]
2165#[derive(Clone, PartialEq, ::prost::Message)]
2166pub struct TracingThresholdType {
2167    #[prost(message, optional, tag = "1")]
2168    pub tracing_filter: ::core::option::Option<TracingFilter>,
2169    #[prost(message, repeated, tag = "2")]
2170    pub rules: ::prost::alloc::vec::Vec<TracingThresholdRule>,
2171    #[prost(message, repeated, tag = "3")]
2172    pub notification_payload_filter: ::prost::alloc::vec::Vec<
2173        ::prost::alloc::string::String,
2174    >,
2175}
2176#[derive(serde::Serialize, serde::Deserialize)]
2177#[serde(rename_all = "snake_case")]
2178#[derive(Clone, Copy, PartialEq, ::prost::Message)]
2179pub struct TracingThresholdRule {
2180    #[prost(message, optional, tag = "1")]
2181    pub condition: ::core::option::Option<TracingThresholdCondition>,
2182}
2183#[derive(serde::Serialize, serde::Deserialize)]
2184#[serde(rename_all = "snake_case")]
2185#[derive(Clone, Copy, PartialEq, ::prost::Message)]
2186pub struct TracingThresholdCondition {
2187    #[prost(message, optional, tag = "1")]
2188    pub span_amount: ::core::option::Option<f64>,
2189    #[prost(message, optional, tag = "2")]
2190    pub time_window: ::core::option::Option<TracingTimeWindow>,
2191    #[prost(enumeration = "TracingThresholdConditionType", tag = "3")]
2192    pub condition_type: i32,
2193}
2194/// *
2195/// Represents an existing or created alert definition
2196#[derive(serde::Serialize, serde::Deserialize)]
2197#[serde(rename_all = "snake_case")]
2198#[derive(Clone, PartialEq, ::prost::Message)]
2199pub struct AlertDef {
2200    #[prost(message, optional, tag = "1")]
2201    pub alert_def_properties: ::core::option::Option<AlertDefProperties>,
2202    /// This is the alert definition's persistent ID (does not change on replace), AKA UniqueIdentifier
2203    #[prost(message, optional, tag = "2")]
2204    pub id: ::core::option::Option<::prost::alloc::string::String>,
2205    /// the old alertId
2206    #[prost(message, optional, tag = "20")]
2207    pub alert_version_id: ::core::option::Option<::prost::alloc::string::String>,
2208    #[prost(message, optional, tag = "3")]
2209    pub created_time: ::core::option::Option<::prost_wkt_types::Timestamp>,
2210    #[prost(message, optional, tag = "4")]
2211    pub updated_time: ::core::option::Option<::prost_wkt_types::Timestamp>,
2212}
2213/// *
2214/// Represents the non generated alert definition properties (the ones that are set by the user)
2215#[derive(serde::Serialize, serde::Deserialize)]
2216#[serde(rename_all = "snake_case")]
2217#[derive(Clone, PartialEq, ::prost::Message)]
2218pub struct AlertDefProperties {
2219    #[prost(message, optional, tag = "1")]
2220    pub name: ::core::option::Option<::prost::alloc::string::String>,
2221    #[prost(message, optional, tag = "2")]
2222    pub description: ::core::option::Option<::prost::alloc::string::String>,
2223    #[prost(message, optional, tag = "3")]
2224    pub enabled: ::core::option::Option<bool>,
2225    #[prost(enumeration = "AlertDefPriority", tag = "4")]
2226    pub priority: i32,
2227    #[prost(enumeration = "AlertDefType", tag = "6")]
2228    pub r#type: i32,
2229    #[prost(message, repeated, tag = "7")]
2230    pub group_by_keys: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2231    #[prost(message, optional, tag = "8")]
2232    pub incidents_settings: ::core::option::Option<AlertDefIncidentSettings>,
2233    #[prost(message, optional, tag = "9")]
2234    pub notification_group: ::core::option::Option<AlertDefNotificationGroup>,
2235    #[deprecated]
2236    #[prost(message, repeated, tag = "210")]
2237    pub notification_group_excess: ::prost::alloc::vec::Vec<AlertDefNotificationGroup>,
2238    #[prost(map = "string, string", tag = "10")]
2239    pub entity_labels: ::std::collections::HashMap<
2240        ::prost::alloc::string::String,
2241        ::prost::alloc::string::String,
2242    >,
2243    #[prost(message, optional, tag = "11")]
2244    pub phantom_mode: ::core::option::Option<bool>,
2245    #[prost(message, optional, tag = "12")]
2246    pub deleted: ::core::option::Option<bool>,
2247    #[prost(oneof = "alert_def_properties::Schedule", tags = "5")]
2248    pub schedule: ::core::option::Option<alert_def_properties::Schedule>,
2249    #[prost(
2250        oneof = "alert_def_properties::TypeDefinition",
2251        tags = "101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113"
2252    )]
2253    pub type_definition: ::core::option::Option<alert_def_properties::TypeDefinition>,
2254}
2255/// Nested message and enum types in `AlertDefProperties`.
2256pub mod alert_def_properties {
2257    #[derive(serde::Serialize, serde::Deserialize)]
2258    #[serde(rename_all = "snake_case")]
2259    #[derive(Clone, PartialEq, ::prost::Oneof)]
2260    pub enum Schedule {
2261        #[prost(message, tag = "5")]
2262        ActiveOn(super::ActivitySchedule),
2263    }
2264    #[derive(serde::Serialize, serde::Deserialize)]
2265    #[serde(rename_all = "snake_case")]
2266    #[derive(Clone, PartialEq, ::prost::Oneof)]
2267    pub enum TypeDefinition {
2268        #[prost(message, tag = "101")]
2269        LogsImmediate(super::LogsImmediateType),
2270        #[prost(message, tag = "102")]
2271        TracingImmediate(super::TracingImmediateType),
2272        #[prost(message, tag = "103")]
2273        LogsThreshold(super::LogsThresholdType),
2274        #[prost(message, tag = "104")]
2275        LogsRatioThreshold(super::LogsRatioThresholdType),
2276        #[prost(message, tag = "105")]
2277        LogsTimeRelativeThreshold(super::LogsTimeRelativeThresholdType),
2278        #[prost(message, tag = "106")]
2279        MetricThreshold(super::MetricThresholdType),
2280        #[prost(message, tag = "107")]
2281        TracingThreshold(super::TracingThresholdType),
2282        #[prost(message, tag = "108")]
2283        Flow(super::FlowType),
2284        #[prost(message, tag = "109")]
2285        LogsAnomaly(super::LogsAnomalyType),
2286        #[prost(message, tag = "110")]
2287        MetricAnomaly(super::MetricAnomalyType),
2288        #[prost(message, tag = "111")]
2289        LogsNewValue(super::LogsNewValueType),
2290        #[prost(message, tag = "112")]
2291        LogsUniqueCount(super::LogsUniqueCountType),
2292        #[prost(message, tag = "113")]
2293        SloThreshold(super::SloThresholdType),
2294    }
2295}
2296#[derive(serde::Serialize, serde::Deserialize)]
2297#[serde(rename_all = "snake_case")]
2298#[derive(Clone, PartialEq, ::prost::Message)]
2299pub struct GetAlertDefRequest {
2300    /// Alert definition ID
2301    #[prost(message, optional, tag = "1")]
2302    pub id: ::core::option::Option<::prost::alloc::string::String>,
2303}
2304#[derive(serde::Serialize, serde::Deserialize)]
2305#[serde(rename_all = "snake_case")]
2306#[derive(Clone, PartialEq, ::prost::Message)]
2307pub struct GetAlertDefByVersionIdRequest {
2308    #[prost(message, optional, tag = "1")]
2309    pub alert_version_id: ::core::option::Option<::prost::alloc::string::String>,
2310}
2311#[derive(serde::Serialize, serde::Deserialize)]
2312#[serde(rename_all = "snake_case")]
2313#[derive(Clone, PartialEq, ::prost::Message)]
2314pub struct GetAlertDefResponse {
2315    #[prost(message, optional, tag = "1")]
2316    pub alert_def: ::core::option::Option<AlertDef>,
2317}
2318#[derive(serde::Serialize, serde::Deserialize)]
2319#[serde(rename_all = "snake_case")]
2320#[derive(Clone, PartialEq, ::prost::Message)]
2321pub struct GetAlertDefByVersionIdResponse {
2322    #[prost(message, optional, tag = "1")]
2323    pub alert_def: ::core::option::Option<AlertDef>,
2324}
2325#[derive(serde::Serialize, serde::Deserialize)]
2326#[serde(rename_all = "snake_case")]
2327#[derive(Clone, PartialEq, ::prost::Message)]
2328pub struct ListAlertDefsResponse {
2329    #[prost(message, repeated, tag = "1")]
2330    pub alert_defs: ::prost::alloc::vec::Vec<AlertDef>,
2331}
2332#[derive(serde::Serialize, serde::Deserialize)]
2333#[serde(rename_all = "snake_case")]
2334#[derive(Clone, Copy, PartialEq, ::prost::Message)]
2335pub struct ListAlertDefsRequest {}
2336#[derive(serde::Serialize, serde::Deserialize)]
2337#[serde(rename_all = "snake_case")]
2338#[derive(Clone, Copy, PartialEq, ::prost::Message)]
2339pub struct DownloadAlertsRequest {}
2340#[derive(serde::Serialize, serde::Deserialize)]
2341#[serde(rename_all = "snake_case")]
2342#[derive(Clone, PartialEq, ::prost::Message)]
2343pub struct DownloadAlertsResponse {
2344    #[prost(bytes = "vec", tag = "1")]
2345    pub content: ::prost::alloc::vec::Vec<u8>,
2346}
2347#[derive(serde::Serialize, serde::Deserialize)]
2348#[serde(rename_all = "snake_case")]
2349#[derive(Clone, PartialEq, ::prost::Message)]
2350pub struct BatchGetAlertDefRequest {
2351    #[prost(message, repeated, tag = "1")]
2352    pub ids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2353}
2354#[derive(serde::Serialize, serde::Deserialize)]
2355#[serde(rename_all = "snake_case")]
2356#[derive(Clone, PartialEq, ::prost::Message)]
2357pub struct BatchGetAlertDefResponse {
2358    #[prost(map = "string, message", tag = "1")]
2359    pub alert_defs: ::std::collections::HashMap<
2360        ::prost::alloc::string::String,
2361        AlertDef,
2362    >,
2363    #[prost(message, repeated, tag = "2")]
2364    pub not_found_ids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2365}
2366#[derive(serde::Serialize, serde::Deserialize)]
2367#[serde(rename_all = "snake_case")]
2368#[derive(Clone, PartialEq, ::prost::Message)]
2369pub struct DeleteAlertDefRequest {
2370    /// Alert definition ID
2371    #[prost(message, optional, tag = "1")]
2372    pub id: ::core::option::Option<::prost::alloc::string::String>,
2373}
2374#[derive(serde::Serialize, serde::Deserialize)]
2375#[serde(rename_all = "snake_case")]
2376#[derive(Clone, Copy, PartialEq, ::prost::Message)]
2377pub struct DeleteAlertDefResponse {}
2378#[derive(serde::Serialize, serde::Deserialize)]
2379#[serde(rename_all = "snake_case")]
2380#[derive(Clone, PartialEq, ::prost::Message)]
2381pub struct ReplaceAlertDefRequest {
2382    #[prost(message, optional, tag = "1")]
2383    pub alert_def_properties: ::core::option::Option<AlertDefProperties>,
2384    /// Alert definition ID
2385    #[prost(message, optional, tag = "2")]
2386    pub id: ::core::option::Option<::prost::alloc::string::String>,
2387}
2388#[derive(serde::Serialize, serde::Deserialize)]
2389#[serde(rename_all = "snake_case")]
2390#[derive(Clone, PartialEq, ::prost::Message)]
2391pub struct ReplaceAlertDefResponse {
2392    #[prost(message, optional, tag = "1")]
2393    pub alert_def: ::core::option::Option<AlertDef>,
2394}
2395#[derive(serde::Serialize, serde::Deserialize)]
2396#[serde(rename_all = "snake_case")]
2397#[derive(Clone, PartialEq, ::prost::Message)]
2398pub struct CreateAlertDefRequest {
2399    #[prost(message, optional, tag = "1")]
2400    pub alert_def_properties: ::core::option::Option<AlertDefProperties>,
2401}
2402#[derive(serde::Serialize, serde::Deserialize)]
2403#[serde(rename_all = "snake_case")]
2404#[derive(Clone, PartialEq, ::prost::Message)]
2405pub struct CreateAlertDefResponse {
2406    #[prost(message, optional, tag = "1")]
2407    pub alert_def: ::core::option::Option<AlertDef>,
2408}
2409/// message AlertExecutionRequest {
2410///   oneof request {
2411///     CreateAlertDefRequest create = 1;
2412///     ReplaceAlertDefRequest replace = 2;
2413///     DeleteAlertDefRequest delete = 3;
2414///   }
2415/// }
2416/// message AlertExecutionResponse {
2417///   oneof response {
2418///     CreateAlertDefResponse create = 1;
2419///     ReplaceAlertDefResponse replace = 2;
2420///     DeleteAlertDefResponse delete = 3;
2421///   }
2422/// }
2423/// message GetLimitsRequest {}
2424///
2425/// message GetLimitsResponse {
2426///   google.protobuf.StringValue company_id = 1;
2427///   google.protobuf.Int32Value limit = 2;
2428///   google.protobuf.Int32Value used = 3;
2429/// }
2430/// message ValidateAlertRequest {
2431///   Alert alert = 1;
2432/// }
2433/// message ValidateAlertResponse {
2434///   google.protobuf.BoolValue valid = 1;
2435/// }
2436#[derive(serde::Serialize, serde::Deserialize)]
2437#[serde(rename_all = "snake_case")]
2438#[derive(Clone, PartialEq, ::prost::Message)]
2439pub struct SetActiveRequest {
2440    /// Alert definition ID
2441    #[prost(message, optional, tag = "1")]
2442    pub id: ::core::option::Option<::prost::alloc::string::String>,
2443    #[prost(message, optional, tag = "2")]
2444    pub active: ::core::option::Option<bool>,
2445}
2446#[derive(serde::Serialize, serde::Deserialize)]
2447#[serde(rename_all = "snake_case")]
2448#[derive(Clone, Copy, PartialEq, ::prost::Message)]
2449pub struct SetActiveResponse {}
2450/// Generated client implementations.
2451pub mod alert_defs_service_client {
2452    #![allow(
2453        unused_variables,
2454        dead_code,
2455        missing_docs,
2456        clippy::wildcard_imports,
2457        clippy::let_unit_value,
2458    )]
2459    use tonic::codegen::*;
2460    use tonic::codegen::http::Uri;
2461    #[derive(Debug, Clone)]
2462    pub struct AlertDefsServiceClient<T> {
2463        inner: tonic::client::Grpc<T>,
2464    }
2465    impl AlertDefsServiceClient<tonic::transport::Channel> {
2466        /// Attempt to create a new client by connecting to a given endpoint.
2467        pub async fn connect<D>(dst: D) -> Result<Self, tonic::transport::Error>
2468        where
2469            D: TryInto<tonic::transport::Endpoint>,
2470            D::Error: Into<StdError>,
2471        {
2472            let conn = tonic::transport::Endpoint::new(dst)?.connect().await?;
2473            Ok(Self::new(conn))
2474        }
2475    }
2476    impl<T> AlertDefsServiceClient<T>
2477    where
2478        T: tonic::client::GrpcService<tonic::body::BoxBody>,
2479        T::Error: Into<StdError>,
2480        T::ResponseBody: Body<Data = Bytes> + std::marker::Send + 'static,
2481        <T::ResponseBody as Body>::Error: Into<StdError> + std::marker::Send,
2482    {
2483        pub fn new(inner: T) -> Self {
2484            let inner = tonic::client::Grpc::new(inner);
2485            Self { inner }
2486        }
2487        pub fn with_origin(inner: T, origin: Uri) -> Self {
2488            let inner = tonic::client::Grpc::with_origin(inner, origin);
2489            Self { inner }
2490        }
2491        pub fn with_interceptor<F>(
2492            inner: T,
2493            interceptor: F,
2494        ) -> AlertDefsServiceClient<InterceptedService<T, F>>
2495        where
2496            F: tonic::service::Interceptor,
2497            T::ResponseBody: Default,
2498            T: tonic::codegen::Service<
2499                http::Request<tonic::body::BoxBody>,
2500                Response = http::Response<
2501                    <T as tonic::client::GrpcService<tonic::body::BoxBody>>::ResponseBody,
2502                >,
2503            >,
2504            <T as tonic::codegen::Service<
2505                http::Request<tonic::body::BoxBody>,
2506            >>::Error: Into<StdError> + std::marker::Send + std::marker::Sync,
2507        {
2508            AlertDefsServiceClient::new(InterceptedService::new(inner, interceptor))
2509        }
2510        /// Compress requests with the given encoding.
2511        ///
2512        /// This requires the server to support it otherwise it might respond with an
2513        /// error.
2514        #[must_use]
2515        pub fn send_compressed(mut self, encoding: CompressionEncoding) -> Self {
2516            self.inner = self.inner.send_compressed(encoding);
2517            self
2518        }
2519        /// Enable decompressing responses.
2520        #[must_use]
2521        pub fn accept_compressed(mut self, encoding: CompressionEncoding) -> Self {
2522            self.inner = self.inner.accept_compressed(encoding);
2523            self
2524        }
2525        /// Limits the maximum size of a decoded message.
2526        ///
2527        /// Default: `4MB`
2528        #[must_use]
2529        pub fn max_decoding_message_size(mut self, limit: usize) -> Self {
2530            self.inner = self.inner.max_decoding_message_size(limit);
2531            self
2532        }
2533        /// Limits the maximum size of an encoded message.
2534        ///
2535        /// Default: `usize::MAX`
2536        #[must_use]
2537        pub fn max_encoding_message_size(mut self, limit: usize) -> Self {
2538            self.inner = self.inner.max_encoding_message_size(limit);
2539            self
2540        }
2541        /// Get Alert Def by non changing ID AKA UniqueIdentifier
2542        pub async fn get_alert_def(
2543            &mut self,
2544            request: impl tonic::IntoRequest<super::GetAlertDefRequest>,
2545        ) -> std::result::Result<
2546            tonic::Response<super::GetAlertDefResponse>,
2547            tonic::Status,
2548        > {
2549            self.inner
2550                .ready()
2551                .await
2552                .map_err(|e| {
2553                    tonic::Status::unknown(
2554                        format!("Service was not ready: {}", e.into()),
2555                    )
2556                })?;
2557            let codec = tonic::codec::ProstCodec::default();
2558            let path = http::uri::PathAndQuery::from_static(
2559                "/com.coralogixapis.alerts.v3.AlertDefsService/GetAlertDef",
2560            );
2561            let mut req = request.into_request();
2562            req.extensions_mut()
2563                .insert(
2564                    GrpcMethod::new(
2565                        "com.coralogixapis.alerts.v3.AlertDefsService",
2566                        "GetAlertDef",
2567                    ),
2568                );
2569            self.inner.unary(req, path, codec).await
2570        }
2571        pub async fn get_alert_def_by_version_id(
2572            &mut self,
2573            request: impl tonic::IntoRequest<super::GetAlertDefByVersionIdRequest>,
2574        ) -> std::result::Result<
2575            tonic::Response<super::GetAlertDefByVersionIdResponse>,
2576            tonic::Status,
2577        > {
2578            self.inner
2579                .ready()
2580                .await
2581                .map_err(|e| {
2582                    tonic::Status::unknown(
2583                        format!("Service was not ready: {}", e.into()),
2584                    )
2585                })?;
2586            let codec = tonic::codec::ProstCodec::default();
2587            let path = http::uri::PathAndQuery::from_static(
2588                "/com.coralogixapis.alerts.v3.AlertDefsService/GetAlertDefByVersionId",
2589            );
2590            let mut req = request.into_request();
2591            req.extensions_mut()
2592                .insert(
2593                    GrpcMethod::new(
2594                        "com.coralogixapis.alerts.v3.AlertDefsService",
2595                        "GetAlertDefByVersionId",
2596                    ),
2597                );
2598            self.inner.unary(req, path, codec).await
2599        }
2600        pub async fn create_alert_def(
2601            &mut self,
2602            request: impl tonic::IntoRequest<super::CreateAlertDefRequest>,
2603        ) -> std::result::Result<
2604            tonic::Response<super::CreateAlertDefResponse>,
2605            tonic::Status,
2606        > {
2607            self.inner
2608                .ready()
2609                .await
2610                .map_err(|e| {
2611                    tonic::Status::unknown(
2612                        format!("Service was not ready: {}", e.into()),
2613                    )
2614                })?;
2615            let codec = tonic::codec::ProstCodec::default();
2616            let path = http::uri::PathAndQuery::from_static(
2617                "/com.coralogixapis.alerts.v3.AlertDefsService/CreateAlertDef",
2618            );
2619            let mut req = request.into_request();
2620            req.extensions_mut()
2621                .insert(
2622                    GrpcMethod::new(
2623                        "com.coralogixapis.alerts.v3.AlertDefsService",
2624                        "CreateAlertDef",
2625                    ),
2626                );
2627            self.inner.unary(req, path, codec).await
2628        }
2629        pub async fn replace_alert_def(
2630            &mut self,
2631            request: impl tonic::IntoRequest<super::ReplaceAlertDefRequest>,
2632        ) -> std::result::Result<
2633            tonic::Response<super::ReplaceAlertDefResponse>,
2634            tonic::Status,
2635        > {
2636            self.inner
2637                .ready()
2638                .await
2639                .map_err(|e| {
2640                    tonic::Status::unknown(
2641                        format!("Service was not ready: {}", e.into()),
2642                    )
2643                })?;
2644            let codec = tonic::codec::ProstCodec::default();
2645            let path = http::uri::PathAndQuery::from_static(
2646                "/com.coralogixapis.alerts.v3.AlertDefsService/ReplaceAlertDef",
2647            );
2648            let mut req = request.into_request();
2649            req.extensions_mut()
2650                .insert(
2651                    GrpcMethod::new(
2652                        "com.coralogixapis.alerts.v3.AlertDefsService",
2653                        "ReplaceAlertDef",
2654                    ),
2655                );
2656            self.inner.unary(req, path, codec).await
2657        }
2658        pub async fn list_alert_defs(
2659            &mut self,
2660            request: impl tonic::IntoRequest<super::ListAlertDefsRequest>,
2661        ) -> std::result::Result<
2662            tonic::Response<super::ListAlertDefsResponse>,
2663            tonic::Status,
2664        > {
2665            self.inner
2666                .ready()
2667                .await
2668                .map_err(|e| {
2669                    tonic::Status::unknown(
2670                        format!("Service was not ready: {}", e.into()),
2671                    )
2672                })?;
2673            let codec = tonic::codec::ProstCodec::default();
2674            let path = http::uri::PathAndQuery::from_static(
2675                "/com.coralogixapis.alerts.v3.AlertDefsService/ListAlertDefs",
2676            );
2677            let mut req = request.into_request();
2678            req.extensions_mut()
2679                .insert(
2680                    GrpcMethod::new(
2681                        "com.coralogixapis.alerts.v3.AlertDefsService",
2682                        "ListAlertDefs",
2683                    ),
2684                );
2685            self.inner.unary(req, path, codec).await
2686        }
2687        pub async fn download_alerts(
2688            &mut self,
2689            request: impl tonic::IntoRequest<super::DownloadAlertsRequest>,
2690        ) -> std::result::Result<
2691            tonic::Response<tonic::codec::Streaming<super::DownloadAlertsResponse>>,
2692            tonic::Status,
2693        > {
2694            self.inner
2695                .ready()
2696                .await
2697                .map_err(|e| {
2698                    tonic::Status::unknown(
2699                        format!("Service was not ready: {}", e.into()),
2700                    )
2701                })?;
2702            let codec = tonic::codec::ProstCodec::default();
2703            let path = http::uri::PathAndQuery::from_static(
2704                "/com.coralogixapis.alerts.v3.AlertDefsService/DownloadAlerts",
2705            );
2706            let mut req = request.into_request();
2707            req.extensions_mut()
2708                .insert(
2709                    GrpcMethod::new(
2710                        "com.coralogixapis.alerts.v3.AlertDefsService",
2711                        "DownloadAlerts",
2712                    ),
2713                );
2714            self.inner.server_streaming(req, path, codec).await
2715        }
2716        pub async fn delete_alert_def(
2717            &mut self,
2718            request: impl tonic::IntoRequest<super::DeleteAlertDefRequest>,
2719        ) -> std::result::Result<
2720            tonic::Response<super::DeleteAlertDefResponse>,
2721            tonic::Status,
2722        > {
2723            self.inner
2724                .ready()
2725                .await
2726                .map_err(|e| {
2727                    tonic::Status::unknown(
2728                        format!("Service was not ready: {}", e.into()),
2729                    )
2730                })?;
2731            let codec = tonic::codec::ProstCodec::default();
2732            let path = http::uri::PathAndQuery::from_static(
2733                "/com.coralogixapis.alerts.v3.AlertDefsService/DeleteAlertDef",
2734            );
2735            let mut req = request.into_request();
2736            req.extensions_mut()
2737                .insert(
2738                    GrpcMethod::new(
2739                        "com.coralogixapis.alerts.v3.AlertDefsService",
2740                        "DeleteAlertDef",
2741                    ),
2742                );
2743            self.inner.unary(req, path, codec).await
2744        }
2745        pub async fn set_active(
2746            &mut self,
2747            request: impl tonic::IntoRequest<super::SetActiveRequest>,
2748        ) -> std::result::Result<
2749            tonic::Response<super::SetActiveResponse>,
2750            tonic::Status,
2751        > {
2752            self.inner
2753                .ready()
2754                .await
2755                .map_err(|e| {
2756                    tonic::Status::unknown(
2757                        format!("Service was not ready: {}", e.into()),
2758                    )
2759                })?;
2760            let codec = tonic::codec::ProstCodec::default();
2761            let path = http::uri::PathAndQuery::from_static(
2762                "/com.coralogixapis.alerts.v3.AlertDefsService/SetActive",
2763            );
2764            let mut req = request.into_request();
2765            req.extensions_mut()
2766                .insert(
2767                    GrpcMethod::new(
2768                        "com.coralogixapis.alerts.v3.AlertDefsService",
2769                        "SetActive",
2770                    ),
2771                );
2772            self.inner.unary(req, path, codec).await
2773        }
2774    }
2775}