cx_api/generated/
com.coralogixapis.dashboards.v1.ast.widgets.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 BarChart {
6    #[prost(message, optional, tag = "1")]
7    pub query: ::core::option::Option<bar_chart::Query>,
8    #[prost(message, optional, tag = "2")]
9    pub max_bars_per_chart: ::core::option::Option<i32>,
10    #[prost(message, optional, tag = "3")]
11    pub group_name_template: ::core::option::Option<::prost::alloc::string::String>,
12    #[prost(message, optional, tag = "4")]
13    pub stack_definition: ::core::option::Option<bar_chart::StackDefinition>,
14    #[prost(enumeration = "common::ScaleType", tag = "5")]
15    pub scale_type: i32,
16    #[prost(message, optional, tag = "6")]
17    pub colors_by: ::core::option::Option<common::ColorsBy>,
18    #[prost(message, optional, tag = "7")]
19    pub x_axis: ::core::option::Option<bar_chart::XAxis>,
20    #[prost(enumeration = "common::Unit", tag = "8")]
21    pub unit: i32,
22    #[prost(enumeration = "common::SortByType", tag = "9")]
23    pub sort_by: i32,
24    #[prost(message, optional, tag = "10")]
25    pub color_scheme: ::core::option::Option<::prost::alloc::string::String>,
26    #[prost(enumeration = "common::DataModeType", tag = "11")]
27    pub data_mode_type: i32,
28    #[prost(enumeration = "BarValueDisplay", tag = "12")]
29    pub bar_value_display: i32,
30    #[prost(message, optional, tag = "13")]
31    pub custom_unit: ::core::option::Option<::prost::alloc::string::String>,
32    #[prost(message, optional, tag = "14")]
33    pub decimal: ::core::option::Option<i32>,
34    #[prost(message, optional, tag = "15")]
35    pub legend: ::core::option::Option<common::Legend>,
36    #[prost(message, optional, tag = "16")]
37    pub hash_colors: ::core::option::Option<bool>,
38    #[prost(message, optional, tag = "17")]
39    pub y_axis_min: ::core::option::Option<f32>,
40    #[prost(message, optional, tag = "18")]
41    pub y_axis_max: ::core::option::Option<f32>,
42    #[prost(message, optional, tag = "19")]
43    pub decimal_precision: ::core::option::Option<bool>,
44}
45/// Nested message and enum types in `BarChart`.
46pub mod bar_chart {
47    #[derive(serde::Serialize, serde::Deserialize)]
48    #[serde(rename_all = "snake_case")]
49    #[derive(Clone, PartialEq, ::prost::Message)]
50    pub struct Query {
51        #[prost(oneof = "query::Value", tags = "1, 2, 3, 4")]
52        pub value: ::core::option::Option<query::Value>,
53    }
54    /// Nested message and enum types in `Query`.
55    pub mod query {
56        #[derive(serde::Serialize, serde::Deserialize)]
57        #[serde(rename_all = "snake_case")]
58        #[derive(Clone, PartialEq, ::prost::Oneof)]
59        pub enum Value {
60            #[prost(message, tag = "1")]
61            Logs(super::LogsQuery),
62            #[prost(message, tag = "2")]
63            Spans(super::SpansQuery),
64            #[prost(message, tag = "3")]
65            Metrics(super::MetricsQuery),
66            #[prost(message, tag = "4")]
67            Dataprime(super::DataprimeQuery),
68        }
69    }
70    #[derive(serde::Serialize, serde::Deserialize)]
71    #[serde(rename_all = "snake_case")]
72    #[derive(Clone, PartialEq, ::prost::Message)]
73    pub struct StackDefinition {
74        #[prost(message, optional, tag = "1")]
75        pub max_slices_per_bar: ::core::option::Option<i32>,
76        #[prost(message, optional, tag = "2")]
77        pub stack_name_template: ::core::option::Option<::prost::alloc::string::String>,
78    }
79    #[derive(serde::Serialize, serde::Deserialize)]
80    #[serde(rename_all = "snake_case")]
81    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
82    pub struct XAxis {
83        #[prost(oneof = "x_axis::Type", tags = "1, 2")]
84        pub r#type: ::core::option::Option<x_axis::Type>,
85    }
86    /// Nested message and enum types in `XAxis`.
87    pub mod x_axis {
88        #[derive(serde::Serialize, serde::Deserialize)]
89        #[serde(rename_all = "snake_case")]
90        #[derive(Clone, Copy, PartialEq, ::prost::Message)]
91        pub struct XAxisByValue {}
92        #[derive(serde::Serialize, serde::Deserialize)]
93        #[serde(rename_all = "snake_case")]
94        #[derive(Clone, Copy, PartialEq, ::prost::Message)]
95        pub struct XAxisByTime {
96            #[prost(message, optional, tag = "1")]
97            pub interval: ::core::option::Option<::prost_wkt_types::Duration>,
98            #[prost(message, optional, tag = "2")]
99            pub buckets_presented: ::core::option::Option<i32>,
100        }
101        #[derive(serde::Serialize, serde::Deserialize)]
102        #[serde(rename_all = "snake_case")]
103        #[derive(Clone, Copy, PartialEq, ::prost::Oneof)]
104        pub enum Type {
105            #[prost(message, tag = "1")]
106            Value(XAxisByValue),
107            #[prost(message, tag = "2")]
108            Time(XAxisByTime),
109        }
110    }
111    #[derive(serde::Serialize, serde::Deserialize)]
112    #[serde(rename_all = "snake_case")]
113    #[derive(Clone, PartialEq, ::prost::Message)]
114    pub struct LogsQuery {
115        #[prost(message, optional, tag = "1")]
116        pub lucene_query: ::core::option::Option<
117            super::super::super::common::LuceneQuery,
118        >,
119        #[prost(message, optional, tag = "2")]
120        pub aggregation: ::core::option::Option<
121            super::super::super::common::LogsAggregation,
122        >,
123        #[prost(message, repeated, tag = "3")]
124        pub filters: ::prost::alloc::vec::Vec<super::super::filters::filter::LogsFilter>,
125        #[prost(message, repeated, tag = "4")]
126        pub group_names: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
127        #[prost(message, optional, tag = "5")]
128        pub stacked_group_name: ::core::option::Option<::prost::alloc::string::String>,
129        #[prost(message, repeated, tag = "6")]
130        pub group_names_fields: ::prost::alloc::vec::Vec<
131            super::super::super::common::ObservationField,
132        >,
133        #[prost(message, optional, tag = "7")]
134        pub stacked_group_name_field: ::core::option::Option<
135            super::super::super::common::ObservationField,
136        >,
137        #[prost(message, optional, tag = "8")]
138        pub time_frame: ::core::option::Option<
139            super::super::super::common::TimeFrameSelect,
140        >,
141    }
142    #[derive(serde::Serialize, serde::Deserialize)]
143    #[serde(rename_all = "snake_case")]
144    #[derive(Clone, PartialEq, ::prost::Message)]
145    pub struct SpansQuery {
146        #[prost(message, optional, tag = "1")]
147        pub lucene_query: ::core::option::Option<
148            super::super::super::common::LuceneQuery,
149        >,
150        #[prost(message, optional, tag = "2")]
151        pub aggregation: ::core::option::Option<
152            super::super::super::common::SpansAggregation,
153        >,
154        #[prost(message, repeated, tag = "3")]
155        pub filters: ::prost::alloc::vec::Vec<
156            super::super::filters::filter::SpansFilter,
157        >,
158        #[prost(message, repeated, tag = "4")]
159        pub group_names: ::prost::alloc::vec::Vec<
160            super::super::super::common::SpanField,
161        >,
162        #[prost(message, optional, tag = "5")]
163        pub stacked_group_name: ::core::option::Option<
164            super::super::super::common::SpanField,
165        >,
166        #[prost(message, optional, tag = "6")]
167        pub time_frame: ::core::option::Option<
168            super::super::super::common::TimeFrameSelect,
169        >,
170        #[prost(message, repeated, tag = "7")]
171        pub group_names_fields: ::prost::alloc::vec::Vec<
172            super::super::super::common::SpanObservationField,
173        >,
174        #[prost(message, optional, tag = "8")]
175        pub stacked_group_name_field: ::core::option::Option<
176            super::super::super::common::SpanObservationField,
177        >,
178    }
179    #[derive(serde::Serialize, serde::Deserialize)]
180    #[serde(rename_all = "snake_case")]
181    #[derive(Clone, PartialEq, ::prost::Message)]
182    pub struct MetricsQuery {
183        #[prost(message, optional, tag = "1")]
184        pub promql_query: ::core::option::Option<
185            super::super::super::common::PromQlQuery,
186        >,
187        #[prost(message, repeated, tag = "2")]
188        pub filters: ::prost::alloc::vec::Vec<
189            super::super::filters::filter::MetricsFilter,
190        >,
191        #[prost(message, repeated, tag = "3")]
192        pub group_names: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
193        #[prost(message, optional, tag = "4")]
194        pub stacked_group_name: ::core::option::Option<::prost::alloc::string::String>,
195        #[prost(enumeration = "super::common::MetricsQueryEditorMode", tag = "5")]
196        pub editor_mode: i32,
197        #[prost(message, optional, tag = "6")]
198        pub time_frame: ::core::option::Option<
199            super::super::super::common::TimeFrameSelect,
200        >,
201        #[prost(enumeration = "super::super::super::common::PromQlQueryType", tag = "7")]
202        pub promql_query_type: i32,
203        #[prost(enumeration = "super::common::Aggregation", tag = "8")]
204        pub aggregation: i32,
205    }
206    #[derive(serde::Serialize, serde::Deserialize)]
207    #[serde(rename_all = "snake_case")]
208    #[derive(Clone, PartialEq, ::prost::Message)]
209    pub struct DataprimeQuery {
210        #[prost(message, optional, tag = "1")]
211        pub dataprime_query: ::core::option::Option<
212            super::super::super::common::DataprimeQuery,
213        >,
214        #[prost(message, repeated, tag = "2")]
215        pub filters: ::prost::alloc::vec::Vec<super::super::filters::filter::Source>,
216        #[prost(message, repeated, tag = "3")]
217        pub group_names: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
218        #[prost(message, optional, tag = "4")]
219        pub stacked_group_name: ::core::option::Option<::prost::alloc::string::String>,
220        #[prost(message, optional, tag = "5")]
221        pub time_frame: ::core::option::Option<
222            super::super::super::common::TimeFrameSelect,
223        >,
224    }
225}
226#[derive(serde::Serialize, serde::Deserialize)]
227#[serde(rename_all = "snake_case")]
228#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
229#[repr(i32)]
230pub enum BarValueDisplay {
231    Unspecified = 0,
232    Top = 1,
233    Inside = 2,
234    Both = 3,
235}
236impl BarValueDisplay {
237    /// String value of the enum field names used in the ProtoBuf definition.
238    ///
239    /// The values are not transformed in any way and thus are considered stable
240    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
241    pub fn as_str_name(&self) -> &'static str {
242        match self {
243            Self::Unspecified => "BAR_VALUE_DISPLAY_UNSPECIFIED",
244            Self::Top => "BAR_VALUE_DISPLAY_TOP",
245            Self::Inside => "BAR_VALUE_DISPLAY_INSIDE",
246            Self::Both => "BAR_VALUE_DISPLAY_BOTH",
247        }
248    }
249    /// Creates an enum from field names used in the ProtoBuf definition.
250    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
251        match value {
252            "BAR_VALUE_DISPLAY_UNSPECIFIED" => Some(Self::Unspecified),
253            "BAR_VALUE_DISPLAY_TOP" => Some(Self::Top),
254            "BAR_VALUE_DISPLAY_INSIDE" => Some(Self::Inside),
255            "BAR_VALUE_DISPLAY_BOTH" => Some(Self::Both),
256            _ => None,
257        }
258    }
259}
260#[derive(serde::Serialize, serde::Deserialize)]
261#[serde(rename_all = "snake_case")]
262#[derive(Clone, PartialEq, ::prost::Message)]
263pub struct DataTable {
264    #[prost(message, optional, tag = "1")]
265    pub query: ::core::option::Option<data_table::Query>,
266    #[prost(message, optional, tag = "2")]
267    pub results_per_page: ::core::option::Option<i32>,
268    #[prost(enumeration = "RowStyle", tag = "3")]
269    pub row_style: i32,
270    #[prost(message, repeated, tag = "4")]
271    pub columns: ::prost::alloc::vec::Vec<data_table::Column>,
272    #[prost(message, optional, tag = "5")]
273    pub order_by: ::core::option::Option<super::super::common::OrderingField>,
274    #[prost(enumeration = "common::DataModeType", tag = "11")]
275    pub data_mode_type: i32,
276}
277/// Nested message and enum types in `DataTable`.
278pub mod data_table {
279    #[derive(serde::Serialize, serde::Deserialize)]
280    #[serde(rename_all = "snake_case")]
281    #[derive(Clone, PartialEq, ::prost::Message)]
282    pub struct Query {
283        #[prost(oneof = "query::Value", tags = "1, 2, 3, 4")]
284        pub value: ::core::option::Option<query::Value>,
285    }
286    /// Nested message and enum types in `Query`.
287    pub mod query {
288        #[derive(serde::Serialize, serde::Deserialize)]
289        #[serde(rename_all = "snake_case")]
290        #[derive(Clone, PartialEq, ::prost::Oneof)]
291        pub enum Value {
292            #[prost(message, tag = "1")]
293            Logs(super::LogsQuery),
294            #[prost(message, tag = "2")]
295            Spans(super::SpansQuery),
296            #[prost(message, tag = "3")]
297            Metrics(super::MetricsQuery),
298            #[prost(message, tag = "4")]
299            Dataprime(super::DataprimeQuery),
300        }
301    }
302    #[derive(serde::Serialize, serde::Deserialize)]
303    #[serde(rename_all = "snake_case")]
304    #[derive(Clone, PartialEq, ::prost::Message)]
305    pub struct LogsQuery {
306        #[prost(message, optional, tag = "1")]
307        pub lucene_query: ::core::option::Option<
308            super::super::super::common::LuceneQuery,
309        >,
310        #[prost(message, repeated, tag = "2")]
311        pub filters: ::prost::alloc::vec::Vec<super::super::filters::filter::LogsFilter>,
312        #[prost(message, optional, tag = "3")]
313        pub grouping: ::core::option::Option<logs_query::Grouping>,
314        #[prost(message, optional, tag = "4")]
315        pub time_frame: ::core::option::Option<
316            super::super::super::common::TimeFrameSelect,
317        >,
318    }
319    /// Nested message and enum types in `LogsQuery`.
320    pub mod logs_query {
321        #[derive(serde::Serialize, serde::Deserialize)]
322        #[serde(rename_all = "snake_case")]
323        #[derive(Clone, PartialEq, ::prost::Message)]
324        pub struct Grouping {
325            #[prost(message, repeated, tag = "1")]
326            pub group_by: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
327            #[prost(message, repeated, tag = "2")]
328            pub aggregations: ::prost::alloc::vec::Vec<Aggregation>,
329            #[prost(message, repeated, tag = "3")]
330            pub group_bys: ::prost::alloc::vec::Vec<
331                super::super::super::super::common::ObservationField,
332            >,
333        }
334        #[derive(serde::Serialize, serde::Deserialize)]
335        #[serde(rename_all = "snake_case")]
336        #[derive(Clone, PartialEq, ::prost::Message)]
337        pub struct Aggregation {
338            #[prost(message, optional, tag = "1")]
339            pub id: ::core::option::Option<::prost::alloc::string::String>,
340            #[prost(message, optional, tag = "2")]
341            pub name: ::core::option::Option<::prost::alloc::string::String>,
342            #[prost(message, optional, tag = "3")]
343            pub is_visible: ::core::option::Option<bool>,
344            #[prost(message, optional, tag = "4")]
345            pub aggregation: ::core::option::Option<
346                super::super::super::super::common::LogsAggregation,
347            >,
348        }
349    }
350    #[derive(serde::Serialize, serde::Deserialize)]
351    #[serde(rename_all = "snake_case")]
352    #[derive(Clone, PartialEq, ::prost::Message)]
353    pub struct SpansQuery {
354        #[prost(message, optional, tag = "1")]
355        pub lucene_query: ::core::option::Option<
356            super::super::super::common::LuceneQuery,
357        >,
358        #[prost(message, repeated, tag = "2")]
359        pub filters: ::prost::alloc::vec::Vec<
360            super::super::filters::filter::SpansFilter,
361        >,
362        #[prost(message, optional, tag = "3")]
363        pub grouping: ::core::option::Option<spans_query::Grouping>,
364        #[prost(message, optional, tag = "4")]
365        pub time_frame: ::core::option::Option<
366            super::super::super::common::TimeFrameSelect,
367        >,
368    }
369    /// Nested message and enum types in `SpansQuery`.
370    pub mod spans_query {
371        #[derive(serde::Serialize, serde::Deserialize)]
372        #[serde(rename_all = "snake_case")]
373        #[derive(Clone, PartialEq, ::prost::Message)]
374        pub struct Grouping {
375            #[prost(message, repeated, tag = "1")]
376            pub group_by: ::prost::alloc::vec::Vec<
377                super::super::super::super::common::SpanField,
378            >,
379            #[prost(message, repeated, tag = "2")]
380            pub aggregations: ::prost::alloc::vec::Vec<Aggregation>,
381            #[prost(message, repeated, tag = "3")]
382            pub group_bys: ::prost::alloc::vec::Vec<
383                super::super::super::super::common::SpanObservationField,
384            >,
385        }
386        #[derive(serde::Serialize, serde::Deserialize)]
387        #[serde(rename_all = "snake_case")]
388        #[derive(Clone, PartialEq, ::prost::Message)]
389        pub struct Aggregation {
390            #[prost(message, optional, tag = "1")]
391            pub id: ::core::option::Option<::prost::alloc::string::String>,
392            #[prost(message, optional, tag = "2")]
393            pub name: ::core::option::Option<::prost::alloc::string::String>,
394            #[prost(message, optional, tag = "3")]
395            pub is_visible: ::core::option::Option<bool>,
396            #[prost(message, optional, tag = "4")]
397            pub aggregation: ::core::option::Option<
398                super::super::super::super::common::SpansAggregation,
399            >,
400        }
401    }
402    #[derive(serde::Serialize, serde::Deserialize)]
403    #[serde(rename_all = "snake_case")]
404    #[derive(Clone, PartialEq, ::prost::Message)]
405    pub struct MetricsQuery {
406        #[prost(message, optional, tag = "1")]
407        pub promql_query: ::core::option::Option<
408            super::super::super::common::PromQlQuery,
409        >,
410        #[prost(message, repeated, tag = "2")]
411        pub filters: ::prost::alloc::vec::Vec<
412            super::super::filters::filter::MetricsFilter,
413        >,
414        #[prost(enumeration = "super::common::MetricsQueryEditorMode", tag = "3")]
415        pub editor_mode: i32,
416        #[prost(message, optional, tag = "4")]
417        pub time_frame: ::core::option::Option<
418            super::super::super::common::TimeFrameSelect,
419        >,
420        #[prost(enumeration = "super::super::super::common::PromQlQueryType", tag = "5")]
421        pub promql_query_type: i32,
422    }
423    #[derive(serde::Serialize, serde::Deserialize)]
424    #[serde(rename_all = "snake_case")]
425    #[derive(Clone, PartialEq, ::prost::Message)]
426    pub struct DataprimeQuery {
427        #[prost(message, optional, tag = "1")]
428        pub dataprime_query: ::core::option::Option<
429            super::super::super::common::DataprimeQuery,
430        >,
431        #[prost(message, repeated, tag = "2")]
432        pub filters: ::prost::alloc::vec::Vec<super::super::filters::filter::Source>,
433        #[prost(message, optional, tag = "3")]
434        pub time_frame: ::core::option::Option<
435            super::super::super::common::TimeFrameSelect,
436        >,
437    }
438    #[derive(serde::Serialize, serde::Deserialize)]
439    #[serde(rename_all = "snake_case")]
440    #[derive(Clone, PartialEq, ::prost::Message)]
441    pub struct Column {
442        #[prost(message, optional, tag = "1")]
443        pub field: ::core::option::Option<::prost::alloc::string::String>,
444        #[prost(message, optional, tag = "2")]
445        pub width: ::core::option::Option<i32>,
446    }
447}
448#[derive(serde::Serialize, serde::Deserialize)]
449#[serde(rename_all = "snake_case")]
450#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
451#[repr(i32)]
452pub enum RowStyle {
453    Unspecified = 0,
454    OneLine = 1,
455    TwoLine = 2,
456    Condensed = 3,
457    Json = 4,
458    List = 5,
459}
460impl RowStyle {
461    /// String value of the enum field names used in the ProtoBuf definition.
462    ///
463    /// The values are not transformed in any way and thus are considered stable
464    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
465    pub fn as_str_name(&self) -> &'static str {
466        match self {
467            Self::Unspecified => "ROW_STYLE_UNSPECIFIED",
468            Self::OneLine => "ROW_STYLE_ONE_LINE",
469            Self::TwoLine => "ROW_STYLE_TWO_LINE",
470            Self::Condensed => "ROW_STYLE_CONDENSED",
471            Self::Json => "ROW_STYLE_JSON",
472            Self::List => "ROW_STYLE_LIST",
473        }
474    }
475    /// Creates an enum from field names used in the ProtoBuf definition.
476    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
477        match value {
478            "ROW_STYLE_UNSPECIFIED" => Some(Self::Unspecified),
479            "ROW_STYLE_ONE_LINE" => Some(Self::OneLine),
480            "ROW_STYLE_TWO_LINE" => Some(Self::TwoLine),
481            "ROW_STYLE_CONDENSED" => Some(Self::Condensed),
482            "ROW_STYLE_JSON" => Some(Self::Json),
483            "ROW_STYLE_LIST" => Some(Self::List),
484            _ => None,
485        }
486    }
487}
488#[derive(serde::Serialize, serde::Deserialize)]
489#[serde(rename_all = "snake_case")]
490#[derive(Clone, PartialEq, ::prost::Message)]
491pub struct Dynamic {
492    #[prost(message, optional, tag = "1")]
493    pub query: ::core::option::Option<dynamic::Query>,
494    #[prost(message, optional, tag = "2")]
495    pub time_frame: ::core::option::Option<super::super::common::TimeFrameSelect>,
496    #[prost(enumeration = "dynamic::Interpretation", tag = "3")]
497    pub interpretation: i32,
498    #[prost(message, optional, tag = "4")]
499    pub visualization: ::core::option::Option<dynamic::Visualization>,
500}
501/// Nested message and enum types in `Dynamic`.
502pub mod dynamic {
503    #[derive(serde::Serialize, serde::Deserialize)]
504    #[serde(rename_all = "snake_case")]
505    #[derive(Clone, PartialEq, ::prost::Message)]
506    pub struct Query {
507        #[prost(oneof = "query::Value", tags = "1, 2, 3, 4")]
508        pub value: ::core::option::Option<query::Value>,
509    }
510    /// Nested message and enum types in `Query`.
511    pub mod query {
512        #[derive(serde::Serialize, serde::Deserialize)]
513        #[serde(rename_all = "snake_case")]
514        #[derive(Clone, PartialEq, ::prost::Message)]
515        pub struct Logs {
516            #[prost(message, optional, tag = "1")]
517            pub lucene_query: ::core::option::Option<
518                super::super::super::super::common::LuceneQuery,
519            >,
520            #[prost(enumeration = "super::super::common::DataModeType", tag = "2")]
521            pub data_mode_type: i32,
522            #[prost(message, repeated, tag = "3")]
523            pub filters: ::prost::alloc::vec::Vec<
524                super::super::super::filters::filter::LogsFilter,
525            >,
526            #[prost(message, repeated, tag = "4")]
527            pub group_by: ::prost::alloc::vec::Vec<
528                super::super::super::super::common::ObservationField,
529            >,
530            #[prost(message, repeated, tag = "5")]
531            pub aggregation: ::prost::alloc::vec::Vec<
532                super::super::super::super::common::LogsAggregation,
533            >,
534        }
535        #[derive(serde::Serialize, serde::Deserialize)]
536        #[serde(rename_all = "snake_case")]
537        #[derive(Clone, PartialEq, ::prost::Message)]
538        pub struct Spans {
539            #[prost(message, optional, tag = "1")]
540            pub lucene_query: ::core::option::Option<
541                super::super::super::super::common::LuceneQuery,
542            >,
543            #[prost(enumeration = "super::super::common::DataModeType", tag = "2")]
544            pub data_mode_type: i32,
545            #[prost(message, repeated, tag = "3")]
546            pub filters: ::prost::alloc::vec::Vec<
547                super::super::super::filters::filter::SpansFilter,
548            >,
549            #[prost(message, repeated, tag = "4")]
550            pub group_by: ::prost::alloc::vec::Vec<
551                super::super::super::super::common::SpanObservationField,
552            >,
553            #[prost(message, repeated, tag = "5")]
554            pub aggregation: ::prost::alloc::vec::Vec<
555                super::super::super::super::common::LogsAggregation,
556            >,
557        }
558        #[derive(serde::Serialize, serde::Deserialize)]
559        #[serde(rename_all = "snake_case")]
560        #[derive(Clone, PartialEq, ::prost::Message)]
561        pub struct Metrics {
562            #[prost(message, optional, tag = "1")]
563            pub promql_query: ::core::option::Option<
564                super::super::super::super::common::PromQlQuery,
565            >,
566            #[prost(
567                enumeration = "super::super::super::super::common::PromQlQueryType",
568                tag = "2"
569            )]
570            pub promql_query_type: i32,
571            #[prost(
572                enumeration = "super::super::common::MetricsQueryEditorMode",
573                tag = "3"
574            )]
575            pub editor_mode: i32,
576            #[prost(
577                enumeration = "super::super::super::super::common::MetricsSeriesLimitType",
578                tag = "4"
579            )]
580            pub series_limit_type: i32,
581        }
582        #[derive(serde::Serialize, serde::Deserialize)]
583        #[serde(rename_all = "snake_case")]
584        #[derive(Clone, PartialEq, ::prost::Message)]
585        pub struct Dataprime {
586            #[prost(message, optional, tag = "1")]
587            pub dataprime_query: ::core::option::Option<
588                super::super::super::super::common::DataprimeQuery,
589            >,
590            #[prost(enumeration = "super::super::common::DataModeType", tag = "2")]
591            pub data_mode_type: i32,
592        }
593        #[derive(serde::Serialize, serde::Deserialize)]
594        #[serde(rename_all = "snake_case")]
595        #[derive(Clone, PartialEq, ::prost::Oneof)]
596        pub enum Value {
597            #[prost(message, tag = "1")]
598            Logs(Logs),
599            #[prost(message, tag = "2")]
600            Spans(Spans),
601            #[prost(message, tag = "3")]
602            Metrics(Metrics),
603            #[prost(message, tag = "4")]
604            Dataprime(Dataprime),
605        }
606    }
607    #[derive(serde::Serialize, serde::Deserialize)]
608    #[serde(rename_all = "snake_case")]
609    #[derive(Clone, PartialEq, ::prost::Message)]
610    pub struct Visualization {
611        #[prost(oneof = "visualization::Value", tags = "1, 2, 3, 4, 5, 6, 7, 8, 9, 10")]
612        pub value: ::core::option::Option<visualization::Value>,
613    }
614    /// Nested message and enum types in `Visualization`.
615    pub mod visualization {
616        #[derive(serde::Serialize, serde::Deserialize)]
617        #[serde(rename_all = "snake_case")]
618        #[derive(Clone, PartialEq, ::prost::Message)]
619        pub struct Table {
620            #[prost(message, repeated, tag = "1")]
621            pub columns: ::prost::alloc::vec::Vec<table::Column>,
622            #[prost(message, repeated, tag = "2")]
623            pub rules: ::prost::alloc::vec::Vec<table::Rule>,
624        }
625        /// Nested message and enum types in `Table`.
626        pub mod table {
627            #[derive(serde::Serialize, serde::Deserialize)]
628            #[serde(rename_all = "snake_case")]
629            #[derive(Clone, PartialEq, ::prost::Message)]
630            pub struct Column {
631                #[prost(message, optional, tag = "1")]
632                pub field: ::core::option::Option<
633                    super::super::super::super::super::common::ObservationField,
634                >,
635            }
636            #[derive(serde::Serialize, serde::Deserialize)]
637            #[serde(rename_all = "snake_case")]
638            #[derive(Clone, PartialEq, ::prost::Message)]
639            pub struct Rule {
640                #[prost(message, optional, tag = "1")]
641                pub id: ::core::option::Option<super::super::super::super::super::Uuid>,
642                #[prost(message, optional, tag = "2")]
643                pub name: ::core::option::Option<::prost::alloc::string::String>,
644                #[prost(message, optional, tag = "3")]
645                pub description: ::core::option::Option<::prost::alloc::string::String>,
646                #[prost(message, optional, tag = "4")]
647                pub rule_scope: ::core::option::Option<RuleScope>,
648                #[prost(message, repeated, tag = "5")]
649                pub properties: ::prost::alloc::vec::Vec<Property>,
650            }
651            #[derive(serde::Serialize, serde::Deserialize)]
652            #[serde(rename_all = "snake_case")]
653            #[derive(Clone, PartialEq, ::prost::Message)]
654            pub struct RuleScope {
655                #[prost(oneof = "rule_scope::Value", tags = "1, 2, 3")]
656                pub value: ::core::option::Option<rule_scope::Value>,
657            }
658            /// Nested message and enum types in `RuleScope`.
659            pub mod rule_scope {
660                #[derive(serde::Serialize, serde::Deserialize)]
661                #[serde(rename_all = "snake_case")]
662                #[derive(Clone, PartialEq, ::prost::Oneof)]
663                pub enum Value {
664                    #[prost(message, tag = "1")]
665                    Field(
666                        super::super::super::super::super::super::common::ObservationField,
667                    ),
668                    #[prost(message, tag = "2")]
669                    Regex(::prost::alloc::string::String),
670                    #[prost(enumeration = "super::FieldDataType", tag = "3")]
671                    FieldType(i32),
672                }
673            }
674            #[derive(serde::Serialize, serde::Deserialize)]
675            #[serde(rename_all = "snake_case")]
676            #[derive(Clone, PartialEq, ::prost::Message)]
677            pub struct Property {
678                #[prost(message, optional, tag = "1")]
679                pub id: ::core::option::Option<super::super::super::super::super::Uuid>,
680                #[prost(message, optional, tag = "2")]
681                pub definition: ::core::option::Option<PropertyDefinition>,
682            }
683            #[derive(serde::Serialize, serde::Deserialize)]
684            #[serde(rename_all = "snake_case")]
685            #[derive(Clone, PartialEq, ::prost::Message)]
686            pub struct PropertyDefinition {
687                #[prost(oneof = "property_definition::Value", tags = "1, 2")]
688                pub value: ::core::option::Option<property_definition::Value>,
689            }
690            /// Nested message and enum types in `PropertyDefinition`.
691            pub mod property_definition {
692                #[derive(serde::Serialize, serde::Deserialize)]
693                #[serde(rename_all = "snake_case")]
694                #[derive(Clone, PartialEq, ::prost::Oneof)]
695                pub enum Value {
696                    #[prost(message, tag = "1")]
697                    Thresholds(super::PropertyThresholds),
698                    #[prost(
699                        enumeration = "super::super::super::super::common::TextAlignment",
700                        tag = "2"
701                    )]
702                    Alignment(i32),
703                }
704            }
705            #[derive(serde::Serialize, serde::Deserialize)]
706            #[serde(rename_all = "snake_case")]
707            #[derive(Clone, PartialEq, ::prost::Message)]
708            pub struct PropertyThresholds {
709                #[prost(message, repeated, tag = "1")]
710                pub values: ::prost::alloc::vec::Vec<
711                    super::super::super::common::Threshold,
712                >,
713                #[prost(
714                    enumeration = "super::super::super::common::ThresholdType",
715                    tag = "2"
716                )]
717                pub r#type: i32,
718                #[prost(message, optional, tag = "3")]
719                pub min: ::core::option::Option<f64>,
720                #[prost(message, optional, tag = "4")]
721                pub max: ::core::option::Option<f64>,
722            }
723            #[derive(serde::Serialize, serde::Deserialize)]
724            #[serde(rename_all = "snake_case")]
725            #[derive(
726                Clone,
727                Copy,
728                Debug,
729                PartialEq,
730                Eq,
731                Hash,
732                PartialOrd,
733                Ord,
734                ::prost::Enumeration
735            )]
736            #[repr(i32)]
737            pub enum FieldDataType {
738                Unspecified = 0,
739                Number = 1,
740                String = 2,
741                Boolean = 3,
742                Timestamp = 4,
743                Object = 5,
744                Array = 6,
745                Regex = 7,
746                Union = 8,
747                Enum = 9,
748            }
749            impl FieldDataType {
750                /// String value of the enum field names used in the ProtoBuf definition.
751                ///
752                /// The values are not transformed in any way and thus are considered stable
753                /// (if the ProtoBuf definition does not change) and safe for programmatic use.
754                pub fn as_str_name(&self) -> &'static str {
755                    match self {
756                        Self::Unspecified => "FIELD_DATA_TYPE_UNSPECIFIED",
757                        Self::Number => "FIELD_DATA_TYPE_NUMBER",
758                        Self::String => "FIELD_DATA_TYPE_STRING",
759                        Self::Boolean => "FIELD_DATA_TYPE_BOOLEAN",
760                        Self::Timestamp => "FIELD_DATA_TYPE_TIMESTAMP",
761                        Self::Object => "FIELD_DATA_TYPE_OBJECT",
762                        Self::Array => "FIELD_DATA_TYPE_ARRAY",
763                        Self::Regex => "FIELD_DATA_TYPE_REGEX",
764                        Self::Union => "FIELD_DATA_TYPE_UNION",
765                        Self::Enum => "FIELD_DATA_TYPE_ENUM",
766                    }
767                }
768                /// Creates an enum from field names used in the ProtoBuf definition.
769                pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
770                    match value {
771                        "FIELD_DATA_TYPE_UNSPECIFIED" => Some(Self::Unspecified),
772                        "FIELD_DATA_TYPE_NUMBER" => Some(Self::Number),
773                        "FIELD_DATA_TYPE_STRING" => Some(Self::String),
774                        "FIELD_DATA_TYPE_BOOLEAN" => Some(Self::Boolean),
775                        "FIELD_DATA_TYPE_TIMESTAMP" => Some(Self::Timestamp),
776                        "FIELD_DATA_TYPE_OBJECT" => Some(Self::Object),
777                        "FIELD_DATA_TYPE_ARRAY" => Some(Self::Array),
778                        "FIELD_DATA_TYPE_REGEX" => Some(Self::Regex),
779                        "FIELD_DATA_TYPE_UNION" => Some(Self::Union),
780                        "FIELD_DATA_TYPE_ENUM" => Some(Self::Enum),
781                        _ => None,
782                    }
783                }
784            }
785        }
786        #[derive(serde::Serialize, serde::Deserialize)]
787        #[serde(rename_all = "snake_case")]
788        #[derive(Clone, PartialEq, ::prost::Message)]
789        pub struct TimeSeriesLines {
790            #[prost(message, optional, tag = "1")]
791            pub temporal_field: ::core::option::Option<
792                super::super::super::super::common::ObservationField,
793            >,
794            #[prost(message, repeated, tag = "2")]
795            pub value_fields: ::prost::alloc::vec::Vec<
796                super::super::super::super::common::ObservationField,
797            >,
798            #[prost(message, repeated, tag = "3")]
799            pub category_fields: ::prost::alloc::vec::Vec<
800                super::super::super::super::common::ObservationField,
801            >,
802            #[prost(message, optional, tag = "4")]
803            pub legend: ::core::option::Option<super::super::common::Legend>,
804            #[prost(message, optional, tag = "5")]
805            pub tooltip: ::core::option::Option<TimeSeriesTooltip>,
806            #[prost(enumeration = "time_series_lines::StackedLine", tag = "6")]
807            pub stacked_line: i32,
808            #[prost(message, optional, tag = "7")]
809            pub connect_nulls: ::core::option::Option<bool>,
810            #[prost(message, optional, tag = "8")]
811            pub series_name_template: ::core::option::Option<
812                ::prost::alloc::string::String,
813            >,
814            #[prost(message, optional, tag = "9")]
815            pub series_count_limit: ::core::option::Option<i64>,
816            #[prost(enumeration = "super::super::common::Unit", tag = "10")]
817            pub unit: i32,
818            #[prost(message, optional, tag = "11")]
819            pub custom_unit: ::core::option::Option<::prost::alloc::string::String>,
820            #[prost(enumeration = "super::super::common::ScaleType", tag = "12")]
821            pub scale_type: i32,
822            #[prost(message, optional, tag = "13")]
823            pub color_scheme: ::core::option::Option<::prost::alloc::string::String>,
824            #[prost(message, optional, tag = "14")]
825            pub hash_colors: ::core::option::Option<bool>,
826            #[prost(message, optional, tag = "15")]
827            pub decimal_precision: ::core::option::Option<i32>,
828            #[prost(message, optional, tag = "17")]
829            pub allow_abbreviation: ::core::option::Option<bool>,
830            #[prost(message, optional, tag = "18")]
831            pub y_axis_min: ::core::option::Option<f32>,
832            #[prost(message, optional, tag = "19")]
833            pub y_axis_max: ::core::option::Option<f32>,
834        }
835        /// Nested message and enum types in `TimeSeriesLines`.
836        pub mod time_series_lines {
837            #[derive(serde::Serialize, serde::Deserialize)]
838            #[serde(rename_all = "snake_case")]
839            #[derive(
840                Clone,
841                Copy,
842                Debug,
843                PartialEq,
844                Eq,
845                Hash,
846                PartialOrd,
847                Ord,
848                ::prost::Enumeration
849            )]
850            #[repr(i32)]
851            pub enum StackedLine {
852                Unspecified = 0,
853                Absolute = 1,
854                Relative = 2,
855            }
856            impl StackedLine {
857                /// String value of the enum field names used in the ProtoBuf definition.
858                ///
859                /// The values are not transformed in any way and thus are considered stable
860                /// (if the ProtoBuf definition does not change) and safe for programmatic use.
861                pub fn as_str_name(&self) -> &'static str {
862                    match self {
863                        Self::Unspecified => "STACKED_LINE_UNSPECIFIED",
864                        Self::Absolute => "STACKED_LINE_ABSOLUTE",
865                        Self::Relative => "STACKED_LINE_RELATIVE",
866                    }
867                }
868                /// Creates an enum from field names used in the ProtoBuf definition.
869                pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
870                    match value {
871                        "STACKED_LINE_UNSPECIFIED" => Some(Self::Unspecified),
872                        "STACKED_LINE_ABSOLUTE" => Some(Self::Absolute),
873                        "STACKED_LINE_RELATIVE" => Some(Self::Relative),
874                        _ => None,
875                    }
876                }
877            }
878        }
879        #[derive(serde::Serialize, serde::Deserialize)]
880        #[serde(rename_all = "snake_case")]
881        #[derive(Clone, PartialEq, ::prost::Message)]
882        pub struct TimeSeriesBars {
883            #[prost(message, optional, tag = "1")]
884            pub temporal_field: ::core::option::Option<
885                super::super::super::super::common::ObservationField,
886            >,
887            #[prost(message, repeated, tag = "2")]
888            pub value_fields: ::prost::alloc::vec::Vec<
889                super::super::super::super::common::ObservationField,
890            >,
891            #[prost(message, repeated, tag = "3")]
892            pub category_fields: ::prost::alloc::vec::Vec<
893                super::super::super::super::common::ObservationField,
894            >,
895            #[prost(message, optional, tag = "4")]
896            pub legend: ::core::option::Option<super::super::common::Legend>,
897            #[prost(message, optional, tag = "5")]
898            pub tooltip: ::core::option::Option<TimeSeriesTooltip>,
899            #[prost(message, optional, tag = "6")]
900            pub series_name_template: ::core::option::Option<
901                ::prost::alloc::string::String,
902            >,
903            #[prost(message, optional, tag = "7")]
904            pub max_slices_per_bar: ::core::option::Option<i32>,
905            #[prost(enumeration = "super::super::common::Unit", tag = "8")]
906            pub unit: i32,
907            #[prost(message, optional, tag = "9")]
908            pub custom_unit: ::core::option::Option<::prost::alloc::string::String>,
909            #[prost(enumeration = "super::super::common::ScaleType", tag = "10")]
910            pub scale_type: i32,
911            #[prost(message, optional, tag = "11")]
912            pub color_scheme: ::core::option::Option<::prost::alloc::string::String>,
913            #[prost(message, optional, tag = "12")]
914            pub hash_colors: ::core::option::Option<bool>,
915            #[prost(message, optional, tag = "13")]
916            pub decimal_precision: ::core::option::Option<i32>,
917            #[prost(message, optional, tag = "14")]
918            pub allow_abbreviation: ::core::option::Option<bool>,
919            #[prost(message, optional, tag = "15")]
920            pub y_axis_min: ::core::option::Option<f32>,
921            #[prost(message, optional, tag = "16")]
922            pub y_axis_max: ::core::option::Option<f32>,
923            #[prost(enumeration = "BarValueDisplay", tag = "17")]
924            pub bar_value_display: i32,
925            #[prost(enumeration = "super::super::common::SortByType", tag = "18")]
926            pub sort_by: i32,
927        }
928        #[derive(serde::Serialize, serde::Deserialize)]
929        #[serde(rename_all = "snake_case")]
930        #[derive(Clone, PartialEq, ::prost::Message)]
931        pub struct Stat {
932            #[prost(message, optional, tag = "1")]
933            pub value_field: ::core::option::Option<
934                super::super::super::super::common::ObservationField,
935            >,
936            #[prost(message, repeated, tag = "2")]
937            pub category_fields: ::prost::alloc::vec::Vec<
938                super::super::super::super::common::ObservationField,
939            >,
940            #[prost(message, optional, tag = "3")]
941            pub min: ::core::option::Option<f64>,
942            #[prost(message, optional, tag = "4")]
943            pub max: ::core::option::Option<f64>,
944            #[prost(enumeration = "super::super::common::Unit", tag = "5")]
945            pub unit: i32,
946            #[prost(message, optional, tag = "6")]
947            pub custom_unit: ::core::option::Option<::prost::alloc::string::String>,
948            #[prost(enumeration = "super::super::common::ThresholdType", tag = "7")]
949            pub threshold_type: i32,
950            #[prost(message, repeated, tag = "8")]
951            pub thresholds: ::prost::alloc::vec::Vec<super::super::common::Threshold>,
952            #[prost(message, optional, tag = "9")]
953            pub legend: ::core::option::Option<super::super::common::Legend>,
954            #[prost(enumeration = "super::super::common::LegendBy", tag = "10")]
955            pub legend_by: i32,
956            #[prost(message, optional, tag = "11")]
957            pub decimal_precision: ::core::option::Option<i32>,
958            #[prost(message, optional, tag = "12")]
959            pub allow_abbreviation: ::core::option::Option<bool>,
960            #[prost(message, optional, tag = "13")]
961            pub display_series_name: ::core::option::Option<bool>,
962            #[prost(enumeration = "super::super::common::ThresholdBy", tag = "14")]
963            pub threshold_by: i32,
964        }
965        #[derive(serde::Serialize, serde::Deserialize)]
966        #[serde(rename_all = "snake_case")]
967        #[derive(Clone, PartialEq, ::prost::Message)]
968        pub struct Gauge {
969            #[prost(message, optional, tag = "1")]
970            pub value_field: ::core::option::Option<
971                super::super::super::super::common::ObservationField,
972            >,
973            #[prost(message, repeated, tag = "2")]
974            pub category_fields: ::prost::alloc::vec::Vec<
975                super::super::super::super::common::ObservationField,
976            >,
977            #[prost(message, optional, tag = "3")]
978            pub min: ::core::option::Option<f64>,
979            #[prost(message, optional, tag = "4")]
980            pub max: ::core::option::Option<f64>,
981            #[prost(enumeration = "super::super::common::Unit", tag = "5")]
982            pub unit: i32,
983            #[prost(message, optional, tag = "6")]
984            pub custom_unit: ::core::option::Option<::prost::alloc::string::String>,
985            #[prost(enumeration = "super::super::common::ThresholdType", tag = "7")]
986            pub threshold_type: i32,
987            #[prost(message, repeated, tag = "8")]
988            pub thresholds: ::prost::alloc::vec::Vec<super::super::common::Threshold>,
989            #[prost(message, optional, tag = "9")]
990            pub legend: ::core::option::Option<super::super::common::Legend>,
991            #[prost(enumeration = "super::super::common::LegendBy", tag = "10")]
992            pub legend_by: i32,
993            #[prost(message, optional, tag = "11")]
994            pub decimal_precision: ::core::option::Option<i32>,
995            #[prost(message, optional, tag = "12")]
996            pub allow_abbreviation: ::core::option::Option<bool>,
997            #[prost(message, optional, tag = "13")]
998            pub show_inner_arc: ::core::option::Option<bool>,
999            #[prost(message, optional, tag = "14")]
1000            pub show_outer_arc: ::core::option::Option<bool>,
1001            #[prost(message, optional, tag = "15")]
1002            pub display_series_name: ::core::option::Option<bool>,
1003        }
1004        #[derive(serde::Serialize, serde::Deserialize)]
1005        #[serde(rename_all = "snake_case")]
1006        #[derive(Clone, PartialEq, ::prost::Message)]
1007        pub struct HexagonBins {
1008            #[prost(message, optional, tag = "1")]
1009            pub value_field: ::core::option::Option<
1010                super::super::super::super::common::ObservationField,
1011            >,
1012            #[prost(message, repeated, tag = "2")]
1013            pub category_fields: ::prost::alloc::vec::Vec<
1014                super::super::super::super::common::ObservationField,
1015            >,
1016            #[prost(message, optional, tag = "3")]
1017            pub min: ::core::option::Option<f64>,
1018            #[prost(message, optional, tag = "4")]
1019            pub max: ::core::option::Option<f64>,
1020            #[prost(enumeration = "super::super::common::Unit", tag = "5")]
1021            pub unit: i32,
1022            #[prost(message, optional, tag = "6")]
1023            pub custom_unit: ::core::option::Option<::prost::alloc::string::String>,
1024            #[prost(enumeration = "super::super::common::ThresholdType", tag = "7")]
1025            pub threshold_type: i32,
1026            #[prost(message, repeated, tag = "8")]
1027            pub thresholds: ::prost::alloc::vec::Vec<super::super::common::Threshold>,
1028            #[prost(message, optional, tag = "9")]
1029            pub legend: ::core::option::Option<super::super::common::Legend>,
1030            #[prost(enumeration = "super::super::common::LegendBy", tag = "10")]
1031            pub legend_by: i32,
1032            #[prost(message, optional, tag = "11")]
1033            pub decimal_precision: ::core::option::Option<i32>,
1034            #[prost(message, optional, tag = "12")]
1035            pub allow_abbreviation: ::core::option::Option<bool>,
1036        }
1037        #[derive(serde::Serialize, serde::Deserialize)]
1038        #[serde(rename_all = "snake_case")]
1039        #[derive(Clone, PartialEq, ::prost::Message)]
1040        pub struct PieChart {
1041            #[prost(message, optional, tag = "1")]
1042            pub value_field: ::core::option::Option<
1043                super::super::super::super::common::ObservationField,
1044            >,
1045            #[prost(message, repeated, tag = "2")]
1046            pub category_fields: ::prost::alloc::vec::Vec<
1047                super::super::super::super::common::ObservationField,
1048            >,
1049            #[prost(message, repeated, tag = "3")]
1050            pub sub_category_fields: ::prost::alloc::vec::Vec<
1051                super::super::super::super::common::ObservationField,
1052            >,
1053            #[prost(message, optional, tag = "4")]
1054            pub max_slices_per_chart: ::core::option::Option<i32>,
1055            #[prost(message, optional, tag = "5")]
1056            pub min_slice_percentage: ::core::option::Option<i32>,
1057            #[prost(message, optional, tag = "6")]
1058            pub max_slices_per_stack: ::core::option::Option<i32>,
1059            #[prost(message, optional, tag = "7")]
1060            pub stack_name_template: ::core::option::Option<
1061                ::prost::alloc::string::String,
1062            >,
1063            #[prost(message, optional, tag = "8")]
1064            pub label_definition: ::core::option::Option<pie_chart::LabelDefinition>,
1065            #[prost(message, optional, tag = "9")]
1066            pub group_name_template: ::core::option::Option<
1067                ::prost::alloc::string::String,
1068            >,
1069            #[prost(enumeration = "super::super::common::Unit", tag = "10")]
1070            pub unit: i32,
1071            #[prost(message, optional, tag = "11")]
1072            pub custom_unit: ::core::option::Option<::prost::alloc::string::String>,
1073            #[prost(message, optional, tag = "12")]
1074            pub color_scheme: ::core::option::Option<::prost::alloc::string::String>,
1075            #[prost(message, optional, tag = "13")]
1076            pub hash_colors: ::core::option::Option<bool>,
1077            #[prost(message, optional, tag = "14")]
1078            pub decimal_precision: ::core::option::Option<i32>,
1079            #[prost(message, optional, tag = "15")]
1080            pub allow_abbreviation: ::core::option::Option<bool>,
1081            #[prost(message, optional, tag = "16")]
1082            pub legend: ::core::option::Option<super::super::common::Legend>,
1083            #[prost(message, optional, tag = "17")]
1084            pub show_total: ::core::option::Option<bool>,
1085        }
1086        /// Nested message and enum types in `PieChart`.
1087        pub mod pie_chart {
1088            #[derive(serde::Serialize, serde::Deserialize)]
1089            #[serde(rename_all = "snake_case")]
1090            #[derive(Clone, Copy, PartialEq, ::prost::Message)]
1091            pub struct LabelDefinition {
1092                #[prost(enumeration = "LabelSource", tag = "1")]
1093                pub label_source: i32,
1094                #[prost(message, optional, tag = "2")]
1095                pub is_visible: ::core::option::Option<bool>,
1096                #[prost(message, optional, tag = "3")]
1097                pub show_name: ::core::option::Option<bool>,
1098                #[prost(message, optional, tag = "4")]
1099                pub show_value: ::core::option::Option<bool>,
1100                #[prost(message, optional, tag = "5")]
1101                pub show_percentage: ::core::option::Option<bool>,
1102            }
1103            #[derive(serde::Serialize, serde::Deserialize)]
1104            #[serde(rename_all = "snake_case")]
1105            #[derive(
1106                Clone,
1107                Copy,
1108                Debug,
1109                PartialEq,
1110                Eq,
1111                Hash,
1112                PartialOrd,
1113                Ord,
1114                ::prost::Enumeration
1115            )]
1116            #[repr(i32)]
1117            pub enum LabelSource {
1118                Unspecified = 0,
1119                Inner = 1,
1120                Stack = 2,
1121            }
1122            impl LabelSource {
1123                /// String value of the enum field names used in the ProtoBuf definition.
1124                ///
1125                /// The values are not transformed in any way and thus are considered stable
1126                /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1127                pub fn as_str_name(&self) -> &'static str {
1128                    match self {
1129                        Self::Unspecified => "LABEL_SOURCE_UNSPECIFIED",
1130                        Self::Inner => "LABEL_SOURCE_INNER",
1131                        Self::Stack => "LABEL_SOURCE_STACK",
1132                    }
1133                }
1134                /// Creates an enum from field names used in the ProtoBuf definition.
1135                pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1136                    match value {
1137                        "LABEL_SOURCE_UNSPECIFIED" => Some(Self::Unspecified),
1138                        "LABEL_SOURCE_INNER" => Some(Self::Inner),
1139                        "LABEL_SOURCE_STACK" => Some(Self::Stack),
1140                        _ => None,
1141                    }
1142                }
1143            }
1144        }
1145        #[derive(serde::Serialize, serde::Deserialize)]
1146        #[serde(rename_all = "snake_case")]
1147        #[derive(Clone, PartialEq, ::prost::Message)]
1148        pub struct HorizontalBars {
1149            #[prost(message, optional, tag = "1")]
1150            pub value_field: ::core::option::Option<
1151                super::super::super::super::common::ObservationField,
1152            >,
1153            #[prost(message, repeated, tag = "2")]
1154            pub category_fields: ::prost::alloc::vec::Vec<
1155                super::super::super::super::common::ObservationField,
1156            >,
1157            #[prost(message, repeated, tag = "3")]
1158            pub sub_category_fields: ::prost::alloc::vec::Vec<
1159                super::super::super::super::common::ObservationField,
1160            >,
1161            #[prost(message, optional, tag = "4")]
1162            pub max_bars_per_chart: ::core::option::Option<i32>,
1163            #[prost(message, optional, tag = "5")]
1164            pub max_slices_per_bar: ::core::option::Option<i32>,
1165            #[prost(message, optional, tag = "6")]
1166            pub stack_name_template: ::core::option::Option<
1167                ::prost::alloc::string::String,
1168            >,
1169            #[prost(enumeration = "super::super::common::ScaleType", tag = "7")]
1170            pub scale_type: i32,
1171            #[prost(message, optional, tag = "8")]
1172            pub colors_by: ::core::option::Option<super::super::common::ColorsBy>,
1173            #[prost(message, optional, tag = "9")]
1174            pub color_scheme: ::core::option::Option<::prost::alloc::string::String>,
1175            #[prost(message, optional, tag = "10")]
1176            pub hash_colors: ::core::option::Option<bool>,
1177            #[prost(enumeration = "super::super::common::Unit", tag = "11")]
1178            pub unit: i32,
1179            #[prost(message, optional, tag = "12")]
1180            pub custom_unit: ::core::option::Option<::prost::alloc::string::String>,
1181            #[prost(message, optional, tag = "13")]
1182            pub display_on_bar: ::core::option::Option<bool>,
1183            #[prost(message, optional, tag = "14")]
1184            pub decimal_precision: ::core::option::Option<i32>,
1185            #[prost(message, optional, tag = "15")]
1186            pub allow_abbreviation: ::core::option::Option<bool>,
1187            #[prost(message, optional, tag = "16")]
1188            pub y_axis_min: ::core::option::Option<f32>,
1189            #[prost(message, optional, tag = "17")]
1190            pub y_axis_max: ::core::option::Option<f32>,
1191            #[prost(message, optional, tag = "18")]
1192            pub legend: ::core::option::Option<super::super::common::Legend>,
1193            #[prost(enumeration = "super::super::common::SortByType", tag = "19")]
1194            pub sort_by: i32,
1195            #[prost(message, optional, tag = "20")]
1196            pub group_name_template: ::core::option::Option<
1197                ::prost::alloc::string::String,
1198            >,
1199            #[prost(enumeration = "horizontal_bars::YAxisViewBy", tag = "21")]
1200            pub y_axis_view_by: i32,
1201        }
1202        /// Nested message and enum types in `HorizontalBars`.
1203        pub mod horizontal_bars {
1204            #[derive(serde::Serialize, serde::Deserialize)]
1205            #[serde(rename_all = "snake_case")]
1206            #[derive(
1207                Clone,
1208                Copy,
1209                Debug,
1210                PartialEq,
1211                Eq,
1212                Hash,
1213                PartialOrd,
1214                Ord,
1215                ::prost::Enumeration
1216            )]
1217            #[repr(i32)]
1218            pub enum YAxisViewBy {
1219                Unspecified = 0,
1220                Category = 1,
1221                Value = 2,
1222            }
1223            impl YAxisViewBy {
1224                /// String value of the enum field names used in the ProtoBuf definition.
1225                ///
1226                /// The values are not transformed in any way and thus are considered stable
1227                /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1228                pub fn as_str_name(&self) -> &'static str {
1229                    match self {
1230                        Self::Unspecified => "Y_AXIS_VIEW_BY_UNSPECIFIED",
1231                        Self::Category => "Y_AXIS_VIEW_BY_CATEGORY",
1232                        Self::Value => "Y_AXIS_VIEW_BY_VALUE",
1233                    }
1234                }
1235                /// Creates an enum from field names used in the ProtoBuf definition.
1236                pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1237                    match value {
1238                        "Y_AXIS_VIEW_BY_UNSPECIFIED" => Some(Self::Unspecified),
1239                        "Y_AXIS_VIEW_BY_CATEGORY" => Some(Self::Category),
1240                        "Y_AXIS_VIEW_BY_VALUE" => Some(Self::Value),
1241                        _ => None,
1242                    }
1243                }
1244            }
1245        }
1246        #[derive(serde::Serialize, serde::Deserialize)]
1247        #[serde(rename_all = "snake_case")]
1248        #[derive(Clone, PartialEq, ::prost::Message)]
1249        pub struct VerticalBars {
1250            #[prost(message, optional, tag = "1")]
1251            pub value_field: ::core::option::Option<
1252                super::super::super::super::common::ObservationField,
1253            >,
1254            #[prost(message, repeated, tag = "2")]
1255            pub category_fields: ::prost::alloc::vec::Vec<
1256                super::super::super::super::common::ObservationField,
1257            >,
1258            #[prost(message, repeated, tag = "3")]
1259            pub sub_category_fields: ::prost::alloc::vec::Vec<
1260                super::super::super::super::common::ObservationField,
1261            >,
1262            #[prost(message, optional, tag = "4")]
1263            pub max_bars_per_chart: ::core::option::Option<i32>,
1264            #[prost(message, optional, tag = "5")]
1265            pub max_slices_per_bar: ::core::option::Option<i32>,
1266            #[prost(message, optional, tag = "6")]
1267            pub stack_name_template: ::core::option::Option<
1268                ::prost::alloc::string::String,
1269            >,
1270            #[prost(enumeration = "super::super::common::ScaleType", tag = "7")]
1271            pub scale_type: i32,
1272            #[prost(message, optional, tag = "8")]
1273            pub colors_by: ::core::option::Option<super::super::common::ColorsBy>,
1274            #[prost(message, optional, tag = "9")]
1275            pub color_scheme: ::core::option::Option<::prost::alloc::string::String>,
1276            #[prost(message, optional, tag = "10")]
1277            pub hash_colors: ::core::option::Option<bool>,
1278            #[prost(enumeration = "super::super::common::Unit", tag = "11")]
1279            pub unit: i32,
1280            #[prost(message, optional, tag = "12")]
1281            pub custom_unit: ::core::option::Option<::prost::alloc::string::String>,
1282            #[prost(enumeration = "BarValueDisplay", tag = "13")]
1283            pub bar_value_display: i32,
1284            #[prost(message, optional, tag = "14")]
1285            pub decimal_precision: ::core::option::Option<i32>,
1286            #[prost(message, optional, tag = "15")]
1287            pub allow_abbreviation: ::core::option::Option<bool>,
1288            #[prost(message, optional, tag = "16")]
1289            pub y_axis_min: ::core::option::Option<f32>,
1290            #[prost(message, optional, tag = "17")]
1291            pub y_axis_max: ::core::option::Option<f32>,
1292            #[prost(message, optional, tag = "18")]
1293            pub legend: ::core::option::Option<super::super::common::Legend>,
1294            #[prost(enumeration = "super::super::common::SortByType", tag = "19")]
1295            pub sort_by: i32,
1296            #[prost(message, optional, tag = "20")]
1297            pub group_name_template: ::core::option::Option<
1298                ::prost::alloc::string::String,
1299            >,
1300        }
1301        #[derive(serde::Serialize, serde::Deserialize)]
1302        #[serde(rename_all = "snake_case")]
1303        #[derive(Clone, PartialEq, ::prost::Message)]
1304        pub struct Heatmap {
1305            #[prost(message, optional, tag = "1")]
1306            pub value_field: ::core::option::Option<
1307                super::super::super::super::common::ObservationField,
1308            >,
1309            #[prost(message, repeated, tag = "2")]
1310            pub x_axis_fields: ::prost::alloc::vec::Vec<
1311                super::super::super::super::common::ObservationField,
1312            >,
1313            #[prost(message, repeated, tag = "3")]
1314            pub y_axis_fields: ::prost::alloc::vec::Vec<
1315                super::super::super::super::common::ObservationField,
1316            >,
1317            #[prost(message, optional, tag = "4")]
1318            pub show_numbers: ::core::option::Option<bool>,
1319            #[prost(enumeration = "super::super::common::ScaleType", tag = "5")]
1320            pub scale_type: i32,
1321            #[prost(message, optional, tag = "7")]
1322            pub allow_abbreviation: ::core::option::Option<bool>,
1323            #[prost(enumeration = "super::super::common::Unit", tag = "8")]
1324            pub unit: i32,
1325            #[prost(message, optional, tag = "9")]
1326            pub custom_unit: ::core::option::Option<::prost::alloc::string::String>,
1327            #[prost(message, optional, tag = "10")]
1328            pub decimal_precision: ::core::option::Option<i32>,
1329            #[prost(message, optional, tag = "11")]
1330            pub color_axis_min: ::core::option::Option<f32>,
1331            #[prost(message, optional, tag = "12")]
1332            pub color_axis_max: ::core::option::Option<f32>,
1333            #[prost(message, optional, tag = "13")]
1334            pub tooltip: ::core::option::Option<HeatmapTooltip>,
1335            #[prost(oneof = "heatmap::ColorConfig", tags = "6")]
1336            pub color_config: ::core::option::Option<heatmap::ColorConfig>,
1337        }
1338        /// Nested message and enum types in `Heatmap`.
1339        pub mod heatmap {
1340            #[derive(serde::Serialize, serde::Deserialize)]
1341            #[serde(rename_all = "snake_case")]
1342            #[derive(Clone, Copy, PartialEq, ::prost::Oneof)]
1343            pub enum ColorConfig {
1344                #[prost(enumeration = "super::HeatmapColorPreset", tag = "6")]
1345                Preset(i32),
1346            }
1347        }
1348        #[derive(serde::Serialize, serde::Deserialize)]
1349        #[serde(rename_all = "snake_case")]
1350        #[derive(Clone, PartialEq, ::prost::Message)]
1351        pub struct HeatmapTooltip {
1352            #[prost(message, optional, tag = "1")]
1353            pub message_template: ::core::option::Option<::prost::alloc::string::String>,
1354            #[prost(message, repeated, tag = "2")]
1355            pub labels: ::prost::alloc::vec::Vec<
1356                super::super::super::super::common::ObservationField,
1357            >,
1358        }
1359        #[derive(serde::Serialize, serde::Deserialize)]
1360        #[serde(rename_all = "snake_case")]
1361        #[derive(Clone, Copy, PartialEq, ::prost::Message)]
1362        pub struct TimeSeriesTooltip {
1363            #[prost(message, optional, tag = "1")]
1364            pub show_all_series: ::core::option::Option<bool>,
1365            #[prost(message, optional, tag = "2")]
1366            pub show_labels: ::core::option::Option<bool>,
1367        }
1368        #[derive(serde::Serialize, serde::Deserialize)]
1369        #[serde(rename_all = "snake_case")]
1370        #[derive(
1371            Clone,
1372            Copy,
1373            Debug,
1374            PartialEq,
1375            Eq,
1376            Hash,
1377            PartialOrd,
1378            Ord,
1379            ::prost::Enumeration
1380        )]
1381        #[repr(i32)]
1382        pub enum HeatmapColorPreset {
1383            Unspecified = 0,
1384            Blue = 1,
1385            Green = 2,
1386            Red = 3,
1387            Threshold = 4,
1388            BlueReversed = 5,
1389            GreenReversed = 6,
1390            RedReversed = 7,
1391            ThresholdReversed = 8,
1392        }
1393        impl HeatmapColorPreset {
1394            /// String value of the enum field names used in the ProtoBuf definition.
1395            ///
1396            /// The values are not transformed in any way and thus are considered stable
1397            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1398            pub fn as_str_name(&self) -> &'static str {
1399                match self {
1400                    Self::Unspecified => "HEATMAP_COLOR_PRESET_UNSPECIFIED",
1401                    Self::Blue => "HEATMAP_COLOR_PRESET_BLUE",
1402                    Self::Green => "HEATMAP_COLOR_PRESET_GREEN",
1403                    Self::Red => "HEATMAP_COLOR_PRESET_RED",
1404                    Self::Threshold => "HEATMAP_COLOR_PRESET_THRESHOLD",
1405                    Self::BlueReversed => "HEATMAP_COLOR_PRESET_BLUE_REVERSED",
1406                    Self::GreenReversed => "HEATMAP_COLOR_PRESET_GREEN_REVERSED",
1407                    Self::RedReversed => "HEATMAP_COLOR_PRESET_RED_REVERSED",
1408                    Self::ThresholdReversed => "HEATMAP_COLOR_PRESET_THRESHOLD_REVERSED",
1409                }
1410            }
1411            /// Creates an enum from field names used in the ProtoBuf definition.
1412            pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1413                match value {
1414                    "HEATMAP_COLOR_PRESET_UNSPECIFIED" => Some(Self::Unspecified),
1415                    "HEATMAP_COLOR_PRESET_BLUE" => Some(Self::Blue),
1416                    "HEATMAP_COLOR_PRESET_GREEN" => Some(Self::Green),
1417                    "HEATMAP_COLOR_PRESET_RED" => Some(Self::Red),
1418                    "HEATMAP_COLOR_PRESET_THRESHOLD" => Some(Self::Threshold),
1419                    "HEATMAP_COLOR_PRESET_BLUE_REVERSED" => Some(Self::BlueReversed),
1420                    "HEATMAP_COLOR_PRESET_GREEN_REVERSED" => Some(Self::GreenReversed),
1421                    "HEATMAP_COLOR_PRESET_RED_REVERSED" => Some(Self::RedReversed),
1422                    "HEATMAP_COLOR_PRESET_THRESHOLD_REVERSED" => {
1423                        Some(Self::ThresholdReversed)
1424                    }
1425                    _ => None,
1426                }
1427            }
1428        }
1429        #[derive(serde::Serialize, serde::Deserialize)]
1430        #[serde(rename_all = "snake_case")]
1431        #[derive(
1432            Clone,
1433            Copy,
1434            Debug,
1435            PartialEq,
1436            Eq,
1437            Hash,
1438            PartialOrd,
1439            Ord,
1440            ::prost::Enumeration
1441        )]
1442        #[repr(i32)]
1443        pub enum BarValueDisplay {
1444            Unspecified = 0,
1445            Top = 1,
1446            Inside = 2,
1447            Both = 3,
1448        }
1449        impl BarValueDisplay {
1450            /// String value of the enum field names used in the ProtoBuf definition.
1451            ///
1452            /// The values are not transformed in any way and thus are considered stable
1453            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1454            pub fn as_str_name(&self) -> &'static str {
1455                match self {
1456                    Self::Unspecified => "BAR_VALUE_DISPLAY_UNSPECIFIED",
1457                    Self::Top => "BAR_VALUE_DISPLAY_TOP",
1458                    Self::Inside => "BAR_VALUE_DISPLAY_INSIDE",
1459                    Self::Both => "BAR_VALUE_DISPLAY_BOTH",
1460                }
1461            }
1462            /// Creates an enum from field names used in the ProtoBuf definition.
1463            pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1464                match value {
1465                    "BAR_VALUE_DISPLAY_UNSPECIFIED" => Some(Self::Unspecified),
1466                    "BAR_VALUE_DISPLAY_TOP" => Some(Self::Top),
1467                    "BAR_VALUE_DISPLAY_INSIDE" => Some(Self::Inside),
1468                    "BAR_VALUE_DISPLAY_BOTH" => Some(Self::Both),
1469                    _ => None,
1470                }
1471            }
1472        }
1473        #[derive(serde::Serialize, serde::Deserialize)]
1474        #[serde(rename_all = "snake_case")]
1475        #[derive(Clone, PartialEq, ::prost::Oneof)]
1476        pub enum Value {
1477            #[prost(message, tag = "1")]
1478            Table(Table),
1479            #[prost(message, tag = "2")]
1480            TimeSeriesLines(TimeSeriesLines),
1481            #[prost(message, tag = "3")]
1482            TimeSeriesBars(TimeSeriesBars),
1483            #[prost(message, tag = "4")]
1484            Stat(Stat),
1485            #[prost(message, tag = "5")]
1486            Gauge(Gauge),
1487            #[prost(message, tag = "6")]
1488            HexagonBins(HexagonBins),
1489            #[prost(message, tag = "7")]
1490            PieChart(PieChart),
1491            #[prost(message, tag = "8")]
1492            HorizontalBars(HorizontalBars),
1493            #[prost(message, tag = "9")]
1494            VerticalBars(VerticalBars),
1495            #[prost(message, tag = "10")]
1496            Heatmap(Heatmap),
1497        }
1498    }
1499    #[derive(serde::Serialize, serde::Deserialize)]
1500    #[serde(rename_all = "snake_case")]
1501    #[derive(
1502        Clone,
1503        Copy,
1504        Debug,
1505        PartialEq,
1506        Eq,
1507        Hash,
1508        PartialOrd,
1509        Ord,
1510        ::prost::Enumeration
1511    )]
1512    #[repr(i32)]
1513    pub enum Interpretation {
1514        Unspecified = 0,
1515        RawDataTable = 1,
1516        TrendOverTimeLine = 2,
1517        SingleValueKpi = 3,
1518        MultiValueKpi = 4,
1519        CategoricalAnalysisVerticalBars = 5,
1520        SingleValueKpiStat = 6,
1521        SingleValueKpiGauge = 7,
1522        MultiValueKpiStat = 8,
1523        MultiValueKpiGauge = 9,
1524        MultiValueKpiHexagonBins = 10,
1525        CategoricalAnalysisPieChart = 11,
1526        CategoricalAnalysisHorizontalBars = 12,
1527    }
1528    impl Interpretation {
1529        /// String value of the enum field names used in the ProtoBuf definition.
1530        ///
1531        /// The values are not transformed in any way and thus are considered stable
1532        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1533        pub fn as_str_name(&self) -> &'static str {
1534            match self {
1535                Self::Unspecified => "INTERPRETATION_UNSPECIFIED",
1536                Self::RawDataTable => "INTERPRETATION_RAW_DATA_TABLE",
1537                Self::TrendOverTimeLine => "INTERPRETATION_TREND_OVER_TIME_LINE",
1538                Self::SingleValueKpi => "INTERPRETATION_SINGLE_VALUE_KPI",
1539                Self::MultiValueKpi => "INTERPRETATION_MULTI_VALUE_KPI",
1540                Self::CategoricalAnalysisVerticalBars => {
1541                    "INTERPRETATION_CATEGORICAL_ANALYSIS_VERTICAL_BARS"
1542                }
1543                Self::SingleValueKpiStat => "INTERPRETATION_SINGLE_VALUE_KPI_STAT",
1544                Self::SingleValueKpiGauge => "INTERPRETATION_SINGLE_VALUE_KPI_GAUGE",
1545                Self::MultiValueKpiStat => "INTERPRETATION_MULTI_VALUE_KPI_STAT",
1546                Self::MultiValueKpiGauge => "INTERPRETATION_MULTI_VALUE_KPI_GAUGE",
1547                Self::MultiValueKpiHexagonBins => {
1548                    "INTERPRETATION_MULTI_VALUE_KPI_HEXAGON_BINS"
1549                }
1550                Self::CategoricalAnalysisPieChart => {
1551                    "INTERPRETATION_CATEGORICAL_ANALYSIS_PIE_CHART"
1552                }
1553                Self::CategoricalAnalysisHorizontalBars => {
1554                    "INTERPRETATION_CATEGORICAL_ANALYSIS_HORIZONTAL_BARS"
1555                }
1556            }
1557        }
1558        /// Creates an enum from field names used in the ProtoBuf definition.
1559        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1560            match value {
1561                "INTERPRETATION_UNSPECIFIED" => Some(Self::Unspecified),
1562                "INTERPRETATION_RAW_DATA_TABLE" => Some(Self::RawDataTable),
1563                "INTERPRETATION_TREND_OVER_TIME_LINE" => Some(Self::TrendOverTimeLine),
1564                "INTERPRETATION_SINGLE_VALUE_KPI" => Some(Self::SingleValueKpi),
1565                "INTERPRETATION_MULTI_VALUE_KPI" => Some(Self::MultiValueKpi),
1566                "INTERPRETATION_CATEGORICAL_ANALYSIS_VERTICAL_BARS" => {
1567                    Some(Self::CategoricalAnalysisVerticalBars)
1568                }
1569                "INTERPRETATION_SINGLE_VALUE_KPI_STAT" => Some(Self::SingleValueKpiStat),
1570                "INTERPRETATION_SINGLE_VALUE_KPI_GAUGE" => {
1571                    Some(Self::SingleValueKpiGauge)
1572                }
1573                "INTERPRETATION_MULTI_VALUE_KPI_STAT" => Some(Self::MultiValueKpiStat),
1574                "INTERPRETATION_MULTI_VALUE_KPI_GAUGE" => Some(Self::MultiValueKpiGauge),
1575                "INTERPRETATION_MULTI_VALUE_KPI_HEXAGON_BINS" => {
1576                    Some(Self::MultiValueKpiHexagonBins)
1577                }
1578                "INTERPRETATION_CATEGORICAL_ANALYSIS_PIE_CHART" => {
1579                    Some(Self::CategoricalAnalysisPieChart)
1580                }
1581                "INTERPRETATION_CATEGORICAL_ANALYSIS_HORIZONTAL_BARS" => {
1582                    Some(Self::CategoricalAnalysisHorizontalBars)
1583                }
1584                _ => None,
1585            }
1586        }
1587    }
1588}
1589#[derive(serde::Serialize, serde::Deserialize)]
1590#[serde(rename_all = "snake_case")]
1591#[derive(Clone, PartialEq, ::prost::Message)]
1592pub struct Gauge {
1593    #[prost(message, optional, tag = "1")]
1594    pub query: ::core::option::Option<gauge::Query>,
1595    #[prost(message, optional, tag = "2")]
1596    pub min: ::core::option::Option<f64>,
1597    #[prost(message, optional, tag = "3")]
1598    pub max: ::core::option::Option<f64>,
1599    #[prost(message, optional, tag = "4")]
1600    pub show_inner_arc: ::core::option::Option<bool>,
1601    #[prost(message, optional, tag = "5")]
1602    pub show_outer_arc: ::core::option::Option<bool>,
1603    #[prost(enumeration = "gauge::Unit", tag = "6")]
1604    pub unit: i32,
1605    #[prost(message, repeated, tag = "7")]
1606    pub thresholds: ::prost::alloc::vec::Vec<gauge::Threshold>,
1607    #[prost(enumeration = "common::DataModeType", tag = "8")]
1608    pub data_mode_type: i32,
1609    #[prost(enumeration = "gauge::ThresholdBy", tag = "9")]
1610    pub threshold_by: i32,
1611    #[prost(message, optional, tag = "10")]
1612    pub custom_unit: ::core::option::Option<::prost::alloc::string::String>,
1613    #[prost(message, optional, tag = "11")]
1614    pub decimal: ::core::option::Option<i32>,
1615    #[prost(enumeration = "common::ThresholdType", tag = "12")]
1616    pub threshold_type: i32,
1617    #[prost(message, optional, tag = "13")]
1618    pub legend: ::core::option::Option<common::Legend>,
1619    #[prost(enumeration = "common::LegendBy", tag = "14")]
1620    pub legend_by: i32,
1621    #[prost(message, optional, tag = "15")]
1622    pub display_series_name: ::core::option::Option<bool>,
1623    #[prost(message, optional, tag = "16")]
1624    pub decimal_precision: ::core::option::Option<bool>,
1625}
1626/// Nested message and enum types in `Gauge`.
1627pub mod gauge {
1628    #[derive(serde::Serialize, serde::Deserialize)]
1629    #[serde(rename_all = "snake_case")]
1630    #[derive(Clone, PartialEq, ::prost::Message)]
1631    pub struct Query {
1632        #[prost(oneof = "query::Value", tags = "1, 2, 3, 4")]
1633        pub value: ::core::option::Option<query::Value>,
1634    }
1635    /// Nested message and enum types in `Query`.
1636    pub mod query {
1637        #[derive(serde::Serialize, serde::Deserialize)]
1638        #[serde(rename_all = "snake_case")]
1639        #[derive(Clone, PartialEq, ::prost::Oneof)]
1640        pub enum Value {
1641            #[prost(message, tag = "1")]
1642            Metrics(super::MetricsQuery),
1643            #[prost(message, tag = "2")]
1644            Logs(super::LogsQuery),
1645            #[prost(message, tag = "3")]
1646            Spans(super::SpansQuery),
1647            #[prost(message, tag = "4")]
1648            Dataprime(super::DataprimeQuery),
1649        }
1650    }
1651    #[derive(serde::Serialize, serde::Deserialize)]
1652    #[serde(rename_all = "snake_case")]
1653    #[derive(Clone, PartialEq, ::prost::Message)]
1654    pub struct MetricsQuery {
1655        #[prost(message, optional, tag = "1")]
1656        pub promql_query: ::core::option::Option<
1657            super::super::super::common::PromQlQuery,
1658        >,
1659        #[prost(enumeration = "Aggregation", tag = "2")]
1660        pub aggregation: i32,
1661        #[prost(message, repeated, tag = "3")]
1662        pub filters: ::prost::alloc::vec::Vec<
1663            super::super::filters::filter::MetricsFilter,
1664        >,
1665        #[prost(enumeration = "super::common::MetricsQueryEditorMode", tag = "4")]
1666        pub editor_mode: i32,
1667        #[prost(message, optional, tag = "5")]
1668        pub time_frame: ::core::option::Option<
1669            super::super::super::common::TimeFrameSelect,
1670        >,
1671        #[prost(enumeration = "super::super::super::common::PromQlQueryType", tag = "6")]
1672        pub promql_query_type: i32,
1673    }
1674    #[derive(serde::Serialize, serde::Deserialize)]
1675    #[serde(rename_all = "snake_case")]
1676    #[derive(Clone, PartialEq, ::prost::Message)]
1677    pub struct LogsQuery {
1678        #[prost(message, optional, tag = "1")]
1679        pub lucene_query: ::core::option::Option<
1680            super::super::super::common::LuceneQuery,
1681        >,
1682        #[prost(message, optional, tag = "2")]
1683        pub logs_aggregation: ::core::option::Option<
1684            super::super::super::common::LogsAggregation,
1685        >,
1686        #[deprecated]
1687        #[prost(enumeration = "Aggregation", tag = "3")]
1688        pub aggregation: i32,
1689        #[prost(message, repeated, tag = "4")]
1690        pub filters: ::prost::alloc::vec::Vec<super::super::filters::filter::LogsFilter>,
1691        #[prost(message, repeated, tag = "5")]
1692        pub group_by: ::prost::alloc::vec::Vec<
1693            super::super::super::common::ObservationField,
1694        >,
1695        #[prost(message, optional, tag = "6")]
1696        pub time_frame: ::core::option::Option<
1697            super::super::super::common::TimeFrameSelect,
1698        >,
1699    }
1700    #[derive(serde::Serialize, serde::Deserialize)]
1701    #[serde(rename_all = "snake_case")]
1702    #[derive(Clone, PartialEq, ::prost::Message)]
1703    pub struct SpansQuery {
1704        #[prost(message, optional, tag = "1")]
1705        pub lucene_query: ::core::option::Option<
1706            super::super::super::common::LuceneQuery,
1707        >,
1708        #[prost(message, optional, tag = "2")]
1709        pub spans_aggregation: ::core::option::Option<
1710            super::super::super::common::SpansAggregation,
1711        >,
1712        #[deprecated]
1713        #[prost(enumeration = "Aggregation", tag = "3")]
1714        pub aggregation: i32,
1715        #[prost(message, repeated, tag = "4")]
1716        pub filters: ::prost::alloc::vec::Vec<
1717            super::super::filters::filter::SpansFilter,
1718        >,
1719        #[prost(message, repeated, tag = "5")]
1720        pub group_by: ::prost::alloc::vec::Vec<super::super::super::common::SpanField>,
1721        #[prost(message, optional, tag = "6")]
1722        pub time_frame: ::core::option::Option<
1723            super::super::super::common::TimeFrameSelect,
1724        >,
1725        #[prost(message, repeated, tag = "7")]
1726        pub group_bys: ::prost::alloc::vec::Vec<
1727            super::super::super::common::SpanObservationField,
1728        >,
1729    }
1730    #[derive(serde::Serialize, serde::Deserialize)]
1731    #[serde(rename_all = "snake_case")]
1732    #[derive(Clone, PartialEq, ::prost::Message)]
1733    pub struct DataprimeQuery {
1734        #[prost(message, optional, tag = "1")]
1735        pub dataprime_query: ::core::option::Option<
1736            super::super::super::common::DataprimeQuery,
1737        >,
1738        #[prost(message, repeated, tag = "2")]
1739        pub filters: ::prost::alloc::vec::Vec<super::super::filters::filter::Source>,
1740        #[prost(message, optional, tag = "3")]
1741        pub time_frame: ::core::option::Option<
1742            super::super::super::common::TimeFrameSelect,
1743        >,
1744    }
1745    #[derive(serde::Serialize, serde::Deserialize)]
1746    #[serde(rename_all = "snake_case")]
1747    #[derive(Clone, PartialEq, ::prost::Message)]
1748    pub struct Threshold {
1749        #[prost(message, optional, tag = "1")]
1750        pub from: ::core::option::Option<f64>,
1751        #[prost(message, optional, tag = "2")]
1752        pub color: ::core::option::Option<::prost::alloc::string::String>,
1753        #[prost(message, optional, tag = "3")]
1754        pub label: ::core::option::Option<::prost::alloc::string::String>,
1755    }
1756    #[derive(serde::Serialize, serde::Deserialize)]
1757    #[serde(rename_all = "snake_case")]
1758    #[derive(
1759        Clone,
1760        Copy,
1761        Debug,
1762        PartialEq,
1763        Eq,
1764        Hash,
1765        PartialOrd,
1766        Ord,
1767        ::prost::Enumeration
1768    )]
1769    #[repr(i32)]
1770    pub enum Aggregation {
1771        Unspecified = 0,
1772        Last = 1,
1773        Min = 2,
1774        Max = 3,
1775        Avg = 4,
1776        Sum = 5,
1777    }
1778    impl Aggregation {
1779        /// String value of the enum field names used in the ProtoBuf definition.
1780        ///
1781        /// The values are not transformed in any way and thus are considered stable
1782        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1783        pub fn as_str_name(&self) -> &'static str {
1784            match self {
1785                Self::Unspecified => "AGGREGATION_UNSPECIFIED",
1786                Self::Last => "AGGREGATION_LAST",
1787                Self::Min => "AGGREGATION_MIN",
1788                Self::Max => "AGGREGATION_MAX",
1789                Self::Avg => "AGGREGATION_AVG",
1790                Self::Sum => "AGGREGATION_SUM",
1791            }
1792        }
1793        /// Creates an enum from field names used in the ProtoBuf definition.
1794        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1795            match value {
1796                "AGGREGATION_UNSPECIFIED" => Some(Self::Unspecified),
1797                "AGGREGATION_LAST" => Some(Self::Last),
1798                "AGGREGATION_MIN" => Some(Self::Min),
1799                "AGGREGATION_MAX" => Some(Self::Max),
1800                "AGGREGATION_AVG" => Some(Self::Avg),
1801                "AGGREGATION_SUM" => Some(Self::Sum),
1802                _ => None,
1803            }
1804        }
1805    }
1806    #[derive(serde::Serialize, serde::Deserialize)]
1807    #[serde(rename_all = "snake_case")]
1808    #[derive(
1809        Clone,
1810        Copy,
1811        Debug,
1812        PartialEq,
1813        Eq,
1814        Hash,
1815        PartialOrd,
1816        Ord,
1817        ::prost::Enumeration
1818    )]
1819    #[repr(i32)]
1820    pub enum Unit {
1821        Unspecified = 0,
1822        Number = 1,
1823        Percent = 2,
1824        Microseconds = 3,
1825        Milliseconds = 4,
1826        Seconds = 5,
1827        Bytes = 6,
1828        Kbytes = 7,
1829        Mbytes = 8,
1830        Gbytes = 9,
1831        BytesIec = 10,
1832        Kibytes = 11,
1833        Mibytes = 12,
1834        Gibytes = 13,
1835        EurCents = 14,
1836        Eur = 15,
1837        UsdCents = 16,
1838        Usd = 17,
1839        Custom = 18,
1840        PercentZeroOne = 19,
1841        PercentZeroHundred = 20,
1842        Nanoseconds = 21,
1843    }
1844    impl Unit {
1845        /// String value of the enum field names used in the ProtoBuf definition.
1846        ///
1847        /// The values are not transformed in any way and thus are considered stable
1848        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1849        pub fn as_str_name(&self) -> &'static str {
1850            match self {
1851                Self::Unspecified => "UNIT_UNSPECIFIED",
1852                Self::Number => "UNIT_NUMBER",
1853                Self::Percent => "UNIT_PERCENT",
1854                Self::Microseconds => "UNIT_MICROSECONDS",
1855                Self::Milliseconds => "UNIT_MILLISECONDS",
1856                Self::Seconds => "UNIT_SECONDS",
1857                Self::Bytes => "UNIT_BYTES",
1858                Self::Kbytes => "UNIT_KBYTES",
1859                Self::Mbytes => "UNIT_MBYTES",
1860                Self::Gbytes => "UNIT_GBYTES",
1861                Self::BytesIec => "UNIT_BYTES_IEC",
1862                Self::Kibytes => "UNIT_KIBYTES",
1863                Self::Mibytes => "UNIT_MIBYTES",
1864                Self::Gibytes => "UNIT_GIBYTES",
1865                Self::EurCents => "UNIT_EUR_CENTS",
1866                Self::Eur => "UNIT_EUR",
1867                Self::UsdCents => "UNIT_USD_CENTS",
1868                Self::Usd => "UNIT_USD",
1869                Self::Custom => "UNIT_CUSTOM",
1870                Self::PercentZeroOne => "UNIT_PERCENT_ZERO_ONE",
1871                Self::PercentZeroHundred => "UNIT_PERCENT_ZERO_HUNDRED",
1872                Self::Nanoseconds => "UNIT_NANOSECONDS",
1873            }
1874        }
1875        /// Creates an enum from field names used in the ProtoBuf definition.
1876        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1877            match value {
1878                "UNIT_UNSPECIFIED" => Some(Self::Unspecified),
1879                "UNIT_NUMBER" => Some(Self::Number),
1880                "UNIT_PERCENT" => Some(Self::Percent),
1881                "UNIT_MICROSECONDS" => Some(Self::Microseconds),
1882                "UNIT_MILLISECONDS" => Some(Self::Milliseconds),
1883                "UNIT_SECONDS" => Some(Self::Seconds),
1884                "UNIT_BYTES" => Some(Self::Bytes),
1885                "UNIT_KBYTES" => Some(Self::Kbytes),
1886                "UNIT_MBYTES" => Some(Self::Mbytes),
1887                "UNIT_GBYTES" => Some(Self::Gbytes),
1888                "UNIT_BYTES_IEC" => Some(Self::BytesIec),
1889                "UNIT_KIBYTES" => Some(Self::Kibytes),
1890                "UNIT_MIBYTES" => Some(Self::Mibytes),
1891                "UNIT_GIBYTES" => Some(Self::Gibytes),
1892                "UNIT_EUR_CENTS" => Some(Self::EurCents),
1893                "UNIT_EUR" => Some(Self::Eur),
1894                "UNIT_USD_CENTS" => Some(Self::UsdCents),
1895                "UNIT_USD" => Some(Self::Usd),
1896                "UNIT_CUSTOM" => Some(Self::Custom),
1897                "UNIT_PERCENT_ZERO_ONE" => Some(Self::PercentZeroOne),
1898                "UNIT_PERCENT_ZERO_HUNDRED" => Some(Self::PercentZeroHundred),
1899                "UNIT_NANOSECONDS" => Some(Self::Nanoseconds),
1900                _ => None,
1901            }
1902        }
1903    }
1904    #[derive(serde::Serialize, serde::Deserialize)]
1905    #[serde(rename_all = "snake_case")]
1906    #[derive(
1907        Clone,
1908        Copy,
1909        Debug,
1910        PartialEq,
1911        Eq,
1912        Hash,
1913        PartialOrd,
1914        Ord,
1915        ::prost::Enumeration
1916    )]
1917    #[repr(i32)]
1918    pub enum ThresholdBy {
1919        Unspecified = 0,
1920        Value = 1,
1921        Background = 2,
1922    }
1923    impl ThresholdBy {
1924        /// String value of the enum field names used in the ProtoBuf definition.
1925        ///
1926        /// The values are not transformed in any way and thus are considered stable
1927        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1928        pub fn as_str_name(&self) -> &'static str {
1929            match self {
1930                Self::Unspecified => "THRESHOLD_BY_UNSPECIFIED",
1931                Self::Value => "THRESHOLD_BY_VALUE",
1932                Self::Background => "THRESHOLD_BY_BACKGROUND",
1933            }
1934        }
1935        /// Creates an enum from field names used in the ProtoBuf definition.
1936        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1937            match value {
1938                "THRESHOLD_BY_UNSPECIFIED" => Some(Self::Unspecified),
1939                "THRESHOLD_BY_VALUE" => Some(Self::Value),
1940                "THRESHOLD_BY_BACKGROUND" => Some(Self::Background),
1941                _ => None,
1942            }
1943        }
1944    }
1945}
1946#[derive(serde::Serialize, serde::Deserialize)]
1947#[serde(rename_all = "snake_case")]
1948#[derive(Clone, PartialEq, ::prost::Message)]
1949pub struct Hexagon {
1950    #[prost(message, optional, tag = "1")]
1951    pub query: ::core::option::Option<hexagon::Query>,
1952    #[prost(message, optional, tag = "2")]
1953    pub min: ::core::option::Option<f64>,
1954    #[prost(message, optional, tag = "3")]
1955    pub max: ::core::option::Option<f64>,
1956    #[prost(enumeration = "common::Unit", tag = "6")]
1957    pub unit: i32,
1958    #[prost(message, repeated, tag = "7")]
1959    pub thresholds: ::prost::alloc::vec::Vec<common::Threshold>,
1960    #[prost(enumeration = "common::DataModeType", tag = "8")]
1961    pub data_mode_type: i32,
1962    #[prost(message, optional, tag = "10")]
1963    pub custom_unit: ::core::option::Option<::prost::alloc::string::String>,
1964    #[prost(message, optional, tag = "11")]
1965    pub decimal: ::core::option::Option<i32>,
1966    #[prost(enumeration = "common::ThresholdType", tag = "12")]
1967    pub threshold_type: i32,
1968    #[prost(message, optional, tag = "13")]
1969    pub legend: ::core::option::Option<common::Legend>,
1970    #[prost(enumeration = "common::LegendBy", tag = "14")]
1971    pub legend_by: i32,
1972    #[prost(message, optional, tag = "15")]
1973    pub decimal_precision: ::core::option::Option<bool>,
1974}
1975/// Nested message and enum types in `Hexagon`.
1976pub mod hexagon {
1977    #[derive(serde::Serialize, serde::Deserialize)]
1978    #[serde(rename_all = "snake_case")]
1979    #[derive(Clone, PartialEq, ::prost::Message)]
1980    pub struct Query {
1981        #[prost(oneof = "query::Value", tags = "1, 2, 3, 4")]
1982        pub value: ::core::option::Option<query::Value>,
1983    }
1984    /// Nested message and enum types in `Query`.
1985    pub mod query {
1986        #[derive(serde::Serialize, serde::Deserialize)]
1987        #[serde(rename_all = "snake_case")]
1988        #[derive(Clone, PartialEq, ::prost::Oneof)]
1989        pub enum Value {
1990            #[prost(message, tag = "1")]
1991            Metrics(super::MetricsQuery),
1992            #[prost(message, tag = "2")]
1993            Logs(super::LogsQuery),
1994            #[prost(message, tag = "3")]
1995            Spans(super::SpansQuery),
1996            #[prost(message, tag = "4")]
1997            Dataprime(super::DataprimeQuery),
1998        }
1999    }
2000    #[derive(serde::Serialize, serde::Deserialize)]
2001    #[serde(rename_all = "snake_case")]
2002    #[derive(Clone, PartialEq, ::prost::Message)]
2003    pub struct MetricsQuery {
2004        #[prost(message, optional, tag = "1")]
2005        pub promql_query: ::core::option::Option<
2006            super::super::super::common::PromQlQuery,
2007        >,
2008        #[prost(message, repeated, tag = "2")]
2009        pub filters: ::prost::alloc::vec::Vec<
2010            super::super::filters::filter::MetricsFilter,
2011        >,
2012        #[prost(enumeration = "super::common::MetricsQueryEditorMode", tag = "3")]
2013        pub editor_mode: i32,
2014        #[prost(message, optional, tag = "4")]
2015        pub time_frame: ::core::option::Option<
2016            super::super::super::common::TimeFrameSelect,
2017        >,
2018        #[prost(enumeration = "super::common::Aggregation", tag = "5")]
2019        pub aggregation: i32,
2020        #[prost(enumeration = "super::super::super::common::PromQlQueryType", tag = "6")]
2021        pub promql_query_type: i32,
2022    }
2023    #[derive(serde::Serialize, serde::Deserialize)]
2024    #[serde(rename_all = "snake_case")]
2025    #[derive(Clone, PartialEq, ::prost::Message)]
2026    pub struct LogsQuery {
2027        #[prost(message, optional, tag = "1")]
2028        pub lucene_query: ::core::option::Option<
2029            super::super::super::common::LuceneQuery,
2030        >,
2031        #[prost(message, optional, tag = "2")]
2032        pub logs_aggregation: ::core::option::Option<
2033            super::super::super::common::LogsAggregation,
2034        >,
2035        #[prost(message, repeated, tag = "3")]
2036        pub filters: ::prost::alloc::vec::Vec<super::super::filters::filter::LogsFilter>,
2037        #[prost(message, repeated, tag = "4")]
2038        pub group_by: ::prost::alloc::vec::Vec<
2039            super::super::super::common::ObservationField,
2040        >,
2041        #[prost(message, optional, tag = "5")]
2042        pub time_frame: ::core::option::Option<
2043            super::super::super::common::TimeFrameSelect,
2044        >,
2045    }
2046    #[derive(serde::Serialize, serde::Deserialize)]
2047    #[serde(rename_all = "snake_case")]
2048    #[derive(Clone, PartialEq, ::prost::Message)]
2049    pub struct SpansQuery {
2050        #[prost(message, optional, tag = "1")]
2051        pub lucene_query: ::core::option::Option<
2052            super::super::super::common::LuceneQuery,
2053        >,
2054        #[prost(message, optional, tag = "2")]
2055        pub spans_aggregation: ::core::option::Option<
2056            super::super::super::common::SpansAggregation,
2057        >,
2058        #[prost(message, repeated, tag = "3")]
2059        pub filters: ::prost::alloc::vec::Vec<
2060            super::super::filters::filter::SpansFilter,
2061        >,
2062        #[prost(message, repeated, tag = "4")]
2063        pub group_by: ::prost::alloc::vec::Vec<super::super::super::common::SpanField>,
2064        #[prost(message, optional, tag = "5")]
2065        pub time_frame: ::core::option::Option<
2066            super::super::super::common::TimeFrameSelect,
2067        >,
2068        #[prost(message, repeated, tag = "6")]
2069        pub group_bys: ::prost::alloc::vec::Vec<
2070            super::super::super::common::SpanObservationField,
2071        >,
2072    }
2073    #[derive(serde::Serialize, serde::Deserialize)]
2074    #[serde(rename_all = "snake_case")]
2075    #[derive(Clone, PartialEq, ::prost::Message)]
2076    pub struct DataprimeQuery {
2077        #[prost(message, optional, tag = "1")]
2078        pub dataprime_query: ::core::option::Option<
2079            super::super::super::common::DataprimeQuery,
2080        >,
2081        #[prost(message, repeated, tag = "2")]
2082        pub filters: ::prost::alloc::vec::Vec<super::super::filters::filter::Source>,
2083        #[prost(message, optional, tag = "3")]
2084        pub time_frame: ::core::option::Option<
2085            super::super::super::common::TimeFrameSelect,
2086        >,
2087    }
2088}
2089#[derive(serde::Serialize, serde::Deserialize)]
2090#[serde(rename_all = "snake_case")]
2091#[derive(Clone, PartialEq, ::prost::Message)]
2092pub struct HorizontalBarChart {
2093    #[prost(message, optional, tag = "1")]
2094    pub query: ::core::option::Option<horizontal_bar_chart::Query>,
2095    #[prost(message, optional, tag = "2")]
2096    pub max_bars_per_chart: ::core::option::Option<i32>,
2097    #[prost(message, optional, tag = "3")]
2098    pub group_name_template: ::core::option::Option<::prost::alloc::string::String>,
2099    #[prost(message, optional, tag = "4")]
2100    pub stack_definition: ::core::option::Option<horizontal_bar_chart::StackDefinition>,
2101    #[prost(enumeration = "common::ScaleType", tag = "5")]
2102    pub scale_type: i32,
2103    #[prost(message, optional, tag = "6")]
2104    pub colors_by: ::core::option::Option<common::ColorsBy>,
2105    #[prost(enumeration = "common::Unit", tag = "8")]
2106    pub unit: i32,
2107    #[prost(message, optional, tag = "9")]
2108    pub display_on_bar: ::core::option::Option<bool>,
2109    #[prost(message, optional, tag = "10")]
2110    pub y_axis_view_by: ::core::option::Option<horizontal_bar_chart::YAxisViewBy>,
2111    #[prost(enumeration = "common::SortByType", tag = "11")]
2112    pub sort_by: i32,
2113    #[prost(message, optional, tag = "12")]
2114    pub color_scheme: ::core::option::Option<::prost::alloc::string::String>,
2115    #[prost(enumeration = "common::DataModeType", tag = "13")]
2116    pub data_mode_type: i32,
2117    #[prost(message, optional, tag = "14")]
2118    pub custom_unit: ::core::option::Option<::prost::alloc::string::String>,
2119    #[prost(message, optional, tag = "15")]
2120    pub decimal: ::core::option::Option<i32>,
2121    #[prost(message, optional, tag = "16")]
2122    pub legend: ::core::option::Option<common::Legend>,
2123    #[prost(message, optional, tag = "17")]
2124    pub hash_colors: ::core::option::Option<bool>,
2125    #[prost(message, optional, tag = "18")]
2126    pub y_axis_min: ::core::option::Option<f32>,
2127    #[prost(message, optional, tag = "19")]
2128    pub y_axis_max: ::core::option::Option<f32>,
2129    #[prost(message, optional, tag = "20")]
2130    pub decimal_precision: ::core::option::Option<bool>,
2131}
2132/// Nested message and enum types in `HorizontalBarChart`.
2133pub mod horizontal_bar_chart {
2134    #[derive(serde::Serialize, serde::Deserialize)]
2135    #[serde(rename_all = "snake_case")]
2136    #[derive(Clone, PartialEq, ::prost::Message)]
2137    pub struct Query {
2138        #[prost(oneof = "query::Value", tags = "1, 2, 3, 4")]
2139        pub value: ::core::option::Option<query::Value>,
2140    }
2141    /// Nested message and enum types in `Query`.
2142    pub mod query {
2143        #[derive(serde::Serialize, serde::Deserialize)]
2144        #[serde(rename_all = "snake_case")]
2145        #[derive(Clone, PartialEq, ::prost::Oneof)]
2146        pub enum Value {
2147            #[prost(message, tag = "1")]
2148            Logs(super::LogsQuery),
2149            #[prost(message, tag = "2")]
2150            Spans(super::SpansQuery),
2151            #[prost(message, tag = "3")]
2152            Metrics(super::MetricsQuery),
2153            #[prost(message, tag = "4")]
2154            Dataprime(super::DataprimeQuery),
2155        }
2156    }
2157    #[derive(serde::Serialize, serde::Deserialize)]
2158    #[serde(rename_all = "snake_case")]
2159    #[derive(Clone, PartialEq, ::prost::Message)]
2160    pub struct StackDefinition {
2161        #[prost(message, optional, tag = "1")]
2162        pub max_slices_per_bar: ::core::option::Option<i32>,
2163        #[prost(message, optional, tag = "2")]
2164        pub stack_name_template: ::core::option::Option<::prost::alloc::string::String>,
2165    }
2166    #[derive(serde::Serialize, serde::Deserialize)]
2167    #[serde(rename_all = "snake_case")]
2168    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
2169    pub struct YAxisViewBy {
2170        #[prost(oneof = "y_axis_view_by::YAxisView", tags = "1, 2")]
2171        pub y_axis_view: ::core::option::Option<y_axis_view_by::YAxisView>,
2172    }
2173    /// Nested message and enum types in `YAxisViewBy`.
2174    pub mod y_axis_view_by {
2175        #[derive(serde::Serialize, serde::Deserialize)]
2176        #[serde(rename_all = "snake_case")]
2177        #[derive(Clone, Copy, PartialEq, ::prost::Message)]
2178        pub struct YAxisViewByCategory {}
2179        #[derive(serde::Serialize, serde::Deserialize)]
2180        #[serde(rename_all = "snake_case")]
2181        #[derive(Clone, Copy, PartialEq, ::prost::Message)]
2182        pub struct YAxisViewByValue {}
2183        #[derive(serde::Serialize, serde::Deserialize)]
2184        #[serde(rename_all = "snake_case")]
2185        #[derive(Clone, Copy, PartialEq, ::prost::Oneof)]
2186        pub enum YAxisView {
2187            #[prost(message, tag = "1")]
2188            Category(YAxisViewByCategory),
2189            #[prost(message, tag = "2")]
2190            Value(YAxisViewByValue),
2191        }
2192    }
2193    #[derive(serde::Serialize, serde::Deserialize)]
2194    #[serde(rename_all = "snake_case")]
2195    #[derive(Clone, PartialEq, ::prost::Message)]
2196    pub struct LogsQuery {
2197        #[prost(message, optional, tag = "1")]
2198        pub lucene_query: ::core::option::Option<
2199            super::super::super::common::LuceneQuery,
2200        >,
2201        #[prost(message, optional, tag = "2")]
2202        pub aggregation: ::core::option::Option<
2203            super::super::super::common::LogsAggregation,
2204        >,
2205        #[prost(message, repeated, tag = "3")]
2206        pub filters: ::prost::alloc::vec::Vec<super::super::filters::filter::LogsFilter>,
2207        #[prost(message, repeated, tag = "4")]
2208        pub group_names: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2209        #[prost(message, optional, tag = "5")]
2210        pub stacked_group_name: ::core::option::Option<::prost::alloc::string::String>,
2211        #[prost(message, repeated, tag = "6")]
2212        pub group_names_fields: ::prost::alloc::vec::Vec<
2213            super::super::super::common::ObservationField,
2214        >,
2215        #[prost(message, optional, tag = "7")]
2216        pub stacked_group_name_field: ::core::option::Option<
2217            super::super::super::common::ObservationField,
2218        >,
2219        #[prost(message, optional, tag = "8")]
2220        pub time_frame: ::core::option::Option<
2221            super::super::super::common::TimeFrameSelect,
2222        >,
2223    }
2224    #[derive(serde::Serialize, serde::Deserialize)]
2225    #[serde(rename_all = "snake_case")]
2226    #[derive(Clone, PartialEq, ::prost::Message)]
2227    pub struct SpansQuery {
2228        #[prost(message, optional, tag = "1")]
2229        pub lucene_query: ::core::option::Option<
2230            super::super::super::common::LuceneQuery,
2231        >,
2232        #[prost(message, optional, tag = "2")]
2233        pub aggregation: ::core::option::Option<
2234            super::super::super::common::SpansAggregation,
2235        >,
2236        #[prost(message, repeated, tag = "3")]
2237        pub filters: ::prost::alloc::vec::Vec<
2238            super::super::filters::filter::SpansFilter,
2239        >,
2240        #[prost(message, repeated, tag = "4")]
2241        pub group_names: ::prost::alloc::vec::Vec<
2242            super::super::super::common::SpanField,
2243        >,
2244        #[prost(message, optional, tag = "5")]
2245        pub stacked_group_name: ::core::option::Option<
2246            super::super::super::common::SpanField,
2247        >,
2248        #[prost(message, optional, tag = "6")]
2249        pub time_frame: ::core::option::Option<
2250            super::super::super::common::TimeFrameSelect,
2251        >,
2252        #[prost(message, repeated, tag = "7")]
2253        pub group_names_fields: ::prost::alloc::vec::Vec<
2254            super::super::super::common::SpanObservationField,
2255        >,
2256        #[prost(message, optional, tag = "8")]
2257        pub stacked_group_name_field: ::core::option::Option<
2258            super::super::super::common::SpanObservationField,
2259        >,
2260    }
2261    #[derive(serde::Serialize, serde::Deserialize)]
2262    #[serde(rename_all = "snake_case")]
2263    #[derive(Clone, PartialEq, ::prost::Message)]
2264    pub struct MetricsQuery {
2265        #[prost(message, optional, tag = "1")]
2266        pub promql_query: ::core::option::Option<
2267            super::super::super::common::PromQlQuery,
2268        >,
2269        #[prost(message, repeated, tag = "2")]
2270        pub filters: ::prost::alloc::vec::Vec<
2271            super::super::filters::filter::MetricsFilter,
2272        >,
2273        #[prost(message, repeated, tag = "3")]
2274        pub group_names: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2275        #[prost(message, optional, tag = "4")]
2276        pub stacked_group_name: ::core::option::Option<::prost::alloc::string::String>,
2277        #[prost(enumeration = "super::common::MetricsQueryEditorMode", tag = "5")]
2278        pub editor_mode: i32,
2279        #[prost(message, optional, tag = "6")]
2280        pub time_frame: ::core::option::Option<
2281            super::super::super::common::TimeFrameSelect,
2282        >,
2283        #[prost(enumeration = "super::super::super::common::PromQlQueryType", tag = "7")]
2284        pub promql_query_type: i32,
2285        #[prost(enumeration = "super::common::Aggregation", tag = "8")]
2286        pub aggregation: i32,
2287    }
2288    #[derive(serde::Serialize, serde::Deserialize)]
2289    #[serde(rename_all = "snake_case")]
2290    #[derive(Clone, PartialEq, ::prost::Message)]
2291    pub struct DataprimeQuery {
2292        #[prost(message, optional, tag = "1")]
2293        pub dataprime_query: ::core::option::Option<
2294            super::super::super::common::DataprimeQuery,
2295        >,
2296        #[prost(message, repeated, tag = "2")]
2297        pub filters: ::prost::alloc::vec::Vec<super::super::filters::filter::Source>,
2298        #[prost(message, repeated, tag = "3")]
2299        pub group_names: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2300        #[prost(message, optional, tag = "4")]
2301        pub stacked_group_name: ::core::option::Option<::prost::alloc::string::String>,
2302        #[prost(message, optional, tag = "5")]
2303        pub time_frame: ::core::option::Option<
2304            super::super::super::common::TimeFrameSelect,
2305        >,
2306    }
2307}
2308#[derive(serde::Serialize, serde::Deserialize)]
2309#[serde(rename_all = "snake_case")]
2310#[derive(Clone, PartialEq, ::prost::Message)]
2311pub struct LineChart {
2312    #[prost(message, optional, tag = "2")]
2313    pub legend: ::core::option::Option<common::Legend>,
2314    #[prost(message, optional, tag = "6")]
2315    pub tooltip: ::core::option::Option<line_chart::Tooltip>,
2316    #[prost(message, repeated, tag = "7")]
2317    pub query_definitions: ::prost::alloc::vec::Vec<line_chart::QueryDefinition>,
2318    #[prost(enumeration = "line_chart::StackedLine", tag = "9")]
2319    pub stacked_line: i32,
2320    #[prost(message, optional, tag = "10")]
2321    pub connect_nulls: ::core::option::Option<bool>,
2322}
2323/// Nested message and enum types in `LineChart`.
2324pub mod line_chart {
2325    #[derive(serde::Serialize, serde::Deserialize)]
2326    #[serde(rename_all = "snake_case")]
2327    #[derive(Clone, PartialEq, ::prost::Message)]
2328    pub struct QueryDefinition {
2329        #[prost(message, optional, tag = "1")]
2330        pub id: ::core::option::Option<::prost::alloc::string::String>,
2331        #[prost(message, optional, tag = "2")]
2332        pub query: ::core::option::Option<Query>,
2333        #[prost(message, optional, tag = "3")]
2334        pub series_name_template: ::core::option::Option<::prost::alloc::string::String>,
2335        #[prost(message, optional, tag = "4")]
2336        pub series_count_limit: ::core::option::Option<i64>,
2337        #[prost(enumeration = "super::common::Unit", tag = "5")]
2338        pub unit: i32,
2339        #[prost(enumeration = "super::common::ScaleType", tag = "6")]
2340        pub scale_type: i32,
2341        #[prost(message, optional, tag = "7")]
2342        pub name: ::core::option::Option<::prost::alloc::string::String>,
2343        #[prost(message, optional, tag = "8")]
2344        pub is_visible: ::core::option::Option<bool>,
2345        #[prost(message, optional, tag = "9")]
2346        pub color_scheme: ::core::option::Option<::prost::alloc::string::String>,
2347        #[prost(message, optional, tag = "10")]
2348        pub resolution: ::core::option::Option<Resolution>,
2349        #[prost(enumeration = "super::common::DataModeType", tag = "11")]
2350        pub data_mode_type: i32,
2351        #[prost(message, optional, tag = "12")]
2352        pub custom_unit: ::core::option::Option<::prost::alloc::string::String>,
2353        #[prost(message, optional, tag = "13")]
2354        pub decimal: ::core::option::Option<i32>,
2355        #[prost(message, optional, tag = "14")]
2356        pub hash_colors: ::core::option::Option<bool>,
2357        #[prost(message, optional, tag = "15")]
2358        pub y_axis_min: ::core::option::Option<f32>,
2359        #[prost(message, optional, tag = "16")]
2360        pub y_axis_max: ::core::option::Option<f32>,
2361        #[prost(message, optional, tag = "17")]
2362        pub decimal_precision: ::core::option::Option<bool>,
2363    }
2364    #[derive(serde::Serialize, serde::Deserialize)]
2365    #[serde(rename_all = "snake_case")]
2366    #[derive(Clone, PartialEq, ::prost::Message)]
2367    pub struct Query {
2368        #[prost(oneof = "query::Value", tags = "1, 2, 3, 5")]
2369        pub value: ::core::option::Option<query::Value>,
2370    }
2371    /// Nested message and enum types in `Query`.
2372    pub mod query {
2373        #[derive(serde::Serialize, serde::Deserialize)]
2374        #[serde(rename_all = "snake_case")]
2375        #[derive(Clone, PartialEq, ::prost::Oneof)]
2376        pub enum Value {
2377            #[prost(message, tag = "1")]
2378            Logs(super::LogsQuery),
2379            #[prost(message, tag = "2")]
2380            Metrics(super::MetricsQuery),
2381            #[prost(message, tag = "3")]
2382            Spans(super::SpansQuery),
2383            #[prost(message, tag = "5")]
2384            Dataprime(super::DataprimeQuery),
2385        }
2386    }
2387    #[derive(serde::Serialize, serde::Deserialize)]
2388    #[serde(rename_all = "snake_case")]
2389    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
2390    pub struct Tooltip {
2391        #[prost(message, optional, tag = "1")]
2392        pub show_labels: ::core::option::Option<bool>,
2393        #[prost(enumeration = "TooltipType", tag = "2")]
2394        pub r#type: i32,
2395    }
2396    #[derive(serde::Serialize, serde::Deserialize)]
2397    #[serde(rename_all = "snake_case")]
2398    #[derive(Clone, PartialEq, ::prost::Message)]
2399    pub struct LogsQuery {
2400        #[prost(message, optional, tag = "1")]
2401        pub lucene_query: ::core::option::Option<
2402            super::super::super::common::LuceneQuery,
2403        >,
2404        #[prost(message, repeated, tag = "2")]
2405        pub group_by: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2406        #[prost(message, repeated, tag = "3")]
2407        pub aggregations: ::prost::alloc::vec::Vec<
2408            super::super::super::common::LogsAggregation,
2409        >,
2410        #[prost(message, repeated, tag = "4")]
2411        pub filters: ::prost::alloc::vec::Vec<super::super::filters::filter::LogsFilter>,
2412        #[prost(message, repeated, tag = "5")]
2413        pub group_bys: ::prost::alloc::vec::Vec<
2414            super::super::super::common::ObservationField,
2415        >,
2416        #[prost(message, optional, tag = "6")]
2417        pub time_frame: ::core::option::Option<
2418            super::super::super::common::TimeFrameSelect,
2419        >,
2420    }
2421    #[derive(serde::Serialize, serde::Deserialize)]
2422    #[serde(rename_all = "snake_case")]
2423    #[derive(Clone, PartialEq, ::prost::Message)]
2424    pub struct MetricsQuery {
2425        #[prost(message, optional, tag = "1")]
2426        pub promql_query: ::core::option::Option<
2427            super::super::super::common::PromQlQuery,
2428        >,
2429        #[prost(message, repeated, tag = "2")]
2430        pub filters: ::prost::alloc::vec::Vec<
2431            super::super::filters::filter::MetricsFilter,
2432        >,
2433        #[prost(enumeration = "super::common::MetricsQueryEditorMode", tag = "3")]
2434        pub editor_mode: i32,
2435        #[prost(message, optional, tag = "4")]
2436        pub time_frame: ::core::option::Option<
2437            super::super::super::common::TimeFrameSelect,
2438        >,
2439        #[prost(
2440            enumeration = "super::super::super::common::MetricsSeriesLimitType",
2441            tag = "5"
2442        )]
2443        pub series_limit_type: i32,
2444    }
2445    #[derive(serde::Serialize, serde::Deserialize)]
2446    #[serde(rename_all = "snake_case")]
2447    #[derive(Clone, PartialEq, ::prost::Message)]
2448    pub struct SpansQuery {
2449        #[prost(message, optional, tag = "1")]
2450        pub lucene_query: ::core::option::Option<
2451            super::super::super::common::LuceneQuery,
2452        >,
2453        #[prost(message, repeated, tag = "2")]
2454        pub group_by: ::prost::alloc::vec::Vec<super::super::super::common::SpanField>,
2455        #[prost(message, repeated, tag = "3")]
2456        pub aggregations: ::prost::alloc::vec::Vec<
2457            super::super::super::common::SpansAggregation,
2458        >,
2459        #[prost(message, repeated, tag = "4")]
2460        pub filters: ::prost::alloc::vec::Vec<
2461            super::super::filters::filter::SpansFilter,
2462        >,
2463        #[prost(message, optional, tag = "5")]
2464        pub time_frame: ::core::option::Option<
2465            super::super::super::common::TimeFrameSelect,
2466        >,
2467        #[prost(message, repeated, tag = "6")]
2468        pub group_bys: ::prost::alloc::vec::Vec<
2469            super::super::super::common::SpanObservationField,
2470        >,
2471    }
2472    #[derive(serde::Serialize, serde::Deserialize)]
2473    #[serde(rename_all = "snake_case")]
2474    #[derive(Clone, PartialEq, ::prost::Message)]
2475    pub struct DataprimeQuery {
2476        #[prost(message, optional, tag = "1")]
2477        pub dataprime_query: ::core::option::Option<
2478            super::super::super::common::DataprimeQuery,
2479        >,
2480        #[prost(message, repeated, tag = "2")]
2481        pub filters: ::prost::alloc::vec::Vec<super::super::filters::filter::Source>,
2482        #[prost(message, optional, tag = "3")]
2483        pub time_frame: ::core::option::Option<
2484            super::super::super::common::TimeFrameSelect,
2485        >,
2486    }
2487    #[derive(serde::Serialize, serde::Deserialize)]
2488    #[serde(rename_all = "snake_case")]
2489    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
2490    pub struct Resolution {
2491        /// it should be oneof i think
2492        #[prost(message, optional, tag = "1")]
2493        pub interval: ::core::option::Option<::prost_wkt_types::Duration>,
2494        #[prost(message, optional, tag = "2")]
2495        pub buckets_presented: ::core::option::Option<i32>,
2496    }
2497    #[derive(serde::Serialize, serde::Deserialize)]
2498    #[serde(rename_all = "snake_case")]
2499    #[derive(
2500        Clone,
2501        Copy,
2502        Debug,
2503        PartialEq,
2504        Eq,
2505        Hash,
2506        PartialOrd,
2507        Ord,
2508        ::prost::Enumeration
2509    )]
2510    #[repr(i32)]
2511    pub enum TooltipType {
2512        Unspecified = 0,
2513        All = 1,
2514        Single = 2,
2515    }
2516    impl TooltipType {
2517        /// String value of the enum field names used in the ProtoBuf definition.
2518        ///
2519        /// The values are not transformed in any way and thus are considered stable
2520        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2521        pub fn as_str_name(&self) -> &'static str {
2522            match self {
2523                Self::Unspecified => "TOOLTIP_TYPE_UNSPECIFIED",
2524                Self::All => "TOOLTIP_TYPE_ALL",
2525                Self::Single => "TOOLTIP_TYPE_SINGLE",
2526            }
2527        }
2528        /// Creates an enum from field names used in the ProtoBuf definition.
2529        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2530            match value {
2531                "TOOLTIP_TYPE_UNSPECIFIED" => Some(Self::Unspecified),
2532                "TOOLTIP_TYPE_ALL" => Some(Self::All),
2533                "TOOLTIP_TYPE_SINGLE" => Some(Self::Single),
2534                _ => None,
2535            }
2536        }
2537    }
2538    #[derive(serde::Serialize, serde::Deserialize)]
2539    #[serde(rename_all = "snake_case")]
2540    #[derive(
2541        Clone,
2542        Copy,
2543        Debug,
2544        PartialEq,
2545        Eq,
2546        Hash,
2547        PartialOrd,
2548        Ord,
2549        ::prost::Enumeration
2550    )]
2551    #[repr(i32)]
2552    pub enum StackedLine {
2553        Unspecified = 0,
2554        Absolute = 1,
2555        Relative = 2,
2556    }
2557    impl StackedLine {
2558        /// String value of the enum field names used in the ProtoBuf definition.
2559        ///
2560        /// The values are not transformed in any way and thus are considered stable
2561        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2562        pub fn as_str_name(&self) -> &'static str {
2563            match self {
2564                Self::Unspecified => "STACKED_LINE_UNSPECIFIED",
2565                Self::Absolute => "STACKED_LINE_ABSOLUTE",
2566                Self::Relative => "STACKED_LINE_RELATIVE",
2567            }
2568        }
2569        /// Creates an enum from field names used in the ProtoBuf definition.
2570        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2571            match value {
2572                "STACKED_LINE_UNSPECIFIED" => Some(Self::Unspecified),
2573                "STACKED_LINE_ABSOLUTE" => Some(Self::Absolute),
2574                "STACKED_LINE_RELATIVE" => Some(Self::Relative),
2575                _ => None,
2576            }
2577        }
2578    }
2579}
2580#[derive(serde::Serialize, serde::Deserialize)]
2581#[serde(rename_all = "snake_case")]
2582#[derive(Clone, PartialEq, ::prost::Message)]
2583pub struct Markdown {
2584    #[prost(message, optional, tag = "1")]
2585    pub markdown_text: ::core::option::Option<::prost::alloc::string::String>,
2586    #[prost(message, optional, tag = "2")]
2587    pub tooltip_text: ::core::option::Option<::prost::alloc::string::String>,
2588}
2589#[derive(serde::Serialize, serde::Deserialize)]
2590#[serde(rename_all = "snake_case")]
2591#[derive(Clone, PartialEq, ::prost::Message)]
2592pub struct PieChart {
2593    #[prost(message, optional, tag = "1")]
2594    pub query: ::core::option::Option<pie_chart::Query>,
2595    #[prost(message, optional, tag = "2")]
2596    pub max_slices_per_chart: ::core::option::Option<i32>,
2597    #[prost(message, optional, tag = "3")]
2598    pub min_slice_percentage: ::core::option::Option<i32>,
2599    #[prost(message, optional, tag = "4")]
2600    pub stack_definition: ::core::option::Option<pie_chart::StackDefinition>,
2601    #[prost(message, optional, tag = "5")]
2602    pub label_definition: ::core::option::Option<pie_chart::LabelDefinition>,
2603    /// not used, to be deprecated
2604    #[prost(message, optional, tag = "6")]
2605    pub show_legend: ::core::option::Option<bool>,
2606    #[prost(message, optional, tag = "7")]
2607    pub group_name_template: ::core::option::Option<::prost::alloc::string::String>,
2608    #[prost(enumeration = "common::Unit", tag = "8")]
2609    pub unit: i32,
2610    #[prost(message, optional, tag = "9")]
2611    pub color_scheme: ::core::option::Option<::prost::alloc::string::String>,
2612    #[prost(enumeration = "common::DataModeType", tag = "10")]
2613    pub data_mode_type: i32,
2614    #[prost(message, optional, tag = "11")]
2615    pub custom_unit: ::core::option::Option<::prost::alloc::string::String>,
2616    #[prost(message, optional, tag = "12")]
2617    pub decimal: ::core::option::Option<i32>,
2618    #[prost(message, optional, tag = "13")]
2619    pub legend: ::core::option::Option<common::Legend>,
2620    #[prost(message, optional, tag = "14")]
2621    pub hash_colors: ::core::option::Option<bool>,
2622    #[prost(message, optional, tag = "15")]
2623    pub decimal_precision: ::core::option::Option<bool>,
2624    #[prost(message, optional, tag = "16")]
2625    pub show_total: ::core::option::Option<bool>,
2626}
2627/// Nested message and enum types in `PieChart`.
2628pub mod pie_chart {
2629    #[derive(serde::Serialize, serde::Deserialize)]
2630    #[serde(rename_all = "snake_case")]
2631    #[derive(Clone, PartialEq, ::prost::Message)]
2632    pub struct Query {
2633        #[prost(oneof = "query::Value", tags = "1, 2, 3, 4")]
2634        pub value: ::core::option::Option<query::Value>,
2635    }
2636    /// Nested message and enum types in `Query`.
2637    pub mod query {
2638        #[derive(serde::Serialize, serde::Deserialize)]
2639        #[serde(rename_all = "snake_case")]
2640        #[derive(Clone, PartialEq, ::prost::Oneof)]
2641        pub enum Value {
2642            #[prost(message, tag = "1")]
2643            Logs(super::LogsQuery),
2644            #[prost(message, tag = "2")]
2645            Spans(super::SpansQuery),
2646            #[prost(message, tag = "3")]
2647            Metrics(super::MetricsQuery),
2648            #[prost(message, tag = "4")]
2649            Dataprime(super::DataprimeQuery),
2650        }
2651    }
2652    #[derive(serde::Serialize, serde::Deserialize)]
2653    #[serde(rename_all = "snake_case")]
2654    #[derive(Clone, PartialEq, ::prost::Message)]
2655    pub struct StackDefinition {
2656        #[prost(message, optional, tag = "1")]
2657        pub max_slices_per_stack: ::core::option::Option<i32>,
2658        #[prost(message, optional, tag = "2")]
2659        pub stack_name_template: ::core::option::Option<::prost::alloc::string::String>,
2660    }
2661    #[derive(serde::Serialize, serde::Deserialize)]
2662    #[serde(rename_all = "snake_case")]
2663    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
2664    pub struct LabelDefinition {
2665        #[prost(enumeration = "LabelSource", tag = "1")]
2666        pub label_source: i32,
2667        #[prost(message, optional, tag = "2")]
2668        pub is_visible: ::core::option::Option<bool>,
2669        #[prost(message, optional, tag = "3")]
2670        pub show_name: ::core::option::Option<bool>,
2671        #[prost(message, optional, tag = "4")]
2672        pub show_value: ::core::option::Option<bool>,
2673        #[prost(message, optional, tag = "5")]
2674        pub show_percentage: ::core::option::Option<bool>,
2675    }
2676    #[derive(serde::Serialize, serde::Deserialize)]
2677    #[serde(rename_all = "snake_case")]
2678    #[derive(Clone, PartialEq, ::prost::Message)]
2679    pub struct LogsQuery {
2680        #[prost(message, optional, tag = "1")]
2681        pub lucene_query: ::core::option::Option<
2682            super::super::super::common::LuceneQuery,
2683        >,
2684        #[prost(message, optional, tag = "2")]
2685        pub aggregation: ::core::option::Option<
2686            super::super::super::common::LogsAggregation,
2687        >,
2688        #[prost(message, repeated, tag = "3")]
2689        pub filters: ::prost::alloc::vec::Vec<super::super::filters::filter::LogsFilter>,
2690        #[prost(message, repeated, tag = "4")]
2691        pub group_names: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2692        #[prost(message, optional, tag = "5")]
2693        pub stacked_group_name: ::core::option::Option<::prost::alloc::string::String>,
2694        #[prost(message, repeated, tag = "6")]
2695        pub group_names_fields: ::prost::alloc::vec::Vec<
2696            super::super::super::common::ObservationField,
2697        >,
2698        #[prost(message, optional, tag = "7")]
2699        pub stacked_group_name_field: ::core::option::Option<
2700            super::super::super::common::ObservationField,
2701        >,
2702        #[prost(message, optional, tag = "8")]
2703        pub time_frame: ::core::option::Option<
2704            super::super::super::common::TimeFrameSelect,
2705        >,
2706    }
2707    #[derive(serde::Serialize, serde::Deserialize)]
2708    #[serde(rename_all = "snake_case")]
2709    #[derive(Clone, PartialEq, ::prost::Message)]
2710    pub struct SpansQuery {
2711        #[prost(message, optional, tag = "1")]
2712        pub lucene_query: ::core::option::Option<
2713            super::super::super::common::LuceneQuery,
2714        >,
2715        #[prost(message, optional, tag = "2")]
2716        pub aggregation: ::core::option::Option<
2717            super::super::super::common::SpansAggregation,
2718        >,
2719        #[prost(message, repeated, tag = "3")]
2720        pub filters: ::prost::alloc::vec::Vec<
2721            super::super::filters::filter::SpansFilter,
2722        >,
2723        #[prost(message, repeated, tag = "4")]
2724        pub group_names: ::prost::alloc::vec::Vec<
2725            super::super::super::common::SpanField,
2726        >,
2727        #[prost(message, optional, tag = "5")]
2728        pub stacked_group_name: ::core::option::Option<
2729            super::super::super::common::SpanField,
2730        >,
2731        #[prost(message, optional, tag = "6")]
2732        pub time_frame: ::core::option::Option<
2733            super::super::super::common::TimeFrameSelect,
2734        >,
2735        #[prost(message, repeated, tag = "7")]
2736        pub group_names_fields: ::prost::alloc::vec::Vec<
2737            super::super::super::common::SpanObservationField,
2738        >,
2739        #[prost(message, optional, tag = "8")]
2740        pub stacked_group_name_field: ::core::option::Option<
2741            super::super::super::common::SpanObservationField,
2742        >,
2743    }
2744    #[derive(serde::Serialize, serde::Deserialize)]
2745    #[serde(rename_all = "snake_case")]
2746    #[derive(Clone, PartialEq, ::prost::Message)]
2747    pub struct MetricsQuery {
2748        #[prost(message, optional, tag = "1")]
2749        pub promql_query: ::core::option::Option<
2750            super::super::super::common::PromQlQuery,
2751        >,
2752        #[prost(message, repeated, tag = "2")]
2753        pub filters: ::prost::alloc::vec::Vec<
2754            super::super::filters::filter::MetricsFilter,
2755        >,
2756        #[prost(message, repeated, tag = "3")]
2757        pub group_names: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2758        #[prost(message, optional, tag = "4")]
2759        pub stacked_group_name: ::core::option::Option<::prost::alloc::string::String>,
2760        #[prost(enumeration = "super::common::MetricsQueryEditorMode", tag = "5")]
2761        pub editor_mode: i32,
2762        #[prost(message, optional, tag = "6")]
2763        pub time_frame: ::core::option::Option<
2764            super::super::super::common::TimeFrameSelect,
2765        >,
2766        #[prost(enumeration = "super::super::super::common::PromQlQueryType", tag = "7")]
2767        pub promql_query_type: i32,
2768        #[prost(enumeration = "super::common::Aggregation", tag = "8")]
2769        pub aggregation: i32,
2770    }
2771    #[derive(serde::Serialize, serde::Deserialize)]
2772    #[serde(rename_all = "snake_case")]
2773    #[derive(Clone, PartialEq, ::prost::Message)]
2774    pub struct DataprimeQuery {
2775        #[prost(message, optional, tag = "1")]
2776        pub dataprime_query: ::core::option::Option<
2777            super::super::super::common::DataprimeQuery,
2778        >,
2779        #[prost(message, repeated, tag = "2")]
2780        pub filters: ::prost::alloc::vec::Vec<super::super::filters::filter::Source>,
2781        #[prost(message, repeated, tag = "3")]
2782        pub group_names: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2783        #[prost(message, optional, tag = "4")]
2784        pub stacked_group_name: ::core::option::Option<::prost::alloc::string::String>,
2785        #[prost(message, optional, tag = "5")]
2786        pub time_frame: ::core::option::Option<
2787            super::super::super::common::TimeFrameSelect,
2788        >,
2789    }
2790    #[derive(serde::Serialize, serde::Deserialize)]
2791    #[serde(rename_all = "snake_case")]
2792    #[derive(
2793        Clone,
2794        Copy,
2795        Debug,
2796        PartialEq,
2797        Eq,
2798        Hash,
2799        PartialOrd,
2800        Ord,
2801        ::prost::Enumeration
2802    )]
2803    #[repr(i32)]
2804    pub enum LabelSource {
2805        Unspecified = 0,
2806        Inner = 1,
2807        Stack = 2,
2808    }
2809    impl LabelSource {
2810        /// String value of the enum field names used in the ProtoBuf definition.
2811        ///
2812        /// The values are not transformed in any way and thus are considered stable
2813        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2814        pub fn as_str_name(&self) -> &'static str {
2815            match self {
2816                Self::Unspecified => "LABEL_SOURCE_UNSPECIFIED",
2817                Self::Inner => "LABEL_SOURCE_INNER",
2818                Self::Stack => "LABEL_SOURCE_STACK",
2819            }
2820        }
2821        /// Creates an enum from field names used in the ProtoBuf definition.
2822        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2823            match value {
2824                "LABEL_SOURCE_UNSPECIFIED" => Some(Self::Unspecified),
2825                "LABEL_SOURCE_INNER" => Some(Self::Inner),
2826                "LABEL_SOURCE_STACK" => Some(Self::Stack),
2827                _ => None,
2828            }
2829        }
2830    }
2831}