Skip to content

Commit bc173c4

Browse files
api-clients-generation-pipeline[bot]ci.datadog-api-spec
andauthored
Fix Toplist widget's stacked display style - remove legend as required field (#2501)
Co-authored-by: ci.datadog-api-spec <packages@datadoghq.com>
1 parent 47f018c commit bc173c4

File tree

7 files changed

+190
-9
lines changed

7 files changed

+190
-9
lines changed

.apigentools-info

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,13 @@
44
"spec_versions": {
55
"v1": {
66
"apigentools_version": "1.6.6",
7-
"regenerated": "2024-10-02 14:33:44.583261",
8-
"spec_repo_commit": "3b4747f4"
7+
"regenerated": "2024-10-02 16:22:32.270694",
8+
"spec_repo_commit": "3f12bebc"
99
},
1010
"v2": {
1111
"apigentools_version": "1.6.6",
12-
"regenerated": "2024-10-02 14:33:44.597775",
13-
"spec_repo_commit": "3b4747f4"
12+
"regenerated": "2024-10-02 16:22:32.285145",
13+
"spec_repo_commit": "3f12bebc"
1414
}
1515
}
1616
}

.generator/schemas/v1/openapi.yaml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18188,7 +18188,6 @@ components:
1818818188
$ref: '#/components/schemas/ToplistWidgetStackedType'
1818918189
required:
1819018190
- type
18191-
- legend
1819218191
type: object
1819318192
ToplistWidgetStackedType:
1819418193
default: stacked
Lines changed: 112 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,112 @@
1+
// Create a new dashboard with a toplist widget with stacked type and no legend specified
2+
3+
import com.datadog.api.client.ApiClient;
4+
import com.datadog.api.client.ApiException;
5+
import com.datadog.api.client.v1.api.DashboardsApi;
6+
import com.datadog.api.client.v1.model.Dashboard;
7+
import com.datadog.api.client.v1.model.DashboardLayoutType;
8+
import com.datadog.api.client.v1.model.FormulaAndFunctionMetricAggregation;
9+
import com.datadog.api.client.v1.model.FormulaAndFunctionMetricDataSource;
10+
import com.datadog.api.client.v1.model.FormulaAndFunctionMetricQueryDefinition;
11+
import com.datadog.api.client.v1.model.FormulaAndFunctionQueryDefinition;
12+
import com.datadog.api.client.v1.model.FormulaAndFunctionResponseFormat;
13+
import com.datadog.api.client.v1.model.GroupType;
14+
import com.datadog.api.client.v1.model.ToplistWidgetDefinition;
15+
import com.datadog.api.client.v1.model.ToplistWidgetDefinitionType;
16+
import com.datadog.api.client.v1.model.ToplistWidgetDisplay;
17+
import com.datadog.api.client.v1.model.ToplistWidgetRequest;
18+
import com.datadog.api.client.v1.model.ToplistWidgetScaling;
19+
import com.datadog.api.client.v1.model.ToplistWidgetStacked;
20+
import com.datadog.api.client.v1.model.ToplistWidgetStackedType;
21+
import com.datadog.api.client.v1.model.ToplistWidgetStyle;
22+
import com.datadog.api.client.v1.model.Widget;
23+
import com.datadog.api.client.v1.model.WidgetDefinition;
24+
import com.datadog.api.client.v1.model.WidgetFormula;
25+
import com.datadog.api.client.v1.model.WidgetGroupSort;
26+
import com.datadog.api.client.v1.model.WidgetLayout;
27+
import com.datadog.api.client.v1.model.WidgetLegacyLiveSpan;
28+
import com.datadog.api.client.v1.model.WidgetSort;
29+
import com.datadog.api.client.v1.model.WidgetSortBy;
30+
import com.datadog.api.client.v1.model.WidgetSortOrderBy;
31+
import com.datadog.api.client.v1.model.WidgetTextAlign;
32+
import com.datadog.api.client.v1.model.WidgetTime;
33+
import java.util.Collections;
34+
35+
public class Example {
36+
public static void main(String[] args) {
37+
ApiClient defaultClient = ApiClient.getDefaultApiClient();
38+
DashboardsApi apiInstance = new DashboardsApi(defaultClient);
39+
40+
Dashboard body =
41+
new Dashboard()
42+
.title("Example-Dashboard")
43+
.description("")
44+
.widgets(
45+
Collections.singletonList(
46+
new Widget()
47+
.layout(new WidgetLayout().x(0L).y(0L).width(47L).height(15L))
48+
.definition(
49+
new WidgetDefinition(
50+
new ToplistWidgetDefinition()
51+
.title("")
52+
.titleSize("16")
53+
.titleAlign(WidgetTextAlign.LEFT)
54+
.time(new WidgetTime(new WidgetLegacyLiveSpan()))
55+
.style(
56+
new ToplistWidgetStyle()
57+
.display(
58+
new ToplistWidgetDisplay(
59+
new ToplistWidgetStacked()
60+
.type(ToplistWidgetStackedType.STACKED)))
61+
.scaling(ToplistWidgetScaling.RELATIVE)
62+
.palette("dog_classic"))
63+
.type(ToplistWidgetDefinitionType.TOPLIST)
64+
.requests(
65+
Collections.singletonList(
66+
new ToplistWidgetRequest()
67+
.queries(
68+
Collections.singletonList(
69+
new FormulaAndFunctionQueryDefinition(
70+
new FormulaAndFunctionMetricQueryDefinition()
71+
.dataSource(
72+
FormulaAndFunctionMetricDataSource
73+
.METRICS)
74+
.name("query1")
75+
.query(
76+
"avg:system.cpu.user{*} by"
77+
+ " {service}")
78+
.aggregator(
79+
FormulaAndFunctionMetricAggregation
80+
.AVG))))
81+
.formulas(
82+
Collections.singletonList(
83+
new WidgetFormula().formula("query1")))
84+
.sort(
85+
new WidgetSortBy()
86+
.count(10L)
87+
.orderBy(
88+
Collections.singletonList(
89+
new WidgetSortOrderBy(
90+
new WidgetGroupSort()
91+
.type(GroupType.GROUP)
92+
.name("service")
93+
.order(
94+
WidgetSort
95+
.ASCENDING)))))
96+
.responseFormat(
97+
FormulaAndFunctionResponseFormat.SCALAR)))))))
98+
.layoutType(DashboardLayoutType.FREE)
99+
.isReadOnly(false);
100+
101+
try {
102+
Dashboard result = apiInstance.createDashboard(body);
103+
System.out.println(result);
104+
} catch (ApiException e) {
105+
System.err.println("Exception when calling DashboardsApi#createDashboard");
106+
System.err.println("Status code: " + e.getCode());
107+
System.err.println("Reason: " + e.getResponseBody());
108+
System.err.println("Response headers: " + e.getResponseHeaders());
109+
e.printStackTrace();
110+
}
111+
}
112+
}

src/main/java/com/datadog/api/client/v1/model/ToplistWidgetStacked.java

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -36,10 +36,7 @@ public ToplistWidgetStacked() {}
3636

3737
@JsonCreator
3838
public ToplistWidgetStacked(
39-
@JsonProperty(required = true, value = JSON_PROPERTY_LEGEND) ToplistWidgetLegend legend,
4039
@JsonProperty(required = true, value = JSON_PROPERTY_TYPE) ToplistWidgetStackedType type) {
41-
this.legend = legend;
42-
this.unparsed |= !legend.isValid();
4340
this.type = type;
4441
this.unparsed |= !type.isValid();
4542
}
@@ -55,8 +52,9 @@ public ToplistWidgetStacked legend(ToplistWidgetLegend legend) {
5552
*
5653
* @return legend
5754
*/
55+
@jakarta.annotation.Nullable
5856
@JsonProperty(JSON_PROPERTY_LEGEND)
59-
@JsonInclude(value = JsonInclude.Include.ALWAYS)
57+
@JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
6058
public ToplistWidgetLegend getLegend() {
6159
return legend;
6260
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
2024-09-30T17:24:52.299Z
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
[
2+
{
3+
"httpRequest": {
4+
"body": {
5+
"type": "JSON",
6+
"json": "{\"description\":\"\",\"is_read_only\":false,\"layout_type\":\"free\",\"notify_list\":[],\"template_variables\":[],\"title\":\"Test-Create_a_new_dashboard_with_a_toplist_widget_with_stacked_type_and_no_legend_specified-1727717092\",\"widgets\":[{\"definition\":{\"requests\":[{\"formulas\":[{\"formula\":\"query1\"}],\"queries\":[{\"aggregator\":\"avg\",\"data_source\":\"metrics\",\"name\":\"query1\",\"query\":\"avg:system.cpu.user{*} by {service}\"}],\"response_format\":\"scalar\",\"sort\":{\"count\":10,\"order_by\":[{\"name\":\"service\",\"order\":\"asc\",\"type\":\"group\"}]}}],\"style\":{\"display\":{\"type\":\"stacked\"},\"palette\":\"dog_classic\",\"scaling\":\"relative\"},\"time\":{},\"title\":\"\",\"title_align\":\"left\",\"title_size\":\"16\",\"type\":\"toplist\"},\"layout\":{\"height\":15,\"width\":47,\"x\":0,\"y\":0}}]}"
7+
},
8+
"headers": {},
9+
"method": "POST",
10+
"path": "/api/v1/dashboard",
11+
"keepAlive": false,
12+
"secure": true
13+
},
14+
"httpResponse": {
15+
"body": "{\"id\":\"2az-xeg-xar\",\"title\":\"Test-Create_a_new_dashboard_with_a_toplist_widget_with_stacked_type_and_no_legend_specified-1727717092\",\"description\":\"\",\"author_handle\":\"frog@datadoghq.com\",\"author_name\":null,\"layout_type\":\"free\",\"url\":\"/dashboard/2az-xeg-xar/test-createanewdashboardwithatoplistwidgetwithstackedtypeandnolegendspecified-17\",\"is_read_only\":false,\"template_variables\":[],\"widgets\":[{\"definition\":{\"requests\":[{\"formulas\":[{\"formula\":\"query1\"}],\"queries\":[{\"aggregator\":\"avg\",\"data_source\":\"metrics\",\"name\":\"query1\",\"query\":\"avg:system.cpu.user{*} by {service}\"}],\"response_format\":\"scalar\",\"sort\":{\"count\":10,\"order_by\":[{\"name\":\"service\",\"order\":\"asc\",\"type\":\"group\"}]}}],\"style\":{\"display\":{\"type\":\"stacked\"},\"palette\":\"dog_classic\",\"scaling\":\"relative\"},\"time\":{},\"title\":\"\",\"title_align\":\"left\",\"title_size\":\"16\",\"type\":\"toplist\"},\"layout\":{\"height\":15,\"width\":47,\"x\":0,\"y\":0},\"id\":688132644515996}],\"notify_list\":[],\"created_at\":\"2024-09-30T17:24:52.542207+00:00\",\"modified_at\":\"2024-09-30T17:24:52.542207+00:00\",\"experience_type\":\"default\",\"restricted_roles\":[]}\n",
16+
"headers": {
17+
"Content-Type": [
18+
"application/json"
19+
]
20+
},
21+
"statusCode": 200,
22+
"reasonPhrase": "OK"
23+
},
24+
"times": {
25+
"remainingTimes": 1
26+
},
27+
"timeToLive": {
28+
"unlimited": true
29+
},
30+
"id": "1668edb0-df4a-a19b-f3e7-73c89dbafdd3"
31+
},
32+
{
33+
"httpRequest": {
34+
"headers": {},
35+
"method": "DELETE",
36+
"path": "/api/v1/dashboard/2az-xeg-xar",
37+
"keepAlive": false,
38+
"secure": true
39+
},
40+
"httpResponse": {
41+
"body": "{\"deleted_dashboard_id\":\"2az-xeg-xar\"}\n",
42+
"headers": {
43+
"Content-Type": [
44+
"application/json"
45+
]
46+
},
47+
"statusCode": 200,
48+
"reasonPhrase": "OK"
49+
},
50+
"times": {
51+
"remainingTimes": 1
52+
},
53+
"timeToLive": {
54+
"unlimited": true
55+
},
56+
"id": "bf18df2e-8976-3aab-55ba-5494d3060e55"
57+
}
58+
]

src/test/resources/com/datadog/api/client/v1/api/dashboards.feature

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -206,6 +206,19 @@ Feature: Dashboards
206206
And the response "widgets[0].definition.requests[0].sort.order_by[0].type" is equal to "group"
207207
And the response "widgets[0].definition.requests[0].sort.order_by[0].name" is equal to "service"
208208

209+
@skip-typescript @team:DataDog/dashboards-backend
210+
Scenario: Create a new dashboard with a toplist widget with stacked type and no legend specified
211+
Given new "CreateDashboard" request
212+
And body with value {"title":"{{ unique }}","description":"","widgets":[{"layout":{"x":0,"y":0,"width":47,"height":15},"definition":{"title":"","title_size":"16","title_align":"left","time":{},"style":{"display": {"type": "stacked"},"scaling": "relative","palette": "dog_classic"},"type":"toplist","requests":[{"queries":[{"data_source":"metrics","name":"query1","query":"avg:system.cpu.user{*} by {service}","aggregator":"avg"}],"formulas":[{"formula":"query1"}],"sort":{"count":10,"order_by":[{"type":"group","name":"service","order":"asc"}]},"response_format":"scalar"}]}}],"template_variables":[],"layout_type":"free","is_read_only":false,"notify_list":[]}
213+
When the request is sent
214+
Then the response status is 200 OK
215+
And the response "widgets[0].definition.type" is equal to "toplist"
216+
And the response "widgets[0].definition.requests[0].sort.order_by[0].order" is equal to "asc"
217+
And the response "widgets[0].definition.requests[0].sort.order_by[0].type" is equal to "group"
218+
And the response "widgets[0].definition.requests[0].sort.order_by[0].name" is equal to "service"
219+
And the response "widgets[0].definition.style.display.type" is equal to "stacked"
220+
And the response "widgets[0].definition.style.display" does not have field "legend"
221+
209222
@team:DataDog/dashboards-backend
210223
Scenario: Create a new dashboard with alert_graph widget
211224
Given there is a valid "monitor" in the system

0 commit comments

Comments
 (0)