Skip to content

Commit 4205019

Browse files
api-clients-generation-pipeline[bot]ci.datadog-api-spec
andauthored
Shorten scenario name for public dashboard test (#3844)
Co-authored-by: ci.datadog-api-spec <packages@datadoghq.com>
1 parent 4cf79f6 commit 4205019

7 files changed

Lines changed: 310 additions & 10 deletions

examples/v1/dashboards/SendPublicDashboardInvitation.go

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -13,23 +13,22 @@ import (
1313
)
1414

1515
func main() {
16-
// there is a valid "shared_dashboard" in the system
17-
SharedDashboardToken := os.Getenv("SHARED_DASHBOARD_TOKEN")
18-
1916
body := datadogV1.SharedDashboardInvites{
2017
Data: datadogV1.SharedDashboardInvitesData{
21-
SharedDashboardInvitesDataObject: &datadogV1.SharedDashboardInvitesDataObject{
22-
Attributes: datadogV1.SharedDashboardInvitesDataObjectAttributes{
23-
Email: datadog.PtrString("exampledashboard@datadoghq.com"),
18+
SharedDashboardInvitesDataList: &[]datadogV1.SharedDashboardInvitesDataObject{
19+
{
20+
Attributes: datadogV1.SharedDashboardInvitesDataObjectAttributes{
21+
Email: datadog.PtrString("test@datadoghq.com"),
22+
},
23+
Type: datadogV1.DASHBOARDINVITETYPE_PUBLIC_DASHBOARD_INVITATION,
2424
},
25-
Type: datadogV1.DASHBOARDINVITETYPE_PUBLIC_DASHBOARD_INVITATION,
2625
}},
2726
}
2827
ctx := datadog.NewDefaultContext(context.Background())
2928
configuration := datadog.NewConfiguration()
3029
apiClient := datadog.NewAPIClient(configuration)
3130
api := datadogV1.NewDashboardsApi(apiClient)
32-
resp, r, err := api.SendPublicDashboardInvitation(ctx, SharedDashboardToken, body)
31+
resp, r, err := api.SendPublicDashboardInvitation(ctx, "token", body)
3332

3433
if err != nil {
3534
fmt.Fprintf(os.Stderr, "Error when calling `DashboardsApi.SendPublicDashboardInvitation`: %v\n", err)
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
// Send shared dashboard invitation email returns OK
2+
3+
package main
4+
5+
import (
6+
"context"
7+
"encoding/json"
8+
"fmt"
9+
"os"
10+
11+
"github.com/DataDog/datadog-api-client-go/v2/api/datadog"
12+
"github.com/DataDog/datadog-api-client-go/v2/api/datadogV1"
13+
)
14+
15+
func main() {
16+
// there is a valid "shared_dashboard" in the system
17+
SharedDashboardToken := os.Getenv("SHARED_DASHBOARD_TOKEN")
18+
19+
body := datadogV1.SharedDashboardInvites{
20+
Data: datadogV1.SharedDashboardInvitesData{
21+
SharedDashboardInvitesDataObject: &datadogV1.SharedDashboardInvitesDataObject{
22+
Attributes: datadogV1.SharedDashboardInvitesDataObjectAttributes{
23+
Email: datadog.PtrString("exampledashboard@datadoghq.com"),
24+
},
25+
Type: datadogV1.DASHBOARDINVITETYPE_PUBLIC_DASHBOARD_INVITATION,
26+
}},
27+
}
28+
ctx := datadog.NewDefaultContext(context.Background())
29+
configuration := datadog.NewConfiguration()
30+
apiClient := datadog.NewAPIClient(configuration)
31+
api := datadogV1.NewDashboardsApi(apiClient)
32+
resp, r, err := api.SendPublicDashboardInvitation(ctx, SharedDashboardToken, body)
33+
34+
if err != nil {
35+
fmt.Fprintf(os.Stderr, "Error when calling `DashboardsApi.SendPublicDashboardInvitation`: %v\n", err)
36+
fmt.Fprintf(os.Stderr, "Full HTTP response: %v\n", r)
37+
}
38+
39+
responseContent, _ := json.MarshalIndent(resp, "", " ")
40+
fmt.Fprintf(os.Stdout, "Response from `DashboardsApi.SendPublicDashboardInvitation`:\n%s\n", responseContent)
41+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
2026-03-19T17:48:57.466Z
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,125 @@
1+
interactions:
2+
- request:
3+
body: |
4+
{"layout_type":"ordered","title":"Test-Send_shared_dashboard_invitation_email_returns_OK-1773942537 with Profile Metrics Query","widgets":[{"definition":{"requests":[{"profile_metrics_query":{"compute":{"aggregation":"sum","facet":"@prof_core_cpu_cores"},"group_by":[{"facet":"service","limit":10,"sort":{"aggregation":"sum","facet":"@prof_core_cpu_cores","order":"desc"}}],"search":{"query":"runtime:jvm"}}}],"type":"timeseries"}}]}
5+
form: {}
6+
headers:
7+
Accept:
8+
- application/json
9+
Content-Type:
10+
- application/json
11+
id: 0
12+
method: POST
13+
url: https://api.datadoghq.com/api/v1/dashboard
14+
response:
15+
body: '{"id":"i2s-n9z-69c","title":"Test-Send_shared_dashboard_invitation_email_returns_OK-1773942537
16+
with Profile Metrics Query","description":null,"author_handle":"9919ec9b-ebc7-49ee-8dc8-03626e717cca","author_name":"CI
17+
Account","layout_type":"ordered","url":"/dashboard/i2s-n9z-69c/test-sendshareddashboardinvitationemailreturnsok-1773942537-with-profile-metrics","template_variables":null,"widgets":[{"definition":{"requests":[{"profile_metrics_query":{"compute":{"aggregation":"sum","facet":"@prof_core_cpu_cores"},"group_by":[{"facet":"service","limit":10,"sort":{"aggregation":"sum","facet":"@prof_core_cpu_cores","order":"desc"}}],"search":{"query":"runtime:jvm"}}}],"type":"timeseries"},"id":3342606346172255}],"notify_list":null,"created_at":"2026-03-19T17:48:57.600536+00:00","modified_at":"2026-03-19T17:48:57.600536+00:00","restricted_roles":[]}'
18+
code: 200
19+
duration: 0ms
20+
headers:
21+
Content-Type:
22+
- application/json
23+
status: 200 OK
24+
- request:
25+
body: |
26+
{"dashboard_id":"i2s-n9z-69c","dashboard_type":"custom_timeboard","global_time":{"live_span":"1h"},"share_list":["testsendshareddashboardinvitationemailreturnsok1773942537@datadoghq.com"],"share_type":"invite"}
27+
form: {}
28+
headers:
29+
Accept:
30+
- application/json
31+
Content-Type:
32+
- application/json
33+
id: 1
34+
method: POST
35+
url: https://api.datadoghq.com/api/v1/dashboard/public
36+
response:
37+
body: '{"author":{"handle":"9919ec9b-ebc7-49ee-8dc8-03626e717cca","name":"CI Account"},"dashboard_id":"i2s-n9z-69c","dashboard_type":"custom_timeboard","status":"active","title":"Test-Send_shared_dashboard_invitation_email_returns_OK-1773942537
38+
with Profile Metrics Query","viewing_preferences":{},"expiration":null,"last_accessed":null,"global_time_selectable_enabled":false,"global_time":{"live_span":"1h"},"selectable_template_vars":null,"token":"fasjyydbcgwwc2uc-3dde636009128a6f937e880f67a0ad04","public_url":"https://p.datadoghq.com/sb/fasjyydbcgwwc2uc-3dde636009128a6f937e880f67a0ad04","created":"2026-03-19T17:48:58.113567+00:00","share_type":"invite","share_list":["team-intg-tools-libs-spam@datadoghq.com","testsendshareddashboardinvitationemailreturnsok1773942537@datadoghq.com"],"session_duration_in_days":30,"invitees":[{"email":"team-intg-tools-libs-spam@datadoghq.com","access_expiration":null,"last_accessed":null,"created_at":"2026-03-19T17:48:58.132469+00:00"},{"email":"testsendshareddashboardinvitationemailreturnsok1773942537@datadoghq.com","access_expiration":null,"last_accessed":null,"created_at":"2026-03-19T17:48:58.132469+00:00"}],"embeddable_domains":[]}
39+
40+
'
41+
code: 200
42+
duration: 0ms
43+
headers:
44+
Content-Type:
45+
- application/json
46+
status: 200 OK
47+
- request:
48+
body: |
49+
{"data":{"attributes":{"email":"testsendshareddashboardinvitationemailreturnsok1773942537@datadoghq.com"},"type":"public_dashboard_invitation"}}
50+
form: {}
51+
headers:
52+
Accept:
53+
- application/json
54+
Content-Type:
55+
- application/json
56+
id: 2
57+
method: POST
58+
url: https://api.datadoghq.com/api/v1/dashboard/public/fasjyydbcgwwc2uc-3dde636009128a6f937e880f67a0ad04/invitation
59+
response:
60+
body: '{"data":{"type":"public_dashboard_invitation","attributes":{"email":"testsendshareddashboardinvitationemailreturnsok1773942537@datadoghq.com","share_token":"fasjyydbcgwwc2uc-3dde636009128a6f937e880f67a0ad04","created_at":"2026-03-19T17:48:58.452715+00:00","invitation_expiry":"2026-03-19T18:48:58.463251+00:00","has_session":false,"session_expiry":null}}}
61+
62+
'
63+
code: 201
64+
duration: 0ms
65+
headers:
66+
Content-Type:
67+
- application/json
68+
status: 201 Created
69+
- request:
70+
body: |
71+
{"data":{"attributes":{"email":"testsendshareddashboardinvitationemailreturnsok1773942537@datadoghq.com"},"type":"public_dashboard_invitation"}}
72+
form: {}
73+
headers:
74+
Accept:
75+
- '*/*'
76+
Content-Type:
77+
- application/json
78+
id: 3
79+
method: DELETE
80+
url: https://api.datadoghq.com/api/v1/dashboard/public/fasjyydbcgwwc2uc-3dde636009128a6f937e880f67a0ad04/invitation
81+
response:
82+
body: ''
83+
code: 204
84+
duration: 0ms
85+
headers:
86+
Content-Type:
87+
- text/html; charset=utf-8
88+
status: 204 No Content
89+
- request:
90+
body: ''
91+
form: {}
92+
headers:
93+
Accept:
94+
- application/json
95+
id: 4
96+
method: DELETE
97+
url: https://api.datadoghq.com/api/v1/dashboard/public/fasjyydbcgwwc2uc-3dde636009128a6f937e880f67a0ad04
98+
response:
99+
body: '{"deleted_public_dashboard_token":"fasjyydbcgwwc2uc-3dde636009128a6f937e880f67a0ad04"}
100+
101+
'
102+
code: 200
103+
duration: 0ms
104+
headers:
105+
Content-Type:
106+
- application/json
107+
status: 200 OK
108+
- request:
109+
body: ''
110+
form: {}
111+
headers:
112+
Accept:
113+
- application/json
114+
id: 5
115+
method: DELETE
116+
url: https://api.datadoghq.com/api/v1/dashboard/i2s-n9z-69c
117+
response:
118+
body: '{"deleted_dashboard_id":"i2s-n9z-69c"}'
119+
code: 200
120+
duration: 0ms
121+
headers:
122+
Content-Type:
123+
- application/json
124+
status: 200 OK
125+
version: 2
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
2026-03-18T20:27:29.628Z
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,125 @@
1+
interactions:
2+
- request:
3+
body: |
4+
{"layout_type":"ordered","title":"Test-Send_shared_dashboard_invitation_email_returns_OK_-1773865649 with Profile Metrics Query","widgets":[{"definition":{"requests":[{"profile_metrics_query":{"compute":{"aggregation":"sum","facet":"@prof_core_cpu_cores"},"group_by":[{"facet":"service","limit":10,"sort":{"aggregation":"sum","facet":"@prof_core_cpu_cores","order":"desc"}}],"search":{"query":"runtime:jvm"}}}],"type":"timeseries"}}]}
5+
form: {}
6+
headers:
7+
Accept:
8+
- application/json
9+
Content-Type:
10+
- application/json
11+
id: 0
12+
method: POST
13+
url: https://api.datadoghq.com/api/v1/dashboard
14+
response:
15+
body: '{"id":"uy7-jdc-khf","title":"Test-Send_shared_dashboard_invitation_email_returns_OK_-1773865649
16+
with Profile Metrics Query","description":null,"author_handle":"9919ec9b-ebc7-49ee-8dc8-03626e717cca","author_name":"CI
17+
Account","layout_type":"ordered","url":"/dashboard/uy7-jdc-khf/test-sendshareddashboardinvitationemailreturnsok-1773865649-with-profile-metrics","template_variables":null,"widgets":[{"definition":{"requests":[{"profile_metrics_query":{"compute":{"aggregation":"sum","facet":"@prof_core_cpu_cores"},"group_by":[{"facet":"service","limit":10,"sort":{"aggregation":"sum","facet":"@prof_core_cpu_cores","order":"desc"}}],"search":{"query":"runtime:jvm"}}}],"type":"timeseries"},"id":3763196530100152}],"notify_list":null,"created_at":"2026-03-18T20:27:29.720762+00:00","modified_at":"2026-03-18T20:27:29.720762+00:00","restricted_roles":[]}'
18+
code: 200
19+
duration: 0ms
20+
headers:
21+
Content-Type:
22+
- application/json
23+
status: 200 OK
24+
- request:
25+
body: |
26+
{"dashboard_id":"uy7-jdc-khf","dashboard_type":"custom_timeboard","global_time":{"live_span":"1h"},"share_list":["testsendshareddashboardinvitationemailreturnsok1773865649@datadoghq.com"],"share_type":"invite"}
27+
form: {}
28+
headers:
29+
Accept:
30+
- application/json
31+
Content-Type:
32+
- application/json
33+
id: 1
34+
method: POST
35+
url: https://api.datadoghq.com/api/v1/dashboard/public
36+
response:
37+
body: '{"author":{"handle":"9919ec9b-ebc7-49ee-8dc8-03626e717cca","name":"CI Account"},"dashboard_id":"uy7-jdc-khf","dashboard_type":"custom_timeboard","status":"active","title":"Test-Send_shared_dashboard_invitation_email_returns_OK_-1773865649
38+
with Profile Metrics Query","viewing_preferences":{},"expiration":null,"last_accessed":null,"global_time_selectable_enabled":false,"global_time":{"live_span":"1h"},"selectable_template_vars":null,"token":"fasjyydbcgwwc2uc-4801190966e7cf88b180c12b876eca65","public_url":"https://p.datadoghq.com/sb/fasjyydbcgwwc2uc-4801190966e7cf88b180c12b876eca65","created":"2026-03-18T20:27:30.223874+00:00","share_type":"invite","share_list":["team-intg-tools-libs-spam@datadoghq.com","testsendshareddashboardinvitationemailreturnsok1773865649@datadoghq.com"],"session_duration_in_days":30,"invitees":[{"email":"team-intg-tools-libs-spam@datadoghq.com","access_expiration":null,"last_accessed":null,"created_at":"2026-03-18T20:27:30.248539+00:00"},{"email":"testsendshareddashboardinvitationemailreturnsok1773865649@datadoghq.com","access_expiration":null,"last_accessed":null,"created_at":"2026-03-18T20:27:30.248539+00:00"}],"embeddable_domains":[]}
39+
40+
'
41+
code: 200
42+
duration: 0ms
43+
headers:
44+
Content-Type:
45+
- application/json
46+
status: 200 OK
47+
- request:
48+
body: |
49+
{"data":{"attributes":{"email":"testsendshareddashboardinvitationemailreturnsok1773865649@datadoghq.com"},"type":"public_dashboard_invitation"}}
50+
form: {}
51+
headers:
52+
Accept:
53+
- application/json
54+
Content-Type:
55+
- application/json
56+
id: 2
57+
method: POST
58+
url: https://api.datadoghq.com/api/v1/dashboard/public/fasjyydbcgwwc2uc-4801190966e7cf88b180c12b876eca65/invitation
59+
response:
60+
body: '{"data":{"type":"public_dashboard_invitation","attributes":{"email":"testsendshareddashboardinvitationemailreturnsok1773865649@datadoghq.com","share_token":"fasjyydbcgwwc2uc-4801190966e7cf88b180c12b876eca65","created_at":"2026-03-18T20:27:30.426144+00:00","invitation_expiry":"2026-03-18T21:27:30.435235+00:00","has_session":false,"session_expiry":null}}}
61+
62+
'
63+
code: 201
64+
duration: 0ms
65+
headers:
66+
Content-Type:
67+
- application/json
68+
status: 201 Created
69+
- request:
70+
body: |
71+
{"data":{"attributes":{"email":"testsendshareddashboardinvitationemailreturnsok1773865649@datadoghq.com"},"type":"public_dashboard_invitation"}}
72+
form: {}
73+
headers:
74+
Accept:
75+
- '*/*'
76+
Content-Type:
77+
- application/json
78+
id: 3
79+
method: DELETE
80+
url: https://api.datadoghq.com/api/v1/dashboard/public/fasjyydbcgwwc2uc-4801190966e7cf88b180c12b876eca65/invitation
81+
response:
82+
body: ''
83+
code: 204
84+
duration: 0ms
85+
headers:
86+
Content-Type:
87+
- text/html; charset=utf-8
88+
status: 204 No Content
89+
- request:
90+
body: ''
91+
form: {}
92+
headers:
93+
Accept:
94+
- application/json
95+
id: 4
96+
method: DELETE
97+
url: https://api.datadoghq.com/api/v1/dashboard/public/fasjyydbcgwwc2uc-4801190966e7cf88b180c12b876eca65
98+
response:
99+
body: '{"deleted_public_dashboard_token":"fasjyydbcgwwc2uc-4801190966e7cf88b180c12b876eca65"}
100+
101+
'
102+
code: 200
103+
duration: 0ms
104+
headers:
105+
Content-Type:
106+
- application/json
107+
status: 200 OK
108+
- request:
109+
body: ''
110+
form: {}
111+
headers:
112+
Accept:
113+
- application/json
114+
id: 5
115+
method: DELETE
116+
url: https://api.datadoghq.com/api/v1/dashboard/uy7-jdc-khf
117+
response:
118+
body: '{"deleted_dashboard_id":"uy7-jdc-khf"}'
119+
code: 200
120+
duration: 0ms
121+
headers:
122+
Content-Type:
123+
- application/json
124+
status: 200 OK
125+
version: 2

tests/scenarios/features/v1/dashboards.feature

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1357,16 +1357,24 @@ Feature: Dashboards
13571357
When the request is sent
13581358
Then the response status is 404 Not Found
13591359

1360-
@team:DataDog/reporting-and-sharing
1360+
@generated @skip @team:DataDog/reporting-and-sharing
13611361
Scenario: Send shared dashboard invitation email returns "OK" response
1362+
Given new "SendPublicDashboardInvitation" request
1363+
And request contains "token" parameter from "REPLACE.ME"
1364+
And body with value {"data": [{"attributes": {"email": "test@datadoghq.com"}, "type": "public_dashboard_invitation"}]}
1365+
When the request is sent
1366+
Then the response status is 201 OK
1367+
1368+
@team:DataDog/reporting-and-sharing
1369+
Scenario: Send shared dashboard invitation email returns OK
13621370
Given there is a valid "dashboard" in the system
13631371
And there is a valid "shared_dashboard" in the system
13641372
And new "SendPublicDashboardInvitation" request
13651373
And request contains "token" parameter from "shared_dashboard.token"
13661374
And body with value {"data": {"attributes": {"email": "{{unique_lower_alnum}}@datadoghq.com"}, "type": "public_dashboard_invitation"}}
13671375
When the request is sent
13681376
Then the response status is 201 OK
1369-
And the response "data.attributes.email" has the same value as "shared_dashboard.share_list[0]"
1377+
And the response "data.attributes.email" has the same value as "shared_dashboard.share_list[1]"
13701378
And the response "data.attributes.share_token" has the same value as "shared_dashboard.token"
13711379

13721380
@generated @skip @team:DataDog/dashboards-backend

0 commit comments

Comments
 (0)