Skip to content

Commit 3071bc2

Browse files
api-clients-generation-pipeline[bot]ci.datadog-api-spec
andauthored
Add Product Analytics widget definitions (#1477)
Co-authored-by: ci.datadog-api-spec <packages@datadoghq.com>
1 parent 6f0f7a1 commit 3071bc2

67 files changed

Lines changed: 7820 additions & 178 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.generator/schemas/v1/openapi.yaml

Lines changed: 1193 additions & 165 deletions
Large diffs are not rendered by default.

src/datadogV1/model/mod.rs

Lines changed: 134 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -250,6 +250,94 @@ pub mod model_widget_aggregator;
250250
pub use self::model_widget_aggregator::WidgetAggregator;
251251
pub mod model_formula_and_function_cloud_cost_data_source;
252252
pub use self::model_formula_and_function_cloud_cost_data_source::FormulaAndFunctionCloudCostDataSource;
253+
pub mod model_formula_and_function_product_analytics_extended_query_definition;
254+
pub use self::model_formula_and_function_product_analytics_extended_query_definition::FormulaAndFunctionProductAnalyticsExtendedQueryDefinition;
255+
pub mod model_product_analytics_audience_filters;
256+
pub use self::model_product_analytics_audience_filters::ProductAnalyticsAudienceFilters;
257+
pub mod model_product_analytics_audience_account_subquery;
258+
pub use self::model_product_analytics_audience_account_subquery::ProductAnalyticsAudienceAccountSubquery;
259+
pub mod model_product_analytics_audience_segment_subquery;
260+
pub use self::model_product_analytics_audience_segment_subquery::ProductAnalyticsAudienceSegmentSubquery;
261+
pub mod model_product_analytics_audience_user_subquery;
262+
pub use self::model_product_analytics_audience_user_subquery::ProductAnalyticsAudienceUserSubquery;
263+
pub mod model_product_analytics_extended_compute;
264+
pub use self::model_product_analytics_extended_compute::ProductAnalyticsExtendedCompute;
265+
pub mod model_calendar_interval;
266+
pub use self::model_calendar_interval::CalendarInterval;
267+
pub mod model_calendar_interval_type;
268+
pub use self::model_calendar_interval_type::CalendarIntervalType;
269+
pub mod model_formula_and_function_product_analytics_extended_data_source;
270+
pub use self::model_formula_and_function_product_analytics_extended_data_source::FormulaAndFunctionProductAnalyticsExtendedDataSource;
271+
pub mod model_product_analytics_extended_group_by;
272+
pub use self::model_product_analytics_extended_group_by::ProductAnalyticsExtendedGroupBy;
273+
pub mod model_formula_and_function_product_analytics_extended_query_definition_indexes_items;
274+
pub use self::model_formula_and_function_product_analytics_extended_query_definition_indexes_items::FormulaAndFunctionProductAnalyticsExtendedQueryDefinitionIndexesItems;
275+
pub mod model_product_analytics_base_query;
276+
pub use self::model_product_analytics_base_query::ProductAnalyticsBaseQuery;
277+
pub mod model_product_analytics_event_data_source;
278+
pub use self::model_product_analytics_event_data_source::ProductAnalyticsEventDataSource;
279+
pub mod model_product_analytics_event_query_search;
280+
pub use self::model_product_analytics_event_query_search::ProductAnalyticsEventQuerySearch;
281+
pub mod model_formula_and_function_user_journey_query_definition;
282+
pub use self::model_formula_and_function_user_journey_query_definition::FormulaAndFunctionUserJourneyQueryDefinition;
283+
pub mod model_user_journey_formula_compute;
284+
pub use self::model_user_journey_formula_compute::UserJourneyFormulaCompute;
285+
pub mod model_user_journey_formula_compute_metric;
286+
pub use self::model_user_journey_formula_compute_metric::UserJourneyFormulaComputeMetric;
287+
pub mod model_user_journey_search_target;
288+
pub use self::model_user_journey_search_target::UserJourneySearchTarget;
289+
pub mod model_product_analytics_funnel_data_source;
290+
pub use self::model_product_analytics_funnel_data_source::ProductAnalyticsFunnelDataSource;
291+
pub mod model_user_journey_formula_group_by;
292+
pub use self::model_user_journey_formula_group_by::UserJourneyFormulaGroupBy;
293+
pub mod model_user_journey_search;
294+
pub use self::model_user_journey_search::UserJourneySearch;
295+
pub mod model_user_journey_search_filters;
296+
pub use self::model_user_journey_search_filters::UserJourneySearchFilters;
297+
pub mod model_user_journey_search_graph_filter;
298+
pub use self::model_user_journey_search_graph_filter::UserJourneySearchGraphFilter;
299+
pub mod model_user_journey_join_keys;
300+
pub use self::model_user_journey_join_keys::UserJourneyJoinKeys;
301+
pub mod model_formula_and_function_retention_query_definition;
302+
pub use self::model_formula_and_function_retention_query_definition::FormulaAndFunctionRetentionQueryDefinition;
303+
pub mod model_retention_compute;
304+
pub use self::model_retention_compute::RetentionCompute;
305+
pub mod model_events_aggregation_value;
306+
pub use self::model_events_aggregation_value::EventsAggregationValue;
307+
pub mod model_events_aggregation;
308+
pub use self::model_events_aggregation::EventsAggregation;
309+
pub mod model_retention_compute_metric;
310+
pub use self::model_retention_compute_metric::RetentionComputeMetric;
311+
pub mod model_retention_data_source;
312+
pub use self::model_retention_data_source::RetentionDataSource;
313+
pub mod model_retention_group_by;
314+
pub use self::model_retention_group_by::RetentionGroupBy;
315+
pub mod model_retention_group_by_sort;
316+
pub use self::model_retention_group_by_sort::RetentionGroupBySort;
317+
pub mod model_retention_group_by_target;
318+
pub use self::model_retention_group_by_target::RetentionGroupByTarget;
319+
pub mod model_retention_search;
320+
pub use self::model_retention_search::RetentionSearch;
321+
pub mod model_retention_cohort_criteria;
322+
pub use self::model_retention_cohort_criteria::RetentionCohortCriteria;
323+
pub mod model_retention_cohort_criteria_time_interval;
324+
pub use self::model_retention_cohort_criteria_time_interval::RetentionCohortCriteriaTimeInterval;
325+
pub mod model_retention_cohort_criteria_time_interval_type;
326+
pub use self::model_retention_cohort_criteria_time_interval_type::RetentionCohortCriteriaTimeIntervalType;
327+
pub mod model_retention_filters;
328+
pub use self::model_retention_filters::RetentionFilters;
329+
pub mod model_retention_entity;
330+
pub use self::model_retention_entity::RetentionEntity;
331+
pub mod model_retention_return_condition;
332+
pub use self::model_retention_return_condition::RetentionReturnCondition;
333+
pub mod model_retention_return_criteria;
334+
pub use self::model_retention_return_criteria::RetentionReturnCriteria;
335+
pub mod model_retention_return_criteria_time_interval;
336+
pub use self::model_retention_return_criteria_time_interval::RetentionReturnCriteriaTimeInterval;
337+
pub mod model_retention_return_criteria_time_interval_type;
338+
pub use self::model_retention_return_criteria_time_interval_type::RetentionReturnCriteriaTimeIntervalType;
339+
pub mod model_retention_return_criteria_time_interval_unit;
340+
pub use self::model_retention_return_criteria_time_interval_unit::RetentionReturnCriteriaTimeIntervalUnit;
253341
pub mod model_formula_and_function_query_definition;
254342
pub use self::model_formula_and_function_query_definition::FormulaAndFunctionQueryDefinition;
255343
pub mod model_formula_and_function_response_format;
@@ -310,6 +398,16 @@ pub mod model_widget_grouping;
310398
pub use self::model_widget_grouping::WidgetGrouping;
311399
pub mod model_check_status_widget_definition_type;
312400
pub use self::model_check_status_widget_definition_type::CheckStatusWidgetDefinitionType;
401+
pub mod model_cohort_widget_definition;
402+
pub use self::model_cohort_widget_definition::CohortWidgetDefinition;
403+
pub mod model_retention_grid_request;
404+
pub use self::model_retention_grid_request::RetentionGridRequest;
405+
pub mod model_retention_query;
406+
pub use self::model_retention_query::RetentionQuery;
407+
pub mod model_retention_grid_request_type;
408+
pub use self::model_retention_grid_request_type::RetentionGridRequestType;
409+
pub mod model_cohort_widget_definition_type;
410+
pub use self::model_cohort_widget_definition_type::CohortWidgetDefinitionType;
313411
pub mod model_distribution_widget_definition;
314412
pub use self::model_distribution_widget_definition::DistributionWidgetDefinition;
315413
pub mod model_widget_marker;
@@ -350,6 +448,8 @@ pub mod model_free_text_widget_definition_type;
350448
pub use self::model_free_text_widget_definition_type::FreeTextWidgetDefinitionType;
351449
pub mod model_funnel_widget_definition;
352450
pub use self::model_funnel_widget_definition::FunnelWidgetDefinition;
451+
pub mod model_funnel_grouped_display;
452+
pub use self::model_funnel_grouped_display::FunnelGroupedDisplay;
353453
pub mod model_funnel_widget_request;
354454
pub use self::model_funnel_widget_request::FunnelWidgetRequest;
355455
pub mod model_funnel_query;
@@ -362,6 +462,30 @@ pub mod model_funnel_request_type;
362462
pub use self::model_funnel_request_type::FunnelRequestType;
363463
pub mod model_funnel_widget_definition_type;
364464
pub use self::model_funnel_widget_definition_type::FunnelWidgetDefinitionType;
465+
pub mod model_product_analytics_funnel_widget_definition;
466+
pub use self::model_product_analytics_funnel_widget_definition::ProductAnalyticsFunnelWidgetDefinition;
467+
pub mod model_product_analytics_funnel_request;
468+
pub use self::model_product_analytics_funnel_request::ProductAnalyticsFunnelRequest;
469+
pub mod model_funnel_comparison_duration;
470+
pub use self::model_funnel_comparison_duration::FunnelComparisonDuration;
471+
pub mod model_funnel_comparison_custom_timeframe;
472+
pub use self::model_funnel_comparison_custom_timeframe::FunnelComparisonCustomTimeframe;
473+
pub mod model_funnel_comparison_duration_type;
474+
pub use self::model_funnel_comparison_duration_type::FunnelComparisonDurationType;
475+
pub mod model_product_analytics_funnel_query;
476+
pub use self::model_product_analytics_funnel_query::ProductAnalyticsFunnelQuery;
477+
pub mod model_product_analytics_funnel_compute;
478+
pub use self::model_product_analytics_funnel_compute::ProductAnalyticsFunnelCompute;
479+
pub mod model_product_analytics_funnel_compute_aggregation;
480+
pub use self::model_product_analytics_funnel_compute_aggregation::ProductAnalyticsFunnelComputeAggregation;
481+
pub mod model_product_analytics_funnel_compute_metric;
482+
pub use self::model_product_analytics_funnel_compute_metric::ProductAnalyticsFunnelComputeMetric;
483+
pub mod model_product_analytics_funnel_group_by;
484+
pub use self::model_product_analytics_funnel_group_by::ProductAnalyticsFunnelGroupBy;
485+
pub mod model_product_analytics_funnel_group_by_sort;
486+
pub use self::model_product_analytics_funnel_group_by_sort::ProductAnalyticsFunnelGroupBySort;
487+
pub mod model_product_analytics_funnel_request_type;
488+
pub use self::model_product_analytics_funnel_request_type::ProductAnalyticsFunnelRequestType;
365489
pub mod model_geomap_widget_definition;
366490
pub use self::model_geomap_widget_definition::GeomapWidgetDefinition;
367491
pub mod model_geomap_widget_request;
@@ -506,6 +630,16 @@ pub mod model_timeseries_background_type;
506630
pub use self::model_timeseries_background_type::TimeseriesBackgroundType;
507631
pub mod model_query_value_widget_definition_type;
508632
pub use self::model_query_value_widget_definition_type::QueryValueWidgetDefinitionType;
633+
pub mod model_retention_curve_widget_definition;
634+
pub use self::model_retention_curve_widget_definition::RetentionCurveWidgetDefinition;
635+
pub mod model_retention_curve_widget_request;
636+
pub use self::model_retention_curve_widget_request::RetentionCurveWidgetRequest;
637+
pub mod model_retention_curve_request_type;
638+
pub use self::model_retention_curve_request_type::RetentionCurveRequestType;
639+
pub mod model_retention_curve_style;
640+
pub use self::model_retention_curve_style::RetentionCurveStyle;
641+
pub mod model_retention_curve_widget_definition_type;
642+
pub use self::model_retention_curve_widget_definition_type::RetentionCurveWidgetDefinitionType;
509643
pub mod model_run_workflow_widget_definition;
510644
pub use self::model_run_workflow_widget_definition::RunWorkflowWidgetDefinition;
511645
pub mod model_run_workflow_widget_input;
@@ -552,14 +686,6 @@ pub mod model_sankey_rum_request;
552686
pub use self::model_sankey_rum_request::SankeyRumRequest;
553687
pub mod model_sankey_rum_query;
554688
pub use self::model_sankey_rum_query::SankeyRumQuery;
555-
pub mod model_product_analytics_audience_filters;
556-
pub use self::model_product_analytics_audience_filters::ProductAnalyticsAudienceFilters;
557-
pub mod model_product_analytics_audience_account_subquery;
558-
pub use self::model_product_analytics_audience_account_subquery::ProductAnalyticsAudienceAccountSubquery;
559-
pub mod model_product_analytics_audience_segment_subquery;
560-
pub use self::model_product_analytics_audience_segment_subquery::ProductAnalyticsAudienceSegmentSubquery;
561-
pub mod model_product_analytics_audience_user_subquery;
562-
pub use self::model_product_analytics_audience_user_subquery::ProductAnalyticsAudienceUserSubquery;
563689
pub mod model_sankey_rum_data_source;
564690
pub use self::model_sankey_rum_data_source::SankeyRumDataSource;
565691
pub mod model_sankey_join_keys;
@@ -576,10 +702,6 @@ pub mod model_sankey_network_query;
576702
pub use self::model_sankey_network_query::SankeyNetworkQuery;
577703
pub mod model_sankey_network_query_compute;
578704
pub use self::model_sankey_network_query_compute::SankeyNetworkQueryCompute;
579-
pub mod model_events_aggregation_value;
580-
pub use self::model_events_aggregation_value::EventsAggregationValue;
581-
pub mod model_events_aggregation;
582-
pub use self::model_events_aggregation::EventsAggregation;
583705
pub mod model_sankey_network_data_source;
584706
pub use self::model_sankey_network_data_source::SankeyNetworkDataSource;
585707
pub mod model_sankey_network_query_mode;
Lines changed: 135 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,135 @@
1+
// Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
2+
// This product includes software developed at Datadog (https://www.datadoghq.com/).
3+
// Copyright 2019-Present Datadog, Inc.
4+
use serde::de::{Error, MapAccess, Visitor};
5+
use serde::{Deserialize, Deserializer, Serialize};
6+
use serde_with::skip_serializing_none;
7+
use std::fmt::{self, Formatter};
8+
9+
/// Calendar interval definition.
10+
#[non_exhaustive]
11+
#[skip_serializing_none]
12+
#[derive(Clone, Debug, PartialEq, Serialize)]
13+
pub struct CalendarInterval {
14+
/// Alignment of the interval. Valid values depend on the interval type. For `day`, use hours (for example, `1am`, `2pm`, or `14`). For `week`, use day names (for example, `monday`). For `month`, use day-of-month ordinals (for example, `1st`, `15th`). For `year` or `quarter`, use month names (for example, `january`).
15+
#[serde(rename = "alignment")]
16+
pub alignment: Option<String>,
17+
/// Quantity of the interval.
18+
#[serde(rename = "quantity")]
19+
pub quantity: Option<i64>,
20+
/// Timezone for the interval.
21+
#[serde(rename = "timezone")]
22+
pub timezone: Option<String>,
23+
/// Type of calendar interval.
24+
#[serde(rename = "type")]
25+
pub type_: crate::datadogV1::model::CalendarIntervalType,
26+
#[serde(skip)]
27+
#[serde(default)]
28+
pub(crate) _unparsed: bool,
29+
}
30+
31+
impl CalendarInterval {
32+
pub fn new(type_: crate::datadogV1::model::CalendarIntervalType) -> CalendarInterval {
33+
CalendarInterval {
34+
alignment: None,
35+
quantity: None,
36+
timezone: None,
37+
type_,
38+
_unparsed: false,
39+
}
40+
}
41+
42+
pub fn alignment(mut self, value: String) -> Self {
43+
self.alignment = Some(value);
44+
self
45+
}
46+
47+
pub fn quantity(mut self, value: i64) -> Self {
48+
self.quantity = Some(value);
49+
self
50+
}
51+
52+
pub fn timezone(mut self, value: String) -> Self {
53+
self.timezone = Some(value);
54+
self
55+
}
56+
}
57+
58+
impl<'de> Deserialize<'de> for CalendarInterval {
59+
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
60+
where
61+
D: Deserializer<'de>,
62+
{
63+
struct CalendarIntervalVisitor;
64+
impl<'a> Visitor<'a> for CalendarIntervalVisitor {
65+
type Value = CalendarInterval;
66+
67+
fn expecting(&self, f: &mut Formatter<'_>) -> fmt::Result {
68+
f.write_str("a mapping")
69+
}
70+
71+
fn visit_map<M>(self, mut map: M) -> Result<Self::Value, M::Error>
72+
where
73+
M: MapAccess<'a>,
74+
{
75+
let mut alignment: Option<String> = None;
76+
let mut quantity: Option<i64> = None;
77+
let mut timezone: Option<String> = None;
78+
let mut type_: Option<crate::datadogV1::model::CalendarIntervalType> = None;
79+
let mut _unparsed = false;
80+
81+
while let Some((k, v)) = map.next_entry::<String, serde_json::Value>()? {
82+
match k.as_str() {
83+
"alignment" => {
84+
if v.is_null() {
85+
continue;
86+
}
87+
alignment = Some(serde_json::from_value(v).map_err(M::Error::custom)?);
88+
}
89+
"quantity" => {
90+
if v.is_null() {
91+
continue;
92+
}
93+
quantity = Some(serde_json::from_value(v).map_err(M::Error::custom)?);
94+
}
95+
"timezone" => {
96+
if v.is_null() {
97+
continue;
98+
}
99+
timezone = Some(serde_json::from_value(v).map_err(M::Error::custom)?);
100+
}
101+
"type" => {
102+
type_ = Some(serde_json::from_value(v).map_err(M::Error::custom)?);
103+
if let Some(ref _type_) = type_ {
104+
match _type_ {
105+
crate::datadogV1::model::CalendarIntervalType::UnparsedObject(_type_) => {
106+
_unparsed = true;
107+
},
108+
_ => {}
109+
}
110+
}
111+
}
112+
&_ => {
113+
return Err(serde::de::Error::custom(
114+
"Additional properties not allowed",
115+
));
116+
}
117+
}
118+
}
119+
let type_ = type_.ok_or_else(|| M::Error::missing_field("type_"))?;
120+
121+
let content = CalendarInterval {
122+
alignment,
123+
quantity,
124+
timezone,
125+
type_,
126+
_unparsed,
127+
};
128+
129+
Ok(content)
130+
}
131+
}
132+
133+
deserializer.deserialize_any(CalendarIntervalVisitor)
134+
}
135+
}
Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
// Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
2+
// This product includes software developed at Datadog (https://www.datadoghq.com/).
3+
// Copyright 2019-Present Datadog, Inc.
4+
5+
use serde::{Deserialize, Deserializer, Serialize, Serializer};
6+
7+
#[non_exhaustive]
8+
#[derive(Clone, Debug, Eq, PartialEq)]
9+
pub enum CalendarIntervalType {
10+
DAY,
11+
WEEK,
12+
MONTH,
13+
YEAR,
14+
QUARTER,
15+
MINUTE,
16+
HOUR,
17+
UnparsedObject(crate::datadog::UnparsedObject),
18+
}
19+
20+
impl ToString for CalendarIntervalType {
21+
fn to_string(&self) -> String {
22+
match self {
23+
Self::DAY => String::from("day"),
24+
Self::WEEK => String::from("week"),
25+
Self::MONTH => String::from("month"),
26+
Self::YEAR => String::from("year"),
27+
Self::QUARTER => String::from("quarter"),
28+
Self::MINUTE => String::from("minute"),
29+
Self::HOUR => String::from("hour"),
30+
Self::UnparsedObject(v) => v.value.to_string(),
31+
}
32+
}
33+
}
34+
35+
impl Serialize for CalendarIntervalType {
36+
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
37+
where
38+
S: Serializer,
39+
{
40+
match self {
41+
Self::UnparsedObject(v) => v.serialize(serializer),
42+
_ => serializer.serialize_str(self.to_string().as_str()),
43+
}
44+
}
45+
}
46+
47+
impl<'de> Deserialize<'de> for CalendarIntervalType {
48+
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
49+
where
50+
D: Deserializer<'de>,
51+
{
52+
let s: String = String::deserialize(deserializer)?;
53+
Ok(match s.as_str() {
54+
"day" => Self::DAY,
55+
"week" => Self::WEEK,
56+
"month" => Self::MONTH,
57+
"year" => Self::YEAR,
58+
"quarter" => Self::QUARTER,
59+
"minute" => Self::MINUTE,
60+
"hour" => Self::HOUR,
61+
_ => Self::UnparsedObject(crate::datadog::UnparsedObject {
62+
value: serde_json::Value::String(s.into()),
63+
}),
64+
})
65+
}
66+
}

0 commit comments

Comments
 (0)