From 1598244f4d939c6d176a43c7e36440d9df1283f3 Mon Sep 17 00:00:00 2001 From: "ci.datadog-api-spec" Date: Wed, 8 Jan 2025 20:54:55 +0000 Subject: [PATCH] Regenerate client from commit 0f2ca34c of spec repo --- .apigentools-info | 8 +- .generator/schemas/v2/openapi.yaml | 130 ++++++++------ ...oy-App-returns-Bad-Request-response.frozen | 1 + ...eploy-App-returns-Bad-Request-response.yml | 2 +- ...Deploy-App-returns-Created-response.frozen | 1 + .../Deploy-App-returns-Created-response.yml | 16 +- ...ploy-App-returns-Not-Found-response.frozen | 1 + .../Deploy-App-returns-Not-Found-response.yml | 2 +- ...le-App-returns-Bad-Request-response.frozen | 1 + ...sable-App-returns-Bad-Request-response.yml | 2 +- ...able-App-returns-Not-Found-response.frozen | 1 + ...Disable-App-returns-Not-Found-response.yml | 2 +- .../Disable-App-returns-OK-response.frozen | 1 + .../Disable-App-returns-OK-response.yml | 16 +- ...te-App-returns-App-Created-response.frozen | 2 +- ...reate-App-returns-App-Created-response.yml | 10 +- ...te-App-returns-Bad-Request-response.frozen | 2 +- ...reate-App-returns-Bad-Request-response.yml | 2 +- ...te-App-returns-Bad-Request-response.frozen | 2 +- ...elete-App-returns-Bad-Request-response.yml | 2 +- ...lete-App-returns-Not-Found-response.frozen | 2 +- .../Delete-App-returns-Not-Found-response.yml | 2 +- .../Delete-App-returns-OK-response.frozen | 2 +- .../apps/Delete-App-returns-OK-response.yml | 14 +- ...e-Apps-returns-Bad-Request-response.frozen | 2 +- ...iple-Apps-returns-Bad-Request-response.yml | 2 +- ...ple-Apps-returns-Not-Found-response.frozen | 2 +- ...ltiple-Apps-returns-Not-Found-response.yml | 2 +- ...e-Multiple-Apps-returns-OK-response.frozen | 2 +- ...lete-Multiple-Apps-returns-OK-response.yml | 14 +- ...oy-App-returns-Bad-Request-response.frozen | 1 - ...Deploy-App-returns-Created-response.frozen | 1 - ...ploy-App-returns-Not-Found-response.frozen | 1 - ...le-App-returns-Bad-Request-response.frozen | 1 - ...able-App-returns-Not-Found-response.frozen | 1 - .../Disable-App-returns-OK-response.frozen | 1 - ...et-App-returns-Bad-Request-response.frozen | 2 +- .../Get-App-returns-Bad-Request-response.yml | 2 +- .../Get-App-returns-Not-Found-response.frozen | 2 +- .../Get-App-returns-Not-Found-response.yml | 2 +- .../apps/Get-App-returns-OK-response.frozen | 2 +- .../v2/apps/Get-App-returns-OK-response.yml | 18 +- .../apps/List-Apps-returns-OK-response.frozen | 2 +- .../v2/apps/List-Apps-returns-OK-response.yml | 7 +- ...te-App-returns-Bad-Request-response.frozen | 2 +- ...pdate-App-returns-Bad-Request-response.yml | 16 +- .../Update-App-returns-OK-response.frozen | 2 +- .../apps/Update-App-returns-OK-response.yml | 20 +-- .../v2/{apps => app-deployment}/DeployApp.rb | 2 +- .../v2/{apps => app-deployment}/DisableApp.rb | 2 +- features/scenarios_model_mapping.rb | 4 +- features/v2/app_deployment.feature | 58 ++++++ features/v2/apps.feature | 59 +----- features/v2/given.json | 2 +- features/v2/undo.json | 4 +- lib/datadog_api_client/configuration.rb | 4 +- lib/datadog_api_client/inflector.rb | 4 + .../v2/api/app_deployment_api.rb | 168 ++++++++++++++++++ lib/datadog_api_client/v2/api/apps_api.rb | 166 ++--------------- .../v2/models/app_builder_error.rb | 107 +++++++++++ .../models/app_builder_error_errors_items.rb | 115 ++++++++++++ .../app_builder_error_errors_items_source.rb | 115 ++++++++++++ lib/datadog_api_client/v2/models/app_meta.rb | 2 +- .../v2/models/deployment_included_meta.rb | 2 +- .../v2/models/deployment_meta.rb | 2 +- .../v2/models/deployment_relationship_meta.rb | 2 +- 66 files changed, 763 insertions(+), 386 deletions(-) create mode 100644 cassettes/features/v2/app_deployment/Deploy-App-returns-Bad-Request-response.frozen rename cassettes/features/v2/{apps => app_deployment}/Deploy-App-returns-Bad-Request-response.yml (91%) create mode 100644 cassettes/features/v2/app_deployment/Deploy-App-returns-Created-response.frozen rename cassettes/features/v2/{apps => app_deployment}/Deploy-App-returns-Created-response.yml (64%) create mode 100644 cassettes/features/v2/app_deployment/Deploy-App-returns-Not-Found-response.frozen rename cassettes/features/v2/{apps => app_deployment}/Deploy-App-returns-Not-Found-response.yml (91%) create mode 100644 cassettes/features/v2/app_deployment/Disable-App-returns-Bad-Request-response.frozen rename cassettes/features/v2/{apps => app_deployment}/Disable-App-returns-Bad-Request-response.yml (91%) create mode 100644 cassettes/features/v2/app_deployment/Disable-App-returns-Not-Found-response.frozen rename cassettes/features/v2/{apps => app_deployment}/Disable-App-returns-Not-Found-response.yml (91%) create mode 100644 cassettes/features/v2/app_deployment/Disable-App-returns-OK-response.frozen rename cassettes/features/v2/{apps => app_deployment}/Disable-App-returns-OK-response.yml (64%) delete mode 100644 cassettes/features/v2/apps/Deploy-App-returns-Bad-Request-response.frozen delete mode 100644 cassettes/features/v2/apps/Deploy-App-returns-Created-response.frozen delete mode 100644 cassettes/features/v2/apps/Deploy-App-returns-Not-Found-response.frozen delete mode 100644 cassettes/features/v2/apps/Disable-App-returns-Bad-Request-response.frozen delete mode 100644 cassettes/features/v2/apps/Disable-App-returns-Not-Found-response.frozen delete mode 100644 cassettes/features/v2/apps/Disable-App-returns-OK-response.frozen rename examples/v2/{apps => app-deployment}/DeployApp.rb (83%) rename examples/v2/{apps => app-deployment}/DisableApp.rb (82%) create mode 100644 features/v2/app_deployment.feature create mode 100644 lib/datadog_api_client/v2/api/app_deployment_api.rb create mode 100644 lib/datadog_api_client/v2/models/app_builder_error.rb create mode 100644 lib/datadog_api_client/v2/models/app_builder_error_errors_items.rb create mode 100644 lib/datadog_api_client/v2/models/app_builder_error_errors_items_source.rb diff --git a/.apigentools-info b/.apigentools-info index 8379398e987e..9a147949460f 100644 --- a/.apigentools-info +++ b/.apigentools-info @@ -4,13 +4,13 @@ "spec_versions": { "v1": { "apigentools_version": "1.6.6", - "regenerated": "2025-01-08 14:02:25.736805", - "spec_repo_commit": "1920836f" + "regenerated": "2025-01-08 20:54:28.350290", + "spec_repo_commit": "0f2ca34c" }, "v2": { "apigentools_version": "1.6.6", - "regenerated": "2025-01-08 14:02:25.752564", - "spec_repo_commit": "1920836f" + "regenerated": "2025-01-08 20:54:28.365056", + "spec_repo_commit": "0f2ca34c" } } } \ No newline at end of file diff --git a/.generator/schemas/v2/openapi.yaml b/.generator/schemas/v2/openapi.yaml index fadab8d3ec6e..49fe7f2a994f 100644 --- a/.generator/schemas/v2/openapi.yaml +++ b/.generator/schemas/v2/openapi.yaml @@ -1634,6 +1634,34 @@ components: type: string x-enum-varnames: - apm_retention_filter + AppBuilderError: + description: The definition of `AppBuilderError` object. + properties: + errors: + description: The `AppBuilderError` `errors`. + items: + $ref: '#/components/schemas/AppBuilderErrorErrorsItems' + type: array + type: object + AppBuilderErrorErrorsItems: + description: The definition of `AppBuilderErrorErrorsItems` object. + properties: + detail: + description: The `items` `detail`. + type: string + source: + $ref: '#/components/schemas/AppBuilderErrorErrorsItemsSource' + type: object + AppBuilderErrorErrorsItemsSource: + description: The definition of `AppBuilderErrorErrorsItemsSource` object. + properties: + parameter: + description: The `source` `parameter`. + type: string + pointer: + description: The `source` `pointer`. + type: string + type: object AppBuilderEvent: additionalProperties: {} description: The definition of `AppBuilderEvent` object. @@ -1720,7 +1748,6 @@ components: type: string user_uuid: description: The `AppMeta` `user_uuid`. - format: uuid type: string version: description: The `AppMeta` `version`. @@ -9138,7 +9165,6 @@ components: type: string user_uuid: description: The `meta` `user_uuid`. - format: uuid type: string type: object DeploymentIncludedType: @@ -9164,7 +9190,6 @@ components: type: string user_uuid: description: The `DeploymentMeta` `user_uuid`. - format: uuid type: string type: object DeploymentRelationship: @@ -9207,7 +9232,6 @@ components: type: string user_uuid: description: The `meta` `user_uuid`. - format: uuid type: string type: object DeploymentType: @@ -31122,19 +31146,19 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/JSONAPIErrorResponse' + $ref: '#/components/schemas/AppBuilderError' description: Bad Request '403': content: application/json: schema: - $ref: '#/components/schemas/JSONAPIErrorResponse' - description: Forbidden + $ref: '#/components/schemas/AppBuilderError' + description: Forbidden, e.g. missing permissions to delete one or more apps '404': content: application/json: schema: - $ref: '#/components/schemas/JSONAPIErrorResponse' + $ref: '#/components/schemas/AppBuilderError' description: Not Found '429': $ref: '#/components/responses/TooManyRequestsResponse' @@ -31151,71 +31175,63 @@ paths: description: List all apps, with optional filters and sorting operationId: ListApps parameters: - - description: The number of apps to return per page. + - description: The number of apps to return per page in: query name: limit required: false schema: format: int64 type: integer - - description: The page number to return. + - description: The page number to return in: query name: page required: false schema: format: int64 type: integer - - description: Filter apps by the app creator. Usually the user's email. + - description: The `AppsFilter` `user_name`. in: query name: filter[user_name] required: false schema: type: string - - description: Filter apps by the app creator's UUID. + - description: The `AppsFilter` `user_uuid`. in: query name: filter[user_uuid] required: false schema: - format: uuid type: string - - description: Filter by app name. + - description: The `AppsFilter` `name`. in: query name: filter[name] required: false schema: type: string - - description: Filter apps by the app name or the app creator. + - description: The `AppsFilter` `query`. in: query name: filter[query] required: false schema: type: string - - description: Filter apps by whether they are published. + - description: The `AppsFilter` `deployed`. in: query name: filter[deployed] required: false schema: type: boolean - - description: Filter apps by tags. + - description: The `AppsFilter` `tags`. in: query name: filter[tags] required: false schema: type: string - - description: Filter apps by whether you have added them to your favorites. + - description: The `AppsFilter` `favorite`. in: query name: filter[favorite] required: false schema: type: boolean - - description: Filter apps by whether they are enabled for self-service. - in: query - name: filter[self_service] - required: false - schema: - type: boolean - - description: The fields and direction to sort apps by. - explode: false + - explode: false in: query name: sort required: false @@ -31235,13 +31251,13 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/JSONAPIErrorResponse' - description: Bad Request + $ref: '#/components/schemas/AppBuilderError' + description: Bad Request, e.g. invalid sort parameter '403': content: application/json: schema: - $ref: '#/components/schemas/JSONAPIErrorResponse' + $ref: '#/components/schemas/AppBuilderError' description: Forbidden '429': $ref: '#/components/responses/TooManyRequestsResponse' @@ -31274,14 +31290,15 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/JSONAPIErrorResponse' + $ref: '#/components/schemas/AppBuilderError' description: Bad Request '403': content: application/json: schema: - $ref: '#/components/schemas/JSONAPIErrorResponse' - description: Forbidden + $ref: '#/components/schemas/AppBuilderError' + description: Forbidden, e.g. missing required permissions to a connection + or workflow used in the app '429': $ref: '#/components/responses/TooManyRequestsResponse' summary: Create App @@ -31316,25 +31333,25 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/JSONAPIErrorResponse' + $ref: '#/components/schemas/AppBuilderError' description: Bad Request '403': content: application/json: schema: - $ref: '#/components/schemas/JSONAPIErrorResponse' + $ref: '#/components/schemas/AppBuilderError' description: Forbidden '404': content: application/json: schema: - $ref: '#/components/schemas/JSONAPIErrorResponse' + $ref: '#/components/schemas/AppBuilderError' description: Not Found '410': content: application/json: schema: - $ref: '#/components/schemas/JSONAPIErrorResponse' + $ref: '#/components/schemas/AppBuilderError' description: Gone '429': $ref: '#/components/responses/TooManyRequestsResponse' @@ -31356,11 +31373,6 @@ paths: required: true schema: type: string - - in: query - name: version - required: false - schema: - type: string responses: '200': content: @@ -31372,19 +31384,19 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/JSONAPIErrorResponse' + $ref: '#/components/schemas/AppBuilderError' description: Bad Request '403': content: application/json: schema: - $ref: '#/components/schemas/JSONAPIErrorResponse' + $ref: '#/components/schemas/AppBuilderError' description: Forbidden '404': content: application/json: schema: - $ref: '#/components/schemas/JSONAPIErrorResponse' + $ref: '#/components/schemas/AppBuilderError' description: Not Found '429': $ref: '#/components/responses/TooManyRequestsResponse' @@ -31424,14 +31436,15 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/JSONAPIErrorResponse' + $ref: '#/components/schemas/AppBuilderError' description: Bad Request '403': content: application/json: schema: - $ref: '#/components/schemas/JSONAPIErrorResponse' - description: Forbidden + $ref: '#/components/schemas/AppBuilderError' + description: Forbidden, e.g. missing required permissions to a connection + or workflow used in the app '429': $ref: '#/components/responses/TooManyRequestsResponse' summary: Update App @@ -31466,25 +31479,25 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/JSONAPIErrorResponse' + $ref: '#/components/schemas/AppBuilderError' description: Bad Request '403': content: application/json: schema: - $ref: '#/components/schemas/JSONAPIErrorResponse' + $ref: '#/components/schemas/AppBuilderError' description: Forbidden '404': content: application/json: schema: - $ref: '#/components/schemas/JSONAPIErrorResponse' + $ref: '#/components/schemas/AppBuilderError' description: Not Found '429': $ref: '#/components/responses/TooManyRequestsResponse' summary: Disable App tags: - - Apps + - App Deployment x-permission: operator: OR permissions: @@ -31511,25 +31524,25 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/JSONAPIErrorResponse' + $ref: '#/components/schemas/AppBuilderError' description: Bad Request '403': content: application/json: schema: - $ref: '#/components/schemas/JSONAPIErrorResponse' + $ref: '#/components/schemas/AppBuilderError' description: Forbidden '404': content: application/json: schema: - $ref: '#/components/schemas/JSONAPIErrorResponse' + $ref: '#/components/schemas/AppBuilderError' description: Not Found '429': $ref: '#/components/responses/TooManyRequestsResponse' summary: Deploy App tags: - - Apps + - App Deployment x-permission: operator: OR permissions: @@ -48205,10 +48218,9 @@ tags: teams to install Agents on every host or where Agents cannot be installed.\nGo to https://www.datadoghq.com/blog/agentless-scanning/ to learn more" name: Agentless Scanning -- description: Datadog App Builder provides a low-code solution to rapidly develop - and integrate secure, customized applications into your monitoring stack that - are built to accelerate remediation at scale. These API endpoints allow you to - create, read, update, delete, and publish apps. +- description: Deploy and disable apps in App Builder. + name: App Deployment +- description: Create, read, update, and delete apps in App Builder. name: Apps - description: Search your Audit Logs events over HTTP. name: Audit diff --git a/cassettes/features/v2/app_deployment/Deploy-App-returns-Bad-Request-response.frozen b/cassettes/features/v2/app_deployment/Deploy-App-returns-Bad-Request-response.frozen new file mode 100644 index 000000000000..70eab29e2a7f --- /dev/null +++ b/cassettes/features/v2/app_deployment/Deploy-App-returns-Bad-Request-response.frozen @@ -0,0 +1 @@ +2024-12-10T19:57:35.320Z \ No newline at end of file diff --git a/cassettes/features/v2/apps/Deploy-App-returns-Bad-Request-response.yml b/cassettes/features/v2/app_deployment/Deploy-App-returns-Bad-Request-response.yml similarity index 91% rename from cassettes/features/v2/apps/Deploy-App-returns-Bad-Request-response.yml rename to cassettes/features/v2/app_deployment/Deploy-App-returns-Bad-Request-response.yml index 4ee6d51d4856..a4596176dc8f 100644 --- a/cassettes/features/v2/apps/Deploy-App-returns-Bad-Request-response.yml +++ b/cassettes/features/v2/app_deployment/Deploy-App-returns-Bad-Request-response.yml @@ -1,5 +1,5 @@ http_interactions: -- recorded_at: Fri, 20 Dec 2024 20:39:20 GMT +- recorded_at: Tue, 10 Dec 2024 19:57:35 GMT request: body: null headers: diff --git a/cassettes/features/v2/app_deployment/Deploy-App-returns-Created-response.frozen b/cassettes/features/v2/app_deployment/Deploy-App-returns-Created-response.frozen new file mode 100644 index 000000000000..12cd09b1d290 --- /dev/null +++ b/cassettes/features/v2/app_deployment/Deploy-App-returns-Created-response.frozen @@ -0,0 +1 @@ +2024-12-12T20:29:22.668Z \ No newline at end of file diff --git a/cassettes/features/v2/apps/Deploy-App-returns-Created-response.yml b/cassettes/features/v2/app_deployment/Deploy-App-returns-Created-response.yml similarity index 64% rename from cassettes/features/v2/apps/Deploy-App-returns-Created-response.yml rename to cassettes/features/v2/app_deployment/Deploy-App-returns-Created-response.yml index 2e35b9703f42..d0bb837158a4 100644 --- a/cassettes/features/v2/apps/Deploy-App-returns-Created-response.yml +++ b/cassettes/features/v2/app_deployment/Deploy-App-returns-Created-response.yml @@ -1,5 +1,5 @@ http_interactions: -- recorded_at: Fri, 20 Dec 2024 20:39:20 GMT +- recorded_at: Thu, 12 Dec 2024 20:29:22 GMT request: body: encoding: UTF-8 @@ -16,43 +16,43 @@ http_interactions: response: body: encoding: UTF-8 - string: '{"data":{"id":"290ad26d-6f5c-43b6-aef6-57b403d755e8","type":"appDefinitions"}}' + string: '{"data":{"id":"d9f547cd-bc8d-46be-b321-336856723728","type":"appDefinitions"}}' headers: Content-Type: - application/vnd.api+json status: code: 201 message: Created -- recorded_at: Fri, 20 Dec 2024 20:39:20 GMT +- recorded_at: Thu, 12 Dec 2024 20:29:22 GMT request: body: null headers: Accept: - application/json method: POST - uri: https://api.datadoghq.com/api/v2/app-builder/apps/290ad26d-6f5c-43b6-aef6-57b403d755e8/deployment + uri: https://api.datadoghq.com/api/v2/app-builder/apps/d9f547cd-bc8d-46be-b321-336856723728/deployment response: body: encoding: UTF-8 - string: '{"data":{"id":"74a4bbff-b587-4272-a207-b61678cc0bf1","type":"deployment","attributes":{"app_version_id":"ab334928-2df5-4e6e-8e40-9eeee2b2cd44"},"meta":{"created_at":"2024-12-20T20:39:20.594723Z","user_id":15479137,"user_uuid":"b3f98453-b289-11ef-a4e9-d6d283f92d91","user_name":"oliver.li@datadoghq.com"}}}' + string: '{"data":{"id":"7e1d147c-815e-46fa-8be0-278783311881","type":"deployment","attributes":{"app_version_id":"f8567809-049e-49c2-b5c0-e5cb0e8e0f5e"},"meta":{"created_at":"2024-12-12T20:29:23.253704Z","user_id":2320499,"user_uuid":"9919ec9b-ebc7-49ee-8dc8-03626e717cca","user_name":"9919ec9b-ebc7-49ee-8dc8-03626e717cca"}}}' headers: Content-Type: - application/vnd.api+json status: code: 201 message: Created -- recorded_at: Fri, 20 Dec 2024 20:39:20 GMT +- recorded_at: Thu, 12 Dec 2024 20:29:22 GMT request: body: null headers: Accept: - application/json method: DELETE - uri: https://api.datadoghq.com/api/v2/app-builder/apps/290ad26d-6f5c-43b6-aef6-57b403d755e8 + uri: https://api.datadoghq.com/api/v2/app-builder/apps/d9f547cd-bc8d-46be-b321-336856723728 response: body: encoding: UTF-8 - string: '{"data":{"id":"290ad26d-6f5c-43b6-aef6-57b403d755e8","type":"appDefinitions"}}' + string: '{"data":{"id":"d9f547cd-bc8d-46be-b321-336856723728","type":"appDefinitions"}}' headers: Content-Type: - application/vnd.api+json diff --git a/cassettes/features/v2/app_deployment/Deploy-App-returns-Not-Found-response.frozen b/cassettes/features/v2/app_deployment/Deploy-App-returns-Not-Found-response.frozen new file mode 100644 index 000000000000..c11fe09d7f40 --- /dev/null +++ b/cassettes/features/v2/app_deployment/Deploy-App-returns-Not-Found-response.frozen @@ -0,0 +1 @@ +2024-12-10T19:57:35.984Z \ No newline at end of file diff --git a/cassettes/features/v2/apps/Deploy-App-returns-Not-Found-response.yml b/cassettes/features/v2/app_deployment/Deploy-App-returns-Not-Found-response.yml similarity index 91% rename from cassettes/features/v2/apps/Deploy-App-returns-Not-Found-response.yml rename to cassettes/features/v2/app_deployment/Deploy-App-returns-Not-Found-response.yml index 241cc900eb3d..d3430a3d3f9f 100644 --- a/cassettes/features/v2/apps/Deploy-App-returns-Not-Found-response.yml +++ b/cassettes/features/v2/app_deployment/Deploy-App-returns-Not-Found-response.yml @@ -1,5 +1,5 @@ http_interactions: -- recorded_at: Fri, 20 Dec 2024 20:39:20 GMT +- recorded_at: Tue, 10 Dec 2024 19:57:35 GMT request: body: null headers: diff --git a/cassettes/features/v2/app_deployment/Disable-App-returns-Bad-Request-response.frozen b/cassettes/features/v2/app_deployment/Disable-App-returns-Bad-Request-response.frozen new file mode 100644 index 000000000000..bf3af7629d00 --- /dev/null +++ b/cassettes/features/v2/app_deployment/Disable-App-returns-Bad-Request-response.frozen @@ -0,0 +1 @@ +2024-12-10T19:57:36.091Z \ No newline at end of file diff --git a/cassettes/features/v2/apps/Disable-App-returns-Bad-Request-response.yml b/cassettes/features/v2/app_deployment/Disable-App-returns-Bad-Request-response.yml similarity index 91% rename from cassettes/features/v2/apps/Disable-App-returns-Bad-Request-response.yml rename to cassettes/features/v2/app_deployment/Disable-App-returns-Bad-Request-response.yml index 0351474fb7ed..f143723922d4 100644 --- a/cassettes/features/v2/apps/Disable-App-returns-Bad-Request-response.yml +++ b/cassettes/features/v2/app_deployment/Disable-App-returns-Bad-Request-response.yml @@ -1,5 +1,5 @@ http_interactions: -- recorded_at: Fri, 20 Dec 2024 20:39:21 GMT +- recorded_at: Tue, 10 Dec 2024 19:57:36 GMT request: body: null headers: diff --git a/cassettes/features/v2/app_deployment/Disable-App-returns-Not-Found-response.frozen b/cassettes/features/v2/app_deployment/Disable-App-returns-Not-Found-response.frozen new file mode 100644 index 000000000000..8dc6b57d7569 --- /dev/null +++ b/cassettes/features/v2/app_deployment/Disable-App-returns-Not-Found-response.frozen @@ -0,0 +1 @@ +2024-12-10T19:57:36.179Z \ No newline at end of file diff --git a/cassettes/features/v2/apps/Disable-App-returns-Not-Found-response.yml b/cassettes/features/v2/app_deployment/Disable-App-returns-Not-Found-response.yml similarity index 91% rename from cassettes/features/v2/apps/Disable-App-returns-Not-Found-response.yml rename to cassettes/features/v2/app_deployment/Disable-App-returns-Not-Found-response.yml index 5b801e25288c..4c2f45085e3d 100644 --- a/cassettes/features/v2/apps/Disable-App-returns-Not-Found-response.yml +++ b/cassettes/features/v2/app_deployment/Disable-App-returns-Not-Found-response.yml @@ -1,5 +1,5 @@ http_interactions: -- recorded_at: Fri, 20 Dec 2024 20:39:21 GMT +- recorded_at: Tue, 10 Dec 2024 19:57:36 GMT request: body: null headers: diff --git a/cassettes/features/v2/app_deployment/Disable-App-returns-OK-response.frozen b/cassettes/features/v2/app_deployment/Disable-App-returns-OK-response.frozen new file mode 100644 index 000000000000..883ce61def28 --- /dev/null +++ b/cassettes/features/v2/app_deployment/Disable-App-returns-OK-response.frozen @@ -0,0 +1 @@ +2024-12-12T20:29:23.546Z \ No newline at end of file diff --git a/cassettes/features/v2/apps/Disable-App-returns-OK-response.yml b/cassettes/features/v2/app_deployment/Disable-App-returns-OK-response.yml similarity index 64% rename from cassettes/features/v2/apps/Disable-App-returns-OK-response.yml rename to cassettes/features/v2/app_deployment/Disable-App-returns-OK-response.yml index ee7aba0ea360..f79fe7ef415c 100644 --- a/cassettes/features/v2/apps/Disable-App-returns-OK-response.yml +++ b/cassettes/features/v2/app_deployment/Disable-App-returns-OK-response.yml @@ -1,5 +1,5 @@ http_interactions: -- recorded_at: Fri, 20 Dec 2024 20:39:21 GMT +- recorded_at: Thu, 12 Dec 2024 20:29:23 GMT request: body: encoding: UTF-8 @@ -16,43 +16,43 @@ http_interactions: response: body: encoding: UTF-8 - string: '{"data":{"id":"cfe9f7bc-e6e6-44e2-9d30-19b03ab871b5","type":"appDefinitions"}}' + string: '{"data":{"id":"6fdd1eb3-bd2c-4fe3-a3cf-38d0af4913ad","type":"appDefinitions"}}' headers: Content-Type: - application/vnd.api+json status: code: 201 message: Created -- recorded_at: Fri, 20 Dec 2024 20:39:21 GMT +- recorded_at: Thu, 12 Dec 2024 20:29:23 GMT request: body: null headers: Accept: - application/json method: DELETE - uri: https://api.datadoghq.com/api/v2/app-builder/apps/cfe9f7bc-e6e6-44e2-9d30-19b03ab871b5/deployment + uri: https://api.datadoghq.com/api/v2/app-builder/apps/6fdd1eb3-bd2c-4fe3-a3cf-38d0af4913ad/deployment response: body: encoding: UTF-8 - string: '{"data":{"id":"1c14f2b9-0161-4dac-ad44-b8dd84abcbe6","type":"deployment","attributes":{"app_version_id":"00000000-0000-0000-0000-000000000000"},"meta":{"created_at":"2024-12-20T20:39:21.490485Z","user_id":15479137,"user_uuid":"b3f98453-b289-11ef-a4e9-d6d283f92d91","user_name":"oliver.li@datadoghq.com"}}}' + string: '{"data":{"id":"be510de8-34d8-45fc-830f-85c208a42920","type":"deployment","attributes":{"app_version_id":"00000000-0000-0000-0000-000000000000"},"meta":{"created_at":"2024-12-12T20:29:23.883145Z","user_id":2320499,"user_uuid":"9919ec9b-ebc7-49ee-8dc8-03626e717cca","user_name":"9919ec9b-ebc7-49ee-8dc8-03626e717cca"}}}' headers: Content-Type: - application/vnd.api+json status: code: 200 message: OK -- recorded_at: Fri, 20 Dec 2024 20:39:21 GMT +- recorded_at: Thu, 12 Dec 2024 20:29:23 GMT request: body: null headers: Accept: - application/json method: DELETE - uri: https://api.datadoghq.com/api/v2/app-builder/apps/cfe9f7bc-e6e6-44e2-9d30-19b03ab871b5 + uri: https://api.datadoghq.com/api/v2/app-builder/apps/6fdd1eb3-bd2c-4fe3-a3cf-38d0af4913ad response: body: encoding: UTF-8 - string: '{"data":{"id":"cfe9f7bc-e6e6-44e2-9d30-19b03ab871b5","type":"appDefinitions"}}' + string: '{"data":{"id":"6fdd1eb3-bd2c-4fe3-a3cf-38d0af4913ad","type":"appDefinitions"}}' headers: Content-Type: - application/vnd.api+json diff --git a/cassettes/features/v2/apps/Create-App-returns-App-Created-response.frozen b/cassettes/features/v2/apps/Create-App-returns-App-Created-response.frozen index a188f565172a..6dfadcf607a9 100644 --- a/cassettes/features/v2/apps/Create-App-returns-App-Created-response.frozen +++ b/cassettes/features/v2/apps/Create-App-returns-App-Created-response.frozen @@ -1 +1 @@ -2024-12-20T20:39:18.375Z \ No newline at end of file +2024-12-12T20:29:24.182Z \ No newline at end of file diff --git a/cassettes/features/v2/apps/Create-App-returns-App-Created-response.yml b/cassettes/features/v2/apps/Create-App-returns-App-Created-response.yml index 6e52e504ccae..6a66628c9c67 100644 --- a/cassettes/features/v2/apps/Create-App-returns-App-Created-response.yml +++ b/cassettes/features/v2/apps/Create-App-returns-App-Created-response.yml @@ -1,5 +1,5 @@ http_interactions: -- recorded_at: Fri, 20 Dec 2024 20:39:18 GMT +- recorded_at: Thu, 12 Dec 2024 20:29:24 GMT request: body: encoding: UTF-8 @@ -16,25 +16,25 @@ http_interactions: response: body: encoding: UTF-8 - string: '{"data":{"id":"02c52f8c-78d9-4c14-ac27-b0bcac36ce74","type":"appDefinitions"}}' + string: '{"data":{"id":"2d9dd18e-c574-454c-8d43-3045b731d6a2","type":"appDefinitions"}}' headers: Content-Type: - application/vnd.api+json status: code: 201 message: Created -- recorded_at: Fri, 20 Dec 2024 20:39:18 GMT +- recorded_at: Thu, 12 Dec 2024 20:29:24 GMT request: body: null headers: Accept: - application/json method: DELETE - uri: https://api.datadoghq.com/api/v2/app-builder/apps/02c52f8c-78d9-4c14-ac27-b0bcac36ce74 + uri: https://api.datadoghq.com/api/v2/app-builder/apps/2d9dd18e-c574-454c-8d43-3045b731d6a2 response: body: encoding: UTF-8 - string: '{"data":{"id":"02c52f8c-78d9-4c14-ac27-b0bcac36ce74","type":"appDefinitions"}}' + string: '{"data":{"id":"2d9dd18e-c574-454c-8d43-3045b731d6a2","type":"appDefinitions"}}' headers: Content-Type: - application/vnd.api+json diff --git a/cassettes/features/v2/apps/Create-App-returns-Bad-Request-response.frozen b/cassettes/features/v2/apps/Create-App-returns-Bad-Request-response.frozen index 6bab6b517746..5912dc344123 100644 --- a/cassettes/features/v2/apps/Create-App-returns-Bad-Request-response.frozen +++ b/cassettes/features/v2/apps/Create-App-returns-Bad-Request-response.frozen @@ -1 +1 @@ -2024-12-20T20:39:18.779Z \ No newline at end of file +2024-12-10T19:57:10.031Z \ No newline at end of file diff --git a/cassettes/features/v2/apps/Create-App-returns-Bad-Request-response.yml b/cassettes/features/v2/apps/Create-App-returns-Bad-Request-response.yml index b8068b2bb6a8..3d91d20a10fe 100644 --- a/cassettes/features/v2/apps/Create-App-returns-Bad-Request-response.yml +++ b/cassettes/features/v2/apps/Create-App-returns-Bad-Request-response.yml @@ -1,5 +1,5 @@ http_interactions: -- recorded_at: Fri, 20 Dec 2024 20:39:18 GMT +- recorded_at: Tue, 10 Dec 2024 19:57:10 GMT request: body: encoding: UTF-8 diff --git a/cassettes/features/v2/apps/Delete-App-returns-Bad-Request-response.frozen b/cassettes/features/v2/apps/Delete-App-returns-Bad-Request-response.frozen index f2fcc286e7ea..3925b1b25d40 100644 --- a/cassettes/features/v2/apps/Delete-App-returns-Bad-Request-response.frozen +++ b/cassettes/features/v2/apps/Delete-App-returns-Bad-Request-response.frozen @@ -1 +1 @@ -2024-12-20T20:39:18.880Z \ No newline at end of file +2024-12-10T19:57:10.128Z \ No newline at end of file diff --git a/cassettes/features/v2/apps/Delete-App-returns-Bad-Request-response.yml b/cassettes/features/v2/apps/Delete-App-returns-Bad-Request-response.yml index 1cb0dd924d59..25ad2445f4e9 100644 --- a/cassettes/features/v2/apps/Delete-App-returns-Bad-Request-response.yml +++ b/cassettes/features/v2/apps/Delete-App-returns-Bad-Request-response.yml @@ -1,5 +1,5 @@ http_interactions: -- recorded_at: Fri, 20 Dec 2024 20:39:18 GMT +- recorded_at: Tue, 10 Dec 2024 19:57:10 GMT request: body: null headers: diff --git a/cassettes/features/v2/apps/Delete-App-returns-Not-Found-response.frozen b/cassettes/features/v2/apps/Delete-App-returns-Not-Found-response.frozen index fb9dd880bf6e..cfa34bd9bafc 100644 --- a/cassettes/features/v2/apps/Delete-App-returns-Not-Found-response.frozen +++ b/cassettes/features/v2/apps/Delete-App-returns-Not-Found-response.frozen @@ -1 +1 @@ -2024-12-20T20:39:18.985Z \ No newline at end of file +2024-12-10T19:57:10.225Z \ No newline at end of file diff --git a/cassettes/features/v2/apps/Delete-App-returns-Not-Found-response.yml b/cassettes/features/v2/apps/Delete-App-returns-Not-Found-response.yml index c319380ab04c..b9b6347ab40e 100644 --- a/cassettes/features/v2/apps/Delete-App-returns-Not-Found-response.yml +++ b/cassettes/features/v2/apps/Delete-App-returns-Not-Found-response.yml @@ -1,5 +1,5 @@ http_interactions: -- recorded_at: Fri, 20 Dec 2024 20:39:18 GMT +- recorded_at: Tue, 10 Dec 2024 19:57:10 GMT request: body: null headers: diff --git a/cassettes/features/v2/apps/Delete-App-returns-OK-response.frozen b/cassettes/features/v2/apps/Delete-App-returns-OK-response.frozen index 744eafd50164..81a74305aec1 100644 --- a/cassettes/features/v2/apps/Delete-App-returns-OK-response.frozen +++ b/cassettes/features/v2/apps/Delete-App-returns-OK-response.frozen @@ -1 +1 @@ -2024-12-20T20:39:19.083Z \ No newline at end of file +2024-12-12T20:29:24.659Z \ No newline at end of file diff --git a/cassettes/features/v2/apps/Delete-App-returns-OK-response.yml b/cassettes/features/v2/apps/Delete-App-returns-OK-response.yml index 681b5ee28cdf..cacc3dabfdc4 100644 --- a/cassettes/features/v2/apps/Delete-App-returns-OK-response.yml +++ b/cassettes/features/v2/apps/Delete-App-returns-OK-response.yml @@ -1,5 +1,5 @@ http_interactions: -- recorded_at: Fri, 20 Dec 2024 20:39:19 GMT +- recorded_at: Thu, 12 Dec 2024 20:29:24 GMT request: body: encoding: UTF-8 @@ -16,39 +16,39 @@ http_interactions: response: body: encoding: UTF-8 - string: '{"data":{"id":"500bf715-77a5-4c1d-b4ef-0d181b071daf","type":"appDefinitions"}}' + string: '{"data":{"id":"5cb67134-d7bd-4320-9cda-d79ec98cff4c","type":"appDefinitions"}}' headers: Content-Type: - application/vnd.api+json status: code: 201 message: Created -- recorded_at: Fri, 20 Dec 2024 20:39:19 GMT +- recorded_at: Thu, 12 Dec 2024 20:29:24 GMT request: body: null headers: Accept: - application/json method: DELETE - uri: https://api.datadoghq.com/api/v2/app-builder/apps/500bf715-77a5-4c1d-b4ef-0d181b071daf + uri: https://api.datadoghq.com/api/v2/app-builder/apps/5cb67134-d7bd-4320-9cda-d79ec98cff4c response: body: encoding: UTF-8 - string: '{"data":{"id":"500bf715-77a5-4c1d-b4ef-0d181b071daf","type":"appDefinitions"}}' + string: '{"data":{"id":"5cb67134-d7bd-4320-9cda-d79ec98cff4c","type":"appDefinitions"}}' headers: Content-Type: - application/vnd.api+json status: code: 200 message: OK -- recorded_at: Fri, 20 Dec 2024 20:39:19 GMT +- recorded_at: Thu, 12 Dec 2024 20:29:24 GMT request: body: null headers: Accept: - application/json method: DELETE - uri: https://api.datadoghq.com/api/v2/app-builder/apps/500bf715-77a5-4c1d-b4ef-0d181b071daf + uri: https://api.datadoghq.com/api/v2/app-builder/apps/5cb67134-d7bd-4320-9cda-d79ec98cff4c response: body: encoding: UTF-8 diff --git a/cassettes/features/v2/apps/Delete-Multiple-Apps-returns-Bad-Request-response.frozen b/cassettes/features/v2/apps/Delete-Multiple-Apps-returns-Bad-Request-response.frozen index c2c122a9a5cb..47c84b21b2bf 100644 --- a/cassettes/features/v2/apps/Delete-Multiple-Apps-returns-Bad-Request-response.frozen +++ b/cassettes/features/v2/apps/Delete-Multiple-Apps-returns-Bad-Request-response.frozen @@ -1 +1 @@ -2024-12-20T20:39:19.594Z \ No newline at end of file +2024-12-10T19:57:10.845Z \ No newline at end of file diff --git a/cassettes/features/v2/apps/Delete-Multiple-Apps-returns-Bad-Request-response.yml b/cassettes/features/v2/apps/Delete-Multiple-Apps-returns-Bad-Request-response.yml index 2bfa8d54ed6f..d46a706bf257 100644 --- a/cassettes/features/v2/apps/Delete-Multiple-Apps-returns-Bad-Request-response.yml +++ b/cassettes/features/v2/apps/Delete-Multiple-Apps-returns-Bad-Request-response.yml @@ -1,5 +1,5 @@ http_interactions: -- recorded_at: Fri, 20 Dec 2024 20:39:19 GMT +- recorded_at: Tue, 10 Dec 2024 19:57:10 GMT request: body: encoding: UTF-8 diff --git a/cassettes/features/v2/apps/Delete-Multiple-Apps-returns-Not-Found-response.frozen b/cassettes/features/v2/apps/Delete-Multiple-Apps-returns-Not-Found-response.frozen index 7d397ad29fe9..0fbfbe769d07 100644 --- a/cassettes/features/v2/apps/Delete-Multiple-Apps-returns-Not-Found-response.frozen +++ b/cassettes/features/v2/apps/Delete-Multiple-Apps-returns-Not-Found-response.frozen @@ -1 +1 @@ -2024-12-20T20:39:19.688Z \ No newline at end of file +2024-12-10T19:57:10.942Z \ No newline at end of file diff --git a/cassettes/features/v2/apps/Delete-Multiple-Apps-returns-Not-Found-response.yml b/cassettes/features/v2/apps/Delete-Multiple-Apps-returns-Not-Found-response.yml index 2862558fa8f5..65c610f1e642 100644 --- a/cassettes/features/v2/apps/Delete-Multiple-Apps-returns-Not-Found-response.yml +++ b/cassettes/features/v2/apps/Delete-Multiple-Apps-returns-Not-Found-response.yml @@ -1,5 +1,5 @@ http_interactions: -- recorded_at: Fri, 20 Dec 2024 20:39:19 GMT +- recorded_at: Tue, 10 Dec 2024 19:57:10 GMT request: body: encoding: UTF-8 diff --git a/cassettes/features/v2/apps/Delete-Multiple-Apps-returns-OK-response.frozen b/cassettes/features/v2/apps/Delete-Multiple-Apps-returns-OK-response.frozen index d2346be1daa0..5848314b7972 100644 --- a/cassettes/features/v2/apps/Delete-Multiple-Apps-returns-OK-response.frozen +++ b/cassettes/features/v2/apps/Delete-Multiple-Apps-returns-OK-response.frozen @@ -1 +1 @@ -2024-12-20T20:39:19.785Z \ No newline at end of file +2024-12-12T20:29:25.239Z \ No newline at end of file diff --git a/cassettes/features/v2/apps/Delete-Multiple-Apps-returns-OK-response.yml b/cassettes/features/v2/apps/Delete-Multiple-Apps-returns-OK-response.yml index cbfb9b76eeb6..0e9699b600d8 100644 --- a/cassettes/features/v2/apps/Delete-Multiple-Apps-returns-OK-response.yml +++ b/cassettes/features/v2/apps/Delete-Multiple-Apps-returns-OK-response.yml @@ -1,5 +1,5 @@ http_interactions: -- recorded_at: Fri, 20 Dec 2024 20:39:19 GMT +- recorded_at: Thu, 12 Dec 2024 20:29:25 GMT request: body: encoding: UTF-8 @@ -16,18 +16,18 @@ http_interactions: response: body: encoding: UTF-8 - string: '{"data":{"id":"884b37bc-71b8-40bc-8967-12684ec7f3c4","type":"appDefinitions"}}' + string: '{"data":{"id":"61d36766-5d27-47ea-a3e7-aa7bd77b1da3","type":"appDefinitions"}}' headers: Content-Type: - application/vnd.api+json status: code: 201 message: Created -- recorded_at: Fri, 20 Dec 2024 20:39:19 GMT +- recorded_at: Thu, 12 Dec 2024 20:29:25 GMT request: body: encoding: UTF-8 - string: '{"data":[{"id":"884b37bc-71b8-40bc-8967-12684ec7f3c4","type":"appDefinitions"}]}' + string: '{"data":[{"id":"61d36766-5d27-47ea-a3e7-aa7bd77b1da3","type":"appDefinitions"}]}' headers: Accept: - application/json @@ -38,21 +38,21 @@ http_interactions: response: body: encoding: UTF-8 - string: '{"data":[{"id":"884b37bc-71b8-40bc-8967-12684ec7f3c4","type":"appDefinitions"}]}' + string: '{"data":[{"id":"61d36766-5d27-47ea-a3e7-aa7bd77b1da3","type":"appDefinitions"}]}' headers: Content-Type: - application/vnd.api+json status: code: 200 message: OK -- recorded_at: Fri, 20 Dec 2024 20:39:19 GMT +- recorded_at: Thu, 12 Dec 2024 20:29:25 GMT request: body: null headers: Accept: - application/json method: DELETE - uri: https://api.datadoghq.com/api/v2/app-builder/apps/884b37bc-71b8-40bc-8967-12684ec7f3c4 + uri: https://api.datadoghq.com/api/v2/app-builder/apps/61d36766-5d27-47ea-a3e7-aa7bd77b1da3 response: body: encoding: UTF-8 diff --git a/cassettes/features/v2/apps/Deploy-App-returns-Bad-Request-response.frozen b/cassettes/features/v2/apps/Deploy-App-returns-Bad-Request-response.frozen deleted file mode 100644 index 3f65923d0af9..000000000000 --- a/cassettes/features/v2/apps/Deploy-App-returns-Bad-Request-response.frozen +++ /dev/null @@ -1 +0,0 @@ -2024-12-20T20:39:20.190Z \ No newline at end of file diff --git a/cassettes/features/v2/apps/Deploy-App-returns-Created-response.frozen b/cassettes/features/v2/apps/Deploy-App-returns-Created-response.frozen deleted file mode 100644 index 2c4a1170293a..000000000000 --- a/cassettes/features/v2/apps/Deploy-App-returns-Created-response.frozen +++ /dev/null @@ -1 +0,0 @@ -2024-12-20T20:39:20.292Z \ No newline at end of file diff --git a/cassettes/features/v2/apps/Deploy-App-returns-Not-Found-response.frozen b/cassettes/features/v2/apps/Deploy-App-returns-Not-Found-response.frozen deleted file mode 100644 index f8f8e8f26927..000000000000 --- a/cassettes/features/v2/apps/Deploy-App-returns-Not-Found-response.frozen +++ /dev/null @@ -1 +0,0 @@ -2024-12-20T20:39:20.929Z \ No newline at end of file diff --git a/cassettes/features/v2/apps/Disable-App-returns-Bad-Request-response.frozen b/cassettes/features/v2/apps/Disable-App-returns-Bad-Request-response.frozen deleted file mode 100644 index afd2bf6b9f82..000000000000 --- a/cassettes/features/v2/apps/Disable-App-returns-Bad-Request-response.frozen +++ /dev/null @@ -1 +0,0 @@ -2024-12-20T20:39:21.034Z \ No newline at end of file diff --git a/cassettes/features/v2/apps/Disable-App-returns-Not-Found-response.frozen b/cassettes/features/v2/apps/Disable-App-returns-Not-Found-response.frozen deleted file mode 100644 index 7332f6001324..000000000000 --- a/cassettes/features/v2/apps/Disable-App-returns-Not-Found-response.frozen +++ /dev/null @@ -1 +0,0 @@ -2024-12-20T20:39:21.129Z \ No newline at end of file diff --git a/cassettes/features/v2/apps/Disable-App-returns-OK-response.frozen b/cassettes/features/v2/apps/Disable-App-returns-OK-response.frozen deleted file mode 100644 index 672904fce269..000000000000 --- a/cassettes/features/v2/apps/Disable-App-returns-OK-response.frozen +++ /dev/null @@ -1 +0,0 @@ -2024-12-20T20:39:21.230Z \ No newline at end of file diff --git a/cassettes/features/v2/apps/Get-App-returns-Bad-Request-response.frozen b/cassettes/features/v2/apps/Get-App-returns-Bad-Request-response.frozen index 8251b6eaf66d..9a1b4493f05e 100644 --- a/cassettes/features/v2/apps/Get-App-returns-Bad-Request-response.frozen +++ b/cassettes/features/v2/apps/Get-App-returns-Bad-Request-response.frozen @@ -1 +1 @@ -2024-12-20T20:39:21.680Z \ No newline at end of file +2024-12-10T19:57:11.519Z \ No newline at end of file diff --git a/cassettes/features/v2/apps/Get-App-returns-Bad-Request-response.yml b/cassettes/features/v2/apps/Get-App-returns-Bad-Request-response.yml index 8e0396ba476c..398f3cb08e14 100644 --- a/cassettes/features/v2/apps/Get-App-returns-Bad-Request-response.yml +++ b/cassettes/features/v2/apps/Get-App-returns-Bad-Request-response.yml @@ -1,5 +1,5 @@ http_interactions: -- recorded_at: Fri, 20 Dec 2024 20:39:21 GMT +- recorded_at: Tue, 10 Dec 2024 19:57:11 GMT request: body: null headers: diff --git a/cassettes/features/v2/apps/Get-App-returns-Not-Found-response.frozen b/cassettes/features/v2/apps/Get-App-returns-Not-Found-response.frozen index 8bd6f7561c50..0d42c760761e 100644 --- a/cassettes/features/v2/apps/Get-App-returns-Not-Found-response.frozen +++ b/cassettes/features/v2/apps/Get-App-returns-Not-Found-response.frozen @@ -1 +1 @@ -2024-12-20T20:39:21.762Z \ No newline at end of file +2024-12-10T19:57:11.612Z \ No newline at end of file diff --git a/cassettes/features/v2/apps/Get-App-returns-Not-Found-response.yml b/cassettes/features/v2/apps/Get-App-returns-Not-Found-response.yml index 17c83336b867..6c0ab3ad7978 100644 --- a/cassettes/features/v2/apps/Get-App-returns-Not-Found-response.yml +++ b/cassettes/features/v2/apps/Get-App-returns-Not-Found-response.yml @@ -1,5 +1,5 @@ http_interactions: -- recorded_at: Fri, 20 Dec 2024 20:39:21 GMT +- recorded_at: Tue, 10 Dec 2024 19:57:11 GMT request: body: null headers: diff --git a/cassettes/features/v2/apps/Get-App-returns-OK-response.frozen b/cassettes/features/v2/apps/Get-App-returns-OK-response.frozen index e407ffe5d622..7b34332de4d4 100644 --- a/cassettes/features/v2/apps/Get-App-returns-OK-response.frozen +++ b/cassettes/features/v2/apps/Get-App-returns-OK-response.frozen @@ -1 +1 @@ -2024-12-20T20:39:21.868Z \ No newline at end of file +2024-12-12T20:29:25.770Z \ No newline at end of file diff --git a/cassettes/features/v2/apps/Get-App-returns-OK-response.yml b/cassettes/features/v2/apps/Get-App-returns-OK-response.yml index ab8e2f83eb9e..f5d70a084f78 100644 --- a/cassettes/features/v2/apps/Get-App-returns-OK-response.yml +++ b/cassettes/features/v2/apps/Get-App-returns-OK-response.yml @@ -1,5 +1,5 @@ http_interactions: -- recorded_at: Fri, 20 Dec 2024 20:39:21 GMT +- recorded_at: Thu, 12 Dec 2024 20:29:25 GMT request: body: encoding: UTF-8 @@ -16,46 +16,46 @@ http_interactions: response: body: encoding: UTF-8 - string: '{"data":{"id":"e91c5ea9-5827-4008-b1e6-026d71f5c005","type":"appDefinitions"}}' + string: '{"data":{"id":"4937a273-31f5-4375-a9cf-b71eeb92f89c","type":"appDefinitions"}}' headers: Content-Type: - application/vnd.api+json status: code: 201 message: Created -- recorded_at: Fri, 20 Dec 2024 20:39:21 GMT +- recorded_at: Thu, 12 Dec 2024 20:29:25 GMT request: body: null headers: Accept: - application/json method: GET - uri: https://api.datadoghq.com/api/v2/app-builder/apps/e91c5ea9-5827-4008-b1e6-026d71f5c005 + uri: https://api.datadoghq.com/api/v2/app-builder/apps/4937a273-31f5-4375-a9cf-b71eeb92f89c response: body: encoding: UTF-8 - string: '{"data":{"id":"e91c5ea9-5827-4008-b1e6-026d71f5c005","type":"appDefinitions","attributes":{"components":[{"events":[],"name":"grid0","properties":{"children":[{"events":[],"name":"gridCell0","properties":{"children":[{"events":[],"name":"calloutValue0","properties":{"isDisabled":false,"isLoading":false,"isVisible":true,"label":"CPU + string: '{"data":{"id":"4937a273-31f5-4375-a9cf-b71eeb92f89c","type":"appDefinitions","attributes":{"components":[{"events":[],"name":"grid0","properties":{"children":[{"events":[],"name":"gridCell0","properties":{"children":[{"events":[],"name":"calloutValue0","properties":{"isDisabled":false,"isLoading":false,"isVisible":true,"label":"CPU Usage","size":"sm","style":"vivid_yellow","unit":"kB","value":"42"},"type":"calloutValue"}],"isVisible":"true","layout":{"default":{"height":8,"width":2,"x":0,"y":0}}},"type":"gridCell"}]},"type":"grid"}],"description":"This is a simple example app","embeddedQueries":[],"favorite":false,"name":"Example - App","rootInstanceName":"grid0","selfService":false,"tags":[]},"meta":{"org_id":1107852,"user_id":15479137,"user_uuid":"b3f98453-b289-11ef-a4e9-d6d283f92d91","user_name":"oliver.li@datadoghq.com","version":1,"updated_since_deployment":false,"created_at":"2024-12-20T20:39:21.945448Z","updated_at":"2024-12-20T20:39:21.945448Z","deleted_at":"0001-01-01T00:00:00Z"}}}' + App","rootInstanceName":"grid0","selfService":false,"tags":[]},"meta":{"org_id":321813,"user_id":2320499,"user_uuid":"9919ec9b-ebc7-49ee-8dc8-03626e717cca","user_name":"9919ec9b-ebc7-49ee-8dc8-03626e717cca","version":1,"updated_since_deployment":false,"created_at":"2024-12-12T20:29:25.869968Z","updated_at":"2024-12-12T20:29:25.869968Z","deleted_at":"0001-01-01T00:00:00Z"}}}' headers: Content-Type: - application/vnd.api+json status: code: 200 message: OK -- recorded_at: Fri, 20 Dec 2024 20:39:21 GMT +- recorded_at: Thu, 12 Dec 2024 20:29:25 GMT request: body: null headers: Accept: - application/json method: DELETE - uri: https://api.datadoghq.com/api/v2/app-builder/apps/e91c5ea9-5827-4008-b1e6-026d71f5c005 + uri: https://api.datadoghq.com/api/v2/app-builder/apps/4937a273-31f5-4375-a9cf-b71eeb92f89c response: body: encoding: UTF-8 - string: '{"data":{"id":"e91c5ea9-5827-4008-b1e6-026d71f5c005","type":"appDefinitions"}}' + string: '{"data":{"id":"4937a273-31f5-4375-a9cf-b71eeb92f89c","type":"appDefinitions"}}' headers: Content-Type: - application/vnd.api+json diff --git a/cassettes/features/v2/apps/List-Apps-returns-OK-response.frozen b/cassettes/features/v2/apps/List-Apps-returns-OK-response.frozen index b459860c38ed..1cb2468dc44f 100644 --- a/cassettes/features/v2/apps/List-Apps-returns-OK-response.frozen +++ b/cassettes/features/v2/apps/List-Apps-returns-OK-response.frozen @@ -1 +1 @@ -2024-12-20T20:39:22.419Z \ No newline at end of file +2024-12-10T19:57:12.227Z \ No newline at end of file diff --git a/cassettes/features/v2/apps/List-Apps-returns-OK-response.yml b/cassettes/features/v2/apps/List-Apps-returns-OK-response.yml index 9622ec2a958b..8d910597b6a6 100644 --- a/cassettes/features/v2/apps/List-Apps-returns-OK-response.yml +++ b/cassettes/features/v2/apps/List-Apps-returns-OK-response.yml @@ -1,5 +1,5 @@ http_interactions: -- recorded_at: Fri, 20 Dec 2024 20:39:22 GMT +- recorded_at: Tue, 10 Dec 2024 19:57:12 GMT request: body: null headers: @@ -10,9 +10,8 @@ http_interactions: response: body: encoding: UTF-8 - string: '{"data":[{"id":"0cc51f70-6f90-406e-880b-e2fac88e823a","type":"appDefinitions","attributes":{"description":"","favorite":false,"name":"[synthetics] - app name 0123456789","selfService":false,"tags":[]},"meta":{"org_id":1107852,"user_id":7571471,"user_uuid":"01347f51-3fcd-11ef-95dd-a65df5ee2843","user_name":"01347f51-3fcd-11ef-95dd-a65df5ee2843","version":0,"updated_since_deployment":false,"created_at":"2024-12-18T11:48:55.89363Z","updated_at":"2024-12-18T11:48:55.89363Z","deleted_at":"0001-01-01T00:00:00Z"}},{"id":"d595693a-473d-4671-9da3-fce89e3a5c5d","type":"appDefinitions","attributes":{"description":"","favorite":false,"name":"Max''s - App Fri, Jul 12, 11:10:35 am","selfService":false,"tags":[]},"meta":{"org_id":1107852,"user_id":7571362,"user_uuid":"3114f3a0-3fc9-11ef-acbe-a6def6551924","user_name":"max.gale@datadoghq.com","version":0,"updated_since_deployment":false,"created_at":"2024-07-12T15:10:48.690305Z","updated_at":"2024-07-12T15:10:48.690305Z","deleted_at":"0001-01-01T00:00:00Z"}}],"meta":{"page":{"totalCount":2,"totalFilteredCount":2}}}' + string: '{"data":[{"id":"d595693a-473d-4671-9da3-fce89e3a5c5d","type":"appDefinitions","attributes":{"description":"","favorite":false,"name":"Max''s + App Fri, Jul 12, 11:10:35 am","selfService":false,"tags":[]},"meta":{"org_id":1107852,"user_id":7571362,"user_uuid":"3114f3a0-3fc9-11ef-acbe-a6def6551924","user_name":"max.gale@datadoghq.com","version":0,"updated_since_deployment":false,"created_at":"2024-07-12T15:10:48.690305Z","updated_at":"2024-07-12T15:10:48.690305Z","deleted_at":"0001-01-01T00:00:00Z"}}],"meta":{"page":{"totalCount":1,"totalFilteredCount":1}}}' headers: Content-Type: - application/vnd.api+json diff --git a/cassettes/features/v2/apps/Update-App-returns-Bad-Request-response.frozen b/cassettes/features/v2/apps/Update-App-returns-Bad-Request-response.frozen index fd24ecdb585a..561628303542 100644 --- a/cassettes/features/v2/apps/Update-App-returns-Bad-Request-response.frozen +++ b/cassettes/features/v2/apps/Update-App-returns-Bad-Request-response.frozen @@ -1 +1 @@ -2024-12-20T20:39:22.549Z \ No newline at end of file +2024-12-12T20:29:26.349Z \ No newline at end of file diff --git a/cassettes/features/v2/apps/Update-App-returns-Bad-Request-response.yml b/cassettes/features/v2/apps/Update-App-returns-Bad-Request-response.yml index 57c1081567ee..c813f849d839 100644 --- a/cassettes/features/v2/apps/Update-App-returns-Bad-Request-response.yml +++ b/cassettes/features/v2/apps/Update-App-returns-Bad-Request-response.yml @@ -1,5 +1,5 @@ http_interactions: -- recorded_at: Fri, 20 Dec 2024 20:39:22 GMT +- recorded_at: Thu, 12 Dec 2024 20:29:26 GMT request: body: encoding: UTF-8 @@ -16,25 +16,25 @@ http_interactions: response: body: encoding: UTF-8 - string: '{"data":{"id":"2eb79081-77f2-4082-93d5-fbb4d2291dc7","type":"appDefinitions"}}' + string: '{"data":{"id":"9d2ee93b-6ac5-4b0e-abd8-829916f2365d","type":"appDefinitions"}}' headers: Content-Type: - application/vnd.api+json status: code: 201 message: Created -- recorded_at: Fri, 20 Dec 2024 20:39:22 GMT +- recorded_at: Thu, 12 Dec 2024 20:29:26 GMT request: body: encoding: UTF-8 - string: '{"data":{"attributes":{"rootInstanceName":""},"id":"2eb79081-77f2-4082-93d5-fbb4d2291dc7","type":"appDefinitions"}}' + string: '{"data":{"attributes":{"rootInstanceName":""},"id":"9d2ee93b-6ac5-4b0e-abd8-829916f2365d","type":"appDefinitions"}}' headers: Accept: - application/json Content-Type: - application/json method: PATCH - uri: https://api.datadoghq.com/api/v2/app-builder/apps/2eb79081-77f2-4082-93d5-fbb4d2291dc7 + uri: https://api.datadoghq.com/api/v2/app-builder/apps/9d2ee93b-6ac5-4b0e-abd8-829916f2365d response: body: encoding: UTF-8 @@ -45,18 +45,18 @@ http_interactions: status: code: 400 message: Bad Request -- recorded_at: Fri, 20 Dec 2024 20:39:22 GMT +- recorded_at: Thu, 12 Dec 2024 20:29:26 GMT request: body: null headers: Accept: - application/json method: DELETE - uri: https://api.datadoghq.com/api/v2/app-builder/apps/2eb79081-77f2-4082-93d5-fbb4d2291dc7 + uri: https://api.datadoghq.com/api/v2/app-builder/apps/9d2ee93b-6ac5-4b0e-abd8-829916f2365d response: body: encoding: UTF-8 - string: '{"data":{"id":"2eb79081-77f2-4082-93d5-fbb4d2291dc7","type":"appDefinitions"}}' + string: '{"data":{"id":"9d2ee93b-6ac5-4b0e-abd8-829916f2365d","type":"appDefinitions"}}' headers: Content-Type: - application/vnd.api+json diff --git a/cassettes/features/v2/apps/Update-App-returns-OK-response.frozen b/cassettes/features/v2/apps/Update-App-returns-OK-response.frozen index b873204c5afb..9a62b802399f 100644 --- a/cassettes/features/v2/apps/Update-App-returns-OK-response.frozen +++ b/cassettes/features/v2/apps/Update-App-returns-OK-response.frozen @@ -1 +1 @@ -2024-12-20T20:39:23.050Z \ No newline at end of file +2024-12-12T20:29:26.986Z \ No newline at end of file diff --git a/cassettes/features/v2/apps/Update-App-returns-OK-response.yml b/cassettes/features/v2/apps/Update-App-returns-OK-response.yml index cab9a9202a6b..439e08e294b5 100644 --- a/cassettes/features/v2/apps/Update-App-returns-OK-response.yml +++ b/cassettes/features/v2/apps/Update-App-returns-OK-response.yml @@ -1,5 +1,5 @@ http_interactions: -- recorded_at: Fri, 20 Dec 2024 20:39:23 GMT +- recorded_at: Thu, 12 Dec 2024 20:29:26 GMT request: body: encoding: UTF-8 @@ -16,50 +16,50 @@ http_interactions: response: body: encoding: UTF-8 - string: '{"data":{"id":"22653158-3691-4a09-bbd9-f4197f14dd0c","type":"appDefinitions"}}' + string: '{"data":{"id":"5a5e6785-d3f8-41bf-9d5d-95a179362e02","type":"appDefinitions"}}' headers: Content-Type: - application/vnd.api+json status: code: 201 message: Created -- recorded_at: Fri, 20 Dec 2024 20:39:23 GMT +- recorded_at: Thu, 12 Dec 2024 20:29:26 GMT request: body: encoding: UTF-8 - string: '{"data":{"attributes":{"name":"Updated Name","rootInstanceName":"grid0"},"id":"22653158-3691-4a09-bbd9-f4197f14dd0c","type":"appDefinitions"}}' + string: '{"data":{"attributes":{"name":"Updated Name","rootInstanceName":"grid0"},"id":"5a5e6785-d3f8-41bf-9d5d-95a179362e02","type":"appDefinitions"}}' headers: Accept: - application/json Content-Type: - application/json method: PATCH - uri: https://api.datadoghq.com/api/v2/app-builder/apps/22653158-3691-4a09-bbd9-f4197f14dd0c + uri: https://api.datadoghq.com/api/v2/app-builder/apps/5a5e6785-d3f8-41bf-9d5d-95a179362e02 response: body: encoding: UTF-8 - string: '{"data":{"id":"22653158-3691-4a09-bbd9-f4197f14dd0c","type":"appDefinitions","attributes":{"components":[{"events":[],"name":"grid0","properties":{"children":[{"events":[],"name":"gridCell0","properties":{"children":[{"events":[],"name":"calloutValue0","properties":{"isDisabled":false,"isLoading":false,"isVisible":true,"label":"CPU + string: '{"data":{"id":"5a5e6785-d3f8-41bf-9d5d-95a179362e02","type":"appDefinitions","attributes":{"components":[{"events":[],"name":"grid0","properties":{"children":[{"events":[],"name":"gridCell0","properties":{"children":[{"events":[],"name":"calloutValue0","properties":{"isDisabled":false,"isLoading":false,"isVisible":true,"label":"CPU Usage","size":"sm","style":"vivid_yellow","unit":"kB","value":"42"},"type":"calloutValue"}],"isVisible":"true","layout":{"default":{"height":8,"width":2,"x":0,"y":0}}},"type":"gridCell"}]},"type":"grid"}],"description":"This is a simple example app","embeddedQueries":[],"favorite":false,"name":"Updated - Name","rootInstanceName":"grid0","selfService":false,"tags":[]},"meta":{"org_id":1107852,"user_id":15479137,"user_uuid":"b3f98453-b289-11ef-a4e9-d6d283f92d91","user_name":"oliver.li@datadoghq.com","version":2,"updated_since_deployment":false,"created_at":"2024-12-20T20:39:23.117622Z","updated_at":"2024-12-20T20:39:23.317526Z","deleted_at":"0001-01-01T00:00:00Z"}}}' + Name","rootInstanceName":"grid0","selfService":false,"tags":[]},"meta":{"org_id":321813,"user_id":2320499,"user_uuid":"9919ec9b-ebc7-49ee-8dc8-03626e717cca","user_name":"9919ec9b-ebc7-49ee-8dc8-03626e717cca","version":2,"updated_since_deployment":false,"created_at":"2024-12-12T20:29:27.115629Z","updated_at":"2024-12-12T20:29:27.362767Z","deleted_at":"0001-01-01T00:00:00Z"}}}' headers: Content-Type: - application/vnd.api+json status: code: 200 message: OK -- recorded_at: Fri, 20 Dec 2024 20:39:23 GMT +- recorded_at: Thu, 12 Dec 2024 20:29:26 GMT request: body: null headers: Accept: - application/json method: DELETE - uri: https://api.datadoghq.com/api/v2/app-builder/apps/22653158-3691-4a09-bbd9-f4197f14dd0c + uri: https://api.datadoghq.com/api/v2/app-builder/apps/5a5e6785-d3f8-41bf-9d5d-95a179362e02 response: body: encoding: UTF-8 - string: '{"data":{"id":"22653158-3691-4a09-bbd9-f4197f14dd0c","type":"appDefinitions"}}' + string: '{"data":{"id":"5a5e6785-d3f8-41bf-9d5d-95a179362e02","type":"appDefinitions"}}' headers: Content-Type: - application/vnd.api+json diff --git a/examples/v2/apps/DeployApp.rb b/examples/v2/app-deployment/DeployApp.rb similarity index 83% rename from examples/v2/apps/DeployApp.rb rename to examples/v2/app-deployment/DeployApp.rb index 553f9c547285..9d5ada697546 100644 --- a/examples/v2/apps/DeployApp.rb +++ b/examples/v2/app-deployment/DeployApp.rb @@ -4,7 +4,7 @@ DatadogAPIClient.configure do |config| config.unstable_operations["v2.deploy_app".to_sym] = true end -api_instance = DatadogAPIClient::V2::AppsAPI.new +api_instance = DatadogAPIClient::V2::AppDeploymentAPI.new # there is a valid "app" in the system APP_DATA_ID = ENV["APP_DATA_ID"] diff --git a/examples/v2/apps/DisableApp.rb b/examples/v2/app-deployment/DisableApp.rb similarity index 82% rename from examples/v2/apps/DisableApp.rb rename to examples/v2/app-deployment/DisableApp.rb index 1f1ee733aa9a..d516cb30f976 100644 --- a/examples/v2/apps/DisableApp.rb +++ b/examples/v2/app-deployment/DisableApp.rb @@ -4,7 +4,7 @@ DatadogAPIClient.configure do |config| config.unstable_operations["v2.disable_app".to_sym] = true end -api_instance = DatadogAPIClient::V2::AppsAPI.new +api_instance = DatadogAPIClient::V2::AppDeploymentAPI.new # there is a valid "app" in the system APP_DATA_ID = ENV["APP_DATA_ID"] diff --git a/features/scenarios_model_mapping.rb b/features/scenarios_model_mapping.rb index 6cbd21d4f165..4b0b3b5a8d98 100644 --- a/features/scenarios_model_mapping.rb +++ b/features/scenarios_model_mapping.rb @@ -950,13 +950,12 @@ "limit" => "Integer", "page" => "Integer", "filter_user_name" => "String", - "filter_user_uuid" => "UUID", + "filter_user_uuid" => "String", "filter_name" => "String", "filter_query" => "String", "filter_deployed" => "Boolean", "filter_tags" => "String", "filter_favorite" => "Boolean", - "filter_self_service" => "Boolean", "sort" => "Array", }, "v2.CreateApp" => { @@ -967,7 +966,6 @@ }, "v2.GetApp" => { "app_id" => "String", - "version" => "String", }, "v2.UpdateApp" => { "app_id" => "String", diff --git a/features/v2/app_deployment.feature b/features/v2/app_deployment.feature new file mode 100644 index 000000000000..b76bc1d8841b --- /dev/null +++ b/features/v2/app_deployment.feature @@ -0,0 +1,58 @@ +@endpoint(app-deployment) @endpoint(app-deployment-v2) +Feature: App Deployment + Deploy and disable apps in App Builder. + + Background: + Given a valid "apiKeyAuth" key in the system + And a valid "appKeyAuth" key in the system + And an instance of "AppDeployment" API + + @skip-typescript @team:DataDog/app-builder-backend + Scenario: Deploy App returns "Bad Request" response + Given operation "DeployApp" enabled + And new "DeployApp" request + And request contains "app_id" parameter with value "invalid-uuid" + When the request is sent + Then the response status is 400 Bad Request + + @skip-typescript @team:DataDog/app-builder-backend + Scenario: Deploy App returns "Created" response + Given operation "DeployApp" enabled + And new "DeployApp" request + 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 201 Created + + @skip-typescript @team:DataDog/app-builder-backend + Scenario: Deploy App returns "Not Found" response + Given operation "DeployApp" enabled + And new "DeployApp" request + 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 + + @skip-typescript @team:DataDog/app-builder-backend + Scenario: Disable App returns "Bad Request" response + Given operation "DisableApp" enabled + And new "DisableApp" request + And request contains "app_id" parameter with value "invalid-uuid" + When the request is sent + Then the response status is 400 Bad Request + + @skip-typescript @team:DataDog/app-builder-backend + Scenario: Disable App returns "Not Found" response + Given operation "DisableApp" enabled + And new "DisableApp" request + 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 + + @skip-typescript @team:DataDog/app-builder-backend + Scenario: Disable App returns "OK" response + Given operation "DisableApp" enabled + And new "DisableApp" request + 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 diff --git a/features/v2/apps.feature b/features/v2/apps.feature index 1bed411c3113..531cc3826430 100644 --- a/features/v2/apps.feature +++ b/features/v2/apps.feature @@ -1,9 +1,6 @@ @endpoint(apps) @endpoint(apps-v2) Feature: Apps - Datadog App Builder provides a low-code solution to rapidly develop and - integrate secure, customized applications into your monitoring stack that - are built to accelerate remediation at scale. These API endpoints allow - you to create, read, update, delete, and publish apps. + Create, read, update, and delete apps in App Builder. Background: Given a valid "apiKeyAuth" key in the system @@ -91,56 +88,6 @@ Feature: Apps And the response "data" has length 1 And the response "data[0].id" has the same value as "app.data.id" - @skip-typescript @team:DataDog/app-builder-backend - Scenario: Deploy App returns "Bad Request" response - Given operation "DeployApp" enabled - And new "DeployApp" request - And request contains "app_id" parameter with value "invalid-uuid" - When the request is sent - Then the response status is 400 Bad Request - - @skip-typescript @team:DataDog/app-builder-backend - Scenario: Deploy App returns "Created" response - Given operation "DeployApp" enabled - And new "DeployApp" request - 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 201 Created - - @skip-typescript @team:DataDog/app-builder-backend - Scenario: Deploy App returns "Not Found" response - Given operation "DeployApp" enabled - And new "DeployApp" request - 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 - - @skip-typescript @team:DataDog/app-builder-backend - Scenario: Disable App returns "Bad Request" response - Given operation "DisableApp" enabled - And new "DisableApp" request - And request contains "app_id" parameter with value "invalid-uuid" - When the request is sent - Then the response status is 400 Bad Request - - @skip-typescript @team:DataDog/app-builder-backend - Scenario: Disable App returns "Not Found" response - Given operation "DisableApp" enabled - And new "DisableApp" request - 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 - - @skip-typescript @team:DataDog/app-builder-backend - Scenario: Disable App returns "OK" response - Given operation "DisableApp" enabled - And new "DisableApp" request - 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 - @skip-typescript @team:DataDog/app-builder-backend Scenario: Get App returns "Bad Request" response Given operation "GetApp" enabled @@ -169,11 +116,11 @@ Feature: Apps And the response "data.type" is equal to "appDefinitions" @generated @skip @team:DataDog/app-builder-backend - Scenario: List Apps returns "Bad Request" response + Scenario: List Apps returns "Bad Request, e.g. invalid sort parameter" response Given operation "ListApps" enabled And new "ListApps" request When the request is sent - Then the response status is 400 Bad Request + Then the response status is 400 Bad Request, e.g. invalid sort parameter @skip-typescript @team:DataDog/app-builder-backend Scenario: List Apps returns "OK" response diff --git a/features/v2/given.json b/features/v2/given.json index 3c9e4279380a..29503a6ae7c5 100644 --- a/features/v2/given.json +++ b/features/v2/given.json @@ -51,7 +51,7 @@ "parameters": [ { "name": "body", - "value": "{\"data\": {\"attributes\": {\"components\": [{\"events\": [], \"name\": \"grid0\", \"properties\": {\"children\": [{\"events\": [], \"name\": \"gridCell0\", \"properties\": {\"children\": [{\"events\": [], \"name\": \"calloutValue0\", \"properties\": {\"isDisabled\": false, \"isLoading\": false, \"isVisible\": true, \"label\": \"CPU Usage\", \"size\": \"sm\", \"style\": \"vivid_yellow\", \"unit\": \"kB\", \"value\": \"42\"}, \"type\": \"calloutValue\"}], \"isVisible\": \"true\", \"layout\": {\"default\": {\"height\": 8, \"width\": 2, \"x\": 0, \"y\": 0}}}, \"type\": \"gridCell\"}]}, \"type\": \"grid\"}], \"description\": \"This is a simple example app\", \"embeddedQueries\": [], \"name\": \"Example App\", \"rootInstanceName\": \"grid0\"}, \"type\": \"appDefinitions\"}}" + "value": "{\"data\": {\"attributes\": {\"components\": [{\"events\": [], \"name\": \"grid0\", \"properties\": {\"children\": [{\"events\": [], \"name\": \"gridCell0\", \"properties\": {\"children\": [{\"events\": [], \"name\": \"calloutValue0\", \"properties\": {\"isVisible\": true, \"isDisabled\": false, \"isLoading\": false, \"label\": \"CPU Usage\", \"size\": \"sm\", \"style\": \"vivid_yellow\", \"unit\": \"kB\", \"value\": \"42\"}, \"type\": \"calloutValue\"}], \"isVisible\": \"true\", \"layout\": {\"default\": {\"height\": 8, \"width\": 2, \"x\": 0, \"y\": 0}}}, \"type\": \"gridCell\"}]}, \"type\": \"grid\"}], \"description\": \"This is a simple example app\", \"embeddedQueries\": [], \"name\": \"Example App\", \"rootInstanceName\": \"grid0\"}, \"type\": \"appDefinitions\"}}" } ], "step": "there is a valid \"app\" in the system", diff --git a/features/v2/undo.json b/features/v2/undo.json index d6c6e9de87c6..0ba8da298f8b 100644 --- a/features/v2/undo.json +++ b/features/v2/undo.json @@ -203,13 +203,13 @@ } }, "DisableApp": { - "tag": "Apps", + "tag": "App Deployment", "undo": { "type": "idempotent" } }, "DeployApp": { - "tag": "Apps", + "tag": "App Deployment", "undo": { "type": "idempotent" } diff --git a/lib/datadog_api_client/configuration.rb b/lib/datadog_api_client/configuration.rb index cc4894593d02..31d62e94140f 100644 --- a/lib/datadog_api_client/configuration.rb +++ b/lib/datadog_api_client/configuration.rb @@ -197,11 +197,11 @@ def initialize "v2.create_app": false, "v2.delete_app": false, "v2.delete_apps": false, - "v2.deploy_app": false, - "v2.disable_app": false, "v2.get_app": false, "v2.list_apps": false, "v2.update_app": false, + "v2.deploy_app": false, + "v2.disable_app": false, "v2.get_active_billing_dimensions": false, "v2.get_billing_dimension_mapping": false, "v2.get_monthly_cost_attribution": false, diff --git a/lib/datadog_api_client/inflector.rb b/lib/datadog_api_client/inflector.rb index 87bf19619568..e939476ab052 100644 --- a/lib/datadog_api_client/inflector.rb +++ b/lib/datadog_api_client/inflector.rb @@ -927,6 +927,9 @@ def overrides "v2.api_key_update_data" => "APIKeyUpdateData", "v2.api_key_update_request" => "APIKeyUpdateRequest", "v2.apm_retention_filter_type" => "ApmRetentionFilterType", + "v2.app_builder_error" => "AppBuilderError", + "v2.app_builder_error_errors_items" => "AppBuilderErrorErrorsItems", + "v2.app_builder_error_errors_items_source" => "AppBuilderErrorErrorsItemsSource", "v2.app_builder_event" => "AppBuilderEvent", "v2.app_builder_event_name" => "AppBuilderEventName", "v2.app_builder_event_type" => "AppBuilderEventType", @@ -2831,6 +2834,7 @@ def overrides "v2.agentless_scanning_api" => "AgentlessScanningAPI", "v2.api_management_api" => "APIManagementAPI", "v2.apm_retention_filters_api" => "APMRetentionFiltersAPI", + "v2.app_deployment_api" => "AppDeploymentAPI", "v2.apps_api" => "AppsAPI", "v2.audit_api" => "AuditAPI", "v2.authn_mappings_api" => "AuthNMappingsAPI", diff --git a/lib/datadog_api_client/v2/api/app_deployment_api.rb b/lib/datadog_api_client/v2/api/app_deployment_api.rb new file mode 100644 index 000000000000..692c448f5ac0 --- /dev/null +++ b/lib/datadog_api_client/v2/api/app_deployment_api.rb @@ -0,0 +1,168 @@ +=begin +#Datadog API V2 Collection + +#Collection of all Datadog Public endpoints. + +The version of the OpenAPI document: 1.0 +Contact: support@datadoghq.com +Generated by: https://github.com/DataDog/datadog-api-client-ruby/tree/master/.generator + + Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. + This product includes software developed at Datadog (https://www.datadoghq.com/). + Copyright 2020-Present Datadog, Inc. + +=end + +require 'cgi' + +module DatadogAPIClient::V2 + class AppDeploymentAPI + attr_accessor :api_client + + def initialize(api_client = DatadogAPIClient::APIClient.default) + @api_client = api_client + end + + # Deploy App. + # + # @see #deploy_app_with_http_info + def deploy_app(app_id, opts = {}) + data, _status_code, _headers = deploy_app_with_http_info(app_id, opts) + data + end + + # Deploy App. + # + # Deploy (publish) an app by ID + # + # @param app_id [String] + # @param opts [Hash] the optional parameters + # @return [Array<(DeployAppResponse, Integer, Hash)>] DeployAppResponse data, response status code and response headers + def deploy_app_with_http_info(app_id, opts = {}) + unstable_enabled = @api_client.config.unstable_operations["v2.deploy_app".to_sym] + if unstable_enabled + @api_client.config.logger.warn format("Using unstable operation '%s'", "v2.deploy_app") + else + raise DatadogAPIClient::APIError.new(message: format("Unstable operation '%s' is disabled", "v2.deploy_app")) + end + + if @api_client.config.debugging + @api_client.config.logger.debug 'Calling API: AppDeploymentAPI.deploy_app ...' + end + # verify the required parameter 'app_id' is set + if @api_client.config.client_side_validation && app_id.nil? + fail ArgumentError, "Missing the required parameter 'app_id' when calling AppDeploymentAPI.deploy_app" + end + # resource path + local_var_path = '/api/v2/app-builder/apps/{app_id}/deployment'.sub('{app_id}', CGI.escape(app_id.to_s).gsub('%2F', '/')) + + # query parameters + query_params = opts[:query_params] || {} + + # header parameters + header_params = opts[:header_params] || {} + # HTTP header 'Accept' (if needed) + header_params['Accept'] = @api_client.select_header_accept(['application/json']) + + # form parameters + form_params = opts[:form_params] || {} + + # http body (model) + post_body = opts[:debug_body] + + # return_type + return_type = opts[:debug_return_type] || 'DeployAppResponse' + + # auth_names + auth_names = opts[:debug_auth_names] || [:apiKeyAuth, :appKeyAuth] + + new_options = opts.merge( + :operation => :deploy_app, + :header_params => header_params, + :query_params => query_params, + :form_params => form_params, + :body => post_body, + :auth_names => auth_names, + :return_type => return_type, + :api_version => "V2" + ) + + data, status_code, headers = @api_client.call_api(Net::HTTP::Post, local_var_path, new_options) + if @api_client.config.debugging + @api_client.config.logger.debug "API called: AppDeploymentAPI#deploy_app\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}" + end + return data, status_code, headers + end + + # Disable App. + # + # @see #disable_app_with_http_info + def disable_app(app_id, opts = {}) + data, _status_code, _headers = disable_app_with_http_info(app_id, opts) + data + end + + # Disable App. + # + # Disable an app by ID + # + # @param app_id [String] + # @param opts [Hash] the optional parameters + # @return [Array<(DisableAppResponse, Integer, Hash)>] DisableAppResponse data, response status code and response headers + def disable_app_with_http_info(app_id, opts = {}) + unstable_enabled = @api_client.config.unstable_operations["v2.disable_app".to_sym] + if unstable_enabled + @api_client.config.logger.warn format("Using unstable operation '%s'", "v2.disable_app") + else + raise DatadogAPIClient::APIError.new(message: format("Unstable operation '%s' is disabled", "v2.disable_app")) + end + + if @api_client.config.debugging + @api_client.config.logger.debug 'Calling API: AppDeploymentAPI.disable_app ...' + end + # verify the required parameter 'app_id' is set + if @api_client.config.client_side_validation && app_id.nil? + fail ArgumentError, "Missing the required parameter 'app_id' when calling AppDeploymentAPI.disable_app" + end + # resource path + local_var_path = '/api/v2/app-builder/apps/{app_id}/deployment'.sub('{app_id}', CGI.escape(app_id.to_s).gsub('%2F', '/')) + + # query parameters + query_params = opts[:query_params] || {} + + # header parameters + header_params = opts[:header_params] || {} + # HTTP header 'Accept' (if needed) + header_params['Accept'] = @api_client.select_header_accept(['application/json']) + + # form parameters + form_params = opts[:form_params] || {} + + # http body (model) + post_body = opts[:debug_body] + + # return_type + return_type = opts[:debug_return_type] || 'DisableAppResponse' + + # auth_names + auth_names = opts[:debug_auth_names] || [:apiKeyAuth, :appKeyAuth] + + new_options = opts.merge( + :operation => :disable_app, + :header_params => header_params, + :query_params => query_params, + :form_params => form_params, + :body => post_body, + :auth_names => auth_names, + :return_type => return_type, + :api_version => "V2" + ) + + data, status_code, headers = @api_client.call_api(Net::HTTP::Delete, local_var_path, new_options) + if @api_client.config.debugging + @api_client.config.logger.debug "API called: AppDeploymentAPI#disable_app\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}" + end + return data, status_code, headers + end + end +end diff --git a/lib/datadog_api_client/v2/api/apps_api.rb b/lib/datadog_api_client/v2/api/apps_api.rb index 93e0533bbfd4..9370b6c9e09c 100644 --- a/lib/datadog_api_client/v2/api/apps_api.rb +++ b/lib/datadog_api_client/v2/api/apps_api.rb @@ -240,148 +240,6 @@ def delete_apps_with_http_info(body, opts = {}) return data, status_code, headers end - # Deploy App. - # - # @see #deploy_app_with_http_info - def deploy_app(app_id, opts = {}) - data, _status_code, _headers = deploy_app_with_http_info(app_id, opts) - data - end - - # Deploy App. - # - # Deploy (publish) an app by ID - # - # @param app_id [String] - # @param opts [Hash] the optional parameters - # @return [Array<(DeployAppResponse, Integer, Hash)>] DeployAppResponse data, response status code and response headers - def deploy_app_with_http_info(app_id, opts = {}) - unstable_enabled = @api_client.config.unstable_operations["v2.deploy_app".to_sym] - if unstable_enabled - @api_client.config.logger.warn format("Using unstable operation '%s'", "v2.deploy_app") - else - raise DatadogAPIClient::APIError.new(message: format("Unstable operation '%s' is disabled", "v2.deploy_app")) - end - - if @api_client.config.debugging - @api_client.config.logger.debug 'Calling API: AppsAPI.deploy_app ...' - end - # verify the required parameter 'app_id' is set - if @api_client.config.client_side_validation && app_id.nil? - fail ArgumentError, "Missing the required parameter 'app_id' when calling AppsAPI.deploy_app" - end - # resource path - local_var_path = '/api/v2/app-builder/apps/{app_id}/deployment'.sub('{app_id}', CGI.escape(app_id.to_s).gsub('%2F', '/')) - - # query parameters - query_params = opts[:query_params] || {} - - # header parameters - header_params = opts[:header_params] || {} - # HTTP header 'Accept' (if needed) - header_params['Accept'] = @api_client.select_header_accept(['application/json']) - - # form parameters - form_params = opts[:form_params] || {} - - # http body (model) - post_body = opts[:debug_body] - - # return_type - return_type = opts[:debug_return_type] || 'DeployAppResponse' - - # auth_names - auth_names = opts[:debug_auth_names] || [:apiKeyAuth, :appKeyAuth] - - new_options = opts.merge( - :operation => :deploy_app, - :header_params => header_params, - :query_params => query_params, - :form_params => form_params, - :body => post_body, - :auth_names => auth_names, - :return_type => return_type, - :api_version => "V2" - ) - - data, status_code, headers = @api_client.call_api(Net::HTTP::Post, local_var_path, new_options) - if @api_client.config.debugging - @api_client.config.logger.debug "API called: AppsAPI#deploy_app\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}" - end - return data, status_code, headers - end - - # Disable App. - # - # @see #disable_app_with_http_info - def disable_app(app_id, opts = {}) - data, _status_code, _headers = disable_app_with_http_info(app_id, opts) - data - end - - # Disable App. - # - # Disable an app by ID - # - # @param app_id [String] - # @param opts [Hash] the optional parameters - # @return [Array<(DisableAppResponse, Integer, Hash)>] DisableAppResponse data, response status code and response headers - def disable_app_with_http_info(app_id, opts = {}) - unstable_enabled = @api_client.config.unstable_operations["v2.disable_app".to_sym] - if unstable_enabled - @api_client.config.logger.warn format("Using unstable operation '%s'", "v2.disable_app") - else - raise DatadogAPIClient::APIError.new(message: format("Unstable operation '%s' is disabled", "v2.disable_app")) - end - - if @api_client.config.debugging - @api_client.config.logger.debug 'Calling API: AppsAPI.disable_app ...' - end - # verify the required parameter 'app_id' is set - if @api_client.config.client_side_validation && app_id.nil? - fail ArgumentError, "Missing the required parameter 'app_id' when calling AppsAPI.disable_app" - end - # resource path - local_var_path = '/api/v2/app-builder/apps/{app_id}/deployment'.sub('{app_id}', CGI.escape(app_id.to_s).gsub('%2F', '/')) - - # query parameters - query_params = opts[:query_params] || {} - - # header parameters - header_params = opts[:header_params] || {} - # HTTP header 'Accept' (if needed) - header_params['Accept'] = @api_client.select_header_accept(['application/json']) - - # form parameters - form_params = opts[:form_params] || {} - - # http body (model) - post_body = opts[:debug_body] - - # return_type - return_type = opts[:debug_return_type] || 'DisableAppResponse' - - # auth_names - auth_names = opts[:debug_auth_names] || [:apiKeyAuth, :appKeyAuth] - - new_options = opts.merge( - :operation => :disable_app, - :header_params => header_params, - :query_params => query_params, - :form_params => form_params, - :body => post_body, - :auth_names => auth_names, - :return_type => return_type, - :api_version => "V2" - ) - - data, status_code, headers = @api_client.call_api(Net::HTTP::Delete, local_var_path, new_options) - if @api_client.config.debugging - @api_client.config.logger.debug "API called: AppsAPI#disable_app\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}" - end - return data, status_code, headers - end - # Get App. # # @see #get_app_with_http_info @@ -396,7 +254,6 @@ def get_app(app_id, opts = {}) # # @param app_id [String] # @param opts [Hash] the optional parameters - # @option opts [String] :version # @return [Array<(GetAppResponse, Integer, Hash)>] GetAppResponse data, response status code and response headers def get_app_with_http_info(app_id, opts = {}) unstable_enabled = @api_client.config.unstable_operations["v2.get_app".to_sym] @@ -418,7 +275,6 @@ def get_app_with_http_info(app_id, opts = {}) # query parameters query_params = opts[:query_params] || {} - query_params[:'version'] = opts[:'version'] if !opts[:'version'].nil? # header parameters header_params = opts[:header_params] || {} @@ -468,17 +324,16 @@ def list_apps(opts = {}) # List all apps, with optional filters and sorting # # @param opts [Hash] the optional parameters - # @option opts [Integer] :limit The number of apps to return per page. - # @option opts [Integer] :page The page number to return. - # @option opts [String] :filter_user_name Filter apps by the app creator. Usually the user's email. - # @option opts [UUID] :filter_user_uuid Filter apps by the app creator's UUID. - # @option opts [String] :filter_name Filter by app name. - # @option opts [String] :filter_query Filter apps by the app name or the app creator. - # @option opts [Boolean] :filter_deployed Filter apps by whether they are published. - # @option opts [String] :filter_tags Filter apps by tags. - # @option opts [Boolean] :filter_favorite Filter apps by whether you have added them to your favorites. - # @option opts [Boolean] :filter_self_service Filter apps by whether they are enabled for self-service. - # @option opts [Array] :sort The fields and direction to sort apps by. + # @option opts [Integer] :limit The number of apps to return per page + # @option opts [Integer] :page The page number to return + # @option opts [String] :filter_user_name The `AppsFilter` `user_name`. + # @option opts [String] :filter_user_uuid The `AppsFilter` `user_uuid`. + # @option opts [String] :filter_name The `AppsFilter` `name`. + # @option opts [String] :filter_query The `AppsFilter` `query`. + # @option opts [Boolean] :filter_deployed The `AppsFilter` `deployed`. + # @option opts [String] :filter_tags The `AppsFilter` `tags`. + # @option opts [Boolean] :filter_favorite The `AppsFilter` `favorite`. + # @option opts [Array] :sort # @return [Array<(ListAppsResponse, Integer, Hash)>] ListAppsResponse data, response status code and response headers def list_apps_with_http_info(opts = {}) unstable_enabled = @api_client.config.unstable_operations["v2.list_apps".to_sym] @@ -505,7 +360,6 @@ def list_apps_with_http_info(opts = {}) query_params[:'filter[deployed]'] = opts[:'filter_deployed'] if !opts[:'filter_deployed'].nil? query_params[:'filter[tags]'] = opts[:'filter_tags'] if !opts[:'filter_tags'].nil? query_params[:'filter[favorite]'] = opts[:'filter_favorite'] if !opts[:'filter_favorite'].nil? - query_params[:'filter[self_service]'] = opts[:'filter_self_service'] if !opts[:'filter_self_service'].nil? query_params[:'sort'] = @api_client.build_collection_param(opts[:'sort'], :csv) if !opts[:'sort'].nil? # header parameters diff --git a/lib/datadog_api_client/v2/models/app_builder_error.rb b/lib/datadog_api_client/v2/models/app_builder_error.rb new file mode 100644 index 000000000000..583057f34b40 --- /dev/null +++ b/lib/datadog_api_client/v2/models/app_builder_error.rb @@ -0,0 +1,107 @@ +=begin +#Datadog API V2 Collection + +#Collection of all Datadog Public endpoints. + +The version of the OpenAPI document: 1.0 +Contact: support@datadoghq.com +Generated by: https://github.com/DataDog/datadog-api-client-ruby/tree/master/.generator + + Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. + This product includes software developed at Datadog (https://www.datadoghq.com/). + Copyright 2020-Present Datadog, Inc. + +=end + +require 'date' +require 'time' + +module DatadogAPIClient::V2 + # The definition of `AppBuilderError` object. + class AppBuilderError + include BaseGenericModel + + # The `AppBuilderError` `errors`. + attr_accessor :errors + + attr_accessor :additional_properties + + # Attribute mapping from ruby-style variable name to JSON key. + # @!visibility private + def self.attribute_map + { + :'errors' => :'errors' + } + end + + # Attribute type mapping. + # @!visibility private + def self.openapi_types + { + :'errors' => :'Array' + } + end + + # Initializes the object + # @param attributes [Hash] Model attributes in the form of hash + # @!visibility private + def initialize(attributes = {}) + if (!attributes.is_a?(Hash)) + fail ArgumentError, "The input argument (attributes) must be a hash in `DatadogAPIClient::V2::AppBuilderError` initialize method" + end + + self.additional_properties = {} + # check to see if the attribute exists and convert string to symbol for hash key + attributes = attributes.each_with_object({}) { |(k, v), h| + if (!self.class.attribute_map.key?(k.to_sym)) + self.additional_properties[k.to_sym] = v + else + h[k.to_sym] = v + end + } + + if attributes.key?(:'errors') + if (value = attributes[:'errors']).is_a?(Array) + self.errors = value + end + end + end + + # Returns the object in the form of hash, with additionalProperties support. + # @return [Hash] Returns the object in the form of hash + # @!visibility private + def to_hash + hash = {} + self.class.attribute_map.each_pair do |attr, param| + value = self.send(attr) + if value.nil? + is_nullable = self.class.openapi_nullable.include?(attr) + next if !is_nullable || (is_nullable && !instance_variable_defined?(:"@#{attr}")) + end + + hash[param] = _to_hash(value) + end + self.additional_properties.each_pair do |attr, value| + hash[attr] = value + end + hash + end + + # Checks equality by comparing each attribute. + # @param o [Object] Object to be compared + # @!visibility private + def ==(o) + return true if self.equal?(o) + self.class == o.class && + errors == o.errors && + additional_properties == o.additional_properties + end + + # Calculates hash code according to all attributes. + # @return [Integer] Hash code + # @!visibility private + def hash + [errors, additional_properties].hash + end + end +end diff --git a/lib/datadog_api_client/v2/models/app_builder_error_errors_items.rb b/lib/datadog_api_client/v2/models/app_builder_error_errors_items.rb new file mode 100644 index 000000000000..a29afee0631a --- /dev/null +++ b/lib/datadog_api_client/v2/models/app_builder_error_errors_items.rb @@ -0,0 +1,115 @@ +=begin +#Datadog API V2 Collection + +#Collection of all Datadog Public endpoints. + +The version of the OpenAPI document: 1.0 +Contact: support@datadoghq.com +Generated by: https://github.com/DataDog/datadog-api-client-ruby/tree/master/.generator + + Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. + This product includes software developed at Datadog (https://www.datadoghq.com/). + Copyright 2020-Present Datadog, Inc. + +=end + +require 'date' +require 'time' + +module DatadogAPIClient::V2 + # The definition of `AppBuilderErrorErrorsItems` object. + class AppBuilderErrorErrorsItems + include BaseGenericModel + + # The `items` `detail`. + attr_accessor :detail + + # The definition of `AppBuilderErrorErrorsItemsSource` object. + attr_accessor :source + + attr_accessor :additional_properties + + # Attribute mapping from ruby-style variable name to JSON key. + # @!visibility private + def self.attribute_map + { + :'detail' => :'detail', + :'source' => :'source' + } + end + + # Attribute type mapping. + # @!visibility private + def self.openapi_types + { + :'detail' => :'String', + :'source' => :'AppBuilderErrorErrorsItemsSource' + } + end + + # Initializes the object + # @param attributes [Hash] Model attributes in the form of hash + # @!visibility private + def initialize(attributes = {}) + if (!attributes.is_a?(Hash)) + fail ArgumentError, "The input argument (attributes) must be a hash in `DatadogAPIClient::V2::AppBuilderErrorErrorsItems` initialize method" + end + + self.additional_properties = {} + # check to see if the attribute exists and convert string to symbol for hash key + attributes = attributes.each_with_object({}) { |(k, v), h| + if (!self.class.attribute_map.key?(k.to_sym)) + self.additional_properties[k.to_sym] = v + else + h[k.to_sym] = v + end + } + + if attributes.key?(:'detail') + self.detail = attributes[:'detail'] + end + + if attributes.key?(:'source') + self.source = attributes[:'source'] + end + end + + # Returns the object in the form of hash, with additionalProperties support. + # @return [Hash] Returns the object in the form of hash + # @!visibility private + def to_hash + hash = {} + self.class.attribute_map.each_pair do |attr, param| + value = self.send(attr) + if value.nil? + is_nullable = self.class.openapi_nullable.include?(attr) + next if !is_nullable || (is_nullable && !instance_variable_defined?(:"@#{attr}")) + end + + hash[param] = _to_hash(value) + end + self.additional_properties.each_pair do |attr, value| + hash[attr] = value + end + hash + end + + # Checks equality by comparing each attribute. + # @param o [Object] Object to be compared + # @!visibility private + def ==(o) + return true if self.equal?(o) + self.class == o.class && + detail == o.detail && + source == o.source && + additional_properties == o.additional_properties + end + + # Calculates hash code according to all attributes. + # @return [Integer] Hash code + # @!visibility private + def hash + [detail, source, additional_properties].hash + end + end +end diff --git a/lib/datadog_api_client/v2/models/app_builder_error_errors_items_source.rb b/lib/datadog_api_client/v2/models/app_builder_error_errors_items_source.rb new file mode 100644 index 000000000000..adfcaee5a944 --- /dev/null +++ b/lib/datadog_api_client/v2/models/app_builder_error_errors_items_source.rb @@ -0,0 +1,115 @@ +=begin +#Datadog API V2 Collection + +#Collection of all Datadog Public endpoints. + +The version of the OpenAPI document: 1.0 +Contact: support@datadoghq.com +Generated by: https://github.com/DataDog/datadog-api-client-ruby/tree/master/.generator + + Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. + This product includes software developed at Datadog (https://www.datadoghq.com/). + Copyright 2020-Present Datadog, Inc. + +=end + +require 'date' +require 'time' + +module DatadogAPIClient::V2 + # The definition of `AppBuilderErrorErrorsItemsSource` object. + class AppBuilderErrorErrorsItemsSource + include BaseGenericModel + + # The `source` `parameter`. + attr_accessor :parameter + + # The `source` `pointer`. + attr_accessor :pointer + + attr_accessor :additional_properties + + # Attribute mapping from ruby-style variable name to JSON key. + # @!visibility private + def self.attribute_map + { + :'parameter' => :'parameter', + :'pointer' => :'pointer' + } + end + + # Attribute type mapping. + # @!visibility private + def self.openapi_types + { + :'parameter' => :'String', + :'pointer' => :'String' + } + end + + # Initializes the object + # @param attributes [Hash] Model attributes in the form of hash + # @!visibility private + def initialize(attributes = {}) + if (!attributes.is_a?(Hash)) + fail ArgumentError, "The input argument (attributes) must be a hash in `DatadogAPIClient::V2::AppBuilderErrorErrorsItemsSource` initialize method" + end + + self.additional_properties = {} + # check to see if the attribute exists and convert string to symbol for hash key + attributes = attributes.each_with_object({}) { |(k, v), h| + if (!self.class.attribute_map.key?(k.to_sym)) + self.additional_properties[k.to_sym] = v + else + h[k.to_sym] = v + end + } + + if attributes.key?(:'parameter') + self.parameter = attributes[:'parameter'] + end + + if attributes.key?(:'pointer') + self.pointer = attributes[:'pointer'] + end + end + + # Returns the object in the form of hash, with additionalProperties support. + # @return [Hash] Returns the object in the form of hash + # @!visibility private + def to_hash + hash = {} + self.class.attribute_map.each_pair do |attr, param| + value = self.send(attr) + if value.nil? + is_nullable = self.class.openapi_nullable.include?(attr) + next if !is_nullable || (is_nullable && !instance_variable_defined?(:"@#{attr}")) + end + + hash[param] = _to_hash(value) + end + self.additional_properties.each_pair do |attr, value| + hash[attr] = value + end + hash + end + + # Checks equality by comparing each attribute. + # @param o [Object] Object to be compared + # @!visibility private + def ==(o) + return true if self.equal?(o) + self.class == o.class && + parameter == o.parameter && + pointer == o.pointer && + additional_properties == o.additional_properties + end + + # Calculates hash code according to all attributes. + # @return [Integer] Hash code + # @!visibility private + def hash + [parameter, pointer, additional_properties].hash + end + end +end diff --git a/lib/datadog_api_client/v2/models/app_meta.rb b/lib/datadog_api_client/v2/models/app_meta.rb index 3a6949607f53..25cccb23a84c 100644 --- a/lib/datadog_api_client/v2/models/app_meta.rb +++ b/lib/datadog_api_client/v2/models/app_meta.rb @@ -82,7 +82,7 @@ def self.openapi_types :'updated_since_deployment' => :'Boolean', :'user_id' => :'Integer', :'user_name' => :'String', - :'user_uuid' => :'UUID', + :'user_uuid' => :'String', :'version' => :'Integer' } end diff --git a/lib/datadog_api_client/v2/models/deployment_included_meta.rb b/lib/datadog_api_client/v2/models/deployment_included_meta.rb index 2b267f97458f..f1c20bf0972a 100644 --- a/lib/datadog_api_client/v2/models/deployment_included_meta.rb +++ b/lib/datadog_api_client/v2/models/deployment_included_meta.rb @@ -53,7 +53,7 @@ def self.openapi_types :'created_at' => :'String', :'user_id' => :'Integer', :'user_name' => :'String', - :'user_uuid' => :'UUID' + :'user_uuid' => :'String' } end diff --git a/lib/datadog_api_client/v2/models/deployment_meta.rb b/lib/datadog_api_client/v2/models/deployment_meta.rb index 343c0bbbaaf3..f70765963f74 100644 --- a/lib/datadog_api_client/v2/models/deployment_meta.rb +++ b/lib/datadog_api_client/v2/models/deployment_meta.rb @@ -53,7 +53,7 @@ def self.openapi_types :'created_at' => :'String', :'user_id' => :'Integer', :'user_name' => :'String', - :'user_uuid' => :'UUID' + :'user_uuid' => :'String' } end diff --git a/lib/datadog_api_client/v2/models/deployment_relationship_meta.rb b/lib/datadog_api_client/v2/models/deployment_relationship_meta.rb index 5d75320dab27..0d653a7b6893 100644 --- a/lib/datadog_api_client/v2/models/deployment_relationship_meta.rb +++ b/lib/datadog_api_client/v2/models/deployment_relationship_meta.rb @@ -53,7 +53,7 @@ def self.openapi_types :'created_at' => :'String', :'user_id' => :'Integer', :'user_name' => :'String', - :'user_uuid' => :'UUID' + :'user_uuid' => :'String' } end