|
| 1 | +@endpoint(dashboard-secure-embed) @endpoint(dashboard-secure-embed-v2) @endpoint(https://api.datadoghq.com) @endpoint(https://api.datadoghq.eu) @endpoint(https://api.ddog-gov.com) @endpoint(https://api.us5.datadoghq.com) |
| 2 | +Feature: Dashboard Secure Embed |
| 3 | + Manage securely embedded Datadog dashboards. Secure embeds use HMAC-SHA256 |
| 4 | + signed sessions for authentication, enabling customers to embed dashboards |
| 5 | + in their own applications with server-side auth control. Unlike public |
| 6 | + dashboards (open URL) or invite dashboards (email-based access), secure |
| 7 | + embeds provide programmatic access control. **Requirements:** - Org |
| 8 | + setting: SharedDashboards > Embed sharing must be enabled. - AuthN: |
| 9 | + Datadog API key and application key. - Read operations require |
| 10 | + `dashboards_read` permission. - Write operations require |
| 11 | + `dashboards_embed_share` permission. |
| 12 | + |
| 13 | + Background: |
| 14 | + Given a valid "apiKeyAuth" key in the system |
| 15 | + And a valid "appKeyAuth" key in the system |
| 16 | + And an instance of "DashboardSecureEmbed" API |
| 17 | + |
| 18 | + @generated @skip @team:DataDog/dashboardsnotebooks-backend |
| 19 | + Scenario: Create a secure embed for a dashboard returns "Conflict — max 1000 share URLs per dashboard exceeded" response |
| 20 | + Given operation "CreateDashboardSecureEmbed" enabled |
| 21 | + And new "CreateDashboardSecureEmbed" request |
| 22 | + And request contains "dashboard_id" parameter from "REPLACE.ME" |
| 23 | + And body with value {"data": {"attributes": {"global_time": {"live_span": "1h"}, "global_time_selectable": true, "selectable_template_vars": [{"default_values": ["1"], "name": "org_id", "prefix": "org_id", "visible_tags": ["1"]}], "status": "active", "title": "Q1 Metrics Dashboard", "viewing_preferences": {"high_density": false, "theme": "system"}}, "type": "secure_embed_request"}} |
| 24 | + When the request is sent |
| 25 | + Then the response status is 409 Conflict — max 1000 share URLs per dashboard exceeded |
| 26 | + |
| 27 | + @generated @skip @team:DataDog/dashboardsnotebooks-backend |
| 28 | + Scenario: Create a secure embed for a dashboard returns "Dashboard Not Found" response |
| 29 | + Given operation "CreateDashboardSecureEmbed" enabled |
| 30 | + And new "CreateDashboardSecureEmbed" request |
| 31 | + And request contains "dashboard_id" parameter from "REPLACE.ME" |
| 32 | + And body with value {"data": {"attributes": {"global_time": {"live_span": "1h"}, "global_time_selectable": true, "selectable_template_vars": [{"default_values": ["1"], "name": "org_id", "prefix": "org_id", "visible_tags": ["1"]}], "status": "active", "title": "Q1 Metrics Dashboard", "viewing_preferences": {"high_density": false, "theme": "system"}}, "type": "secure_embed_request"}} |
| 33 | + When the request is sent |
| 34 | + Then the response status is 404 Dashboard Not Found |
| 35 | + |
| 36 | + @generated @skip @team:DataDog/dashboardsnotebooks-backend |
| 37 | + Scenario: Create a secure embed for a dashboard returns "OK" response |
| 38 | + Given operation "CreateDashboardSecureEmbed" enabled |
| 39 | + And new "CreateDashboardSecureEmbed" request |
| 40 | + And request contains "dashboard_id" parameter from "REPLACE.ME" |
| 41 | + And body with value {"data": {"attributes": {"global_time": {"live_span": "1h"}, "global_time_selectable": true, "selectable_template_vars": [{"default_values": ["1"], "name": "org_id", "prefix": "org_id", "visible_tags": ["1"]}], "status": "active", "title": "Q1 Metrics Dashboard", "viewing_preferences": {"high_density": false, "theme": "system"}}, "type": "secure_embed_request"}} |
| 42 | + When the request is sent |
| 43 | + Then the response status is 200 OK |
| 44 | + |
| 45 | + @generated @skip @team:DataDog/dashboardsnotebooks-backend |
| 46 | + Scenario: Delete a secure embed for a dashboard returns "No Content" response |
| 47 | + Given operation "DeleteDashboardSecureEmbed" enabled |
| 48 | + And new "DeleteDashboardSecureEmbed" request |
| 49 | + And request contains "dashboard_id" parameter from "REPLACE.ME" |
| 50 | + And request contains "token" parameter from "REPLACE.ME" |
| 51 | + When the request is sent |
| 52 | + Then the response status is 204 No Content |
| 53 | + |
| 54 | + @generated @skip @team:DataDog/dashboardsnotebooks-backend |
| 55 | + Scenario: Delete a secure embed for a dashboard returns "Not Found" response |
| 56 | + Given operation "DeleteDashboardSecureEmbed" enabled |
| 57 | + And new "DeleteDashboardSecureEmbed" request |
| 58 | + And request contains "dashboard_id" parameter from "REPLACE.ME" |
| 59 | + And request contains "token" parameter from "REPLACE.ME" |
| 60 | + When the request is sent |
| 61 | + Then the response status is 404 Not Found |
| 62 | + |
| 63 | + @generated @skip @team:DataDog/dashboardsnotebooks-backend |
| 64 | + Scenario: Get a secure embed for a dashboard returns "Not Found" response |
| 65 | + Given operation "GetDashboardSecureEmbed" enabled |
| 66 | + And new "GetDashboardSecureEmbed" request |
| 67 | + And request contains "dashboard_id" parameter from "REPLACE.ME" |
| 68 | + And request contains "token" parameter from "REPLACE.ME" |
| 69 | + When the request is sent |
| 70 | + Then the response status is 404 Not Found |
| 71 | + |
| 72 | + @generated @skip @team:DataDog/dashboardsnotebooks-backend |
| 73 | + Scenario: Get a secure embed for a dashboard returns "OK" response |
| 74 | + Given operation "GetDashboardSecureEmbed" enabled |
| 75 | + And new "GetDashboardSecureEmbed" request |
| 76 | + And request contains "dashboard_id" parameter from "REPLACE.ME" |
| 77 | + And request contains "token" parameter from "REPLACE.ME" |
| 78 | + When the request is sent |
| 79 | + Then the response status is 200 OK |
| 80 | + |
| 81 | + @generated @skip @team:DataDog/dashboardsnotebooks-backend |
| 82 | + Scenario: Update a secure embed for a dashboard returns "Not Found" response |
| 83 | + Given operation "UpdateDashboardSecureEmbed" enabled |
| 84 | + And new "UpdateDashboardSecureEmbed" request |
| 85 | + And request contains "dashboard_id" parameter from "REPLACE.ME" |
| 86 | + And request contains "token" parameter from "REPLACE.ME" |
| 87 | + And body with value {"data": {"attributes": {"global_time": {"live_span": "1h"}, "global_time_selectable": true, "selectable_template_vars": [{"default_values": ["1"], "name": "org_id", "prefix": "org_id", "visible_tags": ["1"]}], "status": "active", "title": "Q1 Metrics Dashboard (Updated)", "viewing_preferences": {"high_density": false, "theme": "system"}}, "type": "secure_embed_update_request"}} |
| 88 | + When the request is sent |
| 89 | + Then the response status is 404 Not Found |
| 90 | + |
| 91 | + @generated @skip @team:DataDog/dashboardsnotebooks-backend |
| 92 | + Scenario: Update a secure embed for a dashboard returns "OK" response |
| 93 | + Given operation "UpdateDashboardSecureEmbed" enabled |
| 94 | + And new "UpdateDashboardSecureEmbed" request |
| 95 | + And request contains "dashboard_id" parameter from "REPLACE.ME" |
| 96 | + And request contains "token" parameter from "REPLACE.ME" |
| 97 | + And body with value {"data": {"attributes": {"global_time": {"live_span": "1h"}, "global_time_selectable": true, "selectable_template_vars": [{"default_values": ["1"], "name": "org_id", "prefix": "org_id", "visible_tags": ["1"]}], "status": "active", "title": "Q1 Metrics Dashboard (Updated)", "viewing_preferences": {"high_density": false, "theme": "system"}}, "type": "secure_embed_update_request"}} |
| 98 | + When the request is sent |
| 99 | + Then the response status is 200 OK |
0 commit comments