From 59047f5ceca6dd208d426831388f331d226f3914 Mon Sep 17 00:00:00 2001 From: "ci.datadog-api-spec" Date: Wed, 20 May 2026 16:50:30 +0000 Subject: [PATCH] Regenerate client from commit 4bd3443 of spec repo --- examples/v2/app-builder/ListAppVersions.java | 11 +- .../v2/app-builder/UpdateAppFavorite.java | 10 +- .../v2/app-builder/UpdateAppSelfService.java | 11 +- examples/v2/app-builder/UpdateAppTags.java | 10 +- .../v2/app-builder/UpdateAppVersionName.java | 11 +- .../v2/app-builder/UpdateProtectionLevel.java | 12 +- .../Create_App_returns_Created_response.json | 2 +- ..._Request_returns_Not_Found_response.freeze | 1 + ...sh_Request_returns_Not_Found_response.json | 32 ++++++ .../v2/Delete_App_returns_OK_response.json | 2 +- .../v2/Get_App_returns_Gone_response.json | 2 +- .../v2/Get_App_returns_OK_response.json | 2 +- ...Versions_returns_Not_Found_response.freeze | 1 + ...p_Versions_returns_Not_Found_response.json | 28 +++++ ...st_App_Versions_returns_OK_response.freeze | 1 + ...List_App_Versions_returns_OK_response.json | 84 ++++++++++++++ ...Version_returns_No_Content_response.freeze | 1 + ...p_Version_returns_No_Content_response.json | 88 +++++++++++++++ ..._Version_returns_Not_Found_response.freeze | 1 + ...pp_Version_returns_Not_Found_response.json | 37 ++++++ .../Publish_App_returns_Created_response.json | 2 +- ...vert_App_returns_Not_Found_response.freeze | 1 + ...Revert_App_returns_Not_Found_response.json | 33 ++++++ .../v2/Unpublish_App_returns_OK_response.json | 2 +- ..._Status_returns_No_Content_response.freeze | 1 + ...te_Status_returns_No_Content_response.json | 83 ++++++++++++++ ...e_Status_returns_Not_Found_response.freeze | 1 + ...ite_Status_returns_Not_Found_response.json | 32 ++++++ ...on_Level_returns_Not_Found_response.freeze | 1 + ...tion_Level_returns_Not_Found_response.json | 32 ++++++ ...rotection_Level_returns_OK_response.freeze | 1 + ..._Protection_Level_returns_OK_response.json | 88 +++++++++++++++ ..._Status_returns_No_Content_response.freeze | 1 + ...ce_Status_returns_No_Content_response.json | 83 ++++++++++++++ ...e_Status_returns_Not_Found_response.freeze | 1 + ...ice_Status_returns_Not_Found_response.json | 32 ++++++ ...pp_Tags_returns_No_Content_response.freeze | 1 + ..._App_Tags_returns_No_Content_response.json | 83 ++++++++++++++ ...App_Tags_returns_Not_Found_response.freeze | 1 + ...e_App_Tags_returns_Not_Found_response.json | 32 ++++++ .../v2/Update_App_returns_OK_response.json | 2 +- .../api/client/v2/api/app_builder.feature | 105 ++++++++++-------- 42 files changed, 898 insertions(+), 67 deletions(-) create mode 100644 src/test/resources/cassettes/features/v2/Create_Publish_Request_returns_Not_Found_response.freeze create mode 100644 src/test/resources/cassettes/features/v2/Create_Publish_Request_returns_Not_Found_response.json create mode 100644 src/test/resources/cassettes/features/v2/List_App_Versions_returns_Not_Found_response.freeze create mode 100644 src/test/resources/cassettes/features/v2/List_App_Versions_returns_Not_Found_response.json create mode 100644 src/test/resources/cassettes/features/v2/List_App_Versions_returns_OK_response.freeze create mode 100644 src/test/resources/cassettes/features/v2/List_App_Versions_returns_OK_response.json create mode 100644 src/test/resources/cassettes/features/v2/Name_App_Version_returns_No_Content_response.freeze create mode 100644 src/test/resources/cassettes/features/v2/Name_App_Version_returns_No_Content_response.json create mode 100644 src/test/resources/cassettes/features/v2/Name_App_Version_returns_Not_Found_response.freeze create mode 100644 src/test/resources/cassettes/features/v2/Name_App_Version_returns_Not_Found_response.json create mode 100644 src/test/resources/cassettes/features/v2/Revert_App_returns_Not_Found_response.freeze create mode 100644 src/test/resources/cassettes/features/v2/Revert_App_returns_Not_Found_response.json create mode 100644 src/test/resources/cassettes/features/v2/Update_App_Favorite_Status_returns_No_Content_response.freeze create mode 100644 src/test/resources/cassettes/features/v2/Update_App_Favorite_Status_returns_No_Content_response.json create mode 100644 src/test/resources/cassettes/features/v2/Update_App_Favorite_Status_returns_Not_Found_response.freeze create mode 100644 src/test/resources/cassettes/features/v2/Update_App_Favorite_Status_returns_Not_Found_response.json create mode 100644 src/test/resources/cassettes/features/v2/Update_App_Protection_Level_returns_Not_Found_response.freeze create mode 100644 src/test/resources/cassettes/features/v2/Update_App_Protection_Level_returns_Not_Found_response.json create mode 100644 src/test/resources/cassettes/features/v2/Update_App_Protection_Level_returns_OK_response.freeze create mode 100644 src/test/resources/cassettes/features/v2/Update_App_Protection_Level_returns_OK_response.json create mode 100644 src/test/resources/cassettes/features/v2/Update_App_Self_Service_Status_returns_No_Content_response.freeze create mode 100644 src/test/resources/cassettes/features/v2/Update_App_Self_Service_Status_returns_No_Content_response.json create mode 100644 src/test/resources/cassettes/features/v2/Update_App_Self_Service_Status_returns_Not_Found_response.freeze create mode 100644 src/test/resources/cassettes/features/v2/Update_App_Self_Service_Status_returns_Not_Found_response.json create mode 100644 src/test/resources/cassettes/features/v2/Update_App_Tags_returns_No_Content_response.freeze create mode 100644 src/test/resources/cassettes/features/v2/Update_App_Tags_returns_No_Content_response.json create mode 100644 src/test/resources/cassettes/features/v2/Update_App_Tags_returns_Not_Found_response.freeze create mode 100644 src/test/resources/cassettes/features/v2/Update_App_Tags_returns_Not_Found_response.json diff --git a/examples/v2/app-builder/ListAppVersions.java b/examples/v2/app-builder/ListAppVersions.java index 8c057e5b23c..89d15029041 100644 --- a/examples/v2/app-builder/ListAppVersions.java +++ b/examples/v2/app-builder/ListAppVersions.java @@ -11,9 +11,16 @@ public static void main(String[] args) { ApiClient defaultClient = ApiClient.getDefaultApiClient(); AppBuilderApi apiInstance = new AppBuilderApi(defaultClient); + // there is a valid "app" in the system + UUID APP_DATA_ID = null; try { - ListAppVersionsResponse result = - apiInstance.listAppVersions(UUID.fromString("65bb1f25-52e1-4510-9f8d-22d1516ed693")); + APP_DATA_ID = UUID.fromString(System.getenv("APP_DATA_ID")); + } catch (IllegalArgumentException e) { + System.err.println("Error parsing UUID: " + e.getMessage()); + } + + try { + ListAppVersionsResponse result = apiInstance.listAppVersions(APP_DATA_ID); System.out.println(result); } catch (ApiException e) { System.err.println("Exception when calling AppBuilderApi#listAppVersions"); diff --git a/examples/v2/app-builder/UpdateAppFavorite.java b/examples/v2/app-builder/UpdateAppFavorite.java index 6f14cab0b3a..8a197386864 100644 --- a/examples/v2/app-builder/UpdateAppFavorite.java +++ b/examples/v2/app-builder/UpdateAppFavorite.java @@ -14,6 +14,14 @@ public static void main(String[] args) { ApiClient defaultClient = ApiClient.getDefaultApiClient(); AppBuilderApi apiInstance = new AppBuilderApi(defaultClient); + // there is a valid "app" in the system + UUID APP_DATA_ID = null; + try { + APP_DATA_ID = UUID.fromString(System.getenv("APP_DATA_ID")); + } catch (IllegalArgumentException e) { + System.err.println("Error parsing UUID: " + e.getMessage()); + } + UpdateAppFavoriteRequest body = new UpdateAppFavoriteRequest() .data( @@ -22,7 +30,7 @@ public static void main(String[] args) { .type(AppFavoriteType.FAVORITES)); try { - apiInstance.updateAppFavorite(UUID.fromString("65bb1f25-52e1-4510-9f8d-22d1516ed693"), body); + apiInstance.updateAppFavorite(APP_DATA_ID, body); } catch (ApiException e) { System.err.println("Exception when calling AppBuilderApi#updateAppFavorite"); System.err.println("Status code: " + e.getCode()); diff --git a/examples/v2/app-builder/UpdateAppSelfService.java b/examples/v2/app-builder/UpdateAppSelfService.java index 4eb9baf0478..97c0b601aff 100644 --- a/examples/v2/app-builder/UpdateAppSelfService.java +++ b/examples/v2/app-builder/UpdateAppSelfService.java @@ -14,6 +14,14 @@ public static void main(String[] args) { ApiClient defaultClient = ApiClient.getDefaultApiClient(); AppBuilderApi apiInstance = new AppBuilderApi(defaultClient); + // there is a valid "app" in the system + UUID APP_DATA_ID = null; + try { + APP_DATA_ID = UUID.fromString(System.getenv("APP_DATA_ID")); + } catch (IllegalArgumentException e) { + System.err.println("Error parsing UUID: " + e.getMessage()); + } + UpdateAppSelfServiceRequest body = new UpdateAppSelfServiceRequest() .data( @@ -22,8 +30,7 @@ public static void main(String[] args) { .type(AppSelfServiceType.SELFSERVICE)); try { - apiInstance.updateAppSelfService( - UUID.fromString("65bb1f25-52e1-4510-9f8d-22d1516ed693"), body); + apiInstance.updateAppSelfService(APP_DATA_ID, body); } catch (ApiException e) { System.err.println("Exception when calling AppBuilderApi#updateAppSelfService"); System.err.println("Status code: " + e.getCode()); diff --git a/examples/v2/app-builder/UpdateAppTags.java b/examples/v2/app-builder/UpdateAppTags.java index 942e89985f5..2ccad48bce1 100644 --- a/examples/v2/app-builder/UpdateAppTags.java +++ b/examples/v2/app-builder/UpdateAppTags.java @@ -15,6 +15,14 @@ public static void main(String[] args) { ApiClient defaultClient = ApiClient.getDefaultApiClient(); AppBuilderApi apiInstance = new AppBuilderApi(defaultClient); + // there is a valid "app" in the system + UUID APP_DATA_ID = null; + try { + APP_DATA_ID = UUID.fromString(System.getenv("APP_DATA_ID")); + } catch (IllegalArgumentException e) { + System.err.println("Error parsing UUID: " + e.getMessage()); + } + UpdateAppTagsRequest body = new UpdateAppTagsRequest() .data( @@ -25,7 +33,7 @@ public static void main(String[] args) { .type(AppTagsType.TAGS)); try { - apiInstance.updateAppTags(UUID.fromString("65bb1f25-52e1-4510-9f8d-22d1516ed693"), body); + apiInstance.updateAppTags(APP_DATA_ID, body); } catch (ApiException e) { System.err.println("Exception when calling AppBuilderApi#updateAppTags"); System.err.println("Status code: " + e.getCode()); diff --git a/examples/v2/app-builder/UpdateAppVersionName.java b/examples/v2/app-builder/UpdateAppVersionName.java index 9d775544e1b..badba8a340d 100644 --- a/examples/v2/app-builder/UpdateAppVersionName.java +++ b/examples/v2/app-builder/UpdateAppVersionName.java @@ -14,6 +14,14 @@ public static void main(String[] args) { ApiClient defaultClient = ApiClient.getDefaultApiClient(); AppBuilderApi apiInstance = new AppBuilderApi(defaultClient); + // there is a valid "app" in the system + UUID APP_DATA_ID = null; + try { + APP_DATA_ID = UUID.fromString(System.getenv("APP_DATA_ID")); + } catch (IllegalArgumentException e) { + System.err.println("Error parsing UUID: " + e.getMessage()); + } + UpdateAppVersionNameRequest body = new UpdateAppVersionNameRequest() .data( @@ -24,8 +32,7 @@ public static void main(String[] args) { .type(AppVersionNameType.VERSIONNAMES)); try { - apiInstance.updateAppVersionName( - UUID.fromString("65bb1f25-52e1-4510-9f8d-22d1516ed693"), "3", body); + apiInstance.updateAppVersionName(APP_DATA_ID, "latest", body); } catch (ApiException e) { System.err.println("Exception when calling AppBuilderApi#updateAppVersionName"); System.err.println("Status code: " + e.getCode()); diff --git a/examples/v2/app-builder/UpdateProtectionLevel.java b/examples/v2/app-builder/UpdateProtectionLevel.java index c99f8715b5a..8ff8f45b7bf 100644 --- a/examples/v2/app-builder/UpdateProtectionLevel.java +++ b/examples/v2/app-builder/UpdateProtectionLevel.java @@ -16,6 +16,14 @@ public static void main(String[] args) { ApiClient defaultClient = ApiClient.getDefaultApiClient(); AppBuilderApi apiInstance = new AppBuilderApi(defaultClient); + // there is a valid "app" in the system + UUID APP_DATA_ID = null; + try { + APP_DATA_ID = UUID.fromString(System.getenv("APP_DATA_ID")); + } catch (IllegalArgumentException e) { + System.err.println("Error parsing UUID: " + e.getMessage()); + } + UpdateAppProtectionLevelRequest body = new UpdateAppProtectionLevelRequest() .data( @@ -26,9 +34,7 @@ public static void main(String[] args) { .type(AppProtectionLevelType.PROTECTIONLEVEL)); try { - UpdateAppResponse result = - apiInstance.updateProtectionLevel( - UUID.fromString("65bb1f25-52e1-4510-9f8d-22d1516ed693"), body); + UpdateAppResponse result = apiInstance.updateProtectionLevel(APP_DATA_ID, body); System.out.println(result); } catch (ApiException e) { System.err.println("Exception when calling AppBuilderApi#updateProtectionLevel"); diff --git a/src/test/resources/cassettes/features/v2/Create_App_returns_Created_response.json b/src/test/resources/cassettes/features/v2/Create_App_returns_Created_response.json index ef26cd89a47..149f4ec2ee3 100644 --- a/src/test/resources/cassettes/features/v2/Create_App_returns_Created_response.json +++ b/src/test/resources/cassettes/features/v2/Create_App_returns_Created_response.json @@ -27,7 +27,7 @@ "timeToLive": { "unlimited": true }, - "id": "c782b1f3-1b03-d50f-8fcd-12e51226c511" + "id": "c782b1f3-1b03-d50f-8fcd-12e51226c514" }, { "httpRequest": { diff --git a/src/test/resources/cassettes/features/v2/Create_Publish_Request_returns_Not_Found_response.freeze b/src/test/resources/cassettes/features/v2/Create_Publish_Request_returns_Not_Found_response.freeze new file mode 100644 index 00000000000..3630c84dd5b --- /dev/null +++ b/src/test/resources/cassettes/features/v2/Create_Publish_Request_returns_Not_Found_response.freeze @@ -0,0 +1 @@ +2026-05-18T19:51:47.462Z \ No newline at end of file diff --git a/src/test/resources/cassettes/features/v2/Create_Publish_Request_returns_Not_Found_response.json b/src/test/resources/cassettes/features/v2/Create_Publish_Request_returns_Not_Found_response.json new file mode 100644 index 00000000000..41b7f24cdee --- /dev/null +++ b/src/test/resources/cassettes/features/v2/Create_Publish_Request_returns_Not_Found_response.json @@ -0,0 +1,32 @@ +[ + { + "httpRequest": { + "body": { + "type": "JSON", + "json": "{\"data\":{\"attributes\":{\"description\":\"Adds new dashboard widgets and a few bug fixes.\",\"title\":\"Release v1.2 to production\"},\"type\":\"publishRequest\"}}" + }, + "headers": {}, + "method": "POST", + "path": "/api/v2/app-builder/apps/7addb29b-f935-472c-ae79-d1963979a23e/publish-request", + "keepAlive": false, + "secure": true + }, + "httpResponse": { + "body": "{\"errors\":[{\"status\":\"404\",\"id\":\"c9247d40-2291-4860-90ac-9c2441ff23db\",\"title\":\"app not found\",\"detail\":\"app with id 7addb29b-f935-472c-ae79-d1963979a23e not found\"}]}", + "headers": { + "Content-Type": [ + "application/vnd.api+json" + ] + }, + "statusCode": 404, + "reasonPhrase": "Not Found" + }, + "times": { + "remainingTimes": 1 + }, + "timeToLive": { + "unlimited": true + }, + "id": "508a80cf-3313-3708-bdc3-428c09046235" + } +] \ No newline at end of file diff --git a/src/test/resources/cassettes/features/v2/Delete_App_returns_OK_response.json b/src/test/resources/cassettes/features/v2/Delete_App_returns_OK_response.json index 043c1ba1cdb..a03b13eebf8 100644 --- a/src/test/resources/cassettes/features/v2/Delete_App_returns_OK_response.json +++ b/src/test/resources/cassettes/features/v2/Delete_App_returns_OK_response.json @@ -27,7 +27,7 @@ "timeToLive": { "unlimited": true }, - "id": "c782b1f3-1b03-d50f-8fcd-12e51226c50e" + "id": "c782b1f3-1b03-d50f-8fcd-12e51226c510" }, { "httpRequest": { diff --git a/src/test/resources/cassettes/features/v2/Get_App_returns_Gone_response.json b/src/test/resources/cassettes/features/v2/Get_App_returns_Gone_response.json index b5a3dd39c4e..e633be95098 100644 --- a/src/test/resources/cassettes/features/v2/Get_App_returns_Gone_response.json +++ b/src/test/resources/cassettes/features/v2/Get_App_returns_Gone_response.json @@ -27,7 +27,7 @@ "timeToLive": { "unlimited": true }, - "id": "c782b1f3-1b03-d50f-8fcd-12e51226c50f" + "id": "c782b1f3-1b03-d50f-8fcd-12e51226c511" }, { "httpRequest": { diff --git a/src/test/resources/cassettes/features/v2/Get_App_returns_OK_response.json b/src/test/resources/cassettes/features/v2/Get_App_returns_OK_response.json index f38809e8af9..0d312e2da5f 100644 --- a/src/test/resources/cassettes/features/v2/Get_App_returns_OK_response.json +++ b/src/test/resources/cassettes/features/v2/Get_App_returns_OK_response.json @@ -27,7 +27,7 @@ "timeToLive": { "unlimited": true }, - "id": "c782b1f3-1b03-d50f-8fcd-12e51226c512" + "id": "c782b1f3-1b03-d50f-8fcd-12e51226c517" }, { "httpRequest": { diff --git a/src/test/resources/cassettes/features/v2/List_App_Versions_returns_Not_Found_response.freeze b/src/test/resources/cassettes/features/v2/List_App_Versions_returns_Not_Found_response.freeze new file mode 100644 index 00000000000..25a432b084d --- /dev/null +++ b/src/test/resources/cassettes/features/v2/List_App_Versions_returns_Not_Found_response.freeze @@ -0,0 +1 @@ +2026-05-18T19:51:53.216Z \ No newline at end of file diff --git a/src/test/resources/cassettes/features/v2/List_App_Versions_returns_Not_Found_response.json b/src/test/resources/cassettes/features/v2/List_App_Versions_returns_Not_Found_response.json new file mode 100644 index 00000000000..d16e6effec7 --- /dev/null +++ b/src/test/resources/cassettes/features/v2/List_App_Versions_returns_Not_Found_response.json @@ -0,0 +1,28 @@ +[ + { + "httpRequest": { + "headers": {}, + "method": "GET", + "path": "/api/v2/app-builder/apps/7addb29b-f935-472c-ae79-d1963979a23e/versions", + "keepAlive": false, + "secure": true + }, + "httpResponse": { + "body": "{\"errors\":[{\"status\":\"404\",\"id\":\"4dfd53b4-6987-4868-b330-af0535219c61\",\"title\":\"app not found\",\"detail\":\"app with id 7addb29b-f935-472c-ae79-d1963979a23e not found\"}]}", + "headers": { + "Content-Type": [ + "application/vnd.api+json" + ] + }, + "statusCode": 404, + "reasonPhrase": "Not Found" + }, + "times": { + "remainingTimes": 1 + }, + "timeToLive": { + "unlimited": true + }, + "id": "2b056b9b-18c3-a44a-7c7d-240a4c5bc6fe" + } +] \ No newline at end of file diff --git a/src/test/resources/cassettes/features/v2/List_App_Versions_returns_OK_response.freeze b/src/test/resources/cassettes/features/v2/List_App_Versions_returns_OK_response.freeze new file mode 100644 index 00000000000..f134f190413 --- /dev/null +++ b/src/test/resources/cassettes/features/v2/List_App_Versions_returns_OK_response.freeze @@ -0,0 +1 @@ +2026-05-18T19:51:53.386Z \ No newline at end of file diff --git a/src/test/resources/cassettes/features/v2/List_App_Versions_returns_OK_response.json b/src/test/resources/cassettes/features/v2/List_App_Versions_returns_OK_response.json new file mode 100644 index 00000000000..47c8d6237a9 --- /dev/null +++ b/src/test/resources/cassettes/features/v2/List_App_Versions_returns_OK_response.json @@ -0,0 +1,84 @@ +[ + { + "httpRequest": { + "body": { + "type": "JSON", + "json": "{\"data\":{\"attributes\":{\"components\":[{\"events\":[],\"name\":\"grid0\",\"properties\":{\"backgroundColor\":\"default\",\"children\":[{\"events\":[],\"name\":\"gridCell0\",\"properties\":{\"children\":[{\"events\":[],\"name\":\"text0\",\"properties\":{\"content\":\"# Cat Facts\",\"contentType\":\"markdown\",\"isVisible\":true,\"textAlign\":\"left\",\"verticalAlign\":\"top\"},\"type\":\"text\"}],\"isVisible\":\"true\",\"layout\":{\"default\":{\"height\":5,\"width\":4,\"x\":0,\"y\":0}}},\"type\":\"gridCell\"},{\"events\":[],\"name\":\"gridCell2\",\"properties\":{\"children\":[{\"events\":[],\"name\":\"table0\",\"properties\":{\"columns\":[{\"dataPath\":\"fact\",\"header\":\"fact\",\"id\":\"0ae2ae9e-0280-4389-83c6-1c5949f7e674\",\"isHidden\":false},{\"dataPath\":\"length\",\"header\":\"length\",\"id\":\"c9048611-0196-4a00-9366-1ef9e3ec0408\",\"isHidden\":true},{\"dataPath\":\"Due Date\",\"disableSortBy\":false,\"formatter\":{\"format\":\"LARGE_WITHOUT_TIME\",\"type\":\"formatted_time\"},\"header\":\"Unused Old Column\",\"id\":\"8fa9284b-7a58-4f13-9959-57b7d8a7fe8f\",\"isDeleted\":true}],\"data\":\"${fetchFacts?.outputs?.body?.data}\",\"globalFilter\":false,\"isLoading\":\"${fetchFacts?.isLoading}\",\"isScrollable\":\"vertical\",\"isSubRowsEnabled\":false,\"isVisible\":true,\"isWrappable\":false,\"pageSize\":\"${pageSize?.value}\",\"paginationType\":\"server_side\",\"rowButtons\":[],\"summary\":true,\"totalCount\":\"${fetchFacts?.outputs?.body?.total}\"},\"type\":\"table\"}],\"isVisible\":\"true\",\"layout\":{\"default\":{\"height\":96,\"width\":12,\"x\":0,\"y\":5}}},\"type\":\"gridCell\"},{\"events\":[],\"name\":\"gridCell1\",\"properties\":{\"children\":[{\"events\":[],\"name\":\"text1\",\"properties\":{\"content\":\"## Random Fact\\n\\n${randomFact?.outputs?.fact}\",\"contentType\":\"markdown\",\"isVisible\":true,\"textAlign\":\"left\",\"verticalAlign\":\"top\"},\"type\":\"text\"}],\"isVisible\":\"true\",\"layout\":{\"default\":{\"height\":16,\"width\":12,\"x\":0,\"y\":101}}},\"type\":\"gridCell\"},{\"events\":[],\"name\":\"gridCell3\",\"properties\":{\"children\":[{\"events\":[{\"name\":\"click\",\"type\":\"setStateVariableValue\",\"value\":\"${pageSize?.value + 1}\",\"variableName\":\"pageSize\"}],\"name\":\"button0\",\"properties\":{\"iconLeft\":\"angleUp\",\"iconRight\":\"\",\"isBorderless\":false,\"isDisabled\":false,\"isLoading\":false,\"isPrimary\":true,\"isVisible\":true,\"label\":\"Increase Page Size\",\"level\":\"default\"},\"type\":\"button\"}],\"isVisible\":\"true\",\"layout\":{\"default\":{\"height\":4,\"width\":2,\"x\":10,\"y\":134}}},\"type\":\"gridCell\"},{\"events\":[],\"name\":\"gridCell4\",\"properties\":{\"children\":[{\"events\":[{\"name\":\"click\",\"type\":\"setStateVariableValue\",\"value\":\"${pageSize?.value - 1}\",\"variableName\":\"pageSize\"}],\"name\":\"button1\",\"properties\":{\"iconLeft\":\"angleDown\",\"iconRight\":\"\",\"isBorderless\":false,\"isDisabled\":false,\"isLoading\":false,\"isPrimary\":true,\"isVisible\":true,\"label\":\"Decrease Page Size\",\"level\":\"default\"},\"type\":\"button\"}],\"isVisible\":\"true\",\"layout\":{\"default\":{\"height\":4,\"width\":2,\"x\":10,\"y\":138}}},\"type\":\"gridCell\"}]},\"type\":\"grid\"}],\"description\":\"This is a slightly complicated example app that fetches and displays cat facts\",\"name\":\"Example Cat Facts Viewer\",\"queries\":[{\"events\":[],\"id\":\"92ff0bb8-553b-4f31-87c7-ef5bd16d47d5\",\"name\":\"fetchFacts\",\"properties\":{\"spec\":{\"connectionId\":\"5e63f4a8-4ce6-47de-ba11-f6617c1d54f3\",\"fqn\":\"com.datadoghq.http.request\",\"inputs\":{\"url\":\"https://catfact.ninja/facts\",\"urlParams\":[{\"key\":\"limit\",\"value\":\"${pageSize.value.toString()}\"},{\"key\":\"page\",\"value\":\"${(table0.pageIndex + 1).toString()}\"}],\"verb\":\"GET\"}}},\"type\":\"action\"},{\"id\":\"afd03c81-4075-4432-8618-ba09d52d2f2d\",\"name\":\"pageSize\",\"properties\":{\"defaultValue\":\"${20}\"},\"type\":\"stateVariable\"},{\"id\":\"0fb22859-47dc-4137-9e41-7b67d04c525c\",\"name\":\"randomFact\",\"properties\":{\"outputs\":\"${(() => {const facts = fetchFacts.outputs.body.data\\nreturn facts[Math.floor(Math.random()*facts.length)]\\n})()}\"},\"type\":\"dataTransform\"}],\"rootInstanceName\":\"grid0\"},\"type\":\"appDefinitions\"}}" + }, + "headers": {}, + "method": "POST", + "path": "/api/v2/app-builder/apps", + "keepAlive": false, + "secure": true + }, + "httpResponse": { + "body": "{\"data\":{\"id\":\"d928ecbc-acfe-4126-96f6-092fa0a01416\",\"type\":\"appDefinitions\"}}", + "headers": { + "Content-Type": [ + "application/vnd.api+json" + ] + }, + "statusCode": 201, + "reasonPhrase": "Created" + }, + "times": { + "remainingTimes": 1 + }, + "timeToLive": { + "unlimited": true + }, + "id": "c782b1f3-1b03-d50f-8fcd-12e51226c50e" + }, + { + "httpRequest": { + "headers": {}, + "method": "GET", + "path": "/api/v2/app-builder/apps/d928ecbc-acfe-4126-96f6-092fa0a01416/versions", + "keepAlive": false, + "secure": true + }, + "httpResponse": { + "body": "{\"data\": [{\"id\": \"98cd3a5a-644d-41fd-8ffa-e58e21e8e21b\", \"type\": \"appVersions\", \"attributes\": {\"app_id\": \"d928ecbc-acfe-4126-96f6-092fa0a01416\", \"created_at\": \"2026-05-18T19:51:53.59976Z\", \"has_ever_been_published\": false, \"updated_at\": \"2026-05-18T19:51:53.59976Z\", \"user_id\": 1445416, \"user_name\": \"\", \"user_uuid\": \"3ad549bf-eba0-11e9-a77a-0705486660d0\", \"version\": 1}}], \"meta\": {\"page\": {\"totalCount\": 1, \"totalFilteredCount\": 0}}}", + "headers": { + "Content-Type": [ + "application/vnd.api+json" + ] + }, + "statusCode": 200, + "reasonPhrase": "OK" + }, + "times": { + "remainingTimes": 1 + }, + "timeToLive": { + "unlimited": true + }, + "id": "037664ce-f887-1541-613d-f301c9aa6b84" + }, + { + "httpRequest": { + "headers": {}, + "method": "DELETE", + "path": "/api/v2/app-builder/apps/d928ecbc-acfe-4126-96f6-092fa0a01416", + "keepAlive": false, + "secure": true + }, + "httpResponse": { + "body": "{\"data\": {\"id\": \"d928ecbc-acfe-4126-96f6-092fa0a01416\", \"type\": \"appDefinitions\"}}", + "headers": { + "Content-Type": [ + "application/vnd.api+json" + ] + }, + "statusCode": 200, + "reasonPhrase": "OK" + }, + "times": { + "remainingTimes": 1 + }, + "timeToLive": { + "unlimited": true + }, + "id": "ba0f2bab-9a3e-92e4-04b8-1e373c8e015a" + } +] \ No newline at end of file diff --git a/src/test/resources/cassettes/features/v2/Name_App_Version_returns_No_Content_response.freeze b/src/test/resources/cassettes/features/v2/Name_App_Version_returns_No_Content_response.freeze new file mode 100644 index 00000000000..b224652513e --- /dev/null +++ b/src/test/resources/cassettes/features/v2/Name_App_Version_returns_No_Content_response.freeze @@ -0,0 +1 @@ +2026-05-18T19:51:55.262Z \ No newline at end of file diff --git a/src/test/resources/cassettes/features/v2/Name_App_Version_returns_No_Content_response.json b/src/test/resources/cassettes/features/v2/Name_App_Version_returns_No_Content_response.json new file mode 100644 index 00000000000..794b5deb5db --- /dev/null +++ b/src/test/resources/cassettes/features/v2/Name_App_Version_returns_No_Content_response.json @@ -0,0 +1,88 @@ +[ + { + "httpRequest": { + "body": { + "type": "JSON", + "json": "{\"data\":{\"attributes\":{\"components\":[{\"events\":[],\"name\":\"grid0\",\"properties\":{\"backgroundColor\":\"default\",\"children\":[{\"events\":[],\"name\":\"gridCell0\",\"properties\":{\"children\":[{\"events\":[],\"name\":\"text0\",\"properties\":{\"content\":\"# Cat Facts\",\"contentType\":\"markdown\",\"isVisible\":true,\"textAlign\":\"left\",\"verticalAlign\":\"top\"},\"type\":\"text\"}],\"isVisible\":\"true\",\"layout\":{\"default\":{\"height\":5,\"width\":4,\"x\":0,\"y\":0}}},\"type\":\"gridCell\"},{\"events\":[],\"name\":\"gridCell2\",\"properties\":{\"children\":[{\"events\":[],\"name\":\"table0\",\"properties\":{\"columns\":[{\"dataPath\":\"fact\",\"header\":\"fact\",\"id\":\"0ae2ae9e-0280-4389-83c6-1c5949f7e674\",\"isHidden\":false},{\"dataPath\":\"length\",\"header\":\"length\",\"id\":\"c9048611-0196-4a00-9366-1ef9e3ec0408\",\"isHidden\":true},{\"dataPath\":\"Due Date\",\"disableSortBy\":false,\"formatter\":{\"format\":\"LARGE_WITHOUT_TIME\",\"type\":\"formatted_time\"},\"header\":\"Unused Old Column\",\"id\":\"8fa9284b-7a58-4f13-9959-57b7d8a7fe8f\",\"isDeleted\":true}],\"data\":\"${fetchFacts?.outputs?.body?.data}\",\"globalFilter\":false,\"isLoading\":\"${fetchFacts?.isLoading}\",\"isScrollable\":\"vertical\",\"isSubRowsEnabled\":false,\"isVisible\":true,\"isWrappable\":false,\"pageSize\":\"${pageSize?.value}\",\"paginationType\":\"server_side\",\"rowButtons\":[],\"summary\":true,\"totalCount\":\"${fetchFacts?.outputs?.body?.total}\"},\"type\":\"table\"}],\"isVisible\":\"true\",\"layout\":{\"default\":{\"height\":96,\"width\":12,\"x\":0,\"y\":5}}},\"type\":\"gridCell\"},{\"events\":[],\"name\":\"gridCell1\",\"properties\":{\"children\":[{\"events\":[],\"name\":\"text1\",\"properties\":{\"content\":\"## Random Fact\\n\\n${randomFact?.outputs?.fact}\",\"contentType\":\"markdown\",\"isVisible\":true,\"textAlign\":\"left\",\"verticalAlign\":\"top\"},\"type\":\"text\"}],\"isVisible\":\"true\",\"layout\":{\"default\":{\"height\":16,\"width\":12,\"x\":0,\"y\":101}}},\"type\":\"gridCell\"},{\"events\":[],\"name\":\"gridCell3\",\"properties\":{\"children\":[{\"events\":[{\"name\":\"click\",\"type\":\"setStateVariableValue\",\"value\":\"${pageSize?.value + 1}\",\"variableName\":\"pageSize\"}],\"name\":\"button0\",\"properties\":{\"iconLeft\":\"angleUp\",\"iconRight\":\"\",\"isBorderless\":false,\"isDisabled\":false,\"isLoading\":false,\"isPrimary\":true,\"isVisible\":true,\"label\":\"Increase Page Size\",\"level\":\"default\"},\"type\":\"button\"}],\"isVisible\":\"true\",\"layout\":{\"default\":{\"height\":4,\"width\":2,\"x\":10,\"y\":134}}},\"type\":\"gridCell\"},{\"events\":[],\"name\":\"gridCell4\",\"properties\":{\"children\":[{\"events\":[{\"name\":\"click\",\"type\":\"setStateVariableValue\",\"value\":\"${pageSize?.value - 1}\",\"variableName\":\"pageSize\"}],\"name\":\"button1\",\"properties\":{\"iconLeft\":\"angleDown\",\"iconRight\":\"\",\"isBorderless\":false,\"isDisabled\":false,\"isLoading\":false,\"isPrimary\":true,\"isVisible\":true,\"label\":\"Decrease Page Size\",\"level\":\"default\"},\"type\":\"button\"}],\"isVisible\":\"true\",\"layout\":{\"default\":{\"height\":4,\"width\":2,\"x\":10,\"y\":138}}},\"type\":\"gridCell\"}]},\"type\":\"grid\"}],\"description\":\"This is a slightly complicated example app that fetches and displays cat facts\",\"name\":\"Example Cat Facts Viewer\",\"queries\":[{\"events\":[],\"id\":\"92ff0bb8-553b-4f31-87c7-ef5bd16d47d5\",\"name\":\"fetchFacts\",\"properties\":{\"spec\":{\"connectionId\":\"5e63f4a8-4ce6-47de-ba11-f6617c1d54f3\",\"fqn\":\"com.datadoghq.http.request\",\"inputs\":{\"url\":\"https://catfact.ninja/facts\",\"urlParams\":[{\"key\":\"limit\",\"value\":\"${pageSize.value.toString()}\"},{\"key\":\"page\",\"value\":\"${(table0.pageIndex + 1).toString()}\"}],\"verb\":\"GET\"}}},\"type\":\"action\"},{\"id\":\"afd03c81-4075-4432-8618-ba09d52d2f2d\",\"name\":\"pageSize\",\"properties\":{\"defaultValue\":\"${20}\"},\"type\":\"stateVariable\"},{\"id\":\"0fb22859-47dc-4137-9e41-7b67d04c525c\",\"name\":\"randomFact\",\"properties\":{\"outputs\":\"${(() => {const facts = fetchFacts.outputs.body.data\\nreturn facts[Math.floor(Math.random()*facts.length)]\\n})()}\"},\"type\":\"dataTransform\"}],\"rootInstanceName\":\"grid0\"},\"type\":\"appDefinitions\"}}" + }, + "headers": {}, + "method": "POST", + "path": "/api/v2/app-builder/apps", + "keepAlive": false, + "secure": true + }, + "httpResponse": { + "body": "{\"data\":{\"id\":\"850d5920-6bfb-4723-a3ff-91bfb2d898d8\",\"type\":\"appDefinitions\"}}", + "headers": { + "Content-Type": [ + "application/vnd.api+json" + ] + }, + "statusCode": 201, + "reasonPhrase": "Created" + }, + "times": { + "remainingTimes": 1 + }, + "timeToLive": { + "unlimited": true + }, + "id": "c782b1f3-1b03-d50f-8fcd-12e51226c50f" + }, + { + "httpRequest": { + "body": { + "type": "JSON", + "json": "{\"data\":{\"attributes\":{\"name\":\"v1.2.0 - bug fix release\"},\"type\":\"versionNames\"}}" + }, + "headers": {}, + "method": "PATCH", + "path": "/api/v2/app-builder/apps/850d5920-6bfb-4723-a3ff-91bfb2d898d8/version-name", + "queryStringParameters": { + "version": [ + "latest" + ] + }, + "keepAlive": false, + "secure": true + }, + "httpResponse": { + "headers": {}, + "statusCode": 204, + "reasonPhrase": "No Content" + }, + "times": { + "remainingTimes": 1 + }, + "timeToLive": { + "unlimited": true + }, + "id": "e61556aa-e7c3-523c-3784-f6344a912a2f" + }, + { + "httpRequest": { + "headers": {}, + "method": "DELETE", + "path": "/api/v2/app-builder/apps/850d5920-6bfb-4723-a3ff-91bfb2d898d8", + "keepAlive": false, + "secure": true + }, + "httpResponse": { + "body": "{\"data\":{\"id\":\"850d5920-6bfb-4723-a3ff-91bfb2d898d8\",\"type\":\"appDefinitions\"}}", + "headers": { + "Content-Type": [ + "application/vnd.api+json" + ] + }, + "statusCode": 200, + "reasonPhrase": "OK" + }, + "times": { + "remainingTimes": 1 + }, + "timeToLive": { + "unlimited": true + }, + "id": "62c97c2c-a469-63f7-afd3-a4be00ae4647" + } +] \ No newline at end of file diff --git a/src/test/resources/cassettes/features/v2/Name_App_Version_returns_Not_Found_response.freeze b/src/test/resources/cassettes/features/v2/Name_App_Version_returns_Not_Found_response.freeze new file mode 100644 index 00000000000..f304ca2f684 --- /dev/null +++ b/src/test/resources/cassettes/features/v2/Name_App_Version_returns_Not_Found_response.freeze @@ -0,0 +1 @@ +2026-05-18T19:51:56.300Z \ No newline at end of file diff --git a/src/test/resources/cassettes/features/v2/Name_App_Version_returns_Not_Found_response.json b/src/test/resources/cassettes/features/v2/Name_App_Version_returns_Not_Found_response.json new file mode 100644 index 00000000000..1516fc792e7 --- /dev/null +++ b/src/test/resources/cassettes/features/v2/Name_App_Version_returns_Not_Found_response.json @@ -0,0 +1,37 @@ +[ + { + "httpRequest": { + "body": { + "type": "JSON", + "json": "{\"data\":{\"attributes\":{\"name\":\"v1.2.0 - bug fix release\"},\"type\":\"versionNames\"}}" + }, + "headers": {}, + "method": "PATCH", + "path": "/api/v2/app-builder/apps/7addb29b-f935-472c-ae79-d1963979a23e/version-name", + "queryStringParameters": { + "version": [ + "latest" + ] + }, + "keepAlive": false, + "secure": true + }, + "httpResponse": { + "body": "{\"errors\":[{\"status\":\"404\",\"id\":\"16fc993f-2445-4b88-b1e7-c924feed5141\",\"title\":\"app not found\",\"detail\":\"app with id 7addb29b-f935-472c-ae79-d1963979a23e not found\"}]}", + "headers": { + "Content-Type": [ + "application/vnd.api+json" + ] + }, + "statusCode": 404, + "reasonPhrase": "Not Found" + }, + "times": { + "remainingTimes": 1 + }, + "timeToLive": { + "unlimited": true + }, + "id": "edd69226-d95c-b0b7-74da-198c7d7a3b35" + } +] \ No newline at end of file diff --git a/src/test/resources/cassettes/features/v2/Publish_App_returns_Created_response.json b/src/test/resources/cassettes/features/v2/Publish_App_returns_Created_response.json index 83dc7ceab4a..99b5cd75580 100644 --- a/src/test/resources/cassettes/features/v2/Publish_App_returns_Created_response.json +++ b/src/test/resources/cassettes/features/v2/Publish_App_returns_Created_response.json @@ -27,7 +27,7 @@ "timeToLive": { "unlimited": true }, - "id": "c782b1f3-1b03-d50f-8fcd-12e51226c514" + "id": "c782b1f3-1b03-d50f-8fcd-12e51226c519" }, { "httpRequest": { diff --git a/src/test/resources/cassettes/features/v2/Revert_App_returns_Not_Found_response.freeze b/src/test/resources/cassettes/features/v2/Revert_App_returns_Not_Found_response.freeze new file mode 100644 index 00000000000..b8cdcb67d8c --- /dev/null +++ b/src/test/resources/cassettes/features/v2/Revert_App_returns_Not_Found_response.freeze @@ -0,0 +1 @@ +2026-05-18T19:51:58.197Z \ No newline at end of file diff --git a/src/test/resources/cassettes/features/v2/Revert_App_returns_Not_Found_response.json b/src/test/resources/cassettes/features/v2/Revert_App_returns_Not_Found_response.json new file mode 100644 index 00000000000..f76c4913049 --- /dev/null +++ b/src/test/resources/cassettes/features/v2/Revert_App_returns_Not_Found_response.json @@ -0,0 +1,33 @@ +[ + { + "httpRequest": { + "headers": {}, + "method": "POST", + "path": "/api/v2/app-builder/apps/7addb29b-f935-472c-ae79-d1963979a23e/revert", + "queryStringParameters": { + "version": [ + "1" + ] + }, + "keepAlive": false, + "secure": true + }, + "httpResponse": { + "body": "{\"errors\":[{\"status\":\"404\",\"id\":\"09483925-ee8b-44c8-882a-35b53e209584\",\"title\":\"app not found\",\"detail\":\"app with id 7addb29b-f935-472c-ae79-d1963979a23e not found\"}]}", + "headers": { + "Content-Type": [ + "application/vnd.api+json" + ] + }, + "statusCode": 404, + "reasonPhrase": "Not Found" + }, + "times": { + "remainingTimes": 1 + }, + "timeToLive": { + "unlimited": true + }, + "id": "bcd8f71d-bd6b-1dbc-9902-0c02957657ea" + } +] \ No newline at end of file diff --git a/src/test/resources/cassettes/features/v2/Unpublish_App_returns_OK_response.json b/src/test/resources/cassettes/features/v2/Unpublish_App_returns_OK_response.json index 785bd78f8b8..cf3de41da76 100644 --- a/src/test/resources/cassettes/features/v2/Unpublish_App_returns_OK_response.json +++ b/src/test/resources/cassettes/features/v2/Unpublish_App_returns_OK_response.json @@ -27,7 +27,7 @@ "timeToLive": { "unlimited": true }, - "id": "c782b1f3-1b03-d50f-8fcd-12e51226c513" + "id": "c782b1f3-1b03-d50f-8fcd-12e51226c518" }, { "httpRequest": { diff --git a/src/test/resources/cassettes/features/v2/Update_App_Favorite_Status_returns_No_Content_response.freeze b/src/test/resources/cassettes/features/v2/Update_App_Favorite_Status_returns_No_Content_response.freeze new file mode 100644 index 00000000000..632a7af485a --- /dev/null +++ b/src/test/resources/cassettes/features/v2/Update_App_Favorite_Status_returns_No_Content_response.freeze @@ -0,0 +1 @@ +2026-05-18T19:51:59.539Z \ No newline at end of file diff --git a/src/test/resources/cassettes/features/v2/Update_App_Favorite_Status_returns_No_Content_response.json b/src/test/resources/cassettes/features/v2/Update_App_Favorite_Status_returns_No_Content_response.json new file mode 100644 index 00000000000..fb2106e33db --- /dev/null +++ b/src/test/resources/cassettes/features/v2/Update_App_Favorite_Status_returns_No_Content_response.json @@ -0,0 +1,83 @@ +[ + { + "httpRequest": { + "body": { + "type": "JSON", + "json": "{\"data\":{\"attributes\":{\"components\":[{\"events\":[],\"name\":\"grid0\",\"properties\":{\"backgroundColor\":\"default\",\"children\":[{\"events\":[],\"name\":\"gridCell0\",\"properties\":{\"children\":[{\"events\":[],\"name\":\"text0\",\"properties\":{\"content\":\"# Cat Facts\",\"contentType\":\"markdown\",\"isVisible\":true,\"textAlign\":\"left\",\"verticalAlign\":\"top\"},\"type\":\"text\"}],\"isVisible\":\"true\",\"layout\":{\"default\":{\"height\":5,\"width\":4,\"x\":0,\"y\":0}}},\"type\":\"gridCell\"},{\"events\":[],\"name\":\"gridCell2\",\"properties\":{\"children\":[{\"events\":[],\"name\":\"table0\",\"properties\":{\"columns\":[{\"dataPath\":\"fact\",\"header\":\"fact\",\"id\":\"0ae2ae9e-0280-4389-83c6-1c5949f7e674\",\"isHidden\":false},{\"dataPath\":\"length\",\"header\":\"length\",\"id\":\"c9048611-0196-4a00-9366-1ef9e3ec0408\",\"isHidden\":true},{\"dataPath\":\"Due Date\",\"disableSortBy\":false,\"formatter\":{\"format\":\"LARGE_WITHOUT_TIME\",\"type\":\"formatted_time\"},\"header\":\"Unused Old Column\",\"id\":\"8fa9284b-7a58-4f13-9959-57b7d8a7fe8f\",\"isDeleted\":true}],\"data\":\"${fetchFacts?.outputs?.body?.data}\",\"globalFilter\":false,\"isLoading\":\"${fetchFacts?.isLoading}\",\"isScrollable\":\"vertical\",\"isSubRowsEnabled\":false,\"isVisible\":true,\"isWrappable\":false,\"pageSize\":\"${pageSize?.value}\",\"paginationType\":\"server_side\",\"rowButtons\":[],\"summary\":true,\"totalCount\":\"${fetchFacts?.outputs?.body?.total}\"},\"type\":\"table\"}],\"isVisible\":\"true\",\"layout\":{\"default\":{\"height\":96,\"width\":12,\"x\":0,\"y\":5}}},\"type\":\"gridCell\"},{\"events\":[],\"name\":\"gridCell1\",\"properties\":{\"children\":[{\"events\":[],\"name\":\"text1\",\"properties\":{\"content\":\"## Random Fact\\n\\n${randomFact?.outputs?.fact}\",\"contentType\":\"markdown\",\"isVisible\":true,\"textAlign\":\"left\",\"verticalAlign\":\"top\"},\"type\":\"text\"}],\"isVisible\":\"true\",\"layout\":{\"default\":{\"height\":16,\"width\":12,\"x\":0,\"y\":101}}},\"type\":\"gridCell\"},{\"events\":[],\"name\":\"gridCell3\",\"properties\":{\"children\":[{\"events\":[{\"name\":\"click\",\"type\":\"setStateVariableValue\",\"value\":\"${pageSize?.value + 1}\",\"variableName\":\"pageSize\"}],\"name\":\"button0\",\"properties\":{\"iconLeft\":\"angleUp\",\"iconRight\":\"\",\"isBorderless\":false,\"isDisabled\":false,\"isLoading\":false,\"isPrimary\":true,\"isVisible\":true,\"label\":\"Increase Page Size\",\"level\":\"default\"},\"type\":\"button\"}],\"isVisible\":\"true\",\"layout\":{\"default\":{\"height\":4,\"width\":2,\"x\":10,\"y\":134}}},\"type\":\"gridCell\"},{\"events\":[],\"name\":\"gridCell4\",\"properties\":{\"children\":[{\"events\":[{\"name\":\"click\",\"type\":\"setStateVariableValue\",\"value\":\"${pageSize?.value - 1}\",\"variableName\":\"pageSize\"}],\"name\":\"button1\",\"properties\":{\"iconLeft\":\"angleDown\",\"iconRight\":\"\",\"isBorderless\":false,\"isDisabled\":false,\"isLoading\":false,\"isPrimary\":true,\"isVisible\":true,\"label\":\"Decrease Page Size\",\"level\":\"default\"},\"type\":\"button\"}],\"isVisible\":\"true\",\"layout\":{\"default\":{\"height\":4,\"width\":2,\"x\":10,\"y\":138}}},\"type\":\"gridCell\"}]},\"type\":\"grid\"}],\"description\":\"This is a slightly complicated example app that fetches and displays cat facts\",\"name\":\"Example Cat Facts Viewer\",\"queries\":[{\"events\":[],\"id\":\"92ff0bb8-553b-4f31-87c7-ef5bd16d47d5\",\"name\":\"fetchFacts\",\"properties\":{\"spec\":{\"connectionId\":\"5e63f4a8-4ce6-47de-ba11-f6617c1d54f3\",\"fqn\":\"com.datadoghq.http.request\",\"inputs\":{\"url\":\"https://catfact.ninja/facts\",\"urlParams\":[{\"key\":\"limit\",\"value\":\"${pageSize.value.toString()}\"},{\"key\":\"page\",\"value\":\"${(table0.pageIndex + 1).toString()}\"}],\"verb\":\"GET\"}}},\"type\":\"action\"},{\"id\":\"afd03c81-4075-4432-8618-ba09d52d2f2d\",\"name\":\"pageSize\",\"properties\":{\"defaultValue\":\"${20}\"},\"type\":\"stateVariable\"},{\"id\":\"0fb22859-47dc-4137-9e41-7b67d04c525c\",\"name\":\"randomFact\",\"properties\":{\"outputs\":\"${(() => {const facts = fetchFacts.outputs.body.data\\nreturn facts[Math.floor(Math.random()*facts.length)]\\n})()}\"},\"type\":\"dataTransform\"}],\"rootInstanceName\":\"grid0\"},\"type\":\"appDefinitions\"}}" + }, + "headers": {}, + "method": "POST", + "path": "/api/v2/app-builder/apps", + "keepAlive": false, + "secure": true + }, + "httpResponse": { + "body": "{\"data\":{\"id\":\"ff20368e-cb9a-4216-aa76-a61c11aef6d1\",\"type\":\"appDefinitions\"}}", + "headers": { + "Content-Type": [ + "application/vnd.api+json" + ] + }, + "statusCode": 201, + "reasonPhrase": "Created" + }, + "times": { + "remainingTimes": 1 + }, + "timeToLive": { + "unlimited": true + }, + "id": "c782b1f3-1b03-d50f-8fcd-12e51226c512" + }, + { + "httpRequest": { + "body": { + "type": "JSON", + "json": "{\"data\":{\"attributes\":{\"favorite\":true},\"type\":\"favorites\"}}" + }, + "headers": {}, + "method": "PATCH", + "path": "/api/v2/app-builder/apps/ff20368e-cb9a-4216-aa76-a61c11aef6d1/favorite", + "keepAlive": false, + "secure": true + }, + "httpResponse": { + "headers": {}, + "statusCode": 204, + "reasonPhrase": "No Content" + }, + "times": { + "remainingTimes": 1 + }, + "timeToLive": { + "unlimited": true + }, + "id": "cd889906-cc3f-d791-9382-f87b35b1c779" + }, + { + "httpRequest": { + "headers": {}, + "method": "DELETE", + "path": "/api/v2/app-builder/apps/ff20368e-cb9a-4216-aa76-a61c11aef6d1", + "keepAlive": false, + "secure": true + }, + "httpResponse": { + "body": "{\"data\":{\"id\":\"ff20368e-cb9a-4216-aa76-a61c11aef6d1\",\"type\":\"appDefinitions\"}}", + "headers": { + "Content-Type": [ + "application/vnd.api+json" + ] + }, + "statusCode": 200, + "reasonPhrase": "OK" + }, + "times": { + "remainingTimes": 1 + }, + "timeToLive": { + "unlimited": true + }, + "id": "0eecdcc0-59ed-c247-fada-115c62b7063c" + } +] \ No newline at end of file diff --git a/src/test/resources/cassettes/features/v2/Update_App_Favorite_Status_returns_Not_Found_response.freeze b/src/test/resources/cassettes/features/v2/Update_App_Favorite_Status_returns_Not_Found_response.freeze new file mode 100644 index 00000000000..ff1ec95de16 --- /dev/null +++ b/src/test/resources/cassettes/features/v2/Update_App_Favorite_Status_returns_Not_Found_response.freeze @@ -0,0 +1 @@ +2026-05-18T19:52:01.652Z \ No newline at end of file diff --git a/src/test/resources/cassettes/features/v2/Update_App_Favorite_Status_returns_Not_Found_response.json b/src/test/resources/cassettes/features/v2/Update_App_Favorite_Status_returns_Not_Found_response.json new file mode 100644 index 00000000000..43749520808 --- /dev/null +++ b/src/test/resources/cassettes/features/v2/Update_App_Favorite_Status_returns_Not_Found_response.json @@ -0,0 +1,32 @@ +[ + { + "httpRequest": { + "body": { + "type": "JSON", + "json": "{\"data\":{\"attributes\":{\"favorite\":true},\"type\":\"favorites\"}}" + }, + "headers": {}, + "method": "PATCH", + "path": "/api/v2/app-builder/apps/7addb29b-f935-472c-ae79-d1963979a23e/favorite", + "keepAlive": false, + "secure": true + }, + "httpResponse": { + "body": "{\"errors\":[{\"status\":\"404\",\"id\":\"3711d641-f1a9-4a08-b8a2-f02b0c6d3cac\",\"title\":\"app not found\",\"detail\":\"app with id 7addb29b-f935-472c-ae79-d1963979a23e not found\"}]}", + "headers": { + "Content-Type": [ + "application/vnd.api+json" + ] + }, + "statusCode": 404, + "reasonPhrase": "Not Found" + }, + "times": { + "remainingTimes": 1 + }, + "timeToLive": { + "unlimited": true + }, + "id": "7ea0a1e8-2ccc-fc0c-386d-7e690ed22317" + } +] \ No newline at end of file diff --git a/src/test/resources/cassettes/features/v2/Update_App_Protection_Level_returns_Not_Found_response.freeze b/src/test/resources/cassettes/features/v2/Update_App_Protection_Level_returns_Not_Found_response.freeze new file mode 100644 index 00000000000..be4a0d65e2d --- /dev/null +++ b/src/test/resources/cassettes/features/v2/Update_App_Protection_Level_returns_Not_Found_response.freeze @@ -0,0 +1 @@ +2026-05-18T19:52:01.865Z \ No newline at end of file diff --git a/src/test/resources/cassettes/features/v2/Update_App_Protection_Level_returns_Not_Found_response.json b/src/test/resources/cassettes/features/v2/Update_App_Protection_Level_returns_Not_Found_response.json new file mode 100644 index 00000000000..93d4430c198 --- /dev/null +++ b/src/test/resources/cassettes/features/v2/Update_App_Protection_Level_returns_Not_Found_response.json @@ -0,0 +1,32 @@ +[ + { + "httpRequest": { + "body": { + "type": "JSON", + "json": "{\"data\":{\"attributes\":{\"protectionLevel\":\"approval_required\"},\"type\":\"protectionLevel\"}}" + }, + "headers": {}, + "method": "PATCH", + "path": "/api/v2/app-builder/apps/7addb29b-f935-472c-ae79-d1963979a23e/protection-level", + "keepAlive": false, + "secure": true + }, + "httpResponse": { + "body": "{\"errors\":[{\"status\":\"404\",\"id\":\"ac8e4f99-d059-43c6-b48a-2feb634c46b9\",\"title\":\"app not found\",\"detail\":\"app with id 7addb29b-f935-472c-ae79-d1963979a23e not found\"}]}", + "headers": { + "Content-Type": [ + "application/vnd.api+json" + ] + }, + "statusCode": 404, + "reasonPhrase": "Not Found" + }, + "times": { + "remainingTimes": 1 + }, + "timeToLive": { + "unlimited": true + }, + "id": "8cbbe5e7-5725-3df1-11d3-5e4112947f1c" + } +] \ No newline at end of file diff --git a/src/test/resources/cassettes/features/v2/Update_App_Protection_Level_returns_OK_response.freeze b/src/test/resources/cassettes/features/v2/Update_App_Protection_Level_returns_OK_response.freeze new file mode 100644 index 00000000000..181d84d9c6e --- /dev/null +++ b/src/test/resources/cassettes/features/v2/Update_App_Protection_Level_returns_OK_response.freeze @@ -0,0 +1 @@ +2026-05-18T19:52:02.394Z \ No newline at end of file diff --git a/src/test/resources/cassettes/features/v2/Update_App_Protection_Level_returns_OK_response.json b/src/test/resources/cassettes/features/v2/Update_App_Protection_Level_returns_OK_response.json new file mode 100644 index 00000000000..b097c819bce --- /dev/null +++ b/src/test/resources/cassettes/features/v2/Update_App_Protection_Level_returns_OK_response.json @@ -0,0 +1,88 @@ +[ + { + "httpRequest": { + "body": { + "type": "JSON", + "json": "{\"data\":{\"attributes\":{\"components\":[{\"events\":[],\"name\":\"grid0\",\"properties\":{\"backgroundColor\":\"default\",\"children\":[{\"events\":[],\"name\":\"gridCell0\",\"properties\":{\"children\":[{\"events\":[],\"name\":\"text0\",\"properties\":{\"content\":\"# Cat Facts\",\"contentType\":\"markdown\",\"isVisible\":true,\"textAlign\":\"left\",\"verticalAlign\":\"top\"},\"type\":\"text\"}],\"isVisible\":\"true\",\"layout\":{\"default\":{\"height\":5,\"width\":4,\"x\":0,\"y\":0}}},\"type\":\"gridCell\"},{\"events\":[],\"name\":\"gridCell2\",\"properties\":{\"children\":[{\"events\":[],\"name\":\"table0\",\"properties\":{\"columns\":[{\"dataPath\":\"fact\",\"header\":\"fact\",\"id\":\"0ae2ae9e-0280-4389-83c6-1c5949f7e674\",\"isHidden\":false},{\"dataPath\":\"length\",\"header\":\"length\",\"id\":\"c9048611-0196-4a00-9366-1ef9e3ec0408\",\"isHidden\":true},{\"dataPath\":\"Due Date\",\"disableSortBy\":false,\"formatter\":{\"format\":\"LARGE_WITHOUT_TIME\",\"type\":\"formatted_time\"},\"header\":\"Unused Old Column\",\"id\":\"8fa9284b-7a58-4f13-9959-57b7d8a7fe8f\",\"isDeleted\":true}],\"data\":\"${fetchFacts?.outputs?.body?.data}\",\"globalFilter\":false,\"isLoading\":\"${fetchFacts?.isLoading}\",\"isScrollable\":\"vertical\",\"isSubRowsEnabled\":false,\"isVisible\":true,\"isWrappable\":false,\"pageSize\":\"${pageSize?.value}\",\"paginationType\":\"server_side\",\"rowButtons\":[],\"summary\":true,\"totalCount\":\"${fetchFacts?.outputs?.body?.total}\"},\"type\":\"table\"}],\"isVisible\":\"true\",\"layout\":{\"default\":{\"height\":96,\"width\":12,\"x\":0,\"y\":5}}},\"type\":\"gridCell\"},{\"events\":[],\"name\":\"gridCell1\",\"properties\":{\"children\":[{\"events\":[],\"name\":\"text1\",\"properties\":{\"content\":\"## Random Fact\\n\\n${randomFact?.outputs?.fact}\",\"contentType\":\"markdown\",\"isVisible\":true,\"textAlign\":\"left\",\"verticalAlign\":\"top\"},\"type\":\"text\"}],\"isVisible\":\"true\",\"layout\":{\"default\":{\"height\":16,\"width\":12,\"x\":0,\"y\":101}}},\"type\":\"gridCell\"},{\"events\":[],\"name\":\"gridCell3\",\"properties\":{\"children\":[{\"events\":[{\"name\":\"click\",\"type\":\"setStateVariableValue\",\"value\":\"${pageSize?.value + 1}\",\"variableName\":\"pageSize\"}],\"name\":\"button0\",\"properties\":{\"iconLeft\":\"angleUp\",\"iconRight\":\"\",\"isBorderless\":false,\"isDisabled\":false,\"isLoading\":false,\"isPrimary\":true,\"isVisible\":true,\"label\":\"Increase Page Size\",\"level\":\"default\"},\"type\":\"button\"}],\"isVisible\":\"true\",\"layout\":{\"default\":{\"height\":4,\"width\":2,\"x\":10,\"y\":134}}},\"type\":\"gridCell\"},{\"events\":[],\"name\":\"gridCell4\",\"properties\":{\"children\":[{\"events\":[{\"name\":\"click\",\"type\":\"setStateVariableValue\",\"value\":\"${pageSize?.value - 1}\",\"variableName\":\"pageSize\"}],\"name\":\"button1\",\"properties\":{\"iconLeft\":\"angleDown\",\"iconRight\":\"\",\"isBorderless\":false,\"isDisabled\":false,\"isLoading\":false,\"isPrimary\":true,\"isVisible\":true,\"label\":\"Decrease Page Size\",\"level\":\"default\"},\"type\":\"button\"}],\"isVisible\":\"true\",\"layout\":{\"default\":{\"height\":4,\"width\":2,\"x\":10,\"y\":138}}},\"type\":\"gridCell\"}]},\"type\":\"grid\"}],\"description\":\"This is a slightly complicated example app that fetches and displays cat facts\",\"name\":\"Example Cat Facts Viewer\",\"queries\":[{\"events\":[],\"id\":\"92ff0bb8-553b-4f31-87c7-ef5bd16d47d5\",\"name\":\"fetchFacts\",\"properties\":{\"spec\":{\"connectionId\":\"5e63f4a8-4ce6-47de-ba11-f6617c1d54f3\",\"fqn\":\"com.datadoghq.http.request\",\"inputs\":{\"url\":\"https://catfact.ninja/facts\",\"urlParams\":[{\"key\":\"limit\",\"value\":\"${pageSize.value.toString()}\"},{\"key\":\"page\",\"value\":\"${(table0.pageIndex + 1).toString()}\"}],\"verb\":\"GET\"}}},\"type\":\"action\"},{\"id\":\"afd03c81-4075-4432-8618-ba09d52d2f2d\",\"name\":\"pageSize\",\"properties\":{\"defaultValue\":\"${20}\"},\"type\":\"stateVariable\"},{\"id\":\"0fb22859-47dc-4137-9e41-7b67d04c525c\",\"name\":\"randomFact\",\"properties\":{\"outputs\":\"${(() => {const facts = fetchFacts.outputs.body.data\\nreturn facts[Math.floor(Math.random()*facts.length)]\\n})()}\"},\"type\":\"dataTransform\"}],\"rootInstanceName\":\"grid0\"},\"type\":\"appDefinitions\"}}" + }, + "headers": {}, + "method": "POST", + "path": "/api/v2/app-builder/apps", + "keepAlive": false, + "secure": true + }, + "httpResponse": { + "body": "{\"data\":{\"id\":\"7233c313-f027-46ba-b269-fbca3f75cbad\",\"type\":\"appDefinitions\"}}", + "headers": { + "Content-Type": [ + "application/vnd.api+json" + ] + }, + "statusCode": 201, + "reasonPhrase": "Created" + }, + "times": { + "remainingTimes": 1 + }, + "timeToLive": { + "unlimited": true + }, + "id": "c782b1f3-1b03-d50f-8fcd-12e51226c516" + }, + { + "httpRequest": { + "body": { + "type": "JSON", + "json": "{\"data\":{\"attributes\":{\"protectionLevel\":\"approval_required\"},\"type\":\"protectionLevel\"}}" + }, + "headers": {}, + "method": "PATCH", + "path": "/api/v2/app-builder/apps/7233c313-f027-46ba-b269-fbca3f75cbad/protection-level", + "keepAlive": false, + "secure": true + }, + "httpResponse": { + "body": "{\"data\":{\"id\":\"7233c313-f027-46ba-b269-fbca3f75cbad\",\"type\":\"appDefinitions\",\"attributes\":{\"components\":[{\"events\":[],\"name\":\"grid0\",\"properties\":{\"backgroundColor\":\"default\",\"children\":[{\"events\":[],\"name\":\"gridCell0\",\"properties\":{\"children\":[{\"events\":[],\"name\":\"text0\",\"properties\":{\"content\":\"# Cat Facts\",\"contentType\":\"markdown\",\"isVisible\":true,\"textAlign\":\"left\",\"verticalAlign\":\"top\"},\"type\":\"text\"}],\"isVisible\":\"true\",\"layout\":{\"default\":{\"height\":5,\"width\":4,\"x\":0,\"y\":0}}},\"type\":\"gridCell\"},{\"events\":[],\"name\":\"gridCell2\",\"properties\":{\"children\":[{\"events\":[],\"name\":\"table0\",\"properties\":{\"columns\":[{\"dataPath\":\"fact\",\"header\":\"fact\",\"id\":\"0ae2ae9e-0280-4389-83c6-1c5949f7e674\",\"isHidden\":false},{\"dataPath\":\"length\",\"header\":\"length\",\"id\":\"c9048611-0196-4a00-9366-1ef9e3ec0408\",\"isHidden\":true},{\"dataPath\":\"Due Date\",\"disableSortBy\":false,\"formatter\":{\"format\":\"LARGE_WITHOUT_TIME\",\"type\":\"formatted_time\"},\"header\":\"Unused Old Column\",\"id\":\"8fa9284b-7a58-4f13-9959-57b7d8a7fe8f\",\"isDeleted\":true}],\"data\":\"${fetchFacts?.outputs?.body?.data}\",\"globalFilter\":false,\"isLoading\":\"${fetchFacts?.isLoading}\",\"isScrollable\":\"vertical\",\"isSubRowsEnabled\":false,\"isVisible\":true,\"isWrappable\":false,\"pageSize\":\"${pageSize?.value}\",\"paginationType\":\"server_side\",\"rowButtons\":[],\"summary\":true,\"totalCount\":\"${fetchFacts?.outputs?.body?.total}\"},\"type\":\"table\"}],\"isVisible\":\"true\",\"layout\":{\"default\":{\"height\":96,\"width\":12,\"x\":0,\"y\":5}}},\"type\":\"gridCell\"},{\"events\":[],\"name\":\"gridCell1\",\"properties\":{\"children\":[{\"events\":[],\"name\":\"text1\",\"properties\":{\"content\":\"## Random Fact\\n\\n${randomFact?.outputs?.fact}\",\"contentType\":\"markdown\",\"isVisible\":true,\"textAlign\":\"left\",\"verticalAlign\":\"top\"},\"type\":\"text\"}],\"isVisible\":\"true\",\"layout\":{\"default\":{\"height\":16,\"width\":12,\"x\":0,\"y\":101}}},\"type\":\"gridCell\"},{\"events\":[],\"name\":\"gridCell3\",\"properties\":{\"children\":[{\"events\":[{\"name\":\"click\",\"type\":\"setStateVariableValue\",\"value\":\"${pageSize?.value + 1}\",\"variableName\":\"pageSize\"}],\"name\":\"button0\",\"properties\":{\"iconLeft\":\"angleUp\",\"iconRight\":\"\",\"isBorderless\":false,\"isDisabled\":false,\"isLoading\":false,\"isPrimary\":true,\"isVisible\":true,\"label\":\"Increase Page Size\",\"level\":\"default\"},\"type\":\"button\"}],\"isVisible\":\"true\",\"layout\":{\"default\":{\"height\":4,\"width\":2,\"x\":10,\"y\":134}}},\"type\":\"gridCell\"},{\"events\":[],\"name\":\"gridCell4\",\"properties\":{\"children\":[{\"events\":[{\"name\":\"click\",\"type\":\"setStateVariableValue\",\"value\":\"${pageSize?.value - 1}\",\"variableName\":\"pageSize\"}],\"name\":\"button1\",\"properties\":{\"iconLeft\":\"angleDown\",\"iconRight\":\"\",\"isBorderless\":false,\"isDisabled\":false,\"isLoading\":false,\"isPrimary\":true,\"isVisible\":true,\"label\":\"Decrease Page Size\",\"level\":\"default\"},\"type\":\"button\"}],\"isVisible\":\"true\",\"layout\":{\"default\":{\"height\":4,\"width\":2,\"x\":10,\"y\":138}}},\"type\":\"gridCell\"}]},\"type\":\"grid\"}],\"description\":\"This is a slightly complicated example app that fetches and displays cat facts\",\"favorite\":false,\"name\":\"Example Cat Facts Viewer\",\"protectionLevel\":\"approval_required\",\"queries\":[{\"id\":\"92ff0bb8-553b-4f31-87c7-ef5bd16d47d5\",\"name\":\"fetchFacts\",\"type\":\"action\",\"properties\":{\"spec\":{\"connectionId\":\"5e63f4a8-4ce6-47de-ba11-f6617c1d54f3\",\"fqn\":\"com.datadoghq.http.request\",\"inputs\":{\"url\":\"https://catfact.ninja/facts\",\"urlParams\":[{\"key\":\"limit\",\"value\":\"${pageSize.value.toString()}\"},{\"key\":\"page\",\"value\":\"${(table0.pageIndex + 1).toString()}\"}],\"verb\":\"GET\"}}}},{\"id\":\"afd03c81-4075-4432-8618-ba09d52d2f2d\",\"name\":\"pageSize\",\"type\":\"stateVariable\",\"properties\":{\"defaultValue\":\"${20}\"}},{\"id\":\"0fb22859-47dc-4137-9e41-7b67d04c525c\",\"name\":\"randomFact\",\"type\":\"dataTransform\",\"properties\":{\"outputs\":\"${(() =\\u003e {const facts = fetchFacts.outputs.body.data\\nreturn facts[Math.floor(Math.random()*facts.length)]\\n})()}\"}}],\"rootInstanceName\":\"grid0\",\"selfService\":false,\"tags\":[]},\"meta\":{\"org_id\":321813,\"user_id\":1445416,\"user_uuid\":\"3ad549bf-eba0-11e9-a77a-0705486660d0\",\"user_name\":\"frog@datadoghq.com\",\"version\":1,\"version_id\":\"42a9e44d-6fd7-4dd6-8a72-17e570b9e46f\",\"updated_since_deployment\":false,\"created_at\":\"2026-05-18T19:52:02.806411Z\",\"updated_at\":\"2026-05-18T19:52:02.806411Z\",\"deleted_at\":\"0001-01-01T00:00:00Z\",\"run_as_user\":\"3ad549bf-eba0-11e9-a77a-0705486660d0\"}}}", + "headers": { + "Content-Type": [ + "application/vnd.api+json" + ] + }, + "statusCode": 200, + "reasonPhrase": "OK" + }, + "times": { + "remainingTimes": 1 + }, + "timeToLive": { + "unlimited": true + }, + "id": "fee7096c-7cb5-0256-bff6-89100bdabca2" + }, + { + "httpRequest": { + "headers": {}, + "method": "DELETE", + "path": "/api/v2/app-builder/apps/7233c313-f027-46ba-b269-fbca3f75cbad", + "keepAlive": false, + "secure": true + }, + "httpResponse": { + "body": "{\"data\":{\"id\":\"7233c313-f027-46ba-b269-fbca3f75cbad\",\"type\":\"appDefinitions\"}}", + "headers": { + "Content-Type": [ + "application/vnd.api+json" + ] + }, + "statusCode": 200, + "reasonPhrase": "OK" + }, + "times": { + "remainingTimes": 1 + }, + "timeToLive": { + "unlimited": true + }, + "id": "d9673386-2ed4-3f9b-5c6a-8913830bc702" + } +] \ No newline at end of file diff --git a/src/test/resources/cassettes/features/v2/Update_App_Self_Service_Status_returns_No_Content_response.freeze b/src/test/resources/cassettes/features/v2/Update_App_Self_Service_Status_returns_No_Content_response.freeze new file mode 100644 index 00000000000..30060a318bf --- /dev/null +++ b/src/test/resources/cassettes/features/v2/Update_App_Self_Service_Status_returns_No_Content_response.freeze @@ -0,0 +1 @@ +2026-05-18T19:52:04.154Z \ No newline at end of file diff --git a/src/test/resources/cassettes/features/v2/Update_App_Self_Service_Status_returns_No_Content_response.json b/src/test/resources/cassettes/features/v2/Update_App_Self_Service_Status_returns_No_Content_response.json new file mode 100644 index 00000000000..65d3667dc0a --- /dev/null +++ b/src/test/resources/cassettes/features/v2/Update_App_Self_Service_Status_returns_No_Content_response.json @@ -0,0 +1,83 @@ +[ + { + "httpRequest": { + "body": { + "type": "JSON", + "json": "{\"data\":{\"attributes\":{\"components\":[{\"events\":[],\"name\":\"grid0\",\"properties\":{\"backgroundColor\":\"default\",\"children\":[{\"events\":[],\"name\":\"gridCell0\",\"properties\":{\"children\":[{\"events\":[],\"name\":\"text0\",\"properties\":{\"content\":\"# Cat Facts\",\"contentType\":\"markdown\",\"isVisible\":true,\"textAlign\":\"left\",\"verticalAlign\":\"top\"},\"type\":\"text\"}],\"isVisible\":\"true\",\"layout\":{\"default\":{\"height\":5,\"width\":4,\"x\":0,\"y\":0}}},\"type\":\"gridCell\"},{\"events\":[],\"name\":\"gridCell2\",\"properties\":{\"children\":[{\"events\":[],\"name\":\"table0\",\"properties\":{\"columns\":[{\"dataPath\":\"fact\",\"header\":\"fact\",\"id\":\"0ae2ae9e-0280-4389-83c6-1c5949f7e674\",\"isHidden\":false},{\"dataPath\":\"length\",\"header\":\"length\",\"id\":\"c9048611-0196-4a00-9366-1ef9e3ec0408\",\"isHidden\":true},{\"dataPath\":\"Due Date\",\"disableSortBy\":false,\"formatter\":{\"format\":\"LARGE_WITHOUT_TIME\",\"type\":\"formatted_time\"},\"header\":\"Unused Old Column\",\"id\":\"8fa9284b-7a58-4f13-9959-57b7d8a7fe8f\",\"isDeleted\":true}],\"data\":\"${fetchFacts?.outputs?.body?.data}\",\"globalFilter\":false,\"isLoading\":\"${fetchFacts?.isLoading}\",\"isScrollable\":\"vertical\",\"isSubRowsEnabled\":false,\"isVisible\":true,\"isWrappable\":false,\"pageSize\":\"${pageSize?.value}\",\"paginationType\":\"server_side\",\"rowButtons\":[],\"summary\":true,\"totalCount\":\"${fetchFacts?.outputs?.body?.total}\"},\"type\":\"table\"}],\"isVisible\":\"true\",\"layout\":{\"default\":{\"height\":96,\"width\":12,\"x\":0,\"y\":5}}},\"type\":\"gridCell\"},{\"events\":[],\"name\":\"gridCell1\",\"properties\":{\"children\":[{\"events\":[],\"name\":\"text1\",\"properties\":{\"content\":\"## Random Fact\\n\\n${randomFact?.outputs?.fact}\",\"contentType\":\"markdown\",\"isVisible\":true,\"textAlign\":\"left\",\"verticalAlign\":\"top\"},\"type\":\"text\"}],\"isVisible\":\"true\",\"layout\":{\"default\":{\"height\":16,\"width\":12,\"x\":0,\"y\":101}}},\"type\":\"gridCell\"},{\"events\":[],\"name\":\"gridCell3\",\"properties\":{\"children\":[{\"events\":[{\"name\":\"click\",\"type\":\"setStateVariableValue\",\"value\":\"${pageSize?.value + 1}\",\"variableName\":\"pageSize\"}],\"name\":\"button0\",\"properties\":{\"iconLeft\":\"angleUp\",\"iconRight\":\"\",\"isBorderless\":false,\"isDisabled\":false,\"isLoading\":false,\"isPrimary\":true,\"isVisible\":true,\"label\":\"Increase Page Size\",\"level\":\"default\"},\"type\":\"button\"}],\"isVisible\":\"true\",\"layout\":{\"default\":{\"height\":4,\"width\":2,\"x\":10,\"y\":134}}},\"type\":\"gridCell\"},{\"events\":[],\"name\":\"gridCell4\",\"properties\":{\"children\":[{\"events\":[{\"name\":\"click\",\"type\":\"setStateVariableValue\",\"value\":\"${pageSize?.value - 1}\",\"variableName\":\"pageSize\"}],\"name\":\"button1\",\"properties\":{\"iconLeft\":\"angleDown\",\"iconRight\":\"\",\"isBorderless\":false,\"isDisabled\":false,\"isLoading\":false,\"isPrimary\":true,\"isVisible\":true,\"label\":\"Decrease Page Size\",\"level\":\"default\"},\"type\":\"button\"}],\"isVisible\":\"true\",\"layout\":{\"default\":{\"height\":4,\"width\":2,\"x\":10,\"y\":138}}},\"type\":\"gridCell\"}]},\"type\":\"grid\"}],\"description\":\"This is a slightly complicated example app that fetches and displays cat facts\",\"name\":\"Example Cat Facts Viewer\",\"queries\":[{\"events\":[],\"id\":\"92ff0bb8-553b-4f31-87c7-ef5bd16d47d5\",\"name\":\"fetchFacts\",\"properties\":{\"spec\":{\"connectionId\":\"5e63f4a8-4ce6-47de-ba11-f6617c1d54f3\",\"fqn\":\"com.datadoghq.http.request\",\"inputs\":{\"url\":\"https://catfact.ninja/facts\",\"urlParams\":[{\"key\":\"limit\",\"value\":\"${pageSize.value.toString()}\"},{\"key\":\"page\",\"value\":\"${(table0.pageIndex + 1).toString()}\"}],\"verb\":\"GET\"}}},\"type\":\"action\"},{\"id\":\"afd03c81-4075-4432-8618-ba09d52d2f2d\",\"name\":\"pageSize\",\"properties\":{\"defaultValue\":\"${20}\"},\"type\":\"stateVariable\"},{\"id\":\"0fb22859-47dc-4137-9e41-7b67d04c525c\",\"name\":\"randomFact\",\"properties\":{\"outputs\":\"${(() => {const facts = fetchFacts.outputs.body.data\\nreturn facts[Math.floor(Math.random()*facts.length)]\\n})()}\"},\"type\":\"dataTransform\"}],\"rootInstanceName\":\"grid0\"},\"type\":\"appDefinitions\"}}" + }, + "headers": {}, + "method": "POST", + "path": "/api/v2/app-builder/apps", + "keepAlive": false, + "secure": true + }, + "httpResponse": { + "body": "{\"data\":{\"id\":\"f18f2a0e-bf9a-4b7a-b43d-31ca68aaf5f1\",\"type\":\"appDefinitions\"}}", + "headers": { + "Content-Type": [ + "application/vnd.api+json" + ] + }, + "statusCode": 201, + "reasonPhrase": "Created" + }, + "times": { + "remainingTimes": 1 + }, + "timeToLive": { + "unlimited": true + }, + "id": "c782b1f3-1b03-d50f-8fcd-12e51226c515" + }, + { + "httpRequest": { + "body": { + "type": "JSON", + "json": "{\"data\":{\"attributes\":{\"selfService\":true},\"type\":\"selfService\"}}" + }, + "headers": {}, + "method": "PATCH", + "path": "/api/v2/app-builder/apps/f18f2a0e-bf9a-4b7a-b43d-31ca68aaf5f1/self-service", + "keepAlive": false, + "secure": true + }, + "httpResponse": { + "headers": {}, + "statusCode": 204, + "reasonPhrase": "No Content" + }, + "times": { + "remainingTimes": 1 + }, + "timeToLive": { + "unlimited": true + }, + "id": "d83e59b4-fd0a-86df-7e69-adb006e3a428" + }, + { + "httpRequest": { + "headers": {}, + "method": "DELETE", + "path": "/api/v2/app-builder/apps/f18f2a0e-bf9a-4b7a-b43d-31ca68aaf5f1", + "keepAlive": false, + "secure": true + }, + "httpResponse": { + "body": "{\"data\":{\"id\":\"f18f2a0e-bf9a-4b7a-b43d-31ca68aaf5f1\",\"type\":\"appDefinitions\"}}", + "headers": { + "Content-Type": [ + "application/vnd.api+json" + ] + }, + "statusCode": 200, + "reasonPhrase": "OK" + }, + "times": { + "remainingTimes": 1 + }, + "timeToLive": { + "unlimited": true + }, + "id": "1ccd794b-6262-8bbb-bd3a-38a38bd6b0c1" + } +] \ No newline at end of file diff --git a/src/test/resources/cassettes/features/v2/Update_App_Self_Service_Status_returns_Not_Found_response.freeze b/src/test/resources/cassettes/features/v2/Update_App_Self_Service_Status_returns_Not_Found_response.freeze new file mode 100644 index 00000000000..e8d61c77153 --- /dev/null +++ b/src/test/resources/cassettes/features/v2/Update_App_Self_Service_Status_returns_Not_Found_response.freeze @@ -0,0 +1 @@ +2026-05-18T19:52:06.076Z \ No newline at end of file diff --git a/src/test/resources/cassettes/features/v2/Update_App_Self_Service_Status_returns_Not_Found_response.json b/src/test/resources/cassettes/features/v2/Update_App_Self_Service_Status_returns_Not_Found_response.json new file mode 100644 index 00000000000..18bfe7ab190 --- /dev/null +++ b/src/test/resources/cassettes/features/v2/Update_App_Self_Service_Status_returns_Not_Found_response.json @@ -0,0 +1,32 @@ +[ + { + "httpRequest": { + "body": { + "type": "JSON", + "json": "{\"data\":{\"attributes\":{\"selfService\":true},\"type\":\"selfService\"}}" + }, + "headers": {}, + "method": "PATCH", + "path": "/api/v2/app-builder/apps/7addb29b-f935-472c-ae79-d1963979a23e/self-service", + "keepAlive": false, + "secure": true + }, + "httpResponse": { + "body": "{\"errors\":[{\"status\":\"404\",\"id\":\"623c417b-ba6a-4952-8d3c-1d90edaf3166\",\"title\":\"app not found\",\"detail\":\"app with id 7addb29b-f935-472c-ae79-d1963979a23e not found\"}]}", + "headers": { + "Content-Type": [ + "application/vnd.api+json" + ] + }, + "statusCode": 404, + "reasonPhrase": "Not Found" + }, + "times": { + "remainingTimes": 1 + }, + "timeToLive": { + "unlimited": true + }, + "id": "94ed722b-570c-f21e-59c1-8843c646b8b7" + } +] \ No newline at end of file diff --git a/src/test/resources/cassettes/features/v2/Update_App_Tags_returns_No_Content_response.freeze b/src/test/resources/cassettes/features/v2/Update_App_Tags_returns_No_Content_response.freeze new file mode 100644 index 00000000000..94bb561b71f --- /dev/null +++ b/src/test/resources/cassettes/features/v2/Update_App_Tags_returns_No_Content_response.freeze @@ -0,0 +1 @@ +2026-05-18T19:52:06.248Z \ No newline at end of file diff --git a/src/test/resources/cassettes/features/v2/Update_App_Tags_returns_No_Content_response.json b/src/test/resources/cassettes/features/v2/Update_App_Tags_returns_No_Content_response.json new file mode 100644 index 00000000000..5f6656d94c1 --- /dev/null +++ b/src/test/resources/cassettes/features/v2/Update_App_Tags_returns_No_Content_response.json @@ -0,0 +1,83 @@ +[ + { + "httpRequest": { + "body": { + "type": "JSON", + "json": "{\"data\":{\"attributes\":{\"components\":[{\"events\":[],\"name\":\"grid0\",\"properties\":{\"backgroundColor\":\"default\",\"children\":[{\"events\":[],\"name\":\"gridCell0\",\"properties\":{\"children\":[{\"events\":[],\"name\":\"text0\",\"properties\":{\"content\":\"# Cat Facts\",\"contentType\":\"markdown\",\"isVisible\":true,\"textAlign\":\"left\",\"verticalAlign\":\"top\"},\"type\":\"text\"}],\"isVisible\":\"true\",\"layout\":{\"default\":{\"height\":5,\"width\":4,\"x\":0,\"y\":0}}},\"type\":\"gridCell\"},{\"events\":[],\"name\":\"gridCell2\",\"properties\":{\"children\":[{\"events\":[],\"name\":\"table0\",\"properties\":{\"columns\":[{\"dataPath\":\"fact\",\"header\":\"fact\",\"id\":\"0ae2ae9e-0280-4389-83c6-1c5949f7e674\",\"isHidden\":false},{\"dataPath\":\"length\",\"header\":\"length\",\"id\":\"c9048611-0196-4a00-9366-1ef9e3ec0408\",\"isHidden\":true},{\"dataPath\":\"Due Date\",\"disableSortBy\":false,\"formatter\":{\"format\":\"LARGE_WITHOUT_TIME\",\"type\":\"formatted_time\"},\"header\":\"Unused Old Column\",\"id\":\"8fa9284b-7a58-4f13-9959-57b7d8a7fe8f\",\"isDeleted\":true}],\"data\":\"${fetchFacts?.outputs?.body?.data}\",\"globalFilter\":false,\"isLoading\":\"${fetchFacts?.isLoading}\",\"isScrollable\":\"vertical\",\"isSubRowsEnabled\":false,\"isVisible\":true,\"isWrappable\":false,\"pageSize\":\"${pageSize?.value}\",\"paginationType\":\"server_side\",\"rowButtons\":[],\"summary\":true,\"totalCount\":\"${fetchFacts?.outputs?.body?.total}\"},\"type\":\"table\"}],\"isVisible\":\"true\",\"layout\":{\"default\":{\"height\":96,\"width\":12,\"x\":0,\"y\":5}}},\"type\":\"gridCell\"},{\"events\":[],\"name\":\"gridCell1\",\"properties\":{\"children\":[{\"events\":[],\"name\":\"text1\",\"properties\":{\"content\":\"## Random Fact\\n\\n${randomFact?.outputs?.fact}\",\"contentType\":\"markdown\",\"isVisible\":true,\"textAlign\":\"left\",\"verticalAlign\":\"top\"},\"type\":\"text\"}],\"isVisible\":\"true\",\"layout\":{\"default\":{\"height\":16,\"width\":12,\"x\":0,\"y\":101}}},\"type\":\"gridCell\"},{\"events\":[],\"name\":\"gridCell3\",\"properties\":{\"children\":[{\"events\":[{\"name\":\"click\",\"type\":\"setStateVariableValue\",\"value\":\"${pageSize?.value + 1}\",\"variableName\":\"pageSize\"}],\"name\":\"button0\",\"properties\":{\"iconLeft\":\"angleUp\",\"iconRight\":\"\",\"isBorderless\":false,\"isDisabled\":false,\"isLoading\":false,\"isPrimary\":true,\"isVisible\":true,\"label\":\"Increase Page Size\",\"level\":\"default\"},\"type\":\"button\"}],\"isVisible\":\"true\",\"layout\":{\"default\":{\"height\":4,\"width\":2,\"x\":10,\"y\":134}}},\"type\":\"gridCell\"},{\"events\":[],\"name\":\"gridCell4\",\"properties\":{\"children\":[{\"events\":[{\"name\":\"click\",\"type\":\"setStateVariableValue\",\"value\":\"${pageSize?.value - 1}\",\"variableName\":\"pageSize\"}],\"name\":\"button1\",\"properties\":{\"iconLeft\":\"angleDown\",\"iconRight\":\"\",\"isBorderless\":false,\"isDisabled\":false,\"isLoading\":false,\"isPrimary\":true,\"isVisible\":true,\"label\":\"Decrease Page Size\",\"level\":\"default\"},\"type\":\"button\"}],\"isVisible\":\"true\",\"layout\":{\"default\":{\"height\":4,\"width\":2,\"x\":10,\"y\":138}}},\"type\":\"gridCell\"}]},\"type\":\"grid\"}],\"description\":\"This is a slightly complicated example app that fetches and displays cat facts\",\"name\":\"Example Cat Facts Viewer\",\"queries\":[{\"events\":[],\"id\":\"92ff0bb8-553b-4f31-87c7-ef5bd16d47d5\",\"name\":\"fetchFacts\",\"properties\":{\"spec\":{\"connectionId\":\"5e63f4a8-4ce6-47de-ba11-f6617c1d54f3\",\"fqn\":\"com.datadoghq.http.request\",\"inputs\":{\"url\":\"https://catfact.ninja/facts\",\"urlParams\":[{\"key\":\"limit\",\"value\":\"${pageSize.value.toString()}\"},{\"key\":\"page\",\"value\":\"${(table0.pageIndex + 1).toString()}\"}],\"verb\":\"GET\"}}},\"type\":\"action\"},{\"id\":\"afd03c81-4075-4432-8618-ba09d52d2f2d\",\"name\":\"pageSize\",\"properties\":{\"defaultValue\":\"${20}\"},\"type\":\"stateVariable\"},{\"id\":\"0fb22859-47dc-4137-9e41-7b67d04c525c\",\"name\":\"randomFact\",\"properties\":{\"outputs\":\"${(() => {const facts = fetchFacts.outputs.body.data\\nreturn facts[Math.floor(Math.random()*facts.length)]\\n})()}\"},\"type\":\"dataTransform\"}],\"rootInstanceName\":\"grid0\"},\"type\":\"appDefinitions\"}}" + }, + "headers": {}, + "method": "POST", + "path": "/api/v2/app-builder/apps", + "keepAlive": false, + "secure": true + }, + "httpResponse": { + "body": "{\"data\":{\"id\":\"57a1c1c9-edfb-47ea-ad74-e90c2e13d0f0\",\"type\":\"appDefinitions\"}}", + "headers": { + "Content-Type": [ + "application/vnd.api+json" + ] + }, + "statusCode": 201, + "reasonPhrase": "Created" + }, + "times": { + "remainingTimes": 1 + }, + "timeToLive": { + "unlimited": true + }, + "id": "c782b1f3-1b03-d50f-8fcd-12e51226c51a" + }, + { + "httpRequest": { + "body": { + "type": "JSON", + "json": "{\"data\":{\"attributes\":{\"tags\":[\"team:platform\",\"service:ops\"]},\"type\":\"tags\"}}" + }, + "headers": {}, + "method": "PATCH", + "path": "/api/v2/app-builder/apps/57a1c1c9-edfb-47ea-ad74-e90c2e13d0f0/tags", + "keepAlive": false, + "secure": true + }, + "httpResponse": { + "headers": {}, + "statusCode": 204, + "reasonPhrase": "No Content" + }, + "times": { + "remainingTimes": 1 + }, + "timeToLive": { + "unlimited": true + }, + "id": "d5a3c6a8-33b2-62c0-bc79-ef3694bfe82e" + }, + { + "httpRequest": { + "headers": {}, + "method": "DELETE", + "path": "/api/v2/app-builder/apps/57a1c1c9-edfb-47ea-ad74-e90c2e13d0f0", + "keepAlive": false, + "secure": true + }, + "httpResponse": { + "body": "{\"data\":{\"id\":\"57a1c1c9-edfb-47ea-ad74-e90c2e13d0f0\",\"type\":\"appDefinitions\"}}", + "headers": { + "Content-Type": [ + "application/vnd.api+json" + ] + }, + "statusCode": 200, + "reasonPhrase": "OK" + }, + "times": { + "remainingTimes": 1 + }, + "timeToLive": { + "unlimited": true + }, + "id": "297d23fd-5f62-88b8-920b-6783a8754af1" + } +] \ No newline at end of file diff --git a/src/test/resources/cassettes/features/v2/Update_App_Tags_returns_Not_Found_response.freeze b/src/test/resources/cassettes/features/v2/Update_App_Tags_returns_Not_Found_response.freeze new file mode 100644 index 00000000000..641ef7d09b7 --- /dev/null +++ b/src/test/resources/cassettes/features/v2/Update_App_Tags_returns_Not_Found_response.freeze @@ -0,0 +1 @@ +2026-05-18T19:52:07.233Z \ No newline at end of file diff --git a/src/test/resources/cassettes/features/v2/Update_App_Tags_returns_Not_Found_response.json b/src/test/resources/cassettes/features/v2/Update_App_Tags_returns_Not_Found_response.json new file mode 100644 index 00000000000..39b4c7aa3d6 --- /dev/null +++ b/src/test/resources/cassettes/features/v2/Update_App_Tags_returns_Not_Found_response.json @@ -0,0 +1,32 @@ +[ + { + "httpRequest": { + "body": { + "type": "JSON", + "json": "{\"data\":{\"attributes\":{\"tags\":[\"team:platform\",\"service:ops\"]},\"type\":\"tags\"}}" + }, + "headers": {}, + "method": "PATCH", + "path": "/api/v2/app-builder/apps/7addb29b-f935-472c-ae79-d1963979a23e/tags", + "keepAlive": false, + "secure": true + }, + "httpResponse": { + "body": "{\"errors\":[{\"status\":\"404\",\"id\":\"26c91c86-51b3-4c5f-98b4-713698730b08\",\"title\":\"app not found\",\"detail\":\"app with id 7addb29b-f935-472c-ae79-d1963979a23e not found\"}]}", + "headers": { + "Content-Type": [ + "application/vnd.api+json" + ] + }, + "statusCode": 404, + "reasonPhrase": "Not Found" + }, + "times": { + "remainingTimes": 1 + }, + "timeToLive": { + "unlimited": true + }, + "id": "bd69d276-9fee-cf89-833e-febc840a285c" + } +] \ No newline at end of file diff --git a/src/test/resources/cassettes/features/v2/Update_App_returns_OK_response.json b/src/test/resources/cassettes/features/v2/Update_App_returns_OK_response.json index 385920ba074..561057ced5c 100644 --- a/src/test/resources/cassettes/features/v2/Update_App_returns_OK_response.json +++ b/src/test/resources/cassettes/features/v2/Update_App_returns_OK_response.json @@ -27,7 +27,7 @@ "timeToLive": { "unlimited": true }, - "id": "c782b1f3-1b03-d50f-8fcd-12e51226c510" + "id": "c782b1f3-1b03-d50f-8fcd-12e51226c513" }, { "httpRequest": { diff --git a/src/test/resources/com/datadog/api/client/v2/api/app_builder.feature b/src/test/resources/com/datadog/api/client/v2/api/app_builder.feature index bbc0caf196f..9f2b3174bc2 100644 --- a/src/test/resources/com/datadog/api/client/v2/api/app_builder.feature +++ b/src/test/resources/com/datadog/api/client/v2/api/app_builder.feature @@ -27,10 +27,10 @@ Feature: App Builder Then the response status is 201 Created And the response "data.type" is equal to "appDefinitions" - @generated @skip @team:DataDog/app-builder-backend + @skip @team:DataDog/app-builder-backend Scenario: Create Publish Request returns "Bad Request" response Given new "CreatePublishRequest" request - And request contains "app_id" parameter from "REPLACE.ME" + And request contains "app_id" parameter with value "bad-app-id" And body with value {"data": {"attributes": {"description": "Adds new dashboard widgets and a few bug fixes.", "title": "Release v1.2 to production"}, "type": "publishRequest"}} When the request is sent Then the response status is 400 Bad Request @@ -43,10 +43,10 @@ Feature: App Builder When the request is sent Then the response status is 201 Created - @generated @skip @team:DataDog/app-builder-backend + @skip-typescript @team:DataDog/app-builder-backend Scenario: Create Publish Request returns "Not Found" response Given new "CreatePublishRequest" request - And request contains "app_id" parameter from "REPLACE.ME" + And request contains "app_id" parameter with value "7addb29b-f935-472c-ae79-d1963979a23e" And body with value {"data": {"attributes": {"description": "Adds new dashboard widgets and a few bug fixes.", "title": "Release v1.2 to production"}, "type": "publishRequest"}} When the request is sent Then the response status is 404 Not Found @@ -139,24 +139,25 @@ Feature: App Builder And the response "data.id" has the same value as "app.data.id" And the response "data.type" is equal to "appDefinitions" - @generated @skip @team:DataDog/app-builder-backend + @skip @team:DataDog/app-builder-backend Scenario: List App Versions returns "Bad Request" response Given new "ListAppVersions" request - And request contains "app_id" parameter from "REPLACE.ME" + And request contains "app_id" parameter with value "bad-app-id" When the request is sent Then the response status is 400 Bad Request - @generated @skip @team:DataDog/app-builder-backend + @skip-typescript @team:DataDog/app-builder-backend Scenario: List App Versions returns "Not Found" response Given new "ListAppVersions" request - And request contains "app_id" parameter from "REPLACE.ME" + And request contains "app_id" parameter with value "7addb29b-f935-472c-ae79-d1963979a23e" When the request is sent Then the response status is 404 Not Found - @generated @skip @team:DataDog/app-builder-backend + @skip-typescript @team:DataDog/app-builder-backend Scenario: List App Versions returns "OK" response Given new "ListAppVersions" request - And request contains "app_id" parameter from "REPLACE.ME" + And there is a valid "app" in the system + And request contains "app_id" parameter from "app.data.id" When the request is sent Then the response status is 200 OK @@ -172,29 +173,30 @@ Feature: App Builder When the request is sent Then the response status is 200 OK - @generated @skip @team:DataDog/app-builder-backend + @skip @team:DataDog/app-builder-backend Scenario: Name App Version returns "Bad Request" response Given new "UpdateAppVersionName" request - And request contains "app_id" parameter from "REPLACE.ME" - And request contains "version" parameter from "REPLACE.ME" + And request contains "app_id" parameter with value "bad-app-id" + And request contains "version" parameter with value "latest" And body with value {"data": {"attributes": {"name": "v1.2.0 - bug fix release"}, "type": "versionNames"}} When the request is sent Then the response status is 400 Bad Request - @generated @skip @team:DataDog/app-builder-backend + @skip-typescript @team:DataDog/app-builder-backend Scenario: Name App Version returns "No Content" response Given new "UpdateAppVersionName" request - And request contains "app_id" parameter from "REPLACE.ME" - And request contains "version" parameter from "REPLACE.ME" + And there is a valid "app" in the system + And request contains "app_id" parameter from "app.data.id" + And request contains "version" parameter with value "latest" And body with value {"data": {"attributes": {"name": "v1.2.0 - bug fix release"}, "type": "versionNames"}} When the request is sent Then the response status is 204 No Content - @generated @skip @team:DataDog/app-builder-backend + @skip-typescript @team:DataDog/app-builder-backend Scenario: Name App Version returns "Not Found" response Given new "UpdateAppVersionName" request - And request contains "app_id" parameter from "REPLACE.ME" - And request contains "version" parameter from "REPLACE.ME" + And request contains "app_id" parameter with value "7addb29b-f935-472c-ae79-d1963979a23e" + And request contains "version" parameter with value "latest" And body with value {"data": {"attributes": {"name": "v1.2.0 - bug fix release"}, "type": "versionNames"}} When the request is sent Then the response status is 404 Not Found @@ -221,19 +223,19 @@ Feature: App Builder When the request is sent Then the response status is 404 Not Found - @generated @skip @team:DataDog/app-builder-backend + @skip @team:DataDog/app-builder-backend Scenario: Revert App returns "Bad Request" response Given new "RevertApp" request - And request contains "app_id" parameter from "REPLACE.ME" - And request contains "version" parameter from "REPLACE.ME" + And request contains "app_id" parameter with value "bad-app-id" + And request contains "version" parameter with value "1" When the request is sent Then the response status is 400 Bad Request - @generated @skip @team:DataDog/app-builder-backend + @skip-typescript @team:DataDog/app-builder-backend Scenario: Revert App returns "Not Found" response Given new "RevertApp" request - And request contains "app_id" parameter from "REPLACE.ME" - And request contains "version" parameter from "REPLACE.ME" + And request contains "app_id" parameter with value "7addb29b-f935-472c-ae79-d1963979a23e" + And request contains "version" parameter with value "1" When the request is sent Then the response status is 404 Not Found @@ -267,98 +269,103 @@ Feature: App Builder When the request is sent Then the response status is 200 OK - @generated @skip @team:DataDog/app-builder-backend + @skip @team:DataDog/app-builder-backend Scenario: Update App Favorite Status returns "Bad Request" response Given new "UpdateAppFavorite" request - And request contains "app_id" parameter from "REPLACE.ME" + And request contains "app_id" parameter with value "bad-app-id" And body with value {"data": {"attributes": {"favorite": true}, "type": "favorites"}} When the request is sent Then the response status is 400 Bad Request - @generated @skip @team:DataDog/app-builder-backend + @skip-typescript @team:DataDog/app-builder-backend Scenario: Update App Favorite Status returns "No Content" response Given new "UpdateAppFavorite" request - And request contains "app_id" parameter from "REPLACE.ME" + And there is a valid "app" in the system + And request contains "app_id" parameter from "app.data.id" And body with value {"data": {"attributes": {"favorite": true}, "type": "favorites"}} When the request is sent Then the response status is 204 No Content - @generated @skip @team:DataDog/app-builder-backend + @skip-typescript @team:DataDog/app-builder-backend Scenario: Update App Favorite Status returns "Not Found" response Given new "UpdateAppFavorite" request - And request contains "app_id" parameter from "REPLACE.ME" + And request contains "app_id" parameter with value "7addb29b-f935-472c-ae79-d1963979a23e" And body with value {"data": {"attributes": {"favorite": true}, "type": "favorites"}} When the request is sent Then the response status is 404 Not Found - @generated @skip @team:DataDog/app-builder-backend + @skip @team:DataDog/app-builder-backend Scenario: Update App Protection Level returns "Bad Request" response Given new "UpdateProtectionLevel" request - And request contains "app_id" parameter from "REPLACE.ME" + And request contains "app_id" parameter with value "bad-app-id" And body with value {"data": {"attributes": {"protectionLevel": "approval_required"}, "type": "protectionLevel"}} When the request is sent Then the response status is 400 Bad Request - @generated @skip @team:DataDog/app-builder-backend + @skip-typescript @team:DataDog/app-builder-backend Scenario: Update App Protection Level returns "Not Found" response Given new "UpdateProtectionLevel" request - And request contains "app_id" parameter from "REPLACE.ME" + And request contains "app_id" parameter with value "7addb29b-f935-472c-ae79-d1963979a23e" And body with value {"data": {"attributes": {"protectionLevel": "approval_required"}, "type": "protectionLevel"}} When the request is sent Then the response status is 404 Not Found - @generated @skip @team:DataDog/app-builder-backend + @skip-typescript @team:DataDog/app-builder-backend Scenario: Update App Protection Level returns "OK" response Given new "UpdateProtectionLevel" request - And request contains "app_id" parameter from "REPLACE.ME" + And there is a valid "app" in the system + And request contains "app_id" parameter from "app.data.id" And body with value {"data": {"attributes": {"protectionLevel": "approval_required"}, "type": "protectionLevel"}} When the request is sent Then the response status is 200 OK + And the response "data.type" is equal to "appDefinitions" - @generated @skip @team:DataDog/app-builder-backend + @skip @team:DataDog/app-builder-backend Scenario: Update App Self-Service Status returns "Bad Request" response Given new "UpdateAppSelfService" request - And request contains "app_id" parameter from "REPLACE.ME" + And request contains "app_id" parameter with value "bad-app-id" And body with value {"data": {"attributes": {"selfService": true}, "type": "selfService"}} When the request is sent Then the response status is 400 Bad Request - @generated @skip @team:DataDog/app-builder-backend + @skip-typescript @team:DataDog/app-builder-backend Scenario: Update App Self-Service Status returns "No Content" response Given new "UpdateAppSelfService" request - And request contains "app_id" parameter from "REPLACE.ME" + And there is a valid "app" in the system + And request contains "app_id" parameter from "app.data.id" And body with value {"data": {"attributes": {"selfService": true}, "type": "selfService"}} When the request is sent Then the response status is 204 No Content - @generated @skip @team:DataDog/app-builder-backend + @skip-typescript @team:DataDog/app-builder-backend Scenario: Update App Self-Service Status returns "Not Found" response Given new "UpdateAppSelfService" request - And request contains "app_id" parameter from "REPLACE.ME" + And request contains "app_id" parameter with value "7addb29b-f935-472c-ae79-d1963979a23e" And body with value {"data": {"attributes": {"selfService": true}, "type": "selfService"}} When the request is sent Then the response status is 404 Not Found - @generated @skip @team:DataDog/app-builder-backend + @skip @team:DataDog/app-builder-backend Scenario: Update App Tags returns "Bad Request" response Given new "UpdateAppTags" request - And request contains "app_id" parameter from "REPLACE.ME" + And request contains "app_id" parameter with value "bad-app-id" And body with value {"data": {"attributes": {"tags": ["team:platform", "service:ops"]}, "type": "tags"}} When the request is sent Then the response status is 400 Bad Request - @generated @skip @team:DataDog/app-builder-backend + @skip-typescript @team:DataDog/app-builder-backend Scenario: Update App Tags returns "No Content" response Given new "UpdateAppTags" request - And request contains "app_id" parameter from "REPLACE.ME" + And there is a valid "app" in the system + And request contains "app_id" parameter from "app.data.id" And body with value {"data": {"attributes": {"tags": ["team:platform", "service:ops"]}, "type": "tags"}} When the request is sent Then the response status is 204 No Content - @generated @skip @team:DataDog/app-builder-backend + @skip-typescript @team:DataDog/app-builder-backend Scenario: Update App Tags returns "Not Found" response Given new "UpdateAppTags" request - And request contains "app_id" parameter from "REPLACE.ME" + And request contains "app_id" parameter with value "7addb29b-f935-472c-ae79-d1963979a23e" And body with value {"data": {"attributes": {"tags": ["team:platform", "service:ops"]}, "type": "tags"}} When the request is sent Then the response status is 404 Not Found