Skip to content

Commit 841e2ae

Browse files
api-clients-generation-pipeline[bot]ci.datadog-api-spec
andauthored
Update distribution and heatmap's markers ,num_buckets properties and allowed request/query (#1064)
Co-authored-by: ci.datadog-api-spec <packages@datadoghq.com>
1 parent 16de925 commit 841e2ae

22 files changed

+858
-29
lines changed

.generator/schemas/v1/openapi.yaml

Lines changed: 64 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1741,6 +1741,9 @@ components:
17411741
type: string
17421742
markers:
17431743
description: List of markers.
1744+
example:
1745+
- display_type: percentile
1746+
value: '90'
17441747
items:
17451748
$ref: '#/components/schemas/WidgetMarker'
17461749
type: array
@@ -1799,14 +1802,6 @@ components:
17991802
- $ref: '#/components/schemas/FormulaAndFunctionMetricQueryDefinition'
18001803
- $ref: '#/components/schemas/FormulaAndFunctionEventQueryDefinition'
18011804
- $ref: '#/components/schemas/FormulaAndFunctionApmResourceStatsQueryDefinition'
1802-
DistributionWidgetHistogramRequestType:
1803-
description: Request type for the histogram request.
1804-
enum:
1805-
- histogram
1806-
example: histogram
1807-
type: string
1808-
x-enum-varnames:
1809-
- HISTOGRAM
18101805
DistributionWidgetRequest:
18111806
description: Updated distribution widget.
18121807
properties:
@@ -1816,6 +1811,11 @@ components:
18161811
$ref: '#/components/schemas/ApmStatsQueryDefinition'
18171812
event_query:
18181813
$ref: '#/components/schemas/LogQueryDefinition'
1814+
formulas:
1815+
description: List of formulas that operate on queries.
1816+
items:
1817+
$ref: '#/components/schemas/WidgetFormula'
1818+
type: array
18191819
log_query:
18201820
$ref: '#/components/schemas/LogQueryDefinition'
18211821
network_query:
@@ -1827,10 +1827,17 @@ components:
18271827
q:
18281828
description: Widget query.
18291829
type: string
1830+
queries:
1831+
description: List of queries that can be returned directly or used in formulas.
1832+
items:
1833+
$ref: '#/components/schemas/FormulaAndFunctionQueryDefinition'
1834+
type: array
18301835
query:
18311836
$ref: '#/components/schemas/DistributionWidgetHistogramRequestQuery'
18321837
request_type:
1833-
$ref: '#/components/schemas/DistributionWidgetHistogramRequestType'
1838+
$ref: '#/components/schemas/WidgetHistogramRequestType'
1839+
response_format:
1840+
$ref: '#/components/schemas/FormulaAndFunctionResponseFormat'
18341841
rum_query:
18351842
$ref: '#/components/schemas/LogQueryDefinition'
18361843
security_query:
@@ -1854,6 +1861,12 @@ components:
18541861
description: Specifies minimum value to show on the x-axis. It takes a number,
18551862
percentile (p90 === 90th percentile), or auto for default behavior.
18561863
type: string
1864+
num_buckets:
1865+
description: Number of value buckets to target, also known as the resolution
1866+
of the value bins.
1867+
format: int64
1868+
minimum: 1
1869+
type: integer
18571870
scale:
18581871
default: linear
18591872
description: Specifies the scale type. Possible values are `linear`.
@@ -3752,6 +3765,14 @@ components:
37523765
type: array
37533766
legend_size:
37543767
$ref: '#/components/schemas/WidgetLegendSize'
3768+
markers:
3769+
description: List of markers.
3770+
example:
3771+
- display_type: percentile
3772+
value: '90'
3773+
items:
3774+
$ref: '#/components/schemas/WidgetMarker'
3775+
type: array
37553776
requests:
37563777
description: List of widget types.
37573778
example:
@@ -3776,6 +3797,8 @@ components:
37763797
type: string
37773798
type:
37783799
$ref: '#/components/schemas/HeatMapWidgetDefinitionType'
3800+
xaxis:
3801+
$ref: '#/components/schemas/HeatMapWidgetXAxis'
37793802
yaxis:
37803803
$ref: '#/components/schemas/WidgetAxis'
37813804
required:
@@ -3819,6 +3842,10 @@ components:
38193842
items:
38203843
$ref: '#/components/schemas/FormulaAndFunctionQueryDefinition'
38213844
type: array
3845+
query:
3846+
$ref: '#/components/schemas/FormulaAndFunctionMetricQueryDefinition'
3847+
request_type:
3848+
$ref: '#/components/schemas/WidgetHistogramRequestType'
38223849
response_format:
38233850
$ref: '#/components/schemas/FormulaAndFunctionResponseFormat'
38243851
rum_query:
@@ -3828,6 +3855,19 @@ components:
38283855
style:
38293856
$ref: '#/components/schemas/WidgetStyle'
38303857
type: object
3858+
HeatMapWidgetXAxis:
3859+
description: X Axis controls for the heat map widget.
3860+
properties:
3861+
num_buckets:
3862+
description: 'Number of time buckets to target, also known as the resolution
3863+
3864+
of the time bins. This is only applicable for distribution of
3865+
3866+
points (group distributions use the roll-up modifier).'
3867+
format: int64
3868+
minimum: 1
3869+
type: integer
3870+
type: object
38313871
Host:
38323872
description: Object representing a host.
38333873
properties:
@@ -25230,6 +25270,14 @@ components:
2523025270
x-enum-varnames:
2523125271
- CHECK
2523225272
- CLUSTER
25273+
WidgetHistogramRequestType:
25274+
description: Request type for the histogram request.
25275+
enum:
25276+
- histogram
25277+
example: histogram
25278+
type: string
25279+
x-enum-varnames:
25280+
- HISTOGRAM
2523325281
WidgetHorizontalAlign:
2523425282
description: Horizontal alignment.
2523525283
enum:
@@ -25434,7 +25482,7 @@ components:
2543425482
display_type:
2543525483
description: "Combination of:\n - A severity error, warning, ok, or info\n
2543625484
\ - A line type: dashed, solid, or bold\nIn this case of a Distribution
25437-
widget, this can be set to be `x_axis_percentile`."
25485+
widget, this can be set to be `percentile`."
2543825486
example: error dashed
2543925487
type: string
2544025488
label:
@@ -25445,8 +25493,13 @@ components:
2544525493
description: Timestamp for the widget.
2544625494
type: string
2544725495
value:
25448-
description: Value to apply. Can be a single value y = 15 or a range of
25496+
description: 'Value to apply. Can be a single value y = 15 or a range of
2544925497
values 0 < y < 10.
25498+
25499+
For Distribution widgets with `display_type` set to `percentile`, this
25500+
should be
25501+
25502+
a numeric percentile value (for example, "90" for P90).'
2545025503
example: y = 15
2545125504
type: string
2545225505
required:
Lines changed: 91 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,91 @@
1+
// Create a new dashboard with distribution widget with markers and num_buckets
2+
use datadog_api_client::datadog;
3+
use datadog_api_client::datadogV1::api_dashboards::DashboardsAPI;
4+
use datadog_api_client::datadogV1::model::Dashboard;
5+
use datadog_api_client::datadogV1::model::DashboardLayoutType;
6+
use datadog_api_client::datadogV1::model::DistributionWidgetDefinition;
7+
use datadog_api_client::datadogV1::model::DistributionWidgetDefinitionType;
8+
use datadog_api_client::datadogV1::model::DistributionWidgetRequest;
9+
use datadog_api_client::datadogV1::model::DistributionWidgetXAxis;
10+
use datadog_api_client::datadogV1::model::DistributionWidgetYAxis;
11+
use datadog_api_client::datadogV1::model::FormulaAndFunctionMetricAggregation;
12+
use datadog_api_client::datadogV1::model::FormulaAndFunctionMetricDataSource;
13+
use datadog_api_client::datadogV1::model::FormulaAndFunctionMetricQueryDefinition;
14+
use datadog_api_client::datadogV1::model::FormulaAndFunctionQueryDefinition;
15+
use datadog_api_client::datadogV1::model::FormulaAndFunctionResponseFormat;
16+
use datadog_api_client::datadogV1::model::Widget;
17+
use datadog_api_client::datadogV1::model::WidgetDefinition;
18+
use datadog_api_client::datadogV1::model::WidgetLayout;
19+
use datadog_api_client::datadogV1::model::WidgetMarker;
20+
use datadog_api_client::datadogV1::model::WidgetTextAlign;
21+
22+
#[tokio::main]
23+
async fn main() {
24+
let body =
25+
Dashboard::new(
26+
DashboardLayoutType::ORDERED,
27+
"Example-Dashboard".to_string(),
28+
vec![
29+
Widget::new(
30+
WidgetDefinition::DistributionWidgetDefinition(
31+
Box::new(
32+
DistributionWidgetDefinition::new(
33+
vec![
34+
DistributionWidgetRequest::new()
35+
.queries(
36+
vec![
37+
FormulaAndFunctionQueryDefinition
38+
::FormulaAndFunctionMetricQueryDefinition(
39+
Box::new(
40+
FormulaAndFunctionMetricQueryDefinition::new(
41+
FormulaAndFunctionMetricDataSource::METRICS,
42+
"query1".to_string(),
43+
"avg:system.cpu.user{*} by {service}".to_string(),
44+
).aggregator(FormulaAndFunctionMetricAggregation::AVG),
45+
),
46+
)
47+
],
48+
)
49+
.response_format(FormulaAndFunctionResponseFormat::SCALAR)
50+
],
51+
DistributionWidgetDefinitionType::DISTRIBUTION,
52+
)
53+
.markers(
54+
vec![
55+
WidgetMarker::new("50".to_string()).display_type("percentile".to_string()),
56+
WidgetMarker::new("99".to_string()).display_type("percentile".to_string()),
57+
WidgetMarker::new("90".to_string()).display_type("percentile".to_string())
58+
],
59+
)
60+
.title("".to_string())
61+
.title_align(WidgetTextAlign::LEFT)
62+
.title_size("16".to_string())
63+
.xaxis(
64+
DistributionWidgetXAxis::new()
65+
.include_zero(true)
66+
.max("auto".to_string())
67+
.min("auto".to_string())
68+
.num_buckets(55)
69+
.scale("linear".to_string()),
70+
)
71+
.yaxis(
72+
DistributionWidgetYAxis::new()
73+
.include_zero(true)
74+
.max("auto".to_string())
75+
.min("auto".to_string())
76+
.scale("linear".to_string()),
77+
),
78+
),
79+
),
80+
).layout(WidgetLayout::new(4, 4, 0, 0))
81+
],
82+
);
83+
let configuration = datadog::Configuration::new();
84+
let api = DashboardsAPI::with_config(configuration);
85+
let resp = api.create_dashboard(body).await;
86+
if let Ok(value) = resp {
87+
println!("{:#?}", value);
88+
} else {
89+
println!("{:#?}", resp.unwrap_err());
90+
}
91+
}

examples/v1_dashboards_CreateDashboard_1442588603.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ use datadog_api_client::datadogV1::model::DashboardLayoutType;
77
use datadog_api_client::datadogV1::model::DistributionWidgetDefinition;
88
use datadog_api_client::datadogV1::model::DistributionWidgetDefinitionType;
99
use datadog_api_client::datadogV1::model::DistributionWidgetHistogramRequestQuery;
10-
use datadog_api_client::datadogV1::model::DistributionWidgetHistogramRequestType;
1110
use datadog_api_client::datadogV1::model::DistributionWidgetRequest;
1211
use datadog_api_client::datadogV1::model::DistributionWidgetXAxis;
1312
use datadog_api_client::datadogV1::model::DistributionWidgetYAxis;
@@ -16,6 +15,7 @@ use datadog_api_client::datadogV1::model::FormulaAndFunctionApmResourceStatsData
1615
use datadog_api_client::datadogV1::model::FormulaAndFunctionApmResourceStatsQueryDefinition;
1716
use datadog_api_client::datadogV1::model::Widget;
1817
use datadog_api_client::datadogV1::model::WidgetDefinition;
18+
use datadog_api_client::datadogV1::model::WidgetHistogramRequestType;
1919
use datadog_api_client::datadogV1::model::WidgetLayout;
2020
use datadog_api_client::datadogV1::model::WidgetStyle;
2121
use datadog_api_client::datadogV1::model::WidgetTextAlign;
@@ -52,7 +52,7 @@ async fn main() {
5252
),
5353
),
5454
)
55-
.request_type(DistributionWidgetHistogramRequestType::HISTOGRAM)
55+
.request_type(WidgetHistogramRequestType::HISTOGRAM)
5656
.style(WidgetStyle::new().palette("dog_classic".to_string()))
5757
],
5858
DistributionWidgetDefinitionType::DISTRIBUTION,
Lines changed: 100 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,100 @@
1+
// Create a new dashboard with formula and function distribution widget
2+
use datadog_api_client::datadog;
3+
use datadog_api_client::datadogV1::api_dashboards::DashboardsAPI;
4+
use datadog_api_client::datadogV1::model::Dashboard;
5+
use datadog_api_client::datadogV1::model::DashboardLayoutType;
6+
use datadog_api_client::datadogV1::model::DistributionWidgetDefinition;
7+
use datadog_api_client::datadogV1::model::DistributionWidgetDefinitionType;
8+
use datadog_api_client::datadogV1::model::DistributionWidgetRequest;
9+
use datadog_api_client::datadogV1::model::FormulaAndFunctionEventAggregation;
10+
use datadog_api_client::datadogV1::model::FormulaAndFunctionEventQueryDefinition;
11+
use datadog_api_client::datadogV1::model::FormulaAndFunctionEventQueryDefinitionCompute;
12+
use datadog_api_client::datadogV1::model::FormulaAndFunctionEventQueryDefinitionSearch;
13+
use datadog_api_client::datadogV1::model::FormulaAndFunctionEventQueryGroupBy;
14+
use datadog_api_client::datadogV1::model::FormulaAndFunctionEventQueryGroupBySort;
15+
use datadog_api_client::datadogV1::model::FormulaAndFunctionEventsDataSource;
16+
use datadog_api_client::datadogV1::model::FormulaAndFunctionQueryDefinition;
17+
use datadog_api_client::datadogV1::model::FormulaAndFunctionResponseFormat;
18+
use datadog_api_client::datadogV1::model::QuerySortOrder;
19+
use datadog_api_client::datadogV1::model::Widget;
20+
use datadog_api_client::datadogV1::model::WidgetDefinition;
21+
use datadog_api_client::datadogV1::model::WidgetLayout;
22+
use datadog_api_client::datadogV1::model::WidgetLegacyLiveSpan;
23+
use datadog_api_client::datadogV1::model::WidgetTextAlign;
24+
use datadog_api_client::datadogV1::model::WidgetTime;
25+
26+
#[tokio::main]
27+
async fn main() {
28+
let body =
29+
Dashboard::new(
30+
DashboardLayoutType::FREE,
31+
"Example-Dashboard".to_string(),
32+
vec![
33+
Widget::new(
34+
WidgetDefinition::DistributionWidgetDefinition(
35+
Box::new(
36+
DistributionWidgetDefinition::new(
37+
vec![
38+
DistributionWidgetRequest::new()
39+
.queries(
40+
vec![
41+
FormulaAndFunctionQueryDefinition
42+
::FormulaAndFunctionEventQueryDefinition(
43+
Box::new(
44+
FormulaAndFunctionEventQueryDefinition::new(
45+
FormulaAndFunctionEventQueryDefinitionCompute::new(
46+
FormulaAndFunctionEventAggregation::AVG,
47+
).metric("@duration".to_string()),
48+
FormulaAndFunctionEventsDataSource::LOGS,
49+
"query1".to_string(),
50+
)
51+
.group_by(
52+
vec![
53+
FormulaAndFunctionEventQueryGroupBy::new(
54+
"service".to_string(),
55+
)
56+
.limit(1000)
57+
.sort(
58+
FormulaAndFunctionEventQueryGroupBySort
59+
::new(
60+
FormulaAndFunctionEventAggregation
61+
::COUNT,
62+
).order(QuerySortOrder::DESC),
63+
)
64+
],
65+
)
66+
.indexes(vec!["*".to_string()])
67+
.search(
68+
FormulaAndFunctionEventQueryDefinitionSearch::new(
69+
"".to_string(),
70+
),
71+
)
72+
.storage("hot".to_string()),
73+
),
74+
)
75+
],
76+
)
77+
.response_format(FormulaAndFunctionResponseFormat::SCALAR)
78+
],
79+
DistributionWidgetDefinitionType::DISTRIBUTION,
80+
)
81+
.time(WidgetTime::WidgetLegacyLiveSpan(Box::new(WidgetLegacyLiveSpan::new())))
82+
.title("".to_string())
83+
.title_align(WidgetTextAlign::LEFT)
84+
.title_size("16".to_string()),
85+
),
86+
),
87+
).layout(WidgetLayout::new(15, 47, 0, 0))
88+
],
89+
)
90+
.notify_list(Some(vec![]))
91+
.template_variables(Some(vec![]));
92+
let configuration = datadog::Configuration::new();
93+
let api = DashboardsAPI::with_config(configuration);
94+
let resp = api.create_dashboard(body).await;
95+
if let Ok(value) = resp {
96+
println!("{:#?}", value);
97+
} else {
98+
println!("{:#?}", resp.unwrap_err());
99+
}
100+
}

0 commit comments

Comments
 (0)