cx_api/generated/
com.coralogixapis.dashboards.v1.ast.rs

1// This file is @generated by prost-build.
2#[derive(serde::Serialize, serde::Deserialize)]
3#[serde(rename_all = "snake_case")]
4#[derive(Clone, PartialEq, ::prost::Message)]
5pub struct Annotation {
6    /// Annotation unique identifier
7    #[prost(message, optional, tag = "1")]
8    pub id: ::core::option::Option<::prost::alloc::string::String>,
9    #[prost(message, optional, tag = "2")]
10    pub name: ::core::option::Option<::prost::alloc::string::String>,
11    #[prost(message, optional, tag = "3")]
12    pub enabled: ::core::option::Option<bool>,
13    #[prost(message, optional, tag = "4")]
14    pub source: ::core::option::Option<annotation::Source>,
15}
16/// Nested message and enum types in `Annotation`.
17pub mod annotation {
18    #[derive(serde::Serialize, serde::Deserialize)]
19    #[serde(rename_all = "snake_case")]
20    #[derive(Clone, PartialEq, ::prost::Message)]
21    pub struct Source {
22        #[prost(oneof = "source::Value", tags = "1, 2, 3")]
23        pub value: ::core::option::Option<source::Value>,
24    }
25    /// Nested message and enum types in `Source`.
26    pub mod source {
27        #[derive(serde::Serialize, serde::Deserialize)]
28        #[serde(rename_all = "snake_case")]
29        #[derive(Clone, PartialEq, ::prost::Oneof)]
30        pub enum Value {
31            #[prost(message, tag = "1")]
32            Metrics(super::MetricsSource),
33            #[prost(message, tag = "2")]
34            Logs(super::LogsSource),
35            #[prost(message, tag = "3")]
36            Spans(super::SpansSource),
37        }
38    }
39    #[derive(serde::Serialize, serde::Deserialize)]
40    #[serde(rename_all = "snake_case")]
41    #[derive(Clone, PartialEq, ::prost::Message)]
42    pub struct MetricsSource {
43        #[prost(message, optional, tag = "1")]
44        pub promql_query: ::core::option::Option<super::super::common::PromQlQuery>,
45        #[prost(message, optional, tag = "2")]
46        pub strategy: ::core::option::Option<metrics_source::Strategy>,
47        #[prost(message, optional, tag = "3")]
48        pub message_template: ::core::option::Option<::prost::alloc::string::String>,
49        #[prost(message, repeated, tag = "4")]
50        pub labels: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
51    }
52    /// Nested message and enum types in `MetricsSource`.
53    pub mod metrics_source {
54        /// A strategy for turning metrics data into annotations
55        #[derive(serde::Serialize, serde::Deserialize)]
56        #[serde(rename_all = "snake_case")]
57        #[derive(Clone, Copy, PartialEq, ::prost::Message)]
58        pub struct Strategy {
59            #[prost(oneof = "strategy::Value", tags = "1")]
60            pub value: ::core::option::Option<strategy::Value>,
61        }
62        /// Nested message and enum types in `Strategy`.
63        pub mod strategy {
64            #[derive(serde::Serialize, serde::Deserialize)]
65            #[serde(rename_all = "snake_case")]
66            #[derive(Clone, Copy, PartialEq, ::prost::Oneof)]
67            pub enum Value {
68                /// Take the first data point and use its value as annotation timestamp (instead of pointing to its own timestamp)
69                #[prost(message, tag = "1")]
70                StartTimeMetric(super::StartTimeMetric),
71            }
72        }
73        #[derive(serde::Serialize, serde::Deserialize)]
74        #[serde(rename_all = "snake_case")]
75        #[derive(Clone, Copy, PartialEq, ::prost::Message)]
76        pub struct StartTimeMetric {}
77    }
78    #[derive(serde::Serialize, serde::Deserialize)]
79    #[serde(rename_all = "snake_case")]
80    #[derive(Clone, PartialEq, ::prost::Message)]
81    pub struct LogsSource {
82        #[prost(message, optional, tag = "1")]
83        pub lucene_query: ::core::option::Option<super::super::common::LuceneQuery>,
84        #[prost(message, optional, tag = "2")]
85        pub strategy: ::core::option::Option<logs_source::Strategy>,
86        #[prost(message, optional, tag = "3")]
87        pub message_template: ::core::option::Option<::prost::alloc::string::String>,
88        #[prost(message, repeated, tag = "4")]
89        pub label_fields: ::prost::alloc::vec::Vec<
90            super::super::common::ObservationField,
91        >,
92    }
93    /// Nested message and enum types in `LogsSource`.
94    pub mod logs_source {
95        #[derive(serde::Serialize, serde::Deserialize)]
96        #[serde(rename_all = "snake_case")]
97        #[derive(Clone, PartialEq, ::prost::Message)]
98        pub struct Strategy {
99            #[prost(oneof = "strategy::Value", tags = "1, 2, 3")]
100            pub value: ::core::option::Option<strategy::Value>,
101        }
102        /// Nested message and enum types in `Strategy`.
103        pub mod strategy {
104            #[derive(serde::Serialize, serde::Deserialize)]
105            #[serde(rename_all = "snake_case")]
106            #[derive(Clone, PartialEq, ::prost::Message)]
107            pub struct Instant {
108                #[prost(message, optional, tag = "1")]
109                pub timestamp_field: ::core::option::Option<
110                    super::super::super::super::common::ObservationField,
111                >,
112            }
113            #[derive(serde::Serialize, serde::Deserialize)]
114            #[serde(rename_all = "snake_case")]
115            #[derive(Clone, PartialEq, ::prost::Message)]
116            pub struct Range {
117                #[prost(message, optional, tag = "1")]
118                pub start_timestamp_field: ::core::option::Option<
119                    super::super::super::super::common::ObservationField,
120                >,
121                #[prost(message, optional, tag = "2")]
122                pub end_timestamp_field: ::core::option::Option<
123                    super::super::super::super::common::ObservationField,
124                >,
125            }
126            #[derive(serde::Serialize, serde::Deserialize)]
127            #[serde(rename_all = "snake_case")]
128            #[derive(Clone, PartialEq, ::prost::Message)]
129            pub struct Duration {
130                #[prost(message, optional, tag = "1")]
131                pub start_timestamp_field: ::core::option::Option<
132                    super::super::super::super::common::ObservationField,
133                >,
134                #[prost(message, optional, tag = "2")]
135                pub duration_field: ::core::option::Option<
136                    super::super::super::super::common::ObservationField,
137                >,
138            }
139            #[derive(serde::Serialize, serde::Deserialize)]
140            #[serde(rename_all = "snake_case")]
141            #[derive(Clone, PartialEq, ::prost::Oneof)]
142            pub enum Value {
143                #[prost(message, tag = "1")]
144                Instant(Instant),
145                #[prost(message, tag = "2")]
146                Range(Range),
147                #[prost(message, tag = "3")]
148                Duration(Duration),
149            }
150        }
151    }
152    #[derive(serde::Serialize, serde::Deserialize)]
153    #[serde(rename_all = "snake_case")]
154    #[derive(Clone, PartialEq, ::prost::Message)]
155    pub struct SpansSource {
156        #[prost(message, optional, tag = "1")]
157        pub lucene_query: ::core::option::Option<super::super::common::LuceneQuery>,
158        #[prost(message, optional, tag = "2")]
159        pub strategy: ::core::option::Option<spans_source::Strategy>,
160        #[prost(message, optional, tag = "3")]
161        pub message_template: ::core::option::Option<::prost::alloc::string::String>,
162        #[prost(message, repeated, tag = "4")]
163        pub label_fields: ::prost::alloc::vec::Vec<
164            super::super::common::ObservationField,
165        >,
166    }
167    /// Nested message and enum types in `SpansSource`.
168    pub mod spans_source {
169        #[derive(serde::Serialize, serde::Deserialize)]
170        #[serde(rename_all = "snake_case")]
171        #[derive(Clone, PartialEq, ::prost::Message)]
172        pub struct Strategy {
173            #[prost(oneof = "strategy::Value", tags = "1, 2, 3")]
174            pub value: ::core::option::Option<strategy::Value>,
175        }
176        /// Nested message and enum types in `Strategy`.
177        pub mod strategy {
178            #[derive(serde::Serialize, serde::Deserialize)]
179            #[serde(rename_all = "snake_case")]
180            #[derive(Clone, PartialEq, ::prost::Message)]
181            pub struct Instant {
182                #[prost(message, optional, tag = "1")]
183                pub timestamp_field: ::core::option::Option<
184                    super::super::super::super::common::ObservationField,
185                >,
186            }
187            #[derive(serde::Serialize, serde::Deserialize)]
188            #[serde(rename_all = "snake_case")]
189            #[derive(Clone, PartialEq, ::prost::Message)]
190            pub struct Range {
191                #[prost(message, optional, tag = "1")]
192                pub start_timestamp_field: ::core::option::Option<
193                    super::super::super::super::common::ObservationField,
194                >,
195                #[prost(message, optional, tag = "2")]
196                pub end_timestamp_field: ::core::option::Option<
197                    super::super::super::super::common::ObservationField,
198                >,
199            }
200            #[derive(serde::Serialize, serde::Deserialize)]
201            #[serde(rename_all = "snake_case")]
202            #[derive(Clone, PartialEq, ::prost::Message)]
203            pub struct Duration {
204                #[prost(message, optional, tag = "1")]
205                pub start_timestamp_field: ::core::option::Option<
206                    super::super::super::super::common::ObservationField,
207                >,
208                #[prost(message, optional, tag = "2")]
209                pub duration_field: ::core::option::Option<
210                    super::super::super::super::common::ObservationField,
211                >,
212            }
213            #[derive(serde::Serialize, serde::Deserialize)]
214            #[serde(rename_all = "snake_case")]
215            #[derive(Clone, PartialEq, ::prost::Oneof)]
216            pub enum Value {
217                #[prost(message, tag = "1")]
218                Instant(Instant),
219                #[prost(message, tag = "2")]
220                Range(Range),
221                #[prost(message, tag = "3")]
222                Duration(Duration),
223            }
224        }
225    }
226}
227#[derive(serde::Serialize, serde::Deserialize)]
228#[serde(rename_all = "snake_case")]
229#[derive(Clone, PartialEq, ::prost::Message)]
230pub struct Filter {
231    /// The source of the filter, which can be logs, spans, or metrics.
232    #[prost(message, optional, tag = "1")]
233    pub source: ::core::option::Option<filter::Source>,
234    /// Indicates if the filter is currently enabled or not.
235    #[prost(message, optional, tag = "2")]
236    pub enabled: ::core::option::Option<bool>,
237    /// Indicates if the filter's UI representation should be collapsed or expanded.
238    #[prost(message, optional, tag = "3")]
239    pub collapsed: ::core::option::Option<bool>,
240}
241/// Nested message and enum types in `Filter`.
242pub mod filter {
243    #[derive(serde::Serialize, serde::Deserialize)]
244    #[serde(rename_all = "snake_case")]
245    #[derive(Clone, PartialEq, ::prost::Message)]
246    pub struct Source {
247        #[prost(oneof = "source::Value", tags = "1, 2, 3")]
248        pub value: ::core::option::Option<source::Value>,
249    }
250    /// Nested message and enum types in `Source`.
251    pub mod source {
252        #[derive(serde::Serialize, serde::Deserialize)]
253        #[serde(rename_all = "snake_case")]
254        #[derive(Clone, PartialEq, ::prost::Oneof)]
255        pub enum Value {
256            /// Filter configuration for logs.
257            #[prost(message, tag = "1")]
258            Logs(super::LogsFilter),
259            /// Filter configuration for spans.
260            #[prost(message, tag = "2")]
261            Spans(super::SpansFilter),
262            /// Filter configuration for metrics.
263            #[prost(message, tag = "3")]
264            Metrics(super::MetricsFilter),
265        }
266    }
267    #[derive(serde::Serialize, serde::Deserialize)]
268    #[serde(rename_all = "snake_case")]
269    #[derive(Clone, PartialEq, ::prost::Message)]
270    pub struct LogsFilter {
271        /// The log field to which the filter is applied.
272        #[prost(message, optional, tag = "1")]
273        pub field: ::core::option::Option<::prost::alloc::string::String>,
274        /// An operator used for filtering the logs.
275        #[prost(message, optional, tag = "2")]
276        pub operator: ::core::option::Option<Operator>,
277        /// The observation log field to which the filter is applied.
278        #[prost(message, optional, tag = "3")]
279        pub observation_field: ::core::option::Option<
280            super::super::common::ObservationField,
281        >,
282    }
283    #[derive(serde::Serialize, serde::Deserialize)]
284    #[serde(rename_all = "snake_case")]
285    #[derive(Clone, PartialEq, ::prost::Message)]
286    pub struct SpansFilter {
287        /// The span field to which the filter is applied.
288        #[prost(message, optional, tag = "1")]
289        pub field: ::core::option::Option<super::super::common::SpanField>,
290        /// An operator used for filtering the spans.
291        #[prost(message, optional, tag = "2")]
292        pub operator: ::core::option::Option<Operator>,
293        /// The observation span field to which the filter is applied.
294        #[prost(message, optional, tag = "3")]
295        pub observation_field: ::core::option::Option<
296            super::super::common::ObservationField,
297        >,
298    }
299    #[derive(serde::Serialize, serde::Deserialize)]
300    #[serde(rename_all = "snake_case")]
301    #[derive(Clone, PartialEq, ::prost::Message)]
302    pub struct MetricsFilter {
303        /// The name of the metric to which the filter is applied.
304        #[prost(message, optional, tag = "1")]
305        pub metric: ::core::option::Option<::prost::alloc::string::String>,
306        /// The label associated with the metric.
307        #[prost(message, optional, tag = "2")]
308        pub label: ::core::option::Option<::prost::alloc::string::String>,
309        /// An operator used for filtering the metrics.
310        #[prost(message, optional, tag = "3")]
311        pub operator: ::core::option::Option<Operator>,
312    }
313    #[derive(serde::Serialize, serde::Deserialize)]
314    #[serde(rename_all = "snake_case")]
315    #[derive(Clone, PartialEq, ::prost::Message)]
316    pub struct Operator {
317        /// Specifies the type of the comparison operation.
318        #[prost(oneof = "operator::Value", tags = "1, 2")]
319        pub value: ::core::option::Option<operator::Value>,
320    }
321    /// Nested message and enum types in `Operator`.
322    pub mod operator {
323        /// Specifies the type of the comparison operation.
324        #[derive(serde::Serialize, serde::Deserialize)]
325        #[serde(rename_all = "snake_case")]
326        #[derive(Clone, PartialEq, ::prost::Oneof)]
327        pub enum Value {
328            /// Equality comparison.
329            #[prost(message, tag = "1")]
330            Equals(super::Equals),
331            /// Non-equality comparison.
332            #[prost(message, tag = "2")]
333            NotEquals(super::NotEquals),
334        }
335    }
336    #[derive(serde::Serialize, serde::Deserialize)]
337    #[serde(rename_all = "snake_case")]
338    #[derive(Clone, PartialEq, ::prost::Message)]
339    pub struct Equals {
340        /// The selection criteria for the equality comparison.
341        #[prost(message, optional, tag = "1")]
342        pub selection: ::core::option::Option<equals::Selection>,
343    }
344    /// Nested message and enum types in `Equals`.
345    pub mod equals {
346        #[derive(serde::Serialize, serde::Deserialize)]
347        #[serde(rename_all = "snake_case")]
348        #[derive(Clone, PartialEq, ::prost::Message)]
349        pub struct Selection {
350            /// Specifies the type of selection for the equality comparison.
351            #[prost(oneof = "selection::Value", tags = "1, 2")]
352            pub value: ::core::option::Option<selection::Value>,
353        }
354        /// Nested message and enum types in `Selection`.
355        pub mod selection {
356            #[derive(serde::Serialize, serde::Deserialize)]
357            #[serde(rename_all = "snake_case")]
358            #[derive(Clone, Copy, PartialEq, ::prost::Message)]
359            pub struct AllSelection {}
360            #[derive(serde::Serialize, serde::Deserialize)]
361            #[serde(rename_all = "snake_case")]
362            #[derive(Clone, PartialEq, ::prost::Message)]
363            pub struct ListSelection {
364                /// A list of selected values.
365                #[prost(message, repeated, tag = "1")]
366                pub values: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
367            }
368            /// Specifies the type of selection for the equality comparison.
369            #[derive(serde::Serialize, serde::Deserialize)]
370            #[serde(rename_all = "snake_case")]
371            #[derive(Clone, PartialEq, ::prost::Oneof)]
372            pub enum Value {
373                /// Represents a selection of all values.
374                #[prost(message, tag = "1")]
375                All(AllSelection),
376                /// Represents a selection from a list of values.
377                #[prost(message, tag = "2")]
378                List(ListSelection),
379            }
380        }
381    }
382    #[derive(serde::Serialize, serde::Deserialize)]
383    #[serde(rename_all = "snake_case")]
384    #[derive(Clone, PartialEq, ::prost::Message)]
385    pub struct NotEquals {
386        /// Selection criteria for the non-equality comparison.
387        #[prost(message, optional, tag = "1")]
388        pub selection: ::core::option::Option<not_equals::Selection>,
389    }
390    /// Nested message and enum types in `NotEquals`.
391    pub mod not_equals {
392        #[derive(serde::Serialize, serde::Deserialize)]
393        #[serde(rename_all = "snake_case")]
394        #[derive(Clone, PartialEq, ::prost::Message)]
395        pub struct Selection {
396            /// Specifies the type of selection for the non-equality comparison.
397            #[prost(oneof = "selection::Value", tags = "1")]
398            pub value: ::core::option::Option<selection::Value>,
399        }
400        /// Nested message and enum types in `Selection`.
401        pub mod selection {
402            #[derive(serde::Serialize, serde::Deserialize)]
403            #[serde(rename_all = "snake_case")]
404            #[derive(Clone, PartialEq, ::prost::Message)]
405            pub struct ListSelection {
406                /// A list of values for the selection.
407                #[prost(message, repeated, tag = "1")]
408                pub values: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
409            }
410            /// Specifies the type of selection for the non-equality comparison.
411            #[derive(serde::Serialize, serde::Deserialize)]
412            #[serde(rename_all = "snake_case")]
413            #[derive(Clone, PartialEq, ::prost::Oneof)]
414            pub enum Value {
415                /// Represents a selection from a list of values.
416                #[prost(message, tag = "1")]
417                List(ListSelection),
418            }
419        }
420    }
421}
422#[derive(serde::Serialize, serde::Deserialize)]
423#[serde(rename_all = "snake_case")]
424#[derive(Clone, PartialEq, ::prost::Message)]
425pub struct FolderPath {
426    #[prost(string, repeated, tag = "1")]
427    pub segments: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
428}
429#[derive(serde::Serialize, serde::Deserialize)]
430#[serde(rename_all = "snake_case")]
431#[derive(Clone, PartialEq, ::prost::Message)]
432pub struct Widget {
433    /// Widget unique identifier
434    #[prost(message, optional, tag = "1")]
435    pub id: ::core::option::Option<super::Uuid>,
436    #[prost(message, optional, tag = "2")]
437    pub title: ::core::option::Option<::prost::alloc::string::String>,
438    #[prost(message, optional, tag = "3")]
439    pub description: ::core::option::Option<::prost::alloc::string::String>,
440    #[prost(message, optional, tag = "4")]
441    pub definition: ::core::option::Option<widget::Definition>,
442    #[deprecated]
443    #[prost(message, optional, tag = "5")]
444    pub appearance: ::core::option::Option<widget::Appearance>,
445    #[prost(message, optional, tag = "6")]
446    pub created_at: ::core::option::Option<::prost_wkt_types::Timestamp>,
447    #[prost(message, optional, tag = "7")]
448    pub updated_at: ::core::option::Option<::prost_wkt_types::Timestamp>,
449}
450/// Nested message and enum types in `Widget`.
451pub mod widget {
452    #[derive(serde::Serialize, serde::Deserialize)]
453    #[serde(rename_all = "snake_case")]
454    #[derive(Clone, PartialEq, ::prost::Message)]
455    pub struct Definition {
456        #[prost(oneof = "definition::Value", tags = "1, 2, 3, 4, 5, 6, 7, 8")]
457        pub value: ::core::option::Option<definition::Value>,
458    }
459    /// Nested message and enum types in `Definition`.
460    pub mod definition {
461        #[derive(serde::Serialize, serde::Deserialize)]
462        #[serde(rename_all = "snake_case")]
463        #[derive(Clone, PartialEq, ::prost::Oneof)]
464        pub enum Value {
465            #[prost(message, tag = "1")]
466            LineChart(super::super::widgets::LineChart),
467            #[prost(message, tag = "2")]
468            DataTable(super::super::widgets::DataTable),
469            #[prost(message, tag = "3")]
470            Gauge(super::super::widgets::Gauge),
471            #[prost(message, tag = "4")]
472            PieChart(super::super::widgets::PieChart),
473            #[prost(message, tag = "5")]
474            BarChart(super::super::widgets::BarChart),
475            #[prost(message, tag = "6")]
476            HorizontalBarChart(super::super::widgets::HorizontalBarChart),
477            #[prost(message, tag = "7")]
478            Markdown(super::super::widgets::Markdown),
479            #[prost(message, tag = "8")]
480            Hexagon(super::super::widgets::Hexagon),
481        }
482    }
483    #[derive(serde::Serialize, serde::Deserialize)]
484    #[serde(rename_all = "snake_case")]
485    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
486    pub struct Appearance {
487        #[prost(message, optional, tag = "1")]
488        pub width: ::core::option::Option<i32>,
489    }
490}
491#[derive(serde::Serialize, serde::Deserialize)]
492#[serde(rename_all = "snake_case")]
493#[derive(Clone, PartialEq, ::prost::Message)]
494pub struct Layout {
495    #[prost(message, repeated, tag = "1")]
496    pub sections: ::prost::alloc::vec::Vec<Section>,
497}
498#[derive(serde::Serialize, serde::Deserialize)]
499#[serde(rename_all = "snake_case")]
500#[derive(Clone, PartialEq, ::prost::Message)]
501pub struct Section {
502    /// Section unique identifier
503    #[prost(message, optional, tag = "1")]
504    pub id: ::core::option::Option<super::Uuid>,
505    #[prost(message, repeated, tag = "2")]
506    pub rows: ::prost::alloc::vec::Vec<Row>,
507    #[prost(message, optional, tag = "3")]
508    pub options: ::core::option::Option<SectionOptions>,
509}
510#[derive(serde::Serialize, serde::Deserialize)]
511#[serde(rename_all = "snake_case")]
512#[derive(Clone, PartialEq, ::prost::Message)]
513pub struct Row {
514    /// Row unique identifier
515    #[prost(message, optional, tag = "1")]
516    pub id: ::core::option::Option<super::Uuid>,
517    #[prost(message, optional, tag = "2")]
518    pub appearance: ::core::option::Option<row::Appearance>,
519    #[prost(message, repeated, tag = "3")]
520    pub widgets: ::prost::alloc::vec::Vec<Widget>,
521}
522/// Nested message and enum types in `Row`.
523pub mod row {
524    #[derive(serde::Serialize, serde::Deserialize)]
525    #[serde(rename_all = "snake_case")]
526    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
527    pub struct Appearance {
528        #[prost(message, optional, tag = "1")]
529        pub height: ::core::option::Option<i32>,
530    }
531}
532#[derive(serde::Serialize, serde::Deserialize)]
533#[serde(rename_all = "snake_case")]
534#[derive(Clone, PartialEq, ::prost::Message)]
535pub struct SectionOptions {
536    #[prost(oneof = "section_options::Value", tags = "1, 2")]
537    pub value: ::core::option::Option<section_options::Value>,
538}
539/// Nested message and enum types in `SectionOptions`.
540pub mod section_options {
541    #[derive(serde::Serialize, serde::Deserialize)]
542    #[serde(rename_all = "snake_case")]
543    #[derive(Clone, PartialEq, ::prost::Oneof)]
544    pub enum Value {
545        #[prost(message, tag = "1")]
546        Internal(super::InternalSectionOptions),
547        #[prost(message, tag = "2")]
548        Custom(super::CustomSectionOptions),
549    }
550}
551#[derive(serde::Serialize, serde::Deserialize)]
552#[serde(rename_all = "snake_case")]
553#[derive(Clone, Copy, PartialEq, ::prost::Message)]
554pub struct InternalSectionOptions {}
555#[derive(serde::Serialize, serde::Deserialize)]
556#[serde(rename_all = "snake_case")]
557#[derive(Clone, PartialEq, ::prost::Message)]
558pub struct CustomSectionOptions {
559    #[prost(message, optional, tag = "1")]
560    pub name: ::core::option::Option<::prost::alloc::string::String>,
561    #[prost(message, optional, tag = "2")]
562    pub description: ::core::option::Option<::prost::alloc::string::String>,
563    #[prost(message, optional, tag = "3")]
564    pub collapsed: ::core::option::Option<bool>,
565    #[prost(message, optional, tag = "4")]
566    pub color: ::core::option::Option<SectionColor>,
567}
568#[derive(serde::Serialize, serde::Deserialize)]
569#[serde(rename_all = "snake_case")]
570#[derive(Clone, Copy, PartialEq, ::prost::Message)]
571pub struct SectionColor {
572    #[prost(oneof = "section_color::Value", tags = "1")]
573    pub value: ::core::option::Option<section_color::Value>,
574}
575/// Nested message and enum types in `SectionColor`.
576pub mod section_color {
577    #[derive(serde::Serialize, serde::Deserialize)]
578    #[serde(rename_all = "snake_case")]
579    #[derive(Clone, Copy, PartialEq, ::prost::Oneof)]
580    pub enum Value {
581        #[prost(enumeration = "super::SectionPredefinedColor", tag = "1")]
582        Predefined(i32),
583    }
584}
585#[derive(serde::Serialize, serde::Deserialize)]
586#[serde(rename_all = "snake_case")]
587#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
588#[repr(i32)]
589pub enum SectionPredefinedColor {
590    Unspecified = 0,
591    Cyan = 1,
592    Green = 2,
593    Blue = 3,
594    Purple = 4,
595    Magenta = 5,
596    Pink = 6,
597    Orange = 7,
598}
599impl SectionPredefinedColor {
600    /// String value of the enum field names used in the ProtoBuf definition.
601    ///
602    /// The values are not transformed in any way and thus are considered stable
603    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
604    pub fn as_str_name(&self) -> &'static str {
605        match self {
606            Self::Unspecified => "SECTION_PREDEFINED_COLOR_UNSPECIFIED",
607            Self::Cyan => "SECTION_PREDEFINED_COLOR_CYAN",
608            Self::Green => "SECTION_PREDEFINED_COLOR_GREEN",
609            Self::Blue => "SECTION_PREDEFINED_COLOR_BLUE",
610            Self::Purple => "SECTION_PREDEFINED_COLOR_PURPLE",
611            Self::Magenta => "SECTION_PREDEFINED_COLOR_MAGENTA",
612            Self::Pink => "SECTION_PREDEFINED_COLOR_PINK",
613            Self::Orange => "SECTION_PREDEFINED_COLOR_ORANGE",
614        }
615    }
616    /// Creates an enum from field names used in the ProtoBuf definition.
617    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
618        match value {
619            "SECTION_PREDEFINED_COLOR_UNSPECIFIED" => Some(Self::Unspecified),
620            "SECTION_PREDEFINED_COLOR_CYAN" => Some(Self::Cyan),
621            "SECTION_PREDEFINED_COLOR_GREEN" => Some(Self::Green),
622            "SECTION_PREDEFINED_COLOR_BLUE" => Some(Self::Blue),
623            "SECTION_PREDEFINED_COLOR_PURPLE" => Some(Self::Purple),
624            "SECTION_PREDEFINED_COLOR_MAGENTA" => Some(Self::Magenta),
625            "SECTION_PREDEFINED_COLOR_PINK" => Some(Self::Pink),
626            "SECTION_PREDEFINED_COLOR_ORANGE" => Some(Self::Orange),
627            _ => None,
628        }
629    }
630}
631#[derive(serde::Serialize, serde::Deserialize)]
632#[serde(rename_all = "snake_case")]
633#[derive(Clone, PartialEq, ::prost::Message)]
634pub struct Variable {
635    #[prost(message, optional, tag = "1")]
636    pub name: ::core::option::Option<::prost::alloc::string::String>,
637    #[prost(message, optional, tag = "2")]
638    pub definition: ::core::option::Option<variable::Definition>,
639    #[prost(message, optional, tag = "3")]
640    pub display_name: ::core::option::Option<::prost::alloc::string::String>,
641    #[prost(message, optional, tag = "4")]
642    pub description: ::core::option::Option<::prost::alloc::string::String>,
643    #[prost(enumeration = "VariableDisplayType", tag = "5")]
644    pub display_type: i32,
645}
646/// Nested message and enum types in `Variable`.
647pub mod variable {
648    #[derive(serde::Serialize, serde::Deserialize)]
649    #[serde(rename_all = "snake_case")]
650    #[derive(Clone, PartialEq, ::prost::Message)]
651    pub struct Definition {
652        #[prost(oneof = "definition::Value", tags = "1, 2")]
653        pub value: ::core::option::Option<definition::Value>,
654    }
655    /// Nested message and enum types in `Definition`.
656    pub mod definition {
657        #[derive(serde::Serialize, serde::Deserialize)]
658        #[serde(rename_all = "snake_case")]
659        #[derive(Clone, PartialEq, ::prost::Oneof)]
660        pub enum Value {
661            #[prost(message, tag = "1")]
662            Constant(super::super::Constant),
663            #[prost(message, tag = "2")]
664            MultiSelect(super::super::MultiSelect),
665        }
666    }
667}
668#[derive(serde::Serialize, serde::Deserialize)]
669#[serde(rename_all = "snake_case")]
670#[derive(Clone, PartialEq, ::prost::Message)]
671pub struct Constant {
672    #[prost(message, optional, tag = "1")]
673    pub value: ::core::option::Option<::prost::alloc::string::String>,
674}
675#[derive(serde::Serialize, serde::Deserialize)]
676#[serde(rename_all = "snake_case")]
677#[derive(Clone, PartialEq, ::prost::Message)]
678pub struct MultiSelect {
679    #[deprecated]
680    #[prost(message, repeated, tag = "1")]
681    pub selected: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
682    #[prost(message, optional, tag = "2")]
683    pub source: ::core::option::Option<multi_select::Source>,
684    #[prost(message, optional, tag = "3")]
685    pub selection: ::core::option::Option<multi_select::Selection>,
686    #[prost(enumeration = "super::common::OrderDirection", tag = "4")]
687    pub values_order_direction: i32,
688    #[prost(message, optional, tag = "5")]
689    pub selection_options: ::core::option::Option<
690        multi_select::VariableSelectionOptions,
691    >,
692}
693/// Nested message and enum types in `MultiSelect`.
694pub mod multi_select {
695    #[derive(serde::Serialize, serde::Deserialize)]
696    #[serde(rename_all = "snake_case")]
697    #[derive(Clone, PartialEq, ::prost::Message)]
698    pub struct Source {
699        #[prost(oneof = "source::Value", tags = "1, 2, 3, 4, 5")]
700        pub value: ::core::option::Option<source::Value>,
701    }
702    /// Nested message and enum types in `Source`.
703    pub mod source {
704        #[derive(serde::Serialize, serde::Deserialize)]
705        #[serde(rename_all = "snake_case")]
706        #[derive(Clone, PartialEq, ::prost::Oneof)]
707        pub enum Value {
708            #[prost(message, tag = "1")]
709            LogsPath(super::LogsPathSource),
710            #[prost(message, tag = "2")]
711            MetricLabel(super::MetricLabelSource),
712            #[prost(message, tag = "3")]
713            ConstantList(super::ConstantListSource),
714            #[prost(message, tag = "4")]
715            SpanField(super::SpanFieldSource),
716            #[prost(message, tag = "5")]
717            Query(super::QuerySource),
718        }
719    }
720    #[derive(serde::Serialize, serde::Deserialize)]
721    #[serde(rename_all = "snake_case")]
722    #[derive(Clone, PartialEq, ::prost::Message)]
723    pub struct LogsPathSource {
724        #[prost(message, optional, tag = "1")]
725        pub value: ::core::option::Option<::prost::alloc::string::String>,
726        #[prost(message, optional, tag = "3")]
727        pub observation_field: ::core::option::Option<
728            super::super::common::ObservationField,
729        >,
730    }
731    #[derive(serde::Serialize, serde::Deserialize)]
732    #[serde(rename_all = "snake_case")]
733    #[derive(Clone, PartialEq, ::prost::Message)]
734    pub struct MetricLabelSource {
735        #[prost(message, optional, tag = "1")]
736        pub metric_name: ::core::option::Option<::prost::alloc::string::String>,
737        #[prost(message, optional, tag = "2")]
738        pub label: ::core::option::Option<::prost::alloc::string::String>,
739    }
740    #[derive(serde::Serialize, serde::Deserialize)]
741    #[serde(rename_all = "snake_case")]
742    #[derive(Clone, PartialEq, ::prost::Message)]
743    pub struct SpanFieldSource {
744        #[prost(message, optional, tag = "1")]
745        pub value: ::core::option::Option<super::super::common::SpanField>,
746    }
747    #[derive(serde::Serialize, serde::Deserialize)]
748    #[serde(rename_all = "snake_case")]
749    #[derive(Clone, PartialEq, ::prost::Message)]
750    pub struct ConstantListSource {
751        #[prost(message, repeated, tag = "1")]
752        pub values: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
753    }
754    #[derive(serde::Serialize, serde::Deserialize)]
755    #[serde(rename_all = "snake_case")]
756    #[derive(Clone, PartialEq, ::prost::Message)]
757    pub struct QuerySource {
758        #[prost(message, optional, tag = "1")]
759        pub query: ::core::option::Option<Query>,
760        #[prost(enumeration = "RefreshStrategy", tag = "2")]
761        pub refresh_strategy: i32,
762        #[prost(message, optional, tag = "3")]
763        pub value_display_options: ::core::option::Option<ValueDisplayOptions>,
764    }
765    #[derive(serde::Serialize, serde::Deserialize)]
766    #[serde(rename_all = "snake_case")]
767    #[derive(Clone, PartialEq, ::prost::Message)]
768    pub struct Query {
769        #[prost(oneof = "query::Value", tags = "1, 2, 3")]
770        pub value: ::core::option::Option<query::Value>,
771    }
772    /// Nested message and enum types in `Query`.
773    pub mod query {
774        #[derive(serde::Serialize, serde::Deserialize)]
775        #[serde(rename_all = "snake_case")]
776        #[derive(Clone, PartialEq, ::prost::Message)]
777        pub struct LogsQuery {
778            #[prost(message, optional, tag = "1")]
779            pub r#type: ::core::option::Option<logs_query::Type>,
780        }
781        /// Nested message and enum types in `LogsQuery`.
782        pub mod logs_query {
783            #[derive(serde::Serialize, serde::Deserialize)]
784            #[serde(rename_all = "snake_case")]
785            #[derive(Clone, PartialEq, ::prost::Message)]
786            pub struct Type {
787                #[prost(oneof = "r#type::Value", tags = "1, 2")]
788                pub value: ::core::option::Option<r#type::Value>,
789            }
790            /// Nested message and enum types in `Type`.
791            pub mod r#type {
792                #[derive(serde::Serialize, serde::Deserialize)]
793                #[serde(rename_all = "snake_case")]
794                #[derive(Clone, PartialEq, ::prost::Message)]
795                pub struct FieldName {
796                    #[prost(message, optional, tag = "1")]
797                    pub log_regex: ::core::option::Option<
798                        ::prost::alloc::string::String,
799                    >,
800                }
801                #[derive(serde::Serialize, serde::Deserialize)]
802                #[serde(rename_all = "snake_case")]
803                #[derive(Clone, PartialEq, ::prost::Message)]
804                pub struct FieldValue {
805                    #[prost(message, optional, tag = "3")]
806                    pub observation_field: ::core::option::Option<
807                        super::super::super::super::super::common::ObservationField,
808                    >,
809                }
810                #[derive(serde::Serialize, serde::Deserialize)]
811                #[serde(rename_all = "snake_case")]
812                #[derive(Clone, PartialEq, ::prost::Oneof)]
813                pub enum Value {
814                    #[prost(message, tag = "1")]
815                    FieldName(FieldName),
816                    #[prost(message, tag = "2")]
817                    FieldValue(FieldValue),
818                }
819            }
820        }
821        #[derive(serde::Serialize, serde::Deserialize)]
822        #[serde(rename_all = "snake_case")]
823        #[derive(Clone, PartialEq, ::prost::Message)]
824        pub struct SpansQuery {
825            #[prost(message, optional, tag = "1")]
826            pub r#type: ::core::option::Option<spans_query::Type>,
827        }
828        /// Nested message and enum types in `SpansQuery`.
829        pub mod spans_query {
830            #[derive(serde::Serialize, serde::Deserialize)]
831            #[serde(rename_all = "snake_case")]
832            #[derive(Clone, PartialEq, ::prost::Message)]
833            pub struct Type {
834                #[prost(oneof = "r#type::Value", tags = "1, 2")]
835                pub value: ::core::option::Option<r#type::Value>,
836            }
837            /// Nested message and enum types in `Type`.
838            pub mod r#type {
839                #[derive(serde::Serialize, serde::Deserialize)]
840                #[serde(rename_all = "snake_case")]
841                #[derive(Clone, PartialEq, ::prost::Message)]
842                pub struct FieldName {
843                    #[prost(message, optional, tag = "1")]
844                    pub span_regex: ::core::option::Option<
845                        ::prost::alloc::string::String,
846                    >,
847                }
848                #[derive(serde::Serialize, serde::Deserialize)]
849                #[serde(rename_all = "snake_case")]
850                #[derive(Clone, PartialEq, ::prost::Message)]
851                pub struct FieldValue {
852                    #[prost(message, optional, tag = "1")]
853                    pub value: ::core::option::Option<
854                        super::super::super::super::super::common::SpanField,
855                    >,
856                    #[prost(message, optional, tag = "2")]
857                    pub observation_field: ::core::option::Option<
858                        super::super::super::super::super::common::ObservationField,
859                    >,
860                }
861                #[derive(serde::Serialize, serde::Deserialize)]
862                #[serde(rename_all = "snake_case")]
863                #[derive(Clone, PartialEq, ::prost::Oneof)]
864                pub enum Value {
865                    #[prost(message, tag = "1")]
866                    FieldName(FieldName),
867                    #[prost(message, tag = "2")]
868                    FieldValue(FieldValue),
869                }
870            }
871        }
872        #[derive(serde::Serialize, serde::Deserialize)]
873        #[serde(rename_all = "snake_case")]
874        #[derive(Clone, PartialEq, ::prost::Message)]
875        pub struct MetricsQuery {
876            #[prost(message, optional, tag = "1")]
877            pub r#type: ::core::option::Option<metrics_query::Type>,
878        }
879        /// Nested message and enum types in `MetricsQuery`.
880        pub mod metrics_query {
881            #[derive(serde::Serialize, serde::Deserialize)]
882            #[serde(rename_all = "snake_case")]
883            #[derive(Clone, PartialEq, ::prost::Message)]
884            pub struct Type {
885                #[prost(oneof = "r#type::Value", tags = "1, 2, 3")]
886                pub value: ::core::option::Option<r#type::Value>,
887            }
888            /// Nested message and enum types in `Type`.
889            pub mod r#type {
890                #[derive(serde::Serialize, serde::Deserialize)]
891                #[serde(rename_all = "snake_case")]
892                #[derive(Clone, PartialEq, ::prost::Message)]
893                pub struct MetricName {
894                    #[prost(message, optional, tag = "1")]
895                    pub metric_regex: ::core::option::Option<
896                        ::prost::alloc::string::String,
897                    >,
898                }
899                #[derive(serde::Serialize, serde::Deserialize)]
900                #[serde(rename_all = "snake_case")]
901                #[derive(Clone, PartialEq, ::prost::Message)]
902                pub struct LabelName {
903                    #[prost(message, optional, tag = "1")]
904                    pub metric_regex: ::core::option::Option<
905                        ::prost::alloc::string::String,
906                    >,
907                }
908                #[derive(serde::Serialize, serde::Deserialize)]
909                #[serde(rename_all = "snake_case")]
910                #[derive(Clone, PartialEq, ::prost::Message)]
911                pub struct LabelValue {
912                    #[prost(message, optional, tag = "1")]
913                    pub metric_name: ::core::option::Option<super::StringOrVariable>,
914                    #[prost(message, optional, tag = "2")]
915                    pub label_name: ::core::option::Option<super::StringOrVariable>,
916                    #[prost(message, repeated, tag = "3")]
917                    pub label_filters: ::prost::alloc::vec::Vec<
918                        super::MetricsLabelFilter,
919                    >,
920                }
921                #[derive(serde::Serialize, serde::Deserialize)]
922                #[serde(rename_all = "snake_case")]
923                #[derive(Clone, PartialEq, ::prost::Oneof)]
924                pub enum Value {
925                    #[prost(message, tag = "1")]
926                    MetricName(MetricName),
927                    #[prost(message, tag = "2")]
928                    LabelName(LabelName),
929                    #[prost(message, tag = "3")]
930                    LabelValue(LabelValue),
931                }
932            }
933            #[derive(serde::Serialize, serde::Deserialize)]
934            #[serde(rename_all = "snake_case")]
935            #[derive(Clone, PartialEq, ::prost::Message)]
936            pub struct StringOrVariable {
937                #[prost(oneof = "string_or_variable::Value", tags = "1, 2")]
938                pub value: ::core::option::Option<string_or_variable::Value>,
939            }
940            /// Nested message and enum types in `StringOrVariable`.
941            pub mod string_or_variable {
942                #[derive(serde::Serialize, serde::Deserialize)]
943                #[serde(rename_all = "snake_case")]
944                #[derive(Clone, PartialEq, ::prost::Oneof)]
945                pub enum Value {
946                    #[prost(message, tag = "1")]
947                    StringValue(::prost::alloc::string::String),
948                    #[prost(message, tag = "2")]
949                    VariableName(::prost::alloc::string::String),
950                }
951            }
952            #[derive(serde::Serialize, serde::Deserialize)]
953            #[serde(rename_all = "snake_case")]
954            #[derive(Clone, PartialEq, ::prost::Message)]
955            pub struct MetricsLabelFilter {
956                #[prost(message, optional, tag = "1")]
957                pub metric: ::core::option::Option<StringOrVariable>,
958                #[prost(message, optional, tag = "2")]
959                pub label: ::core::option::Option<StringOrVariable>,
960                #[prost(message, optional, tag = "3")]
961                pub operator: ::core::option::Option<Operator>,
962            }
963            #[derive(serde::Serialize, serde::Deserialize)]
964            #[serde(rename_all = "snake_case")]
965            #[derive(Clone, PartialEq, ::prost::Message)]
966            pub struct Operator {
967                #[prost(oneof = "operator::Value", tags = "1, 2")]
968                pub value: ::core::option::Option<operator::Value>,
969            }
970            /// Nested message and enum types in `Operator`.
971            pub mod operator {
972                #[derive(serde::Serialize, serde::Deserialize)]
973                #[serde(rename_all = "snake_case")]
974                #[derive(Clone, PartialEq, ::prost::Oneof)]
975                pub enum Value {
976                    #[prost(message, tag = "1")]
977                    Equals(super::Equals),
978                    #[prost(message, tag = "2")]
979                    NotEquals(super::NotEquals),
980                }
981            }
982            #[derive(serde::Serialize, serde::Deserialize)]
983            #[serde(rename_all = "snake_case")]
984            #[derive(Clone, PartialEq, ::prost::Message)]
985            pub struct Equals {
986                #[prost(message, optional, tag = "1")]
987                pub selection: ::core::option::Option<Selection>,
988            }
989            #[derive(serde::Serialize, serde::Deserialize)]
990            #[serde(rename_all = "snake_case")]
991            #[derive(Clone, PartialEq, ::prost::Message)]
992            pub struct NotEquals {
993                #[prost(message, optional, tag = "1")]
994                pub selection: ::core::option::Option<Selection>,
995            }
996            #[derive(serde::Serialize, serde::Deserialize)]
997            #[serde(rename_all = "snake_case")]
998            #[derive(Clone, PartialEq, ::prost::Message)]
999            pub struct Selection {
1000                #[prost(oneof = "selection::Value", tags = "1")]
1001                pub value: ::core::option::Option<selection::Value>,
1002            }
1003            /// Nested message and enum types in `Selection`.
1004            pub mod selection {
1005                #[derive(serde::Serialize, serde::Deserialize)]
1006                #[serde(rename_all = "snake_case")]
1007                #[derive(Clone, PartialEq, ::prost::Message)]
1008                pub struct ListSelection {
1009                    #[prost(message, repeated, tag = "1")]
1010                    pub values: ::prost::alloc::vec::Vec<super::StringOrVariable>,
1011                }
1012                #[derive(serde::Serialize, serde::Deserialize)]
1013                #[serde(rename_all = "snake_case")]
1014                #[derive(Clone, PartialEq, ::prost::Oneof)]
1015                pub enum Value {
1016                    #[prost(message, tag = "1")]
1017                    List(ListSelection),
1018                }
1019            }
1020        }
1021        #[derive(serde::Serialize, serde::Deserialize)]
1022        #[serde(rename_all = "snake_case")]
1023        #[derive(Clone, PartialEq, ::prost::Oneof)]
1024        pub enum Value {
1025            #[prost(message, tag = "1")]
1026            LogsQuery(LogsQuery),
1027            #[prost(message, tag = "2")]
1028            MetricsQuery(MetricsQuery),
1029            #[prost(message, tag = "3")]
1030            SpansQuery(SpansQuery),
1031        }
1032    }
1033    #[derive(serde::Serialize, serde::Deserialize)]
1034    #[serde(rename_all = "snake_case")]
1035    #[derive(Clone, PartialEq, ::prost::Message)]
1036    pub struct ValueDisplayOptions {
1037        #[prost(message, optional, tag = "1")]
1038        pub value_regex: ::core::option::Option<::prost::alloc::string::String>,
1039        #[prost(message, optional, tag = "2")]
1040        pub label_regex: ::core::option::Option<::prost::alloc::string::String>,
1041    }
1042    #[derive(serde::Serialize, serde::Deserialize)]
1043    #[serde(rename_all = "snake_case")]
1044    #[derive(Clone, PartialEq, ::prost::Message)]
1045    pub struct Selection {
1046        #[prost(oneof = "selection::Value", tags = "1, 2")]
1047        pub value: ::core::option::Option<selection::Value>,
1048    }
1049    /// Nested message and enum types in `Selection`.
1050    pub mod selection {
1051        #[derive(serde::Serialize, serde::Deserialize)]
1052        #[serde(rename_all = "snake_case")]
1053        #[derive(Clone, Copy, PartialEq, ::prost::Message)]
1054        pub struct AllSelection {}
1055        #[derive(serde::Serialize, serde::Deserialize)]
1056        #[serde(rename_all = "snake_case")]
1057        #[derive(Clone, PartialEq, ::prost::Message)]
1058        pub struct ListSelection {
1059            #[prost(message, repeated, tag = "1")]
1060            pub values: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1061            #[prost(message, repeated, tag = "2")]
1062            pub labels: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1063        }
1064        #[derive(serde::Serialize, serde::Deserialize)]
1065        #[serde(rename_all = "snake_case")]
1066        #[derive(Clone, PartialEq, ::prost::Oneof)]
1067        pub enum Value {
1068            #[prost(message, tag = "1")]
1069            All(AllSelection),
1070            #[prost(message, tag = "2")]
1071            List(ListSelection),
1072        }
1073    }
1074    #[derive(serde::Serialize, serde::Deserialize)]
1075    #[serde(rename_all = "snake_case")]
1076    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
1077    pub struct VariableSelectionOptions {
1078        #[prost(enumeration = "variable_selection_options::SelectionType", tag = "1")]
1079        pub selection_type: i32,
1080    }
1081    /// Nested message and enum types in `VariableSelectionOptions`.
1082    pub mod variable_selection_options {
1083        #[derive(serde::Serialize, serde::Deserialize)]
1084        #[serde(rename_all = "snake_case")]
1085        #[derive(
1086            Clone,
1087            Copy,
1088            Debug,
1089            PartialEq,
1090            Eq,
1091            Hash,
1092            PartialOrd,
1093            Ord,
1094            ::prost::Enumeration
1095        )]
1096        #[repr(i32)]
1097        pub enum SelectionType {
1098            Unspecified = 0,
1099            MultiAll = 1,
1100            Multi = 2,
1101            Single = 3,
1102        }
1103        impl SelectionType {
1104            /// String value of the enum field names used in the ProtoBuf definition.
1105            ///
1106            /// The values are not transformed in any way and thus are considered stable
1107            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1108            pub fn as_str_name(&self) -> &'static str {
1109                match self {
1110                    Self::Unspecified => "SELECTION_TYPE_UNSPECIFIED",
1111                    Self::MultiAll => "SELECTION_TYPE_MULTI_ALL",
1112                    Self::Multi => "SELECTION_TYPE_MULTI",
1113                    Self::Single => "SELECTION_TYPE_SINGLE",
1114                }
1115            }
1116            /// Creates an enum from field names used in the ProtoBuf definition.
1117            pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1118                match value {
1119                    "SELECTION_TYPE_UNSPECIFIED" => Some(Self::Unspecified),
1120                    "SELECTION_TYPE_MULTI_ALL" => Some(Self::MultiAll),
1121                    "SELECTION_TYPE_MULTI" => Some(Self::Multi),
1122                    "SELECTION_TYPE_SINGLE" => Some(Self::Single),
1123                    _ => None,
1124                }
1125            }
1126        }
1127    }
1128    #[derive(serde::Serialize, serde::Deserialize)]
1129    #[serde(rename_all = "snake_case")]
1130    #[derive(
1131        Clone,
1132        Copy,
1133        Debug,
1134        PartialEq,
1135        Eq,
1136        Hash,
1137        PartialOrd,
1138        Ord,
1139        ::prost::Enumeration
1140    )]
1141    #[repr(i32)]
1142    pub enum RefreshStrategy {
1143        Unspecified = 0,
1144        OnDashboardLoad = 1,
1145        OnTimeFrameChange = 2,
1146    }
1147    impl RefreshStrategy {
1148        /// String value of the enum field names used in the ProtoBuf definition.
1149        ///
1150        /// The values are not transformed in any way and thus are considered stable
1151        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1152        pub fn as_str_name(&self) -> &'static str {
1153            match self {
1154                Self::Unspecified => "REFRESH_STRATEGY_UNSPECIFIED",
1155                Self::OnDashboardLoad => "REFRESH_STRATEGY_ON_DASHBOARD_LOAD",
1156                Self::OnTimeFrameChange => "REFRESH_STRATEGY_ON_TIME_FRAME_CHANGE",
1157            }
1158        }
1159        /// Creates an enum from field names used in the ProtoBuf definition.
1160        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1161            match value {
1162                "REFRESH_STRATEGY_UNSPECIFIED" => Some(Self::Unspecified),
1163                "REFRESH_STRATEGY_ON_DASHBOARD_LOAD" => Some(Self::OnDashboardLoad),
1164                "REFRESH_STRATEGY_ON_TIME_FRAME_CHANGE" => Some(Self::OnTimeFrameChange),
1165                _ => None,
1166            }
1167        }
1168    }
1169}
1170#[derive(serde::Serialize, serde::Deserialize)]
1171#[serde(rename_all = "snake_case")]
1172#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1173#[repr(i32)]
1174pub enum VariableDisplayType {
1175    Unspecified = 0,
1176    LabelValue = 1,
1177    Value = 2,
1178    Nothing = 3,
1179}
1180impl VariableDisplayType {
1181    /// String value of the enum field names used in the ProtoBuf definition.
1182    ///
1183    /// The values are not transformed in any way and thus are considered stable
1184    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1185    pub fn as_str_name(&self) -> &'static str {
1186        match self {
1187            Self::Unspecified => "VARIABLE_DISPLAY_TYPE_UNSPECIFIED",
1188            Self::LabelValue => "VARIABLE_DISPLAY_TYPE_LABEL_VALUE",
1189            Self::Value => "VARIABLE_DISPLAY_TYPE_VALUE",
1190            Self::Nothing => "VARIABLE_DISPLAY_TYPE_NOTHING",
1191        }
1192    }
1193    /// Creates an enum from field names used in the ProtoBuf definition.
1194    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1195        match value {
1196            "VARIABLE_DISPLAY_TYPE_UNSPECIFIED" => Some(Self::Unspecified),
1197            "VARIABLE_DISPLAY_TYPE_LABEL_VALUE" => Some(Self::LabelValue),
1198            "VARIABLE_DISPLAY_TYPE_VALUE" => Some(Self::Value),
1199            "VARIABLE_DISPLAY_TYPE_NOTHING" => Some(Self::Nothing),
1200            _ => None,
1201        }
1202    }
1203}
1204#[derive(serde::Serialize, serde::Deserialize)]
1205#[serde(rename_all = "snake_case")]
1206#[derive(Clone, PartialEq, ::prost::Message)]
1207pub struct Dashboard {
1208    /// A unique identifier of the dashboard.
1209    #[prost(message, optional, tag = "1")]
1210    pub id: ::core::option::Option<::prost::alloc::string::String>,
1211    /// The display name of the dashboard.
1212    #[prost(message, optional, tag = "2")]
1213    pub name: ::core::option::Option<::prost::alloc::string::String>,
1214    /// A brief description or summary of the dashboard's purpose or content.
1215    #[prost(message, optional, tag = "3")]
1216    pub description: ::core::option::Option<::prost::alloc::string::String>,
1217    /// The layout configuration for the dashboard's visual elements.
1218    #[prost(message, optional, tag = "4")]
1219    pub layout: ::core::option::Option<Layout>,
1220    /// A list of variables that can be used within the dashboard for dynamic content.
1221    #[prost(message, repeated, tag = "5")]
1222    pub variables: ::prost::alloc::vec::Vec<Variable>,
1223    /// A list of filters that can be applied to the dashboard's data.
1224    #[prost(message, repeated, tag = "6")]
1225    pub filters: ::prost::alloc::vec::Vec<Filter>,
1226    #[prost(message, repeated, tag = "11")]
1227    pub annotations: ::prost::alloc::vec::Vec<Annotation>,
1228    /// Specifies the time frame for the dashboard's data. Can be either absolute or relative.
1229    #[prost(oneof = "dashboard::TimeFrame", tags = "7, 8")]
1230    pub time_frame: ::core::option::Option<dashboard::TimeFrame>,
1231    /// A polymorphic field for the dashboard's folder. Either a folder ID or a folder path is supported.
1232    #[prost(oneof = "dashboard::Folder", tags = "9, 10")]
1233    pub folder: ::core::option::Option<dashboard::Folder>,
1234    /// The auto refresh interval for the dashboard.
1235    #[prost(oneof = "dashboard::AutoRefresh", tags = "12, 13, 14")]
1236    pub auto_refresh: ::core::option::Option<dashboard::AutoRefresh>,
1237}
1238/// Nested message and enum types in `Dashboard`.
1239pub mod dashboard {
1240    #[derive(serde::Serialize, serde::Deserialize)]
1241    #[serde(rename_all = "snake_case")]
1242    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
1243    pub struct AutoRefreshOff {}
1244    #[derive(serde::Serialize, serde::Deserialize)]
1245    #[serde(rename_all = "snake_case")]
1246    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
1247    pub struct AutoRefreshTwoMinutes {}
1248    #[derive(serde::Serialize, serde::Deserialize)]
1249    #[serde(rename_all = "snake_case")]
1250    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
1251    pub struct AutoRefreshFiveMinutes {}
1252    /// Specifies the time frame for the dashboard's data. Can be either absolute or relative.
1253    #[derive(serde::Serialize, serde::Deserialize)]
1254    #[serde(rename_all = "snake_case")]
1255    #[derive(Clone, Copy, PartialEq, ::prost::Oneof)]
1256    pub enum TimeFrame {
1257        /// Absolute time frame specifying a fixed start and end time.
1258        #[prost(message, tag = "7")]
1259        AbsoluteTimeFrame(super::super::common::TimeFrame),
1260        /// Relative time frame specifying a duration from the current time.
1261        #[prost(message, tag = "8")]
1262        RelativeTimeFrame(::prost_wkt_types::Duration),
1263    }
1264    /// A polymorphic field for the dashboard's folder. Either a folder ID or a folder path is supported.
1265    #[derive(serde::Serialize, serde::Deserialize)]
1266    #[serde(rename_all = "snake_case")]
1267    #[derive(Clone, PartialEq, ::prost::Oneof)]
1268    pub enum Folder {
1269        #[prost(message, tag = "9")]
1270        FolderId(super::super::Uuid),
1271        #[prost(message, tag = "10")]
1272        FolderPath(super::FolderPath),
1273    }
1274    /// The auto refresh interval for the dashboard.
1275    #[derive(serde::Serialize, serde::Deserialize)]
1276    #[serde(rename_all = "snake_case")]
1277    #[derive(Clone, Copy, PartialEq, ::prost::Oneof)]
1278    pub enum AutoRefresh {
1279        #[prost(message, tag = "12")]
1280        Off(AutoRefreshOff),
1281        #[prost(message, tag = "13")]
1282        TwoMinutes(AutoRefreshTwoMinutes),
1283        #[prost(message, tag = "14")]
1284        FiveMinutes(AutoRefreshFiveMinutes),
1285    }
1286}