diff --git a/.apigentools-info b/.apigentools-info index 7293198860af..5494bc862512 100644 --- a/.apigentools-info +++ b/.apigentools-info @@ -4,13 +4,13 @@ "spec_versions": { "v1": { "apigentools_version": "1.6.6", - "regenerated": "2025-03-03 16:04:33.265804", - "spec_repo_commit": "c17ef1e9" + "regenerated": "2025-03-03 19:12:20.089333", + "spec_repo_commit": "35df584d" }, "v2": { "apigentools_version": "1.6.6", - "regenerated": "2025-03-03 16:04:33.280867", - "spec_repo_commit": "c17ef1e9" + "regenerated": "2025-03-03 19:12:20.104738", + "spec_repo_commit": "35df584d" } } } \ No newline at end of file diff --git a/.generator/schemas/v2/openapi.yaml b/.generator/schemas/v2/openapi.yaml index b86802b46568..df7e73d9c568 100644 --- a/.generator/schemas/v2/openapi.yaml +++ b/.generator/schemas/v2/openapi.yaml @@ -1821,6 +1821,207 @@ components: oneOf: - $ref: '#/components/schemas/AWSIntegrationUpdate' - $ref: '#/components/schemas/HTTPIntegrationUpdate' + ActionQuery: + description: An action query. This query type is used to trigger an action, + such as sending a HTTP request. + properties: + events: + description: Events to listen for downstream of the action query. + items: + $ref: '#/components/schemas/AppBuilderEvent' + type: array + id: + description: The ID of the action query. + example: 65bb1f25-52e1-4510-9f8d-22d1516ed693 + format: uuid + type: string + name: + description: A unique identifier for this action query. This name is also + used to access the query's result throughout the app. + example: fetchPendingOrders + type: string + properties: + $ref: '#/components/schemas/ActionQueryProperties' + type: + $ref: '#/components/schemas/ActionQueryType' + required: + - id + - name + - type + - properties + type: object + ActionQueryCondition: + description: Whether to run this query. If specified, the query will only run + if this condition evaluates to `true` in JavaScript and all other conditions + are also met. + oneOf: + - type: boolean + - example: ${true} + type: string + ActionQueryDebounceInMs: + description: The minimum time in milliseconds that must pass before the query + can be triggered again. This is useful for preventing accidental double-clicks + from triggering the query multiple times. + oneOf: + - example: 310.5 + format: double + type: number + - description: If this is a string, it must be a valid JavaScript expression + that evaluates to a number. + example: ${1000} + type: string + ActionQueryMockedOutputs: + description: The mocked outputs of the action query. This is useful for testing + the app without actually running the action. + oneOf: + - type: string + - $ref: '#/components/schemas/ActionQueryMockedOutputsObject' + ActionQueryMockedOutputsEnabled: + description: Whether to enable the mocked outputs for testing. + oneOf: + - type: boolean + - description: If this is a string, it must be a valid JavaScript expression + that evaluates to a boolean. + example: ${true} + type: string + ActionQueryMockedOutputsObject: + description: The mocked outputs of the action query. + properties: + enabled: + $ref: '#/components/schemas/ActionQueryMockedOutputsEnabled' + outputs: + description: The mocked outputs of the action query, serialized as JSON. + example: '{"status": "success"}' + type: string + required: + - enabled + type: object + ActionQueryOnlyTriggerManually: + description: Determines when this query is executed. If set to `false`, the + query will run when the app loads and whenever any query arguments change. + If set to `true`, the query will only run when manually triggered from elsewhere + in the app. + oneOf: + - type: boolean + - description: If this is a string, it must be a valid JavaScript expression + that evaluates to a boolean. + example: ${true} + type: string + ActionQueryPollingIntervalInMs: + description: If specified, the app will poll the query at the specified interval + in milliseconds. The minimum polling interval is 15 seconds. The query will + only poll when the app's browser tab is active. + oneOf: + - example: 30000.0 + format: double + minimum: 15000.0 + type: number + - description: If this is a string, it must be a valid JavaScript expression + that evaluates to a number. + example: ${15000} + type: string + ActionQueryProperties: + description: The properties of the action query. + properties: + condition: + $ref: '#/components/schemas/ActionQueryCondition' + debounceInMs: + $ref: '#/components/schemas/ActionQueryDebounceInMs' + mockedOutputs: + $ref: '#/components/schemas/ActionQueryMockedOutputs' + onlyTriggerManually: + $ref: '#/components/schemas/ActionQueryOnlyTriggerManually' + outputs: + description: The post-query transformation function, which is a JavaScript + function that changes the query's `.outputs` property after the query's + execution. + example: ${((outputs) => {return outputs.body.data})(self.rawOutputs)} + type: string + pollingIntervalInMs: + $ref: '#/components/schemas/ActionQueryPollingIntervalInMs' + requiresConfirmation: + $ref: '#/components/schemas/ActionQueryRequiresConfirmation' + showToastOnError: + $ref: '#/components/schemas/ActionQueryShowToastOnError' + spec: + $ref: '#/components/schemas/ActionQuerySpec' + required: + - spec + type: object + ActionQueryRequiresConfirmation: + description: Whether to prompt the user to confirm this query before it runs. + oneOf: + - type: boolean + - description: If this is a string, it must be a valid JavaScript expression + that evaluates to a boolean. + example: ${true} + type: string + ActionQueryShowToastOnError: + description: Whether to display a toast to the user when the query returns an + error. + oneOf: + - type: boolean + - description: If this is a string, it must be a valid JavaScript expression + that evaluates to a boolean. + example: ${true} + type: string + ActionQuerySpec: + description: The definition of the action query. + oneOf: + - type: string + - $ref: '#/components/schemas/ActionQuerySpecObject' + ActionQuerySpecConnectionGroup: + description: The connection group to use for an action query. + properties: + id: + description: The ID of the connection group. + example: 65bb1f25-52e1-4510-9f8d-22d1516ed693 + format: uuid + type: string + tags: + description: The tags of the connection group. + items: + type: string + type: array + type: object + ActionQuerySpecInput: + additionalProperties: {} + description: The inputs to the action query. See the [Actions Catalog](https://docs.datadoghq.com/actions/actions_catalog/) + for more detail on each action and its inputs. + type: object + ActionQuerySpecInputs: + description: The inputs to the action query. These are the values that are passed + to the action when it is triggered. + oneOf: + - type: string + - $ref: '#/components/schemas/ActionQuerySpecInput' + ActionQuerySpecObject: + description: The action query spec object. + properties: + connectionGroup: + $ref: '#/components/schemas/ActionQuerySpecConnectionGroup' + connectionId: + description: The ID of the custom connection to use for this action query. + example: 65bb1f25-52e1-4510-9f8d-22d1516ed693 + type: string + fqn: + description: The fully qualified name of the action type. + example: com.datadoghq.http.request + type: string + inputs: + $ref: '#/components/schemas/ActionQuerySpecInputs' + required: + - fqn + type: object + ActionQueryType: + default: action + description: The action query type. + enum: + - action + example: action + type: string + x-enum-varnames: + - ACTION ActiveBillingDimensionsAttributes: description: List of active billing dimensions. properties: @@ -9649,6 +9850,48 @@ components: type: number type: array type: object + DataTransform: + description: A data transformer, which is custom JavaScript code that executes + and transforms data when its inputs change. + properties: + id: + description: The ID of the data transformer. + example: 65bb1f25-52e1-4510-9f8d-22d1516ed693 + format: uuid + type: string + name: + description: A unique identifier for this data transformer. This name is + also used to access the transformer's result throughout the app. + example: combineTwoOrders + type: string + properties: + $ref: '#/components/schemas/DataTransformProperties' + type: + $ref: '#/components/schemas/DataTransformType' + required: + - id + - name + - type + - properties + type: object + DataTransformProperties: + description: The properties of the data transformer. + properties: + outputs: + description: A JavaScript function that returns the transformed data. + example: "${(() => {return {\n allItems: [...fetchOrder1.outputs.items, + ...fetchOrder2.outputs.items],\n}})()}" + type: string + type: object + DataTransformType: + default: dataTransform + description: The data transform type. + enum: + - dataTransform + example: dataTransform + type: string + x-enum-varnames: + - DATATRANSFORM Date: description: Date as Unix timestamp in milliseconds. example: 1722439510282 @@ -21797,34 +22040,12 @@ components: $ref: '#/components/schemas/Deployment' type: object Query: - description: A query used by an app. This can take the form of an external action, - a data transformation, or a state variable change. - properties: - events: - description: Events to listen for downstream of the query. - items: - $ref: '#/components/schemas/AppBuilderEvent' - type: array - id: - description: The ID of the query. - example: 65bb1f25-52e1-4510-9f8d-22d1516ed693 - format: uuid - type: string - name: - description: The name of the query. The name must be unique within the app - and is visible in the app editor. - example: '' - type: string - properties: - description: The properties of the query. The properties vary depending - on the query type. - type: - $ref: '#/components/schemas/QueryType' - required: - - id - - name - - type - type: object + description: A data query used by an app. This can take the form of an external + action, a data transformation, or a state variable. + oneOf: + - $ref: '#/components/schemas/ActionQuery' + - $ref: '#/components/schemas/DataTransform' + - $ref: '#/components/schemas/StateVariable' QueryFormula: description: A formula for calculation based on one or more queries. properties: @@ -21848,18 +22069,6 @@ components: x-enum-varnames: - ASC - DESC - QueryType: - description: The query type. - enum: - - action - - stateVariable - - dataTransform - example: action - type: string - x-enum-varnames: - - ACTION - - STATEVARIABLE - - DATATRANSFORM RUMAggregateBucketValue: description: A bucket value, can be either a timeseries or a single value. oneOf: @@ -29822,6 +30031,46 @@ components: - PASS - FAIL - SKIP + StateVariable: + description: A variable, which can be set and read by other components in the + app. + properties: + id: + description: The ID of the state variable. + example: 65bb1f25-52e1-4510-9f8d-22d1516ed693 + format: uuid + type: string + name: + description: A unique identifier for this state variable. This name is also + used to access the variable's value throughout the app. + example: ordersToSubmit + type: string + properties: + $ref: '#/components/schemas/StateVariableProperties' + type: + $ref: '#/components/schemas/StateVariableType' + required: + - id + - name + - type + - properties + type: object + StateVariableProperties: + description: The properties of the state variable. + properties: + defaultValue: + description: The default value of the state variable. + example: ${['order_3145', 'order_4920']} + type: object + StateVariableType: + default: stateVariable + description: The state variable type. + enum: + - stateVariable + example: stateVariable + type: string + x-enum-varnames: + - STATEVARIABLE Step: description: A Step is a sub-component of a workflow. Each Step performs an action. @@ -33659,8 +33908,6 @@ paths: operator: OR permissions: - apps_write - x-unstable: '**Note**: App Builder API endpoints are still under active development - and might change at any time.' get: description: List all apps, with optional filters and sorting. This endpoint is paginated. Only basic app information such as the app ID, name, and description @@ -33769,8 +34016,6 @@ paths: operator: OR permissions: - apps_run - x-unstable: '**Note**: App Builder API endpoints are still under active development - and might change at any time.' post: description: Create a new app, returning the app ID. operationId: CreateApp @@ -33810,8 +34055,6 @@ paths: - apps_write - connections_resolve - workflows_run - x-unstable: '**Note**: App Builder API endpoints are still under active development - and might change at any time.' /api/v2/app-builder/apps/{app_id}: delete: description: Delete a single app. @@ -33865,8 +34108,6 @@ paths: operator: OR permissions: - apps_write - x-unstable: '**Note**: App Builder API endpoints are still under active development - and might change at any time.' get: description: Get the full definition of an app. operationId: GetApp @@ -33913,6 +34154,12 @@ paths: schema: $ref: '#/components/schemas/JSONAPIErrorResponse' description: Not Found + '410': + content: + application/json: + schema: + $ref: '#/components/schemas/JSONAPIErrorResponse' + description: Gone '429': $ref: '#/components/responses/TooManyRequestsResponse' summary: Get App @@ -33923,8 +34170,6 @@ paths: permissions: - apps_run - connections_read - x-unstable: '**Note**: App Builder API endpoints are still under active development - and might change at any time.' patch: description: Update an existing app. This creates a new version of the app. operationId: UpdateApp @@ -33973,8 +34218,6 @@ paths: - apps_write - connections_resolve - workflows_run - x-unstable: '**Note**: App Builder API endpoints are still under active development - and might change at any time.' /api/v2/app-builder/apps/{app_id}/deployment: delete: description: Unpublish an app, removing the live version of the app. Unpublishing @@ -34025,8 +34268,6 @@ paths: operator: OR permissions: - apps_write - x-unstable: '**Note**: App Builder API endpoints are still under active development - and might change at any time.' post: description: Publish an app for use by other users. To ensure the app is accessible to the correct users, you also need to set a [Restriction Policy](https://docs.datadoghq.com/api/latest/restriction-policies/) @@ -34075,8 +34316,6 @@ paths: operator: OR permissions: - apps_write - x-unstable: '**Note**: App Builder API endpoints are still under active development - and might change at any time.' /api/v2/application_keys: get: description: List all application keys available for your org diff --git a/cassettes/features/v2/app_builder/Create-App-returns-Bad-Request-response.frozen b/cassettes/features/v2/app_builder/Create-App-returns-Bad-Request-response.frozen index f4fed19b3321..2e31f9d19cac 100644 --- a/cassettes/features/v2/app_builder/Create-App-returns-Bad-Request-response.frozen +++ b/cassettes/features/v2/app_builder/Create-App-returns-Bad-Request-response.frozen @@ -1 +1 @@ -2025-01-30T22:30:41.653Z \ No newline at end of file +2025-02-14T16:45:00.619Z \ No newline at end of file diff --git a/cassettes/features/v2/app_builder/Create-App-returns-Bad-Request-response.yml b/cassettes/features/v2/app_builder/Create-App-returns-Bad-Request-response.yml index b3761707677a..02f2370e493b 100644 --- a/cassettes/features/v2/app_builder/Create-App-returns-Bad-Request-response.yml +++ b/cassettes/features/v2/app_builder/Create-App-returns-Bad-Request-response.yml @@ -1,5 +1,5 @@ http_interactions: -- recorded_at: Thu, 30 Jan 2025 22:30:41 GMT +- recorded_at: Fri, 14 Feb 2025 16:45:00 GMT request: body: encoding: UTF-8 diff --git a/cassettes/features/v2/app_builder/Create-App-returns-Created-response.frozen b/cassettes/features/v2/app_builder/Create-App-returns-Created-response.frozen index e194fa4dff04..95773bb71052 100644 --- a/cassettes/features/v2/app_builder/Create-App-returns-Created-response.frozen +++ b/cassettes/features/v2/app_builder/Create-App-returns-Created-response.frozen @@ -1 +1 @@ -2025-01-30T22:30:41.765Z \ No newline at end of file +2025-02-14T16:45:00.807Z \ No newline at end of file diff --git a/cassettes/features/v2/app_builder/Create-App-returns-Created-response.yml b/cassettes/features/v2/app_builder/Create-App-returns-Created-response.yml index f3342b411de3..378d3917240e 100644 --- a/cassettes/features/v2/app_builder/Create-App-returns-Created-response.yml +++ b/cassettes/features/v2/app_builder/Create-App-returns-Created-response.yml @@ -1,11 +1,21 @@ http_interactions: -- recorded_at: Thu, 30 Jan 2025 22:30:41 GMT +- recorded_at: Fri, 14 Feb 2025 16:45:00 GMT request: body: encoding: UTF-8 - string: '{"data":{"attributes":{"components":[{"events":[],"name":"grid0","properties":{"children":[{"events":[],"name":"gridCell0","properties":{"children":[{"events":[],"name":"calloutValue0","properties":{"isLoading":false,"isUnpublishd":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","name":"Example App","queries":[],"rootInstanceName":"grid0"},"type":"appDefinitions"}}' + string: '{"data":{"attributes":{"components":[{"events":[],"name":"grid0","properties":{"backgroundColor":"default","children":[{"events":[],"name":"gridCell0","properties":{"children":[{"events":[],"name":"text0","properties":{"content":"# + Cat Facts","contentType":"markdown","isVisible":true,"textAlign":"left","verticalAlign":"top"},"type":"text"}],"isVisible":"true","layout":{"default":{"height":5,"width":4,"x":0,"y":0}}},"type":"gridCell"},{"events":[],"name":"gridCell2","properties":{"children":[{"events":[],"name":"table0","properties":{"columns":[{"dataPath":"fact","header":"fact","id":"0ae2ae9e-0280-4389-83c6-1c5949f7e674","isHidden":false},{"dataPath":"length","header":"length","id":"c9048611-0196-4a00-9366-1ef9e3ec0408","isHidden":true},{"dataPath":"Due + Date","disableSortBy":false,"formatter":{"format":"LARGE_WITHOUT_TIME","type":"formatted_time"},"header":"Unused + Old Column","id":"8fa9284b-7a58-4f13-9959-57b7d8a7fe8f","isDeleted":true}],"data":"${fetchFacts?.outputs?.body?.data}","globalFilter":false,"isLoading":"${fetchFacts?.isLoading}","isScrollable":"vertical","isSubRowsEnabled":false,"isVisible":true,"isWrappable":false,"pageSize":"${pageSize?.value}","paginationType":"server_side","rowButtons":[],"summary":true,"totalCount":"${fetchFacts?.outputs?.body?.total}"},"type":"table"}],"isVisible":"true","layout":{"default":{"height":96,"width":12,"x":0,"y":5}}},"type":"gridCell"},{"events":[],"name":"gridCell1","properties":{"children":[{"events":[],"name":"text1","properties":{"content":"## + Random Fact\n\n${randomFact?.outputs?.fact}","contentType":"markdown","isVisible":true,"textAlign":"left","verticalAlign":"top"},"type":"text"}],"isVisible":"true","layout":{"default":{"height":16,"width":12,"x":0,"y":101}}},"type":"gridCell"},{"events":[],"name":"gridCell3","properties":{"children":[{"events":[{"name":"click","type":"setStateVariableValue","value":"${pageSize?.value + + 1}","variableName":"pageSize"}],"name":"button0","properties":{"iconLeft":"angleUp","iconRight":"","isBorderless":false,"isDisabled":false,"isLoading":false,"isPrimary":true,"isVisible":true,"label":"Increase + Page Size","level":"default"},"type":"button"}],"isVisible":"true","layout":{"default":{"height":4,"width":2,"x":10,"y":134}}},"type":"gridCell"},{"events":[],"name":"gridCell4","properties":{"children":[{"events":[{"name":"click","type":"setStateVariableValue","value":"${pageSize?.value + - 1}","variableName":"pageSize"}],"name":"button1","properties":{"iconLeft":"angleDown","iconRight":"","isBorderless":false,"isDisabled":false,"isLoading":false,"isPrimary":true,"isVisible":true,"label":"Decrease + Page Size","level":"default"},"type":"button"}],"isVisible":"true","layout":{"default":{"height":4,"width":2,"x":10,"y":138}}},"type":"gridCell"}]},"type":"grid"}],"description":"This + is a slightly complicated example app that fetches and displays cat facts","name":"Example + Cat Facts Viewer","queries":[{"events":[],"id":"92ff0bb8-553b-4f31-87c7-ef5bd16d47d5","name":"fetchFacts","properties":{"spec":{"connectionId":"5e63f4a8-4ce6-47de-ba11-f6617c1d54f3","fqn":"com.datadoghq.http.request","inputs":{"url":"https://catfact.ninja/facts","urlParams":[{"key":"limit","value":"${pageSize.value.toString()}"},{"key":"page","value":"${(table0.pageIndex + + 1).toString()}"}],"verb":"GET"}}},"type":"action"},{"id":"afd03c81-4075-4432-8618-ba09d52d2f2d","name":"pageSize","properties":{"defaultValue":"${20}"},"type":"stateVariable"},{"id":"0fb22859-47dc-4137-9e41-7b67d04c525c","name":"randomFact","properties":{"outputs":"${(() + => {const facts = fetchFacts.outputs.body.data\nreturn facts[Math.floor(Math.random()*facts.length)]\n})()}"},"type":"dataTransform"}],"rootInstanceName":"grid0"},"type":"appDefinitions"}}' headers: Accept: - application/json @@ -16,25 +26,25 @@ http_interactions: response: body: encoding: UTF-8 - string: '{"data":{"id":"444afc7d-6572-42eb-b655-b8763ba2d032","type":"appDefinitions"}}' + string: '{"data":{"id":"b6becff0-4703-4724-b92a-1445df194b75","type":"appDefinitions"}}' headers: Content-Type: - application/vnd.api+json status: code: 201 message: Created -- recorded_at: Thu, 30 Jan 2025 22:30:41 GMT +- recorded_at: Fri, 14 Feb 2025 16:45:00 GMT request: body: null headers: Accept: - application/json method: DELETE - uri: https://api.datadoghq.com/api/v2/app-builder/apps/444afc7d-6572-42eb-b655-b8763ba2d032 + uri: https://api.datadoghq.com/api/v2/app-builder/apps/b6becff0-4703-4724-b92a-1445df194b75 response: body: encoding: UTF-8 - string: '{"data":{"id":"444afc7d-6572-42eb-b655-b8763ba2d032","type":"appDefinitions"}}' + string: '{"data":{"id":"b6becff0-4703-4724-b92a-1445df194b75","type":"appDefinitions"}}' headers: Content-Type: - application/vnd.api+json diff --git a/cassettes/features/v2/app_builder/Delete-App-returns-Not-Found-response.frozen b/cassettes/features/v2/app_builder/Delete-App-returns-Not-Found-response.frozen index d59753b20fa2..cc2b30020a0d 100644 --- a/cassettes/features/v2/app_builder/Delete-App-returns-Not-Found-response.frozen +++ b/cassettes/features/v2/app_builder/Delete-App-returns-Not-Found-response.frozen @@ -1 +1 @@ -2025-01-30T22:30:42.199Z \ No newline at end of file +2025-02-14T16:45:01.264Z \ No newline at end of file diff --git a/cassettes/features/v2/app_builder/Delete-App-returns-Not-Found-response.yml b/cassettes/features/v2/app_builder/Delete-App-returns-Not-Found-response.yml index 46a1fcaaea51..ae0b2e36d310 100644 --- a/cassettes/features/v2/app_builder/Delete-App-returns-Not-Found-response.yml +++ b/cassettes/features/v2/app_builder/Delete-App-returns-Not-Found-response.yml @@ -1,5 +1,5 @@ http_interactions: -- recorded_at: Thu, 30 Jan 2025 22:30:42 GMT +- recorded_at: Fri, 14 Feb 2025 16:45:01 GMT request: body: null headers: diff --git a/cassettes/features/v2/app_builder/Delete-App-returns-OK-response.frozen b/cassettes/features/v2/app_builder/Delete-App-returns-OK-response.frozen index 8d71c0bb47c3..5b85436cbc78 100644 --- a/cassettes/features/v2/app_builder/Delete-App-returns-OK-response.frozen +++ b/cassettes/features/v2/app_builder/Delete-App-returns-OK-response.frozen @@ -1 +1 @@ -2025-01-30T22:30:42.276Z \ No newline at end of file +2025-02-14T16:45:01.358Z \ No newline at end of file diff --git a/cassettes/features/v2/app_builder/Delete-App-returns-OK-response.yml b/cassettes/features/v2/app_builder/Delete-App-returns-OK-response.yml index 4d3a5e3b84e8..6c42919e76a4 100644 --- a/cassettes/features/v2/app_builder/Delete-App-returns-OK-response.yml +++ b/cassettes/features/v2/app_builder/Delete-App-returns-OK-response.yml @@ -1,11 +1,21 @@ http_interactions: -- recorded_at: Thu, 30 Jan 2025 22:30:42 GMT +- recorded_at: Fri, 14 Feb 2025 16:45:01 GMT request: body: encoding: UTF-8 - string: '{"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","name":"Example App","queries":[],"rootInstanceName":"grid0"},"type":"appDefinitions"}}' + string: '{"data":{"attributes":{"components":[{"events":[],"name":"grid0","properties":{"backgroundColor":"default","children":[{"events":[],"name":"gridCell0","properties":{"children":[{"events":[],"name":"text0","properties":{"content":"# + Cat Facts","contentType":"markdown","isVisible":true,"textAlign":"left","verticalAlign":"top"},"type":"text"}],"isVisible":"true","layout":{"default":{"height":5,"width":4,"x":0,"y":0}}},"type":"gridCell"},{"events":[],"name":"gridCell2","properties":{"children":[{"events":[],"name":"table0","properties":{"columns":[{"dataPath":"fact","header":"fact","id":"0ae2ae9e-0280-4389-83c6-1c5949f7e674","isHidden":false},{"dataPath":"length","header":"length","id":"c9048611-0196-4a00-9366-1ef9e3ec0408","isHidden":true},{"dataPath":"Due + Date","disableSortBy":false,"formatter":{"format":"LARGE_WITHOUT_TIME","type":"formatted_time"},"header":"Unused + Old Column","id":"8fa9284b-7a58-4f13-9959-57b7d8a7fe8f","isDeleted":true}],"data":"${fetchFacts?.outputs?.body?.data}","globalFilter":false,"isLoading":"${fetchFacts?.isLoading}","isScrollable":"vertical","isSubRowsEnabled":false,"isVisible":true,"isWrappable":false,"pageSize":"${pageSize?.value}","paginationType":"server_side","rowButtons":[],"summary":true,"totalCount":"${fetchFacts?.outputs?.body?.total}"},"type":"table"}],"isVisible":"true","layout":{"default":{"height":96,"width":12,"x":0,"y":5}}},"type":"gridCell"},{"events":[],"name":"gridCell1","properties":{"children":[{"events":[],"name":"text1","properties":{"content":"## + Random Fact\n\n${randomFact?.outputs?.fact}","contentType":"markdown","isVisible":true,"textAlign":"left","verticalAlign":"top"},"type":"text"}],"isVisible":"true","layout":{"default":{"height":16,"width":12,"x":0,"y":101}}},"type":"gridCell"},{"events":[],"name":"gridCell3","properties":{"children":[{"events":[{"name":"click","type":"setStateVariableValue","value":"${pageSize?.value + + 1}","variableName":"pageSize"}],"name":"button0","properties":{"iconLeft":"angleUp","iconRight":"","isBorderless":false,"isDisabled":false,"isLoading":false,"isPrimary":true,"isVisible":true,"label":"Increase + Page Size","level":"default"},"type":"button"}],"isVisible":"true","layout":{"default":{"height":4,"width":2,"x":10,"y":134}}},"type":"gridCell"},{"events":[],"name":"gridCell4","properties":{"children":[{"events":[{"name":"click","type":"setStateVariableValue","value":"${pageSize?.value + - 1}","variableName":"pageSize"}],"name":"button1","properties":{"iconLeft":"angleDown","iconRight":"","isBorderless":false,"isDisabled":false,"isLoading":false,"isPrimary":true,"isVisible":true,"label":"Decrease + Page Size","level":"default"},"type":"button"}],"isVisible":"true","layout":{"default":{"height":4,"width":2,"x":10,"y":138}}},"type":"gridCell"}]},"type":"grid"}],"description":"This + is a slightly complicated example app that fetches and displays cat facts","name":"Example + Cat Facts Viewer","queries":[{"events":[],"id":"92ff0bb8-553b-4f31-87c7-ef5bd16d47d5","name":"fetchFacts","properties":{"spec":{"connectionId":"5e63f4a8-4ce6-47de-ba11-f6617c1d54f3","fqn":"com.datadoghq.http.request","inputs":{"url":"https://catfact.ninja/facts","urlParams":[{"key":"limit","value":"${pageSize.value.toString()}"},{"key":"page","value":"${(table0.pageIndex + + 1).toString()}"}],"verb":"GET"}}},"type":"action"},{"id":"afd03c81-4075-4432-8618-ba09d52d2f2d","name":"pageSize","properties":{"defaultValue":"${20}"},"type":"stateVariable"},{"id":"0fb22859-47dc-4137-9e41-7b67d04c525c","name":"randomFact","properties":{"outputs":"${(() + => {const facts = fetchFacts.outputs.body.data\nreturn facts[Math.floor(Math.random()*facts.length)]\n})()}"},"type":"dataTransform"}],"rootInstanceName":"grid0"},"type":"appDefinitions"}}' headers: Accept: - application/json @@ -16,39 +26,39 @@ http_interactions: response: body: encoding: UTF-8 - string: '{"data":{"id":"6d05b89a-db5e-4f7d-aa03-26ccd05be44e","type":"appDefinitions"}}' + string: '{"data":{"id":"de4f1fa8-bd84-4d67-a245-507a500f12e1","type":"appDefinitions"}}' headers: Content-Type: - application/vnd.api+json status: code: 201 message: Created -- recorded_at: Thu, 30 Jan 2025 22:30:42 GMT +- recorded_at: Fri, 14 Feb 2025 16:45:01 GMT request: body: null headers: Accept: - application/json method: DELETE - uri: https://api.datadoghq.com/api/v2/app-builder/apps/6d05b89a-db5e-4f7d-aa03-26ccd05be44e + uri: https://api.datadoghq.com/api/v2/app-builder/apps/de4f1fa8-bd84-4d67-a245-507a500f12e1 response: body: encoding: UTF-8 - string: '{"data":{"id":"6d05b89a-db5e-4f7d-aa03-26ccd05be44e","type":"appDefinitions"}}' + string: '{"data":{"id":"de4f1fa8-bd84-4d67-a245-507a500f12e1","type":"appDefinitions"}}' headers: Content-Type: - application/vnd.api+json status: code: 200 message: OK -- recorded_at: Thu, 30 Jan 2025 22:30:42 GMT +- recorded_at: Fri, 14 Feb 2025 16:45:01 GMT request: body: null headers: Accept: - application/json method: DELETE - uri: https://api.datadoghq.com/api/v2/app-builder/apps/6d05b89a-db5e-4f7d-aa03-26ccd05be44e + uri: https://api.datadoghq.com/api/v2/app-builder/apps/de4f1fa8-bd84-4d67-a245-507a500f12e1 response: body: encoding: UTF-8 diff --git a/cassettes/features/v2/app_builder/Delete-Multiple-Apps-returns-Not-Found-response.frozen b/cassettes/features/v2/app_builder/Delete-Multiple-Apps-returns-Not-Found-response.frozen index 1e20d6bc1e24..76f15202eade 100644 --- a/cassettes/features/v2/app_builder/Delete-Multiple-Apps-returns-Not-Found-response.frozen +++ b/cassettes/features/v2/app_builder/Delete-Multiple-Apps-returns-Not-Found-response.frozen @@ -1 +1 @@ -2025-01-30T22:30:42.693Z \ No newline at end of file +2025-02-14T16:45:01.993Z \ No newline at end of file diff --git a/cassettes/features/v2/app_builder/Delete-Multiple-Apps-returns-Not-Found-response.yml b/cassettes/features/v2/app_builder/Delete-Multiple-Apps-returns-Not-Found-response.yml index fd86a8dbac09..cabea41d79fc 100644 --- a/cassettes/features/v2/app_builder/Delete-Multiple-Apps-returns-Not-Found-response.yml +++ b/cassettes/features/v2/app_builder/Delete-Multiple-Apps-returns-Not-Found-response.yml @@ -1,5 +1,5 @@ http_interactions: -- recorded_at: Thu, 30 Jan 2025 22:30:42 GMT +- recorded_at: Fri, 14 Feb 2025 16:45:01 GMT request: body: encoding: UTF-8 diff --git a/cassettes/features/v2/app_builder/Delete-Multiple-Apps-returns-OK-response.frozen b/cassettes/features/v2/app_builder/Delete-Multiple-Apps-returns-OK-response.frozen index d5d8aa92f4bb..54cb3a20fe02 100644 --- a/cassettes/features/v2/app_builder/Delete-Multiple-Apps-returns-OK-response.frozen +++ b/cassettes/features/v2/app_builder/Delete-Multiple-Apps-returns-OK-response.frozen @@ -1 +1 @@ -2025-01-30T22:30:42.770Z \ No newline at end of file +2025-02-14T16:45:02.105Z \ No newline at end of file diff --git a/cassettes/features/v2/app_builder/Delete-Multiple-Apps-returns-OK-response.yml b/cassettes/features/v2/app_builder/Delete-Multiple-Apps-returns-OK-response.yml index f3f61aa9d8c0..76f02ee51020 100644 --- a/cassettes/features/v2/app_builder/Delete-Multiple-Apps-returns-OK-response.yml +++ b/cassettes/features/v2/app_builder/Delete-Multiple-Apps-returns-OK-response.yml @@ -1,11 +1,21 @@ http_interactions: -- recorded_at: Thu, 30 Jan 2025 22:30:42 GMT +- recorded_at: Fri, 14 Feb 2025 16:45:02 GMT request: body: encoding: UTF-8 - string: '{"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","name":"Example App","queries":[],"rootInstanceName":"grid0"},"type":"appDefinitions"}}' + string: '{"data":{"attributes":{"components":[{"events":[],"name":"grid0","properties":{"backgroundColor":"default","children":[{"events":[],"name":"gridCell0","properties":{"children":[{"events":[],"name":"text0","properties":{"content":"# + Cat Facts","contentType":"markdown","isVisible":true,"textAlign":"left","verticalAlign":"top"},"type":"text"}],"isVisible":"true","layout":{"default":{"height":5,"width":4,"x":0,"y":0}}},"type":"gridCell"},{"events":[],"name":"gridCell2","properties":{"children":[{"events":[],"name":"table0","properties":{"columns":[{"dataPath":"fact","header":"fact","id":"0ae2ae9e-0280-4389-83c6-1c5949f7e674","isHidden":false},{"dataPath":"length","header":"length","id":"c9048611-0196-4a00-9366-1ef9e3ec0408","isHidden":true},{"dataPath":"Due + Date","disableSortBy":false,"formatter":{"format":"LARGE_WITHOUT_TIME","type":"formatted_time"},"header":"Unused + Old Column","id":"8fa9284b-7a58-4f13-9959-57b7d8a7fe8f","isDeleted":true}],"data":"${fetchFacts?.outputs?.body?.data}","globalFilter":false,"isLoading":"${fetchFacts?.isLoading}","isScrollable":"vertical","isSubRowsEnabled":false,"isVisible":true,"isWrappable":false,"pageSize":"${pageSize?.value}","paginationType":"server_side","rowButtons":[],"summary":true,"totalCount":"${fetchFacts?.outputs?.body?.total}"},"type":"table"}],"isVisible":"true","layout":{"default":{"height":96,"width":12,"x":0,"y":5}}},"type":"gridCell"},{"events":[],"name":"gridCell1","properties":{"children":[{"events":[],"name":"text1","properties":{"content":"## + Random Fact\n\n${randomFact?.outputs?.fact}","contentType":"markdown","isVisible":true,"textAlign":"left","verticalAlign":"top"},"type":"text"}],"isVisible":"true","layout":{"default":{"height":16,"width":12,"x":0,"y":101}}},"type":"gridCell"},{"events":[],"name":"gridCell3","properties":{"children":[{"events":[{"name":"click","type":"setStateVariableValue","value":"${pageSize?.value + + 1}","variableName":"pageSize"}],"name":"button0","properties":{"iconLeft":"angleUp","iconRight":"","isBorderless":false,"isDisabled":false,"isLoading":false,"isPrimary":true,"isVisible":true,"label":"Increase + Page Size","level":"default"},"type":"button"}],"isVisible":"true","layout":{"default":{"height":4,"width":2,"x":10,"y":134}}},"type":"gridCell"},{"events":[],"name":"gridCell4","properties":{"children":[{"events":[{"name":"click","type":"setStateVariableValue","value":"${pageSize?.value + - 1}","variableName":"pageSize"}],"name":"button1","properties":{"iconLeft":"angleDown","iconRight":"","isBorderless":false,"isDisabled":false,"isLoading":false,"isPrimary":true,"isVisible":true,"label":"Decrease + Page Size","level":"default"},"type":"button"}],"isVisible":"true","layout":{"default":{"height":4,"width":2,"x":10,"y":138}}},"type":"gridCell"}]},"type":"grid"}],"description":"This + is a slightly complicated example app that fetches and displays cat facts","name":"Example + Cat Facts Viewer","queries":[{"events":[],"id":"92ff0bb8-553b-4f31-87c7-ef5bd16d47d5","name":"fetchFacts","properties":{"spec":{"connectionId":"5e63f4a8-4ce6-47de-ba11-f6617c1d54f3","fqn":"com.datadoghq.http.request","inputs":{"url":"https://catfact.ninja/facts","urlParams":[{"key":"limit","value":"${pageSize.value.toString()}"},{"key":"page","value":"${(table0.pageIndex + + 1).toString()}"}],"verb":"GET"}}},"type":"action"},{"id":"afd03c81-4075-4432-8618-ba09d52d2f2d","name":"pageSize","properties":{"defaultValue":"${20}"},"type":"stateVariable"},{"id":"0fb22859-47dc-4137-9e41-7b67d04c525c","name":"randomFact","properties":{"outputs":"${(() + => {const facts = fetchFacts.outputs.body.data\nreturn facts[Math.floor(Math.random()*facts.length)]\n})()}"},"type":"dataTransform"}],"rootInstanceName":"grid0"},"type":"appDefinitions"}}' headers: Accept: - application/json @@ -16,18 +26,18 @@ http_interactions: response: body: encoding: UTF-8 - string: '{"data":{"id":"91f80f89-33dc-4311-93fe-b4936275bc74","type":"appDefinitions"}}' + string: '{"data":{"id":"f33597bb-5c91-497c-ba26-68b7493905c0","type":"appDefinitions"}}' headers: Content-Type: - application/vnd.api+json status: code: 201 message: Created -- recorded_at: Thu, 30 Jan 2025 22:30:42 GMT +- recorded_at: Fri, 14 Feb 2025 16:45:02 GMT request: body: encoding: UTF-8 - string: '{"data":[{"id":"91f80f89-33dc-4311-93fe-b4936275bc74","type":"appDefinitions"}]}' + string: '{"data":[{"id":"f33597bb-5c91-497c-ba26-68b7493905c0","type":"appDefinitions"}]}' headers: Accept: - application/json @@ -38,21 +48,21 @@ http_interactions: response: body: encoding: UTF-8 - string: '{"data":[{"id":"91f80f89-33dc-4311-93fe-b4936275bc74","type":"appDefinitions"}]}' + string: '{"data":[{"id":"f33597bb-5c91-497c-ba26-68b7493905c0","type":"appDefinitions"}]}' headers: Content-Type: - application/vnd.api+json status: code: 200 message: OK -- recorded_at: Thu, 30 Jan 2025 22:30:42 GMT +- recorded_at: Fri, 14 Feb 2025 16:45:02 GMT request: body: null headers: Accept: - application/json method: DELETE - uri: https://api.datadoghq.com/api/v2/app-builder/apps/91f80f89-33dc-4311-93fe-b4936275bc74 + uri: https://api.datadoghq.com/api/v2/app-builder/apps/f33597bb-5c91-497c-ba26-68b7493905c0 response: body: encoding: UTF-8 diff --git a/cassettes/features/v2/app_builder/Get-App-returns-Gone-response.frozen b/cassettes/features/v2/app_builder/Get-App-returns-Gone-response.frozen new file mode 100644 index 000000000000..d2e79599e8a5 --- /dev/null +++ b/cassettes/features/v2/app_builder/Get-App-returns-Gone-response.frozen @@ -0,0 +1 @@ +2025-02-14T16:45:02.544Z \ No newline at end of file diff --git a/cassettes/features/v2/app_builder/Get-App-returns-Gone-response.yml b/cassettes/features/v2/app_builder/Get-App-returns-Gone-response.yml new file mode 100644 index 000000000000..5d99ff2fcd9d --- /dev/null +++ b/cassettes/features/v2/app_builder/Get-App-returns-Gone-response.yml @@ -0,0 +1,72 @@ +http_interactions: +- recorded_at: Fri, 14 Feb 2025 16:45:02 GMT + request: + body: + encoding: UTF-8 + string: '{"data":{"attributes":{"components":[{"events":[],"name":"grid0","properties":{"backgroundColor":"default","children":[{"events":[],"name":"gridCell0","properties":{"children":[{"events":[],"name":"text0","properties":{"content":"# + Cat Facts","contentType":"markdown","isVisible":true,"textAlign":"left","verticalAlign":"top"},"type":"text"}],"isVisible":"true","layout":{"default":{"height":5,"width":4,"x":0,"y":0}}},"type":"gridCell"},{"events":[],"name":"gridCell2","properties":{"children":[{"events":[],"name":"table0","properties":{"columns":[{"dataPath":"fact","header":"fact","id":"0ae2ae9e-0280-4389-83c6-1c5949f7e674","isHidden":false},{"dataPath":"length","header":"length","id":"c9048611-0196-4a00-9366-1ef9e3ec0408","isHidden":true},{"dataPath":"Due + Date","disableSortBy":false,"formatter":{"format":"LARGE_WITHOUT_TIME","type":"formatted_time"},"header":"Unused + Old Column","id":"8fa9284b-7a58-4f13-9959-57b7d8a7fe8f","isDeleted":true}],"data":"${fetchFacts?.outputs?.body?.data}","globalFilter":false,"isLoading":"${fetchFacts?.isLoading}","isScrollable":"vertical","isSubRowsEnabled":false,"isVisible":true,"isWrappable":false,"pageSize":"${pageSize?.value}","paginationType":"server_side","rowButtons":[],"summary":true,"totalCount":"${fetchFacts?.outputs?.body?.total}"},"type":"table"}],"isVisible":"true","layout":{"default":{"height":96,"width":12,"x":0,"y":5}}},"type":"gridCell"},{"events":[],"name":"gridCell1","properties":{"children":[{"events":[],"name":"text1","properties":{"content":"## + Random Fact\n\n${randomFact?.outputs?.fact}","contentType":"markdown","isVisible":true,"textAlign":"left","verticalAlign":"top"},"type":"text"}],"isVisible":"true","layout":{"default":{"height":16,"width":12,"x":0,"y":101}}},"type":"gridCell"},{"events":[],"name":"gridCell3","properties":{"children":[{"events":[{"name":"click","type":"setStateVariableValue","value":"${pageSize?.value + + 1}","variableName":"pageSize"}],"name":"button0","properties":{"iconLeft":"angleUp","iconRight":"","isBorderless":false,"isDisabled":false,"isLoading":false,"isPrimary":true,"isVisible":true,"label":"Increase + Page Size","level":"default"},"type":"button"}],"isVisible":"true","layout":{"default":{"height":4,"width":2,"x":10,"y":134}}},"type":"gridCell"},{"events":[],"name":"gridCell4","properties":{"children":[{"events":[{"name":"click","type":"setStateVariableValue","value":"${pageSize?.value + - 1}","variableName":"pageSize"}],"name":"button1","properties":{"iconLeft":"angleDown","iconRight":"","isBorderless":false,"isDisabled":false,"isLoading":false,"isPrimary":true,"isVisible":true,"label":"Decrease + Page Size","level":"default"},"type":"button"}],"isVisible":"true","layout":{"default":{"height":4,"width":2,"x":10,"y":138}}},"type":"gridCell"}]},"type":"grid"}],"description":"This + is a slightly complicated example app that fetches and displays cat facts","name":"Example + Cat Facts Viewer","queries":[{"events":[],"id":"92ff0bb8-553b-4f31-87c7-ef5bd16d47d5","name":"fetchFacts","properties":{"spec":{"connectionId":"5e63f4a8-4ce6-47de-ba11-f6617c1d54f3","fqn":"com.datadoghq.http.request","inputs":{"url":"https://catfact.ninja/facts","urlParams":[{"key":"limit","value":"${pageSize.value.toString()}"},{"key":"page","value":"${(table0.pageIndex + + 1).toString()}"}],"verb":"GET"}}},"type":"action"},{"id":"afd03c81-4075-4432-8618-ba09d52d2f2d","name":"pageSize","properties":{"defaultValue":"${20}"},"type":"stateVariable"},{"id":"0fb22859-47dc-4137-9e41-7b67d04c525c","name":"randomFact","properties":{"outputs":"${(() + => {const facts = fetchFacts.outputs.body.data\nreturn facts[Math.floor(Math.random()*facts.length)]\n})()}"},"type":"dataTransform"}],"rootInstanceName":"grid0"},"type":"appDefinitions"}}' + headers: + Accept: + - application/json + Content-Type: + - application/json + method: POST + uri: https://api.datadoghq.com/api/v2/app-builder/apps + response: + body: + encoding: UTF-8 + string: '{"data":{"id":"84b262f9-ae08-4be9-9050-93ff89ccd474","type":"appDefinitions"}}' + headers: + Content-Type: + - application/vnd.api+json + status: + code: 201 + message: Created +- recorded_at: Fri, 14 Feb 2025 16:45:02 GMT + request: + body: null + headers: + Accept: + - application/json + method: GET + uri: https://api.datadoghq.com/api/v2/app-builder/apps/84b262f9-ae08-4be9-9050-93ff89ccd474?version=31 + response: + body: + encoding: UTF-8 + string: '{"errors":[{"title":"app version not found"}]}' + headers: + Content-Type: + - application/vnd.api+json + status: + code: 410 + message: Gone +- recorded_at: Fri, 14 Feb 2025 16:45:02 GMT + request: + body: null + headers: + Accept: + - application/json + method: DELETE + uri: https://api.datadoghq.com/api/v2/app-builder/apps/84b262f9-ae08-4be9-9050-93ff89ccd474 + response: + body: + encoding: UTF-8 + string: '{"data":{"id":"84b262f9-ae08-4be9-9050-93ff89ccd474","type":"appDefinitions"}}' + headers: + Content-Type: + - application/vnd.api+json + status: + code: 200 + message: OK +recorded_with: VCR 6.0.0 diff --git a/cassettes/features/v2/app_builder/Get-App-returns-Not-Found-response.frozen b/cassettes/features/v2/app_builder/Get-App-returns-Not-Found-response.frozen index 6c7b9a9df98d..f5cb3f69de0c 100644 --- a/cassettes/features/v2/app_builder/Get-App-returns-Not-Found-response.frozen +++ b/cassettes/features/v2/app_builder/Get-App-returns-Not-Found-response.frozen @@ -1 +1 @@ -2025-01-30T22:30:43.135Z \ No newline at end of file +2025-02-14T16:45:03.071Z \ No newline at end of file diff --git a/cassettes/features/v2/app_builder/Get-App-returns-Not-Found-response.yml b/cassettes/features/v2/app_builder/Get-App-returns-Not-Found-response.yml index ce2df79b8a19..cde72a4e4e08 100644 --- a/cassettes/features/v2/app_builder/Get-App-returns-Not-Found-response.yml +++ b/cassettes/features/v2/app_builder/Get-App-returns-Not-Found-response.yml @@ -1,5 +1,5 @@ http_interactions: -- recorded_at: Thu, 30 Jan 2025 22:30:43 GMT +- recorded_at: Fri, 14 Feb 2025 16:45:03 GMT request: body: null headers: diff --git a/cassettes/features/v2/app_builder/Get-App-returns-OK-response.frozen b/cassettes/features/v2/app_builder/Get-App-returns-OK-response.frozen index bf7c9e277ef2..485ec95c385a 100644 --- a/cassettes/features/v2/app_builder/Get-App-returns-OK-response.frozen +++ b/cassettes/features/v2/app_builder/Get-App-returns-OK-response.frozen @@ -1 +1 @@ -2025-01-30T22:30:43.220Z \ No newline at end of file +2025-02-14T16:45:03.186Z \ No newline at end of file diff --git a/cassettes/features/v2/app_builder/Get-App-returns-OK-response.yml b/cassettes/features/v2/app_builder/Get-App-returns-OK-response.yml index cdf8db00ef99..94f6e61ff96e 100644 --- a/cassettes/features/v2/app_builder/Get-App-returns-OK-response.yml +++ b/cassettes/features/v2/app_builder/Get-App-returns-OK-response.yml @@ -1,11 +1,21 @@ http_interactions: -- recorded_at: Thu, 30 Jan 2025 22:30:43 GMT +- recorded_at: Fri, 14 Feb 2025 16:45:03 GMT request: body: encoding: UTF-8 - string: '{"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","name":"Example App","queries":[],"rootInstanceName":"grid0"},"type":"appDefinitions"}}' + string: '{"data":{"attributes":{"components":[{"events":[],"name":"grid0","properties":{"backgroundColor":"default","children":[{"events":[],"name":"gridCell0","properties":{"children":[{"events":[],"name":"text0","properties":{"content":"# + Cat Facts","contentType":"markdown","isVisible":true,"textAlign":"left","verticalAlign":"top"},"type":"text"}],"isVisible":"true","layout":{"default":{"height":5,"width":4,"x":0,"y":0}}},"type":"gridCell"},{"events":[],"name":"gridCell2","properties":{"children":[{"events":[],"name":"table0","properties":{"columns":[{"dataPath":"fact","header":"fact","id":"0ae2ae9e-0280-4389-83c6-1c5949f7e674","isHidden":false},{"dataPath":"length","header":"length","id":"c9048611-0196-4a00-9366-1ef9e3ec0408","isHidden":true},{"dataPath":"Due + Date","disableSortBy":false,"formatter":{"format":"LARGE_WITHOUT_TIME","type":"formatted_time"},"header":"Unused + Old Column","id":"8fa9284b-7a58-4f13-9959-57b7d8a7fe8f","isDeleted":true}],"data":"${fetchFacts?.outputs?.body?.data}","globalFilter":false,"isLoading":"${fetchFacts?.isLoading}","isScrollable":"vertical","isSubRowsEnabled":false,"isVisible":true,"isWrappable":false,"pageSize":"${pageSize?.value}","paginationType":"server_side","rowButtons":[],"summary":true,"totalCount":"${fetchFacts?.outputs?.body?.total}"},"type":"table"}],"isVisible":"true","layout":{"default":{"height":96,"width":12,"x":0,"y":5}}},"type":"gridCell"},{"events":[],"name":"gridCell1","properties":{"children":[{"events":[],"name":"text1","properties":{"content":"## + Random Fact\n\n${randomFact?.outputs?.fact}","contentType":"markdown","isVisible":true,"textAlign":"left","verticalAlign":"top"},"type":"text"}],"isVisible":"true","layout":{"default":{"height":16,"width":12,"x":0,"y":101}}},"type":"gridCell"},{"events":[],"name":"gridCell3","properties":{"children":[{"events":[{"name":"click","type":"setStateVariableValue","value":"${pageSize?.value + + 1}","variableName":"pageSize"}],"name":"button0","properties":{"iconLeft":"angleUp","iconRight":"","isBorderless":false,"isDisabled":false,"isLoading":false,"isPrimary":true,"isVisible":true,"label":"Increase + Page Size","level":"default"},"type":"button"}],"isVisible":"true","layout":{"default":{"height":4,"width":2,"x":10,"y":134}}},"type":"gridCell"},{"events":[],"name":"gridCell4","properties":{"children":[{"events":[{"name":"click","type":"setStateVariableValue","value":"${pageSize?.value + - 1}","variableName":"pageSize"}],"name":"button1","properties":{"iconLeft":"angleDown","iconRight":"","isBorderless":false,"isDisabled":false,"isLoading":false,"isPrimary":true,"isVisible":true,"label":"Decrease + Page Size","level":"default"},"type":"button"}],"isVisible":"true","layout":{"default":{"height":4,"width":2,"x":10,"y":138}}},"type":"gridCell"}]},"type":"grid"}],"description":"This + is a slightly complicated example app that fetches and displays cat facts","name":"Example + Cat Facts Viewer","queries":[{"events":[],"id":"92ff0bb8-553b-4f31-87c7-ef5bd16d47d5","name":"fetchFacts","properties":{"spec":{"connectionId":"5e63f4a8-4ce6-47de-ba11-f6617c1d54f3","fqn":"com.datadoghq.http.request","inputs":{"url":"https://catfact.ninja/facts","urlParams":[{"key":"limit","value":"${pageSize.value.toString()}"},{"key":"page","value":"${(table0.pageIndex + + 1).toString()}"}],"verb":"GET"}}},"type":"action"},{"id":"afd03c81-4075-4432-8618-ba09d52d2f2d","name":"pageSize","properties":{"defaultValue":"${20}"},"type":"stateVariable"},{"id":"0fb22859-47dc-4137-9e41-7b67d04c525c","name":"randomFact","properties":{"outputs":"${(() + => {const facts = fetchFacts.outputs.body.data\nreturn facts[Math.floor(Math.random()*facts.length)]\n})()}"},"type":"dataTransform"}],"rootInstanceName":"grid0"},"type":"appDefinitions"}}' headers: Accept: - application/json @@ -16,45 +26,55 @@ http_interactions: response: body: encoding: UTF-8 - string: '{"data":{"id":"25442f2c-fb75-4abe-b875-ed3497d2fc2c","type":"appDefinitions"}}' + string: '{"data":{"id":"55b4bd3f-a1e9-4595-95c8-ef3741481b97","type":"appDefinitions"}}' headers: Content-Type: - application/vnd.api+json status: code: 201 message: Created -- recorded_at: Thu, 30 Jan 2025 22:30:43 GMT +- recorded_at: Fri, 14 Feb 2025 16:45:03 GMT request: body: null headers: Accept: - application/json method: GET - uri: https://api.datadoghq.com/api/v2/app-builder/apps/25442f2c-fb75-4abe-b875-ed3497d2fc2c + uri: https://api.datadoghq.com/api/v2/app-builder/apps/55b4bd3f-a1e9-4595-95c8-ef3741481b97 response: body: encoding: UTF-8 - string: '{"data":{"id":"25442f2c-fb75-4abe-b875-ed3497d2fc2c","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","favorite":false,"name":"Example App","queries":[],"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":"2025-01-30T22:30:43.296595Z","updated_at":"2025-01-30T22:30:43.296595Z","deleted_at":"0001-01-01T00:00:00Z"}}}' + string: '{"data":{"id":"55b4bd3f-a1e9-4595-95c8-ef3741481b97","type":"appDefinitions","attributes":{"components":[{"events":[],"name":"grid0","properties":{"backgroundColor":"default","children":[{"events":[],"name":"gridCell0","properties":{"children":[{"events":[],"name":"text0","properties":{"content":"# + Cat Facts","contentType":"markdown","isVisible":true,"textAlign":"left","verticalAlign":"top"},"type":"text"}],"isVisible":"true","layout":{"default":{"height":5,"width":4,"x":0,"y":0}}},"type":"gridCell"},{"events":[],"name":"gridCell2","properties":{"children":[{"events":[],"name":"table0","properties":{"columns":[{"dataPath":"fact","header":"fact","id":"0ae2ae9e-0280-4389-83c6-1c5949f7e674","isHidden":false},{"dataPath":"length","header":"length","id":"c9048611-0196-4a00-9366-1ef9e3ec0408","isHidden":true},{"dataPath":"Due + Date","disableSortBy":false,"formatter":{"format":"LARGE_WITHOUT_TIME","type":"formatted_time"},"header":"Unused + Old Column","id":"8fa9284b-7a58-4f13-9959-57b7d8a7fe8f","isDeleted":true}],"data":"${fetchFacts?.outputs?.body?.data}","globalFilter":false,"isLoading":"${fetchFacts?.isLoading}","isScrollable":"vertical","isSubRowsEnabled":false,"isVisible":true,"isWrappable":false,"pageSize":"${pageSize?.value}","paginationType":"server_side","rowButtons":[],"summary":true,"totalCount":"${fetchFacts?.outputs?.body?.total}"},"type":"table"}],"isVisible":"true","layout":{"default":{"height":96,"width":12,"x":0,"y":5}}},"type":"gridCell"},{"events":[],"name":"gridCell1","properties":{"children":[{"events":[],"name":"text1","properties":{"content":"## + Random Fact\n\n${randomFact?.outputs?.fact}","contentType":"markdown","isVisible":true,"textAlign":"left","verticalAlign":"top"},"type":"text"}],"isVisible":"true","layout":{"default":{"height":16,"width":12,"x":0,"y":101}}},"type":"gridCell"},{"events":[],"name":"gridCell3","properties":{"children":[{"events":[{"name":"click","type":"setStateVariableValue","value":"${pageSize?.value + + 1}","variableName":"pageSize"}],"name":"button0","properties":{"iconLeft":"angleUp","iconRight":"","isBorderless":false,"isDisabled":false,"isLoading":false,"isPrimary":true,"isVisible":true,"label":"Increase + Page Size","level":"default"},"type":"button"}],"isVisible":"true","layout":{"default":{"height":4,"width":2,"x":10,"y":134}}},"type":"gridCell"},{"events":[],"name":"gridCell4","properties":{"children":[{"events":[{"name":"click","type":"setStateVariableValue","value":"${pageSize?.value + - 1}","variableName":"pageSize"}],"name":"button1","properties":{"iconLeft":"angleDown","iconRight":"","isBorderless":false,"isDisabled":false,"isLoading":false,"isPrimary":true,"isVisible":true,"label":"Decrease + Page Size","level":"default"},"type":"button"}],"isVisible":"true","layout":{"default":{"height":4,"width":2,"x":10,"y":138}}},"type":"gridCell"}]},"type":"grid"}],"description":"This + is a slightly complicated example app that fetches and displays cat facts","favorite":false,"name":"Example + Cat Facts Viewer","queries":[{"id":"92ff0bb8-553b-4f31-87c7-ef5bd16d47d5","name":"fetchFacts","type":"action","properties":{"spec":{"connectionId":"5e63f4a8-4ce6-47de-ba11-f6617c1d54f3","fqn":"com.datadoghq.http.request","inputs":{"url":"https://catfact.ninja/facts","urlParams":[{"key":"limit","value":"${pageSize.value.toString()}"},{"key":"page","value":"${(table0.pageIndex + + 1).toString()}"}],"verb":"GET"}}}},{"id":"afd03c81-4075-4432-8618-ba09d52d2f2d","name":"pageSize","type":"stateVariable","properties":{"defaultValue":"${20}"}},{"id":"0fb22859-47dc-4137-9e41-7b67d04c525c","name":"randomFact","type":"dataTransform","properties":{"outputs":"${(() + =\u003e {const facts = fetchFacts.outputs.body.data\nreturn facts[Math.floor(Math.random()*facts.length)]\n})()}"}}],"rootInstanceName":"grid0","selfService":false,"tags":[]},"meta":{"org_id":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":"2025-02-14T16:45:03.266046Z","updated_at":"2025-02-14T16:45:03.266046Z","deleted_at":"0001-01-01T00:00:00Z"}}}' headers: Content-Type: - application/vnd.api+json status: code: 200 message: OK -- recorded_at: Thu, 30 Jan 2025 22:30:43 GMT +- recorded_at: Fri, 14 Feb 2025 16:45:03 GMT request: body: null headers: Accept: - application/json method: DELETE - uri: https://api.datadoghq.com/api/v2/app-builder/apps/25442f2c-fb75-4abe-b875-ed3497d2fc2c + uri: https://api.datadoghq.com/api/v2/app-builder/apps/55b4bd3f-a1e9-4595-95c8-ef3741481b97 response: body: encoding: UTF-8 - string: '{"data":{"id":"25442f2c-fb75-4abe-b875-ed3497d2fc2c","type":"appDefinitions"}}' + string: '{"data":{"id":"55b4bd3f-a1e9-4595-95c8-ef3741481b97","type":"appDefinitions"}}' headers: Content-Type: - application/vnd.api+json diff --git a/cassettes/features/v2/app_builder/List-Apps-returns-OK-response.frozen b/cassettes/features/v2/app_builder/List-Apps-returns-OK-response.frozen index c70176b29cce..f68dc360fe0a 100644 --- a/cassettes/features/v2/app_builder/List-Apps-returns-OK-response.frozen +++ b/cassettes/features/v2/app_builder/List-Apps-returns-OK-response.frozen @@ -1 +1 @@ -2025-01-30T22:30:43.707Z \ No newline at end of file +2025-02-14T16:45:03.738Z \ No newline at end of file diff --git a/cassettes/features/v2/app_builder/List-Apps-returns-OK-response.yml b/cassettes/features/v2/app_builder/List-Apps-returns-OK-response.yml index 6af858234743..ed519cdfebb2 100644 --- a/cassettes/features/v2/app_builder/List-Apps-returns-OK-response.yml +++ b/cassettes/features/v2/app_builder/List-Apps-returns-OK-response.yml @@ -1,5 +1,5 @@ http_interactions: -- recorded_at: Thu, 30 Jan 2025 22:30:43 GMT +- recorded_at: Fri, 14 Feb 2025 16:45:03 GMT request: body: null headers: @@ -10,7 +10,8 @@ http_interactions: response: body: encoding: UTF-8 - string: '{"data":[{"id":"31bfe961-ba29-4c43-85d8-f7d02afdb9a3","type":"appDefinitions","attributes":{"description":"","favorite":false,"name":"[synthetics] + string: '{"data":[{"id":"b1c2bf4d-f987-4306-8dcd-a48bedecf19e","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":"2025-02-14T16:44:58.965378Z","updated_at":"2025-02-14T16:44:58.965378Z","deleted_at":"0001-01-01T00:00:00Z"}},{"id":"31bfe961-ba29-4c43-85d8-f7d02afdb9a3","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":"2025-01-29T15:53:32.324305Z","updated_at":"2025-01-29T15:53:32.324305Z","deleted_at":"0001-01-01T00:00:00Z"}},{"id":"2363c6a3-9077-4c58-a7e2-39f27ca42e02","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":"2025-01-23T00:18:13.328203Z","updated_at":"2025-01-23T00:18:13.328203Z","deleted_at":"0001-01-01T00:00:00Z"}},{"id":"a5557ecf-17c6-43dc-b20f-6c77869777c1","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":"2025-01-22T17:17:39.807236Z","updated_at":"2025-01-22T17:17:39.807236Z","deleted_at":"0001-01-01T00:00:00Z"}},{"id":"83ca3945-3c9f-4eb9-b46a-992a97f1acf3","type":"appDefinitions","attributes":{"description":"","favorite":false,"name":"[synthetics] @@ -19,8 +20,7 @@ http_interactions: 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":"2025-01-21T23:30:39.902639Z","updated_at":"2025-01-21T23:30:40.166756Z","deleted_at":"0001-01-01T00:00:00Z"}},{"id":"d21c6da5-cb04-4ee6-aa7d-3fe6b2fd0be3","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":"2025-01-21T22:36:50.399181Z","updated_at":"2025-01-21T22:36:50.399181Z","deleted_at":"0001-01-01T00:00:00Z"}},{"id":"02343a47-9092-40a7-9464-aade9d617050","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":"2025-01-20T23:17:39.895098Z","updated_at":"2025-01-20T23:17:40.19356Z","deleted_at":"0001-01-01T00:00:00Z"}},{"id":"be847238-5f04-4e50-9cce-facc0b8fbb09","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":"2025-01-20T01:48:05.39422Z","updated_at":"2025-01-20T01:48:05.39422Z","deleted_at":"0001-01-01T00:00:00Z"}},{"id":"4b562f9c-3fe4-49dc-9e08-4a704db958a8","type":"appDefinitions","attributes":{"description":"","favorite":false,"name":"Kelly''s - App Thu, Jan 16, 1:13:37 pm","selfService":false,"tags":[]},"meta":{"org_id":1107852,"user_id":20776465,"user_uuid":"8820640c-cdf5-11ef-b473-76727e778fd9","user_name":"kelly.sun@datadoghq.com","version":0,"updated_since_deployment":false,"created_at":"2025-01-16T18:14:00.896371Z","updated_at":"2025-01-16T18:14:00.896371Z","deleted_at":"0001-01-01T00:00:00Z"}}],"meta":{"page":{"totalCount":29,"totalFilteredCount":29}}}' + 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":"2025-01-20T01:48:05.39422Z","updated_at":"2025-01-20T01:48:05.39422Z","deleted_at":"0001-01-01T00:00:00Z"}}],"meta":{"page":{"totalCount":30,"totalFilteredCount":30}}}' headers: Content-Type: - application/vnd.api+json diff --git a/cassettes/features/v2/app_builder/Publish-App-returns-Created-response.frozen b/cassettes/features/v2/app_builder/Publish-App-returns-Created-response.frozen index c28deba1baa8..12979433e7b1 100644 --- a/cassettes/features/v2/app_builder/Publish-App-returns-Created-response.frozen +++ b/cassettes/features/v2/app_builder/Publish-App-returns-Created-response.frozen @@ -1 +1 @@ -2025-01-30T22:30:43.820Z \ No newline at end of file +2025-02-14T16:45:03.857Z \ No newline at end of file diff --git a/cassettes/features/v2/app_builder/Publish-App-returns-Created-response.yml b/cassettes/features/v2/app_builder/Publish-App-returns-Created-response.yml index ab4f642a6a69..dfd623329b05 100644 --- a/cassettes/features/v2/app_builder/Publish-App-returns-Created-response.yml +++ b/cassettes/features/v2/app_builder/Publish-App-returns-Created-response.yml @@ -1,11 +1,21 @@ http_interactions: -- recorded_at: Thu, 30 Jan 2025 22:30:43 GMT +- recorded_at: Fri, 14 Feb 2025 16:45:03 GMT request: body: encoding: UTF-8 - string: '{"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","name":"Example App","queries":[],"rootInstanceName":"grid0"},"type":"appDefinitions"}}' + string: '{"data":{"attributes":{"components":[{"events":[],"name":"grid0","properties":{"backgroundColor":"default","children":[{"events":[],"name":"gridCell0","properties":{"children":[{"events":[],"name":"text0","properties":{"content":"# + Cat Facts","contentType":"markdown","isVisible":true,"textAlign":"left","verticalAlign":"top"},"type":"text"}],"isVisible":"true","layout":{"default":{"height":5,"width":4,"x":0,"y":0}}},"type":"gridCell"},{"events":[],"name":"gridCell2","properties":{"children":[{"events":[],"name":"table0","properties":{"columns":[{"dataPath":"fact","header":"fact","id":"0ae2ae9e-0280-4389-83c6-1c5949f7e674","isHidden":false},{"dataPath":"length","header":"length","id":"c9048611-0196-4a00-9366-1ef9e3ec0408","isHidden":true},{"dataPath":"Due + Date","disableSortBy":false,"formatter":{"format":"LARGE_WITHOUT_TIME","type":"formatted_time"},"header":"Unused + Old Column","id":"8fa9284b-7a58-4f13-9959-57b7d8a7fe8f","isDeleted":true}],"data":"${fetchFacts?.outputs?.body?.data}","globalFilter":false,"isLoading":"${fetchFacts?.isLoading}","isScrollable":"vertical","isSubRowsEnabled":false,"isVisible":true,"isWrappable":false,"pageSize":"${pageSize?.value}","paginationType":"server_side","rowButtons":[],"summary":true,"totalCount":"${fetchFacts?.outputs?.body?.total}"},"type":"table"}],"isVisible":"true","layout":{"default":{"height":96,"width":12,"x":0,"y":5}}},"type":"gridCell"},{"events":[],"name":"gridCell1","properties":{"children":[{"events":[],"name":"text1","properties":{"content":"## + Random Fact\n\n${randomFact?.outputs?.fact}","contentType":"markdown","isVisible":true,"textAlign":"left","verticalAlign":"top"},"type":"text"}],"isVisible":"true","layout":{"default":{"height":16,"width":12,"x":0,"y":101}}},"type":"gridCell"},{"events":[],"name":"gridCell3","properties":{"children":[{"events":[{"name":"click","type":"setStateVariableValue","value":"${pageSize?.value + + 1}","variableName":"pageSize"}],"name":"button0","properties":{"iconLeft":"angleUp","iconRight":"","isBorderless":false,"isDisabled":false,"isLoading":false,"isPrimary":true,"isVisible":true,"label":"Increase + Page Size","level":"default"},"type":"button"}],"isVisible":"true","layout":{"default":{"height":4,"width":2,"x":10,"y":134}}},"type":"gridCell"},{"events":[],"name":"gridCell4","properties":{"children":[{"events":[{"name":"click","type":"setStateVariableValue","value":"${pageSize?.value + - 1}","variableName":"pageSize"}],"name":"button1","properties":{"iconLeft":"angleDown","iconRight":"","isBorderless":false,"isDisabled":false,"isLoading":false,"isPrimary":true,"isVisible":true,"label":"Decrease + Page Size","level":"default"},"type":"button"}],"isVisible":"true","layout":{"default":{"height":4,"width":2,"x":10,"y":138}}},"type":"gridCell"}]},"type":"grid"}],"description":"This + is a slightly complicated example app that fetches and displays cat facts","name":"Example + Cat Facts Viewer","queries":[{"events":[],"id":"92ff0bb8-553b-4f31-87c7-ef5bd16d47d5","name":"fetchFacts","properties":{"spec":{"connectionId":"5e63f4a8-4ce6-47de-ba11-f6617c1d54f3","fqn":"com.datadoghq.http.request","inputs":{"url":"https://catfact.ninja/facts","urlParams":[{"key":"limit","value":"${pageSize.value.toString()}"},{"key":"page","value":"${(table0.pageIndex + + 1).toString()}"}],"verb":"GET"}}},"type":"action"},{"id":"afd03c81-4075-4432-8618-ba09d52d2f2d","name":"pageSize","properties":{"defaultValue":"${20}"},"type":"stateVariable"},{"id":"0fb22859-47dc-4137-9e41-7b67d04c525c","name":"randomFact","properties":{"outputs":"${(() + => {const facts = fetchFacts.outputs.body.data\nreturn facts[Math.floor(Math.random()*facts.length)]\n})()}"},"type":"dataTransform"}],"rootInstanceName":"grid0"},"type":"appDefinitions"}}' headers: Accept: - application/json @@ -16,43 +26,43 @@ http_interactions: response: body: encoding: UTF-8 - string: '{"data":{"id":"4e22b013-8758-49b7-98ea-0b2508c97bbf","type":"appDefinitions"}}' + string: '{"data":{"id":"5677160c-03ea-41cf-b9cb-1dabc7904656","type":"appDefinitions"}}' headers: Content-Type: - application/vnd.api+json status: code: 201 message: Created -- recorded_at: Thu, 30 Jan 2025 22:30:43 GMT +- recorded_at: Fri, 14 Feb 2025 16:45:03 GMT request: body: null headers: Accept: - application/json method: POST - uri: https://api.datadoghq.com/api/v2/app-builder/apps/4e22b013-8758-49b7-98ea-0b2508c97bbf/deployment + uri: https://api.datadoghq.com/api/v2/app-builder/apps/5677160c-03ea-41cf-b9cb-1dabc7904656/deployment response: body: encoding: UTF-8 - string: '{"data":{"id":"62438b66-95eb-47d3-b540-a5d4b0b0a791","type":"deployment","attributes":{"app_version_id":"178fbd22-f8b5-4841-92eb-f8c1c03d44c1"},"meta":{"created_at":"2025-01-30T22:30:44.12194Z","user_id":15479137,"user_uuid":"b3f98453-b289-11ef-a4e9-d6d283f92d91","user_name":"oliver.li@datadoghq.com"}}}' + string: '{"data":{"id":"9f189b09-3c00-4922-9e01-66c76bf81519","type":"deployment","attributes":{"app_version_id":"8038b7ec-533a-4bb3-b6dd-4ac11cb45ff9"},"meta":{"created_at":"2025-02-14T16:45:04.203717Z","user_id":15479137,"user_uuid":"b3f98453-b289-11ef-a4e9-d6d283f92d91","user_name":"oliver.li@datadoghq.com"}}}' headers: Content-Type: - application/vnd.api+json status: code: 201 message: Created -- recorded_at: Thu, 30 Jan 2025 22:30:43 GMT +- recorded_at: Fri, 14 Feb 2025 16:45:03 GMT request: body: null headers: Accept: - application/json method: DELETE - uri: https://api.datadoghq.com/api/v2/app-builder/apps/4e22b013-8758-49b7-98ea-0b2508c97bbf + uri: https://api.datadoghq.com/api/v2/app-builder/apps/5677160c-03ea-41cf-b9cb-1dabc7904656 response: body: encoding: UTF-8 - string: '{"data":{"id":"4e22b013-8758-49b7-98ea-0b2508c97bbf","type":"appDefinitions"}}' + string: '{"data":{"id":"5677160c-03ea-41cf-b9cb-1dabc7904656","type":"appDefinitions"}}' headers: Content-Type: - application/vnd.api+json diff --git a/cassettes/features/v2/app_builder/Publish-App-returns-Not-Found-response.frozen b/cassettes/features/v2/app_builder/Publish-App-returns-Not-Found-response.frozen index 3a29d90cff89..ec6b85f75bd8 100644 --- a/cassettes/features/v2/app_builder/Publish-App-returns-Not-Found-response.frozen +++ b/cassettes/features/v2/app_builder/Publish-App-returns-Not-Found-response.frozen @@ -1 +1 @@ -2025-01-30T22:30:44.372Z \ No newline at end of file +2025-02-14T16:45:04.549Z \ No newline at end of file diff --git a/cassettes/features/v2/app_builder/Publish-App-returns-Not-Found-response.yml b/cassettes/features/v2/app_builder/Publish-App-returns-Not-Found-response.yml index cb2e73fed9ba..9a032449ae20 100644 --- a/cassettes/features/v2/app_builder/Publish-App-returns-Not-Found-response.yml +++ b/cassettes/features/v2/app_builder/Publish-App-returns-Not-Found-response.yml @@ -1,5 +1,5 @@ http_interactions: -- recorded_at: Thu, 30 Jan 2025 22:30:44 GMT +- recorded_at: Fri, 14 Feb 2025 16:45:04 GMT request: body: null headers: diff --git a/cassettes/features/v2/app_builder/Unpublish-App-returns-Not-Found-response.frozen b/cassettes/features/v2/app_builder/Unpublish-App-returns-Not-Found-response.frozen index 4e09395f9879..b23f40e08bfc 100644 --- a/cassettes/features/v2/app_builder/Unpublish-App-returns-Not-Found-response.frozen +++ b/cassettes/features/v2/app_builder/Unpublish-App-returns-Not-Found-response.frozen @@ -1 +1 @@ -2025-01-30T22:30:44.457Z \ No newline at end of file +2025-02-14T16:45:04.715Z \ No newline at end of file diff --git a/cassettes/features/v2/app_builder/Unpublish-App-returns-Not-Found-response.yml b/cassettes/features/v2/app_builder/Unpublish-App-returns-Not-Found-response.yml index 6d9274b84a5a..840853c86fb6 100644 --- a/cassettes/features/v2/app_builder/Unpublish-App-returns-Not-Found-response.yml +++ b/cassettes/features/v2/app_builder/Unpublish-App-returns-Not-Found-response.yml @@ -1,5 +1,5 @@ http_interactions: -- recorded_at: Thu, 30 Jan 2025 22:30:44 GMT +- recorded_at: Fri, 14 Feb 2025 16:45:04 GMT request: body: null headers: diff --git a/cassettes/features/v2/app_builder/Unpublish-App-returns-OK-response.frozen b/cassettes/features/v2/app_builder/Unpublish-App-returns-OK-response.frozen index fbc38a5c7cf0..09346df6699e 100644 --- a/cassettes/features/v2/app_builder/Unpublish-App-returns-OK-response.frozen +++ b/cassettes/features/v2/app_builder/Unpublish-App-returns-OK-response.frozen @@ -1 +1 @@ -2025-01-30T22:30:44.533Z \ No newline at end of file +2025-02-14T16:45:04.816Z \ No newline at end of file diff --git a/cassettes/features/v2/app_builder/Unpublish-App-returns-OK-response.yml b/cassettes/features/v2/app_builder/Unpublish-App-returns-OK-response.yml index 7172efb430e8..2a11acf7e34c 100644 --- a/cassettes/features/v2/app_builder/Unpublish-App-returns-OK-response.yml +++ b/cassettes/features/v2/app_builder/Unpublish-App-returns-OK-response.yml @@ -1,11 +1,21 @@ http_interactions: -- recorded_at: Thu, 30 Jan 2025 22:30:44 GMT +- recorded_at: Fri, 14 Feb 2025 16:45:04 GMT request: body: encoding: UTF-8 - string: '{"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","name":"Example App","queries":[],"rootInstanceName":"grid0"},"type":"appDefinitions"}}' + string: '{"data":{"attributes":{"components":[{"events":[],"name":"grid0","properties":{"backgroundColor":"default","children":[{"events":[],"name":"gridCell0","properties":{"children":[{"events":[],"name":"text0","properties":{"content":"# + Cat Facts","contentType":"markdown","isVisible":true,"textAlign":"left","verticalAlign":"top"},"type":"text"}],"isVisible":"true","layout":{"default":{"height":5,"width":4,"x":0,"y":0}}},"type":"gridCell"},{"events":[],"name":"gridCell2","properties":{"children":[{"events":[],"name":"table0","properties":{"columns":[{"dataPath":"fact","header":"fact","id":"0ae2ae9e-0280-4389-83c6-1c5949f7e674","isHidden":false},{"dataPath":"length","header":"length","id":"c9048611-0196-4a00-9366-1ef9e3ec0408","isHidden":true},{"dataPath":"Due + Date","disableSortBy":false,"formatter":{"format":"LARGE_WITHOUT_TIME","type":"formatted_time"},"header":"Unused + Old Column","id":"8fa9284b-7a58-4f13-9959-57b7d8a7fe8f","isDeleted":true}],"data":"${fetchFacts?.outputs?.body?.data}","globalFilter":false,"isLoading":"${fetchFacts?.isLoading}","isScrollable":"vertical","isSubRowsEnabled":false,"isVisible":true,"isWrappable":false,"pageSize":"${pageSize?.value}","paginationType":"server_side","rowButtons":[],"summary":true,"totalCount":"${fetchFacts?.outputs?.body?.total}"},"type":"table"}],"isVisible":"true","layout":{"default":{"height":96,"width":12,"x":0,"y":5}}},"type":"gridCell"},{"events":[],"name":"gridCell1","properties":{"children":[{"events":[],"name":"text1","properties":{"content":"## + Random Fact\n\n${randomFact?.outputs?.fact}","contentType":"markdown","isVisible":true,"textAlign":"left","verticalAlign":"top"},"type":"text"}],"isVisible":"true","layout":{"default":{"height":16,"width":12,"x":0,"y":101}}},"type":"gridCell"},{"events":[],"name":"gridCell3","properties":{"children":[{"events":[{"name":"click","type":"setStateVariableValue","value":"${pageSize?.value + + 1}","variableName":"pageSize"}],"name":"button0","properties":{"iconLeft":"angleUp","iconRight":"","isBorderless":false,"isDisabled":false,"isLoading":false,"isPrimary":true,"isVisible":true,"label":"Increase + Page Size","level":"default"},"type":"button"}],"isVisible":"true","layout":{"default":{"height":4,"width":2,"x":10,"y":134}}},"type":"gridCell"},{"events":[],"name":"gridCell4","properties":{"children":[{"events":[{"name":"click","type":"setStateVariableValue","value":"${pageSize?.value + - 1}","variableName":"pageSize"}],"name":"button1","properties":{"iconLeft":"angleDown","iconRight":"","isBorderless":false,"isDisabled":false,"isLoading":false,"isPrimary":true,"isVisible":true,"label":"Decrease + Page Size","level":"default"},"type":"button"}],"isVisible":"true","layout":{"default":{"height":4,"width":2,"x":10,"y":138}}},"type":"gridCell"}]},"type":"grid"}],"description":"This + is a slightly complicated example app that fetches and displays cat facts","name":"Example + Cat Facts Viewer","queries":[{"events":[],"id":"92ff0bb8-553b-4f31-87c7-ef5bd16d47d5","name":"fetchFacts","properties":{"spec":{"connectionId":"5e63f4a8-4ce6-47de-ba11-f6617c1d54f3","fqn":"com.datadoghq.http.request","inputs":{"url":"https://catfact.ninja/facts","urlParams":[{"key":"limit","value":"${pageSize.value.toString()}"},{"key":"page","value":"${(table0.pageIndex + + 1).toString()}"}],"verb":"GET"}}},"type":"action"},{"id":"afd03c81-4075-4432-8618-ba09d52d2f2d","name":"pageSize","properties":{"defaultValue":"${20}"},"type":"stateVariable"},{"id":"0fb22859-47dc-4137-9e41-7b67d04c525c","name":"randomFact","properties":{"outputs":"${(() + => {const facts = fetchFacts.outputs.body.data\nreturn facts[Math.floor(Math.random()*facts.length)]\n})()}"},"type":"dataTransform"}],"rootInstanceName":"grid0"},"type":"appDefinitions"}}' headers: Accept: - application/json @@ -16,43 +26,43 @@ http_interactions: response: body: encoding: UTF-8 - string: '{"data":{"id":"74865138-3856-43bf-b309-e6c5f5599e36","type":"appDefinitions"}}' + string: '{"data":{"id":"24628726-cdf1-45e6-9e05-6e73d7612d3f","type":"appDefinitions"}}' headers: Content-Type: - application/vnd.api+json status: code: 201 message: Created -- recorded_at: Thu, 30 Jan 2025 22:30:44 GMT +- recorded_at: Fri, 14 Feb 2025 16:45:04 GMT request: body: null headers: Accept: - application/json method: DELETE - uri: https://api.datadoghq.com/api/v2/app-builder/apps/74865138-3856-43bf-b309-e6c5f5599e36/deployment + uri: https://api.datadoghq.com/api/v2/app-builder/apps/24628726-cdf1-45e6-9e05-6e73d7612d3f/deployment response: body: encoding: UTF-8 - string: '{"data":{"id":"b8434408-826f-4fea-bd27-786526d74e30","type":"deployment","attributes":{"app_version_id":"00000000-0000-0000-0000-000000000000"},"meta":{"created_at":"2025-01-30T22:30:44.827748Z","user_id":15479137,"user_uuid":"b3f98453-b289-11ef-a4e9-d6d283f92d91","user_name":"oliver.li@datadoghq.com"}}}' + string: '{"data":{"id":"892fa942-bd01-4e75-9582-e1a5c7736b46","type":"deployment","attributes":{"app_version_id":"00000000-0000-0000-0000-000000000000"},"meta":{"created_at":"2025-02-14T16:45:05.155785Z","user_id":15479137,"user_uuid":"b3f98453-b289-11ef-a4e9-d6d283f92d91","user_name":"oliver.li@datadoghq.com"}}}' headers: Content-Type: - application/vnd.api+json status: code: 200 message: OK -- recorded_at: Thu, 30 Jan 2025 22:30:44 GMT +- recorded_at: Fri, 14 Feb 2025 16:45:04 GMT request: body: null headers: Accept: - application/json method: DELETE - uri: https://api.datadoghq.com/api/v2/app-builder/apps/74865138-3856-43bf-b309-e6c5f5599e36 + uri: https://api.datadoghq.com/api/v2/app-builder/apps/24628726-cdf1-45e6-9e05-6e73d7612d3f response: body: encoding: UTF-8 - string: '{"data":{"id":"74865138-3856-43bf-b309-e6c5f5599e36","type":"appDefinitions"}}' + string: '{"data":{"id":"24628726-cdf1-45e6-9e05-6e73d7612d3f","type":"appDefinitions"}}' headers: Content-Type: - application/vnd.api+json diff --git a/cassettes/features/v2/app_builder/Update-App-returns-Bad-Request-response.frozen b/cassettes/features/v2/app_builder/Update-App-returns-Bad-Request-response.frozen index 84b4273039a2..e826a9021236 100644 --- a/cassettes/features/v2/app_builder/Update-App-returns-Bad-Request-response.frozen +++ b/cassettes/features/v2/app_builder/Update-App-returns-Bad-Request-response.frozen @@ -1 +1 @@ -2025-01-30T22:30:45.101Z \ No newline at end of file +2025-02-14T16:45:05.461Z \ No newline at end of file diff --git a/cassettes/features/v2/app_builder/Update-App-returns-Bad-Request-response.yml b/cassettes/features/v2/app_builder/Update-App-returns-Bad-Request-response.yml index 83ea0a3fbe11..1824c84f5353 100644 --- a/cassettes/features/v2/app_builder/Update-App-returns-Bad-Request-response.yml +++ b/cassettes/features/v2/app_builder/Update-App-returns-Bad-Request-response.yml @@ -1,11 +1,21 @@ http_interactions: -- recorded_at: Thu, 30 Jan 2025 22:30:45 GMT +- recorded_at: Fri, 14 Feb 2025 16:45:05 GMT request: body: encoding: UTF-8 - string: '{"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","name":"Example App","queries":[],"rootInstanceName":"grid0"},"type":"appDefinitions"}}' + string: '{"data":{"attributes":{"components":[{"events":[],"name":"grid0","properties":{"backgroundColor":"default","children":[{"events":[],"name":"gridCell0","properties":{"children":[{"events":[],"name":"text0","properties":{"content":"# + Cat Facts","contentType":"markdown","isVisible":true,"textAlign":"left","verticalAlign":"top"},"type":"text"}],"isVisible":"true","layout":{"default":{"height":5,"width":4,"x":0,"y":0}}},"type":"gridCell"},{"events":[],"name":"gridCell2","properties":{"children":[{"events":[],"name":"table0","properties":{"columns":[{"dataPath":"fact","header":"fact","id":"0ae2ae9e-0280-4389-83c6-1c5949f7e674","isHidden":false},{"dataPath":"length","header":"length","id":"c9048611-0196-4a00-9366-1ef9e3ec0408","isHidden":true},{"dataPath":"Due + Date","disableSortBy":false,"formatter":{"format":"LARGE_WITHOUT_TIME","type":"formatted_time"},"header":"Unused + Old Column","id":"8fa9284b-7a58-4f13-9959-57b7d8a7fe8f","isDeleted":true}],"data":"${fetchFacts?.outputs?.body?.data}","globalFilter":false,"isLoading":"${fetchFacts?.isLoading}","isScrollable":"vertical","isSubRowsEnabled":false,"isVisible":true,"isWrappable":false,"pageSize":"${pageSize?.value}","paginationType":"server_side","rowButtons":[],"summary":true,"totalCount":"${fetchFacts?.outputs?.body?.total}"},"type":"table"}],"isVisible":"true","layout":{"default":{"height":96,"width":12,"x":0,"y":5}}},"type":"gridCell"},{"events":[],"name":"gridCell1","properties":{"children":[{"events":[],"name":"text1","properties":{"content":"## + Random Fact\n\n${randomFact?.outputs?.fact}","contentType":"markdown","isVisible":true,"textAlign":"left","verticalAlign":"top"},"type":"text"}],"isVisible":"true","layout":{"default":{"height":16,"width":12,"x":0,"y":101}}},"type":"gridCell"},{"events":[],"name":"gridCell3","properties":{"children":[{"events":[{"name":"click","type":"setStateVariableValue","value":"${pageSize?.value + + 1}","variableName":"pageSize"}],"name":"button0","properties":{"iconLeft":"angleUp","iconRight":"","isBorderless":false,"isDisabled":false,"isLoading":false,"isPrimary":true,"isVisible":true,"label":"Increase + Page Size","level":"default"},"type":"button"}],"isVisible":"true","layout":{"default":{"height":4,"width":2,"x":10,"y":134}}},"type":"gridCell"},{"events":[],"name":"gridCell4","properties":{"children":[{"events":[{"name":"click","type":"setStateVariableValue","value":"${pageSize?.value + - 1}","variableName":"pageSize"}],"name":"button1","properties":{"iconLeft":"angleDown","iconRight":"","isBorderless":false,"isDisabled":false,"isLoading":false,"isPrimary":true,"isVisible":true,"label":"Decrease + Page Size","level":"default"},"type":"button"}],"isVisible":"true","layout":{"default":{"height":4,"width":2,"x":10,"y":138}}},"type":"gridCell"}]},"type":"grid"}],"description":"This + is a slightly complicated example app that fetches and displays cat facts","name":"Example + Cat Facts Viewer","queries":[{"events":[],"id":"92ff0bb8-553b-4f31-87c7-ef5bd16d47d5","name":"fetchFacts","properties":{"spec":{"connectionId":"5e63f4a8-4ce6-47de-ba11-f6617c1d54f3","fqn":"com.datadoghq.http.request","inputs":{"url":"https://catfact.ninja/facts","urlParams":[{"key":"limit","value":"${pageSize.value.toString()}"},{"key":"page","value":"${(table0.pageIndex + + 1).toString()}"}],"verb":"GET"}}},"type":"action"},{"id":"afd03c81-4075-4432-8618-ba09d52d2f2d","name":"pageSize","properties":{"defaultValue":"${20}"},"type":"stateVariable"},{"id":"0fb22859-47dc-4137-9e41-7b67d04c525c","name":"randomFact","properties":{"outputs":"${(() + => {const facts = fetchFacts.outputs.body.data\nreturn facts[Math.floor(Math.random()*facts.length)]\n})()}"},"type":"dataTransform"}],"rootInstanceName":"grid0"},"type":"appDefinitions"}}' headers: Accept: - application/json @@ -16,25 +26,25 @@ http_interactions: response: body: encoding: UTF-8 - string: '{"data":{"id":"3800673b-840c-4c3a-8815-058b4a8ce38e","type":"appDefinitions"}}' + string: '{"data":{"id":"28f5b1d6-f416-46b5-8cc4-94ae094c97f4","type":"appDefinitions"}}' headers: Content-Type: - application/vnd.api+json status: code: 201 message: Created -- recorded_at: Thu, 30 Jan 2025 22:30:45 GMT +- recorded_at: Fri, 14 Feb 2025 16:45:05 GMT request: body: encoding: UTF-8 - string: '{"data":{"attributes":{"rootInstanceName":""},"id":"3800673b-840c-4c3a-8815-058b4a8ce38e","type":"appDefinitions"}}' + string: '{"data":{"attributes":{"rootInstanceName":""},"id":"28f5b1d6-f416-46b5-8cc4-94ae094c97f4","type":"appDefinitions"}}' headers: Accept: - application/json Content-Type: - application/json method: PATCH - uri: https://api.datadoghq.com/api/v2/app-builder/apps/3800673b-840c-4c3a-8815-058b4a8ce38e + uri: https://api.datadoghq.com/api/v2/app-builder/apps/28f5b1d6-f416-46b5-8cc4-94ae094c97f4 response: body: encoding: UTF-8 @@ -45,18 +55,18 @@ http_interactions: status: code: 400 message: Bad Request -- recorded_at: Thu, 30 Jan 2025 22:30:45 GMT +- recorded_at: Fri, 14 Feb 2025 16:45:05 GMT request: body: null headers: Accept: - application/json method: DELETE - uri: https://api.datadoghq.com/api/v2/app-builder/apps/3800673b-840c-4c3a-8815-058b4a8ce38e + uri: https://api.datadoghq.com/api/v2/app-builder/apps/28f5b1d6-f416-46b5-8cc4-94ae094c97f4 response: body: encoding: UTF-8 - string: '{"data":{"id":"3800673b-840c-4c3a-8815-058b4a8ce38e","type":"appDefinitions"}}' + string: '{"data":{"id":"28f5b1d6-f416-46b5-8cc4-94ae094c97f4","type":"appDefinitions"}}' headers: Content-Type: - application/vnd.api+json diff --git a/cassettes/features/v2/app_builder/Update-App-returns-OK-response.frozen b/cassettes/features/v2/app_builder/Update-App-returns-OK-response.frozen index 0c72a214a002..47098e9adb5b 100644 --- a/cassettes/features/v2/app_builder/Update-App-returns-OK-response.frozen +++ b/cassettes/features/v2/app_builder/Update-App-returns-OK-response.frozen @@ -1 +1 @@ -2025-01-30T22:30:45.511Z \ No newline at end of file +2025-02-14T16:45:05.966Z \ No newline at end of file diff --git a/cassettes/features/v2/app_builder/Update-App-returns-OK-response.yml b/cassettes/features/v2/app_builder/Update-App-returns-OK-response.yml index 6035ab3874e4..acc38185cf59 100644 --- a/cassettes/features/v2/app_builder/Update-App-returns-OK-response.yml +++ b/cassettes/features/v2/app_builder/Update-App-returns-OK-response.yml @@ -1,11 +1,21 @@ http_interactions: -- recorded_at: Thu, 30 Jan 2025 22:30:45 GMT +- recorded_at: Fri, 14 Feb 2025 16:45:05 GMT request: body: encoding: UTF-8 - string: '{"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","name":"Example App","queries":[],"rootInstanceName":"grid0"},"type":"appDefinitions"}}' + string: '{"data":{"attributes":{"components":[{"events":[],"name":"grid0","properties":{"backgroundColor":"default","children":[{"events":[],"name":"gridCell0","properties":{"children":[{"events":[],"name":"text0","properties":{"content":"# + Cat Facts","contentType":"markdown","isVisible":true,"textAlign":"left","verticalAlign":"top"},"type":"text"}],"isVisible":"true","layout":{"default":{"height":5,"width":4,"x":0,"y":0}}},"type":"gridCell"},{"events":[],"name":"gridCell2","properties":{"children":[{"events":[],"name":"table0","properties":{"columns":[{"dataPath":"fact","header":"fact","id":"0ae2ae9e-0280-4389-83c6-1c5949f7e674","isHidden":false},{"dataPath":"length","header":"length","id":"c9048611-0196-4a00-9366-1ef9e3ec0408","isHidden":true},{"dataPath":"Due + Date","disableSortBy":false,"formatter":{"format":"LARGE_WITHOUT_TIME","type":"formatted_time"},"header":"Unused + Old Column","id":"8fa9284b-7a58-4f13-9959-57b7d8a7fe8f","isDeleted":true}],"data":"${fetchFacts?.outputs?.body?.data}","globalFilter":false,"isLoading":"${fetchFacts?.isLoading}","isScrollable":"vertical","isSubRowsEnabled":false,"isVisible":true,"isWrappable":false,"pageSize":"${pageSize?.value}","paginationType":"server_side","rowButtons":[],"summary":true,"totalCount":"${fetchFacts?.outputs?.body?.total}"},"type":"table"}],"isVisible":"true","layout":{"default":{"height":96,"width":12,"x":0,"y":5}}},"type":"gridCell"},{"events":[],"name":"gridCell1","properties":{"children":[{"events":[],"name":"text1","properties":{"content":"## + Random Fact\n\n${randomFact?.outputs?.fact}","contentType":"markdown","isVisible":true,"textAlign":"left","verticalAlign":"top"},"type":"text"}],"isVisible":"true","layout":{"default":{"height":16,"width":12,"x":0,"y":101}}},"type":"gridCell"},{"events":[],"name":"gridCell3","properties":{"children":[{"events":[{"name":"click","type":"setStateVariableValue","value":"${pageSize?.value + + 1}","variableName":"pageSize"}],"name":"button0","properties":{"iconLeft":"angleUp","iconRight":"","isBorderless":false,"isDisabled":false,"isLoading":false,"isPrimary":true,"isVisible":true,"label":"Increase + Page Size","level":"default"},"type":"button"}],"isVisible":"true","layout":{"default":{"height":4,"width":2,"x":10,"y":134}}},"type":"gridCell"},{"events":[],"name":"gridCell4","properties":{"children":[{"events":[{"name":"click","type":"setStateVariableValue","value":"${pageSize?.value + - 1}","variableName":"pageSize"}],"name":"button1","properties":{"iconLeft":"angleDown","iconRight":"","isBorderless":false,"isDisabled":false,"isLoading":false,"isPrimary":true,"isVisible":true,"label":"Decrease + Page Size","level":"default"},"type":"button"}],"isVisible":"true","layout":{"default":{"height":4,"width":2,"x":10,"y":138}}},"type":"gridCell"}]},"type":"grid"}],"description":"This + is a slightly complicated example app that fetches and displays cat facts","name":"Example + Cat Facts Viewer","queries":[{"events":[],"id":"92ff0bb8-553b-4f31-87c7-ef5bd16d47d5","name":"fetchFacts","properties":{"spec":{"connectionId":"5e63f4a8-4ce6-47de-ba11-f6617c1d54f3","fqn":"com.datadoghq.http.request","inputs":{"url":"https://catfact.ninja/facts","urlParams":[{"key":"limit","value":"${pageSize.value.toString()}"},{"key":"page","value":"${(table0.pageIndex + + 1).toString()}"}],"verb":"GET"}}},"type":"action"},{"id":"afd03c81-4075-4432-8618-ba09d52d2f2d","name":"pageSize","properties":{"defaultValue":"${20}"},"type":"stateVariable"},{"id":"0fb22859-47dc-4137-9e41-7b67d04c525c","name":"randomFact","properties":{"outputs":"${(() + => {const facts = fetchFacts.outputs.body.data\nreturn facts[Math.floor(Math.random()*facts.length)]\n})()}"},"type":"dataTransform"}],"rootInstanceName":"grid0"},"type":"appDefinitions"}}' headers: Accept: - application/json @@ -16,49 +26,59 @@ http_interactions: response: body: encoding: UTF-8 - string: '{"data":{"id":"892d9225-fd31-4237-b218-e964ac33fc71","type":"appDefinitions"}}' + string: '{"data":{"id":"9f9a2053-6156-471b-aca8-2fa6ec87f797","type":"appDefinitions"}}' headers: Content-Type: - application/vnd.api+json status: code: 201 message: Created -- recorded_at: Thu, 30 Jan 2025 22:30:45 GMT +- recorded_at: Fri, 14 Feb 2025 16:45:05 GMT request: body: encoding: UTF-8 - string: '{"data":{"attributes":{"name":"Updated Name","rootInstanceName":"grid0"},"id":"892d9225-fd31-4237-b218-e964ac33fc71","type":"appDefinitions"}}' + string: '{"data":{"attributes":{"name":"Updated Name","rootInstanceName":"grid0"},"id":"9f9a2053-6156-471b-aca8-2fa6ec87f797","type":"appDefinitions"}}' headers: Accept: - application/json Content-Type: - application/json method: PATCH - uri: https://api.datadoghq.com/api/v2/app-builder/apps/892d9225-fd31-4237-b218-e964ac33fc71 + uri: https://api.datadoghq.com/api/v2/app-builder/apps/9f9a2053-6156-471b-aca8-2fa6ec87f797 response: body: encoding: UTF-8 - string: '{"data":{"id":"892d9225-fd31-4237-b218-e964ac33fc71","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","favorite":false,"name":"Updated Name","queries":[],"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":"2025-01-30T22:30:45.584607Z","updated_at":"2025-01-30T22:30:45.785438Z","deleted_at":"0001-01-01T00:00:00Z"}}}' + string: '{"data":{"id":"9f9a2053-6156-471b-aca8-2fa6ec87f797","type":"appDefinitions","attributes":{"components":[{"events":[],"name":"grid0","properties":{"backgroundColor":"default","children":[{"events":[],"name":"gridCell0","properties":{"children":[{"events":[],"name":"text0","properties":{"content":"# + Cat Facts","contentType":"markdown","isVisible":true,"textAlign":"left","verticalAlign":"top"},"type":"text"}],"isVisible":"true","layout":{"default":{"height":5,"width":4,"x":0,"y":0}}},"type":"gridCell"},{"events":[],"name":"gridCell2","properties":{"children":[{"events":[],"name":"table0","properties":{"columns":[{"dataPath":"fact","header":"fact","id":"0ae2ae9e-0280-4389-83c6-1c5949f7e674","isHidden":false},{"dataPath":"length","header":"length","id":"c9048611-0196-4a00-9366-1ef9e3ec0408","isHidden":true},{"dataPath":"Due + Date","disableSortBy":false,"formatter":{"format":"LARGE_WITHOUT_TIME","type":"formatted_time"},"header":"Unused + Old Column","id":"8fa9284b-7a58-4f13-9959-57b7d8a7fe8f","isDeleted":true}],"data":"${fetchFacts?.outputs?.body?.data}","globalFilter":false,"isLoading":"${fetchFacts?.isLoading}","isScrollable":"vertical","isSubRowsEnabled":false,"isVisible":true,"isWrappable":false,"pageSize":"${pageSize?.value}","paginationType":"server_side","rowButtons":[],"summary":true,"totalCount":"${fetchFacts?.outputs?.body?.total}"},"type":"table"}],"isVisible":"true","layout":{"default":{"height":96,"width":12,"x":0,"y":5}}},"type":"gridCell"},{"events":[],"name":"gridCell1","properties":{"children":[{"events":[],"name":"text1","properties":{"content":"## + Random Fact\n\n${randomFact?.outputs?.fact}","contentType":"markdown","isVisible":true,"textAlign":"left","verticalAlign":"top"},"type":"text"}],"isVisible":"true","layout":{"default":{"height":16,"width":12,"x":0,"y":101}}},"type":"gridCell"},{"events":[],"name":"gridCell3","properties":{"children":[{"events":[{"name":"click","type":"setStateVariableValue","value":"${pageSize?.value + + 1}","variableName":"pageSize"}],"name":"button0","properties":{"iconLeft":"angleUp","iconRight":"","isBorderless":false,"isDisabled":false,"isLoading":false,"isPrimary":true,"isVisible":true,"label":"Increase + Page Size","level":"default"},"type":"button"}],"isVisible":"true","layout":{"default":{"height":4,"width":2,"x":10,"y":134}}},"type":"gridCell"},{"events":[],"name":"gridCell4","properties":{"children":[{"events":[{"name":"click","type":"setStateVariableValue","value":"${pageSize?.value + - 1}","variableName":"pageSize"}],"name":"button1","properties":{"iconLeft":"angleDown","iconRight":"","isBorderless":false,"isDisabled":false,"isLoading":false,"isPrimary":true,"isVisible":true,"label":"Decrease + Page Size","level":"default"},"type":"button"}],"isVisible":"true","layout":{"default":{"height":4,"width":2,"x":10,"y":138}}},"type":"gridCell"}]},"type":"grid"}],"description":"This + is a slightly complicated example app that fetches and displays cat facts","favorite":false,"name":"Updated + Name","queries":[{"id":"92ff0bb8-553b-4f31-87c7-ef5bd16d47d5","name":"fetchFacts","type":"action","properties":{"spec":{"connectionId":"5e63f4a8-4ce6-47de-ba11-f6617c1d54f3","fqn":"com.datadoghq.http.request","inputs":{"url":"https://catfact.ninja/facts","urlParams":[{"key":"limit","value":"${pageSize.value.toString()}"},{"key":"page","value":"${(table0.pageIndex + + 1).toString()}"}],"verb":"GET"}}}},{"id":"afd03c81-4075-4432-8618-ba09d52d2f2d","name":"pageSize","type":"stateVariable","properties":{"defaultValue":"${20}"}},{"id":"0fb22859-47dc-4137-9e41-7b67d04c525c","name":"randomFact","type":"dataTransform","properties":{"outputs":"${(() + =\u003e {const facts = fetchFacts.outputs.body.data\nreturn facts[Math.floor(Math.random()*facts.length)]\n})()}"}}],"rootInstanceName":"grid0","selfService":false,"tags":[]},"meta":{"org_id":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":"2025-02-14T16:45:06.054293Z","updated_at":"2025-02-14T16:45:06.268683Z","deleted_at":"0001-01-01T00:00:00Z"}}}' headers: Content-Type: - application/vnd.api+json status: code: 200 message: OK -- recorded_at: Thu, 30 Jan 2025 22:30:45 GMT +- recorded_at: Fri, 14 Feb 2025 16:45:05 GMT request: body: null headers: Accept: - application/json method: DELETE - uri: https://api.datadoghq.com/api/v2/app-builder/apps/892d9225-fd31-4237-b218-e964ac33fc71 + uri: https://api.datadoghq.com/api/v2/app-builder/apps/9f9a2053-6156-471b-aca8-2fa6ec87f797 response: body: encoding: UTF-8 - string: '{"data":{"id":"892d9225-fd31-4237-b218-e964ac33fc71","type":"appDefinitions"}}' + string: '{"data":{"id":"9f9a2053-6156-471b-aca8-2fa6ec87f797","type":"appDefinitions"}}' headers: Content-Type: - application/vnd.api+json diff --git a/examples/v2/app-builder/CreateApp.rb b/examples/v2/app-builder/CreateApp.rb index 8045a995905a..d1daac5a6ebf 100644 --- a/examples/v2/app-builder/CreateApp.rb +++ b/examples/v2/app-builder/CreateApp.rb @@ -1,49 +1,157 @@ # Create App returns "Created" response require "datadog_api_client" -DatadogAPIClient.configure do |config| - config.unstable_operations["v2.create_app".to_sym] = true -end api_instance = DatadogAPIClient::V2::AppBuilderAPI.new body = DatadogAPIClient::V2::CreateAppRequest.new({ data: DatadogAPIClient::V2::CreateAppRequestData.new({ + type: DatadogAPIClient::V2::AppDefinitionType::APPDEFINITIONS, attributes: DatadogAPIClient::V2::CreateAppRequestDataAttributes.new({ + root_instance_name: "grid0", components: [ DatadogAPIClient::V2::ComponentGrid.new({ - events: [], name: "grid0", + type: DatadogAPIClient::V2::ComponentGridType::GRID, properties: DatadogAPIClient::V2::ComponentGridProperties.new({ children: [ DatadogAPIClient::V2::Component.new({ - events: [], + type: DatadogAPIClient::V2::ComponentType::GRIDCELL, name: "gridCell0", properties: DatadogAPIClient::V2::ComponentProperties.new({ children: [ DatadogAPIClient::V2::Component.new({ + name: "text0", + type: DatadogAPIClient::V2::ComponentType::TEXT, + properties: DatadogAPIClient::V2::ComponentProperties.new({ + is_visible: true, + }), + events: [], + }), + ], + is_visible: "true", + }), + events: [], + }), + DatadogAPIClient::V2::Component.new({ + type: DatadogAPIClient::V2::ComponentType::GRIDCELL, + name: "gridCell2", + properties: DatadogAPIClient::V2::ComponentProperties.new({ + children: [ + DatadogAPIClient::V2::Component.new({ + name: "table0", + type: DatadogAPIClient::V2::ComponentType::TABLE, + properties: DatadogAPIClient::V2::ComponentProperties.new({ + is_visible: true, + }), + events: [], + }), + ], + is_visible: "true", + }), + events: [], + }), + DatadogAPIClient::V2::Component.new({ + type: DatadogAPIClient::V2::ComponentType::GRIDCELL, + name: "gridCell1", + properties: DatadogAPIClient::V2::ComponentProperties.new({ + children: [ + DatadogAPIClient::V2::Component.new({ + name: "text1", + type: DatadogAPIClient::V2::ComponentType::TEXT, + properties: DatadogAPIClient::V2::ComponentProperties.new({ + is_visible: true, + }), events: [], - name: "calloutValue0", + }), + ], + is_visible: "true", + }), + events: [], + }), + DatadogAPIClient::V2::Component.new({ + type: DatadogAPIClient::V2::ComponentType::GRIDCELL, + name: "gridCell3", + properties: DatadogAPIClient::V2::ComponentProperties.new({ + children: [ + DatadogAPIClient::V2::Component.new({ + name: "button0", + type: DatadogAPIClient::V2::ComponentType::BUTTON, properties: DatadogAPIClient::V2::ComponentProperties.new({ is_visible: true, }), - type: DatadogAPIClient::V2::ComponentType::CALLOUTVALUE, + events: [ + DatadogAPIClient::V2::AppBuilderEvent.new({ + name: DatadogAPIClient::V2::AppBuilderEventName::CLICK, + type: DatadogAPIClient::V2::AppBuilderEventType::SETSTATEVARIABLEVALUE, + }), + ], }), ], is_visible: "true", }), + events: [], + }), + DatadogAPIClient::V2::Component.new({ type: DatadogAPIClient::V2::ComponentType::GRIDCELL, + name: "gridCell4", + properties: DatadogAPIClient::V2::ComponentProperties.new({ + children: [ + DatadogAPIClient::V2::Component.new({ + name: "button1", + type: DatadogAPIClient::V2::ComponentType::BUTTON, + properties: DatadogAPIClient::V2::ComponentProperties.new({ + is_visible: true, + }), + events: [ + DatadogAPIClient::V2::AppBuilderEvent.new({ + name: DatadogAPIClient::V2::AppBuilderEventName::CLICK, + type: DatadogAPIClient::V2::AppBuilderEventType::SETSTATEVARIABLEVALUE, + }), + ], + }), + ], + is_visible: "true", + }), + events: [], }), ], + background_color: "default", }), - type: DatadogAPIClient::V2::ComponentGridType::GRID, + events: [], }), ], - description: "This is a simple example app", - queries: [], - name: "Example App", - root_instance_name: "grid0", + queries: [ + DatadogAPIClient::V2::ActionQuery.new({ + id: "92ff0bb8-553b-4f31-87c7-ef5bd16d47d5", + type: DatadogAPIClient::V2::ActionQueryType::ACTION, + name: "fetchFacts", + events: [], + properties: DatadogAPIClient::V2::ActionQueryProperties.new({ + spec: { + "fqn": "com.datadoghq.http.request", "connectionId": "5e63f4a8-4ce6-47de-ba11-f6617c1d54f3", "inputs": "{'verb': 'GET', 'url': 'https://catfact.ninja/facts', 'urlParams': [{'key': 'limit', 'value': '${pageSize.value.toString()}'}, {'key': 'page', 'value': '${(table0.pageIndex + 1).toString()}'}]}", + }, + }), + }), + DatadogAPIClient::V2::StateVariable.new({ + type: DatadogAPIClient::V2::StateVariableType::STATEVARIABLE, + name: "pageSize", + properties: DatadogAPIClient::V2::StateVariableProperties.new({ + default_value: "${20}", + }), + id: "afd03c81-4075-4432-8618-ba09d52d2f2d", + }), + DatadogAPIClient::V2::DataTransform.new({ + type: DatadogAPIClient::V2::DataTransformType::DATATRANSFORM, + name: "randomFact", + properties: DatadogAPIClient::V2::DataTransformProperties.new({ + outputs: '${(() => {const facts = fetchFacts.outputs.body.data\nreturn facts[Math.floor(Math.random()*facts.length)]\n})()}', + }), + id: "0fb22859-47dc-4137-9e41-7b67d04c525c", + }), + ], + name: "Example Cat Facts Viewer", + description: "This is a slightly complicated example app that fetches and displays cat facts", }), - type: DatadogAPIClient::V2::AppDefinitionType::APPDEFINITIONS, }), }) p api_instance.create_app(body) diff --git a/examples/v2/app-builder/DeleteApp.rb b/examples/v2/app-builder/DeleteApp.rb index 0befa6fe7dfa..b8790629fa27 100644 --- a/examples/v2/app-builder/DeleteApp.rb +++ b/examples/v2/app-builder/DeleteApp.rb @@ -1,9 +1,6 @@ # Delete App returns "OK" response require "datadog_api_client" -DatadogAPIClient.configure do |config| - config.unstable_operations["v2.delete_app".to_sym] = true -end api_instance = DatadogAPIClient::V2::AppBuilderAPI.new # there is a valid "app" in the system diff --git a/examples/v2/app-builder/DeleteApps.rb b/examples/v2/app-builder/DeleteApps.rb index 71075dbe2dc0..f420e93fc1c4 100644 --- a/examples/v2/app-builder/DeleteApps.rb +++ b/examples/v2/app-builder/DeleteApps.rb @@ -1,9 +1,6 @@ # Delete Multiple Apps returns "OK" response require "datadog_api_client" -DatadogAPIClient.configure do |config| - config.unstable_operations["v2.delete_apps".to_sym] = true -end api_instance = DatadogAPIClient::V2::AppBuilderAPI.new # there is a valid "app" in the system diff --git a/examples/v2/app-builder/GetApp.rb b/examples/v2/app-builder/GetApp.rb index 6221b18e781d..9d1b307cc496 100644 --- a/examples/v2/app-builder/GetApp.rb +++ b/examples/v2/app-builder/GetApp.rb @@ -1,9 +1,6 @@ # Get App returns "OK" response require "datadog_api_client" -DatadogAPIClient.configure do |config| - config.unstable_operations["v2.get_app".to_sym] = true -end api_instance = DatadogAPIClient::V2::AppBuilderAPI.new # there is a valid "app" in the system diff --git a/examples/v2/app-builder/ListApps.rb b/examples/v2/app-builder/ListApps.rb index f6f3a136cee7..1cb6ce67b8c3 100644 --- a/examples/v2/app-builder/ListApps.rb +++ b/examples/v2/app-builder/ListApps.rb @@ -1,8 +1,5 @@ # List Apps returns "OK" response require "datadog_api_client" -DatadogAPIClient.configure do |config| - config.unstable_operations["v2.list_apps".to_sym] = true -end api_instance = DatadogAPIClient::V2::AppBuilderAPI.new p api_instance.list_apps() diff --git a/examples/v2/app-builder/PublishApp.rb b/examples/v2/app-builder/PublishApp.rb index f3f92acf5558..3018b5be8bb7 100644 --- a/examples/v2/app-builder/PublishApp.rb +++ b/examples/v2/app-builder/PublishApp.rb @@ -1,9 +1,6 @@ # Publish App returns "Created" response require "datadog_api_client" -DatadogAPIClient.configure do |config| - config.unstable_operations["v2.publish_app".to_sym] = true -end api_instance = DatadogAPIClient::V2::AppBuilderAPI.new # there is a valid "app" in the system diff --git a/examples/v2/app-builder/UnpublishApp.rb b/examples/v2/app-builder/UnpublishApp.rb index dbe4ea5617a1..6e1ab67cd31b 100644 --- a/examples/v2/app-builder/UnpublishApp.rb +++ b/examples/v2/app-builder/UnpublishApp.rb @@ -1,9 +1,6 @@ # Unpublish App returns "OK" response require "datadog_api_client" -DatadogAPIClient.configure do |config| - config.unstable_operations["v2.unpublish_app".to_sym] = true -end api_instance = DatadogAPIClient::V2::AppBuilderAPI.new # there is a valid "app" in the system diff --git a/examples/v2/app-builder/UpdateApp.rb b/examples/v2/app-builder/UpdateApp.rb index ed4e00b13f6f..aa2014ee391e 100644 --- a/examples/v2/app-builder/UpdateApp.rb +++ b/examples/v2/app-builder/UpdateApp.rb @@ -1,9 +1,6 @@ # Update App returns "OK" response require "datadog_api_client" -DatadogAPIClient.configure do |config| - config.unstable_operations["v2.update_app".to_sym] = true -end api_instance = DatadogAPIClient::V2::AppBuilderAPI.new # there is a valid "app" in the system diff --git a/features/v2/app_builder.feature b/features/v2/app_builder.feature index 1c8226e89709..1ef2502e807c 100644 --- a/features/v2/app_builder.feature +++ b/features/v2/app_builder.feature @@ -12,8 +12,7 @@ Feature: App Builder @skip-typescript @team:DataDog/app-builder-backend Scenario: Create App returns "Bad Request" response - Given operation "CreateApp" enabled - And new "CreateApp" request + Given new "CreateApp" request And body with value {"data": {"attributes": {"description": "This is a bad example app", "queries": [], "rootInstanceName": "grid0"}, "type": "appDefinitions"}} When the request is sent Then the response status is 400 Bad Request @@ -22,41 +21,36 @@ Feature: App Builder @skip-typescript @team:DataDog/app-builder-backend Scenario: Create App returns "Created" response - Given operation "CreateApp" enabled - And new "CreateApp" request - And body with value {"data": {"attributes": {"components": [{"events": [], "name": "grid0", "properties": {"children": [{"events": [], "name": "gridCell0", "properties": {"children": [{"events": [], "name": "calloutValue0", "properties": {"isVisible": true, "isUnpublishd": 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", "queries": [], "name": "Example App", "rootInstanceName": "grid0"}, "type": "appDefinitions"}} + Given new "CreateApp" request + And body with value {"data":{"type":"appDefinitions","attributes":{"rootInstanceName":"grid0","components":[{"name":"grid0","type":"grid","properties":{"children":[{"type":"gridCell","name":"gridCell0","properties":{"children":[{"name":"text0","type":"text","properties":{"content":"# Cat Facts","contentType":"markdown","textAlign":"left","verticalAlign":"top","isVisible":true},"events":[]}],"isVisible":"true","layout":{"default":{"x":0,"y":0,"width":4,"height":5}}},"events":[]},{"type":"gridCell","name":"gridCell2","properties":{"children":[{"name":"table0","type":"table","properties":{"data":"${fetchFacts?.outputs?.body?.data}","columns":[{"dataPath":"fact","header":"fact","isHidden":false,"id":"0ae2ae9e-0280-4389-83c6-1c5949f7e674"},{"dataPath":"length","header":"length","isHidden":true,"id":"c9048611-0196-4a00-9366-1ef9e3ec0408"},{"id":"8fa9284b-7a58-4f13-9959-57b7d8a7fe8f","dataPath":"Due Date","header":"Unused Old Column","disableSortBy":false,"formatter":{"type":"formatted_time","format":"LARGE_WITHOUT_TIME"},"isDeleted":true}],"summary":true,"pageSize":"${pageSize?.value}","paginationType":"server_side","isLoading":"${fetchFacts?.isLoading}","rowButtons":[],"isWrappable":false,"isScrollable":"vertical","isSubRowsEnabled":false,"globalFilter":false,"isVisible":true,"totalCount":"${fetchFacts?.outputs?.body?.total}"},"events":[]}],"isVisible":"true","layout":{"default":{"x":0,"y":5,"width":12,"height":96}}},"events":[]},{"type":"gridCell","name":"gridCell1","properties":{"children":[{"name":"text1","type":"text","properties":{"content":"## Random Fact\n\n${randomFact?.outputs?.fact}","contentType":"markdown","textAlign":"left","verticalAlign":"top","isVisible":true},"events":[]}],"isVisible":"true","layout":{"default":{"x":0,"y":101,"width":12,"height":16}}},"events":[]},{"type":"gridCell","name":"gridCell3","properties":{"children":[{"name":"button0","type":"button","properties":{"label":"Increase Page Size","level":"default","isPrimary":true,"isBorderless":false,"isLoading":false,"isDisabled":false,"isVisible":true,"iconLeft":"angleUp","iconRight":""},"events":[{"variableName":"pageSize","value":"${pageSize?.value + 1}","name":"click","type":"setStateVariableValue"}]}],"isVisible":"true","layout":{"default":{"x":10,"y":134,"width":2,"height":4}}},"events":[]},{"type":"gridCell","name":"gridCell4","properties":{"children":[{"name":"button1","type":"button","properties":{"label":"Decrease Page Size","level":"default","isPrimary":true,"isBorderless":false,"isLoading":false,"isDisabled":false,"isVisible":true,"iconLeft":"angleDown","iconRight":""},"events":[{"variableName":"pageSize","value":"${pageSize?.value - 1}","name":"click","type":"setStateVariableValue"}]}],"isVisible":"true","layout":{"default":{"x":10,"y":138,"width":2,"height":4}}},"events":[]}],"backgroundColor":"default"},"events":[]}],"queries":[{"id":"92ff0bb8-553b-4f31-87c7-ef5bd16d47d5","type":"action","name":"fetchFacts","events":[],"properties":{"spec":{"fqn":"com.datadoghq.http.request","connectionId":"5e63f4a8-4ce6-47de-ba11-f6617c1d54f3","inputs":{"verb":"GET","url":"https://catfact.ninja/facts","urlParams":[{"key":"limit","value":"${pageSize.value.toString()}"},{"key":"page","value":"${(table0.pageIndex + 1).toString()}"}]}}}},{"type":"stateVariable","name":"pageSize","properties":{"defaultValue":"${20}"},"id":"afd03c81-4075-4432-8618-ba09d52d2f2d"},{"type":"dataTransform","name":"randomFact","properties":{"outputs":"${(() => {const facts = fetchFacts.outputs.body.data\nreturn facts[Math.floor(Math.random()*facts.length)]\n})()}"},"id":"0fb22859-47dc-4137-9e41-7b67d04c525c"}],"name":"Example Cat Facts Viewer","description":"This is a slightly complicated example app that fetches and displays cat facts"}}} When the request is sent Then the response status is 201 Created And the response "data.type" is equal to "appDefinitions" @skip @team:DataDog/app-builder-backend Scenario: Delete App returns "Bad Request" response - Given operation "DeleteApp" enabled - And new "DeleteApp" request + Given new "DeleteApp" request And request contains "app_id" parameter with value "bad-app-id" When the request is sent Then the response status is 400 Bad Request @skip @team:DataDog/app-builder-backend Scenario: Delete App returns "Gone" response - Given operation "DeleteApp" enabled - And new "DeleteApp" request + Given new "DeleteApp" request And request contains "app_id" parameter with value "7addb29b-f935-472c-ae79-d1963979a23e" When the request is sent Then the response status is 410 Gone @skip-typescript @team:DataDog/app-builder-backend Scenario: Delete App returns "Not Found" response - Given operation "DeleteApp" enabled - And new "DeleteApp" request + Given new "DeleteApp" 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: Delete App returns "OK" response - Given operation "DeleteApp" enabled - And there is a valid "app" in the system + Given there is a valid "app" in the system And new "DeleteApp" request And request contains "app_id" parameter from "app.data.id" When the request is sent @@ -66,24 +60,21 @@ Feature: App Builder @generated @skip @team:DataDog/app-builder-backend Scenario: Delete Multiple Apps returns "Bad Request" response - Given operation "DeleteApps" enabled - And new "DeleteApps" request + Given new "DeleteApps" request And body with value {"data": [{"id": "aea2ed17-b45f-40d0-ba59-c86b7972c901", "type": "appDefinitions"}, {"id": "f69bb8be-6168-4fe7-a30d-370256b6504a", "type": "appDefinitions"}, {"id": "ab1ed73e-13ad-4426-b0df-a0ff8876a088", "type": "appDefinitions"}]} When the request is sent Then the response status is 400 Bad Request @skip-typescript @team:DataDog/app-builder-backend Scenario: Delete Multiple Apps returns "Not Found" response - Given operation "DeleteApps" enabled - And new "DeleteApps" request + Given new "DeleteApps" request And body with value {"data": [{"id": "aea2ed17-b45f-40d0-ba59-c86b7972c901", "type": "appDefinitions"}, {"id": "f69bb8be-6168-4fe7-a30d-370256b6504a", "type": "appDefinitions"}, {"id": "ab1ed73e-13ad-4426-b0df-a0ff8876a088", "type": "appDefinitions"}]} When the request is sent Then the response status is 404 Not Found @skip-typescript @team:DataDog/app-builder-backend Scenario: Delete Multiple Apps returns "OK" response - Given operation "DeleteApps" enabled - And new "DeleteApps" request + Given new "DeleteApps" request And there is a valid "app" in the system And body with value {"data": [{"id": "{{ app.data.id }}", "type": "appDefinitions"}]} When the request is sent @@ -93,24 +84,30 @@ Feature: App Builder @skip @team:DataDog/app-builder-backend Scenario: Get App returns "Bad Request" response - Given operation "GetApp" enabled - And new "GetApp" request + Given new "GetApp" 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: Get App returns "Gone" response + Given new "GetApp" request + And there is a valid "app" in the system + And request contains "app_id" parameter from "app.data.id" + And request contains "version" parameter with value "31" + When the request is sent + Then the response status is 410 Gone + @skip-typescript @team:DataDog/app-builder-backend Scenario: Get App returns "Not Found" response - Given operation "GetApp" enabled - And new "GetApp" request + Given new "GetApp" 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: Get App returns "OK" response - Given operation "GetApp" enabled - And new "GetApp" request + Given new "GetApp" 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 @@ -120,30 +117,26 @@ Feature: App Builder @generated @skip @team:DataDog/app-builder-backend Scenario: List Apps returns "Bad Request" response - Given operation "ListApps" enabled - And new "ListApps" request + Given new "ListApps" request When the request is sent Then the response status is 400 Bad Request @skip-typescript @team:DataDog/app-builder-backend Scenario: List Apps returns "OK" response - Given operation "ListApps" enabled - And new "ListApps" request + Given new "ListApps" request When the request is sent Then the response status is 200 OK @skip @team:DataDog/app-builder-backend Scenario: Publish App returns "Bad Request" response - Given operation "PublishApp" enabled - And new "PublishApp" request + Given new "PublishApp" 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: Publish App returns "Created" response - Given operation "PublishApp" enabled - And new "PublishApp" request + Given new "PublishApp" 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 @@ -151,32 +144,28 @@ Feature: App Builder @skip-typescript @team:DataDog/app-builder-backend Scenario: Publish App returns "Not Found" response - Given operation "PublishApp" enabled - And new "PublishApp" request + Given new "PublishApp" 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 @team:DataDog/app-builder-backend Scenario: Unpublish App returns "Bad Request" response - Given operation "UnpublishApp" enabled - And new "UnpublishApp" request + Given new "UnpublishApp" 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: Unpublish App returns "Not Found" response - Given operation "UnpublishApp" enabled - And new "UnpublishApp" request + Given new "UnpublishApp" 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: Unpublish App returns "OK" response - Given operation "UnpublishApp" enabled - And new "UnpublishApp" request + Given new "UnpublishApp" 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 @@ -184,8 +173,7 @@ Feature: App Builder @skip-typescript @team:DataDog/app-builder-backend Scenario: Update App returns "Bad Request" response - Given operation "UpdateApp" enabled - And new "UpdateApp" request + Given new "UpdateApp" request And there is a valid "app" in the system And request contains "app_id" parameter from "app.data.id" And body with value {"data": {"attributes": {"rootInstanceName": ""}, "id": "{{ app.data.id }}", "type": "appDefinitions"}} @@ -196,8 +184,7 @@ Feature: App Builder @skip-typescript @team:DataDog/app-builder-backend Scenario: Update App returns "OK" response - Given operation "UpdateApp" enabled - And new "UpdateApp" request + Given new "UpdateApp" request And there is a valid "app" in the system And request contains "app_id" parameter from "app.data.id" And body with value {"data": {"attributes": {"name": "Updated Name", "rootInstanceName": "grid0"}, "id": "{{ app.data.id }}", "type": "appDefinitions"}} diff --git a/features/v2/given.json b/features/v2/given.json index 57348eb2af37..b3c27699e521 100644 --- a/features/v2/given.json +++ b/features/v2/given.json @@ -63,7 +63,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\", \"queries\": [], \"name\": \"Example App\", \"rootInstanceName\": \"grid0\"}, \"type\": \"appDefinitions\"}}" + "value": "{\"data\":{\"type\":\"appDefinitions\",\"attributes\":{\"rootInstanceName\":\"grid0\",\"components\":[{\"name\":\"grid0\",\"type\":\"grid\",\"properties\":{\"children\":[{\"type\":\"gridCell\",\"name\":\"gridCell0\",\"properties\":{\"children\":[{\"name\":\"text0\",\"type\":\"text\",\"properties\":{\"content\":\"# Cat Facts\",\"contentType\":\"markdown\",\"textAlign\":\"left\",\"verticalAlign\":\"top\",\"isVisible\":true},\"events\":[]}],\"isVisible\":\"true\",\"layout\":{\"default\":{\"x\":0,\"y\":0,\"width\":4,\"height\":5}}},\"events\":[]},{\"type\":\"gridCell\",\"name\":\"gridCell2\",\"properties\":{\"children\":[{\"name\":\"table0\",\"type\":\"table\",\"properties\":{\"data\":\"${fetchFacts?.outputs?.body?.data}\",\"columns\":[{\"dataPath\":\"fact\",\"header\":\"fact\",\"isHidden\":false,\"id\":\"0ae2ae9e-0280-4389-83c6-1c5949f7e674\"},{\"dataPath\":\"length\",\"header\":\"length\",\"isHidden\":true,\"id\":\"c9048611-0196-4a00-9366-1ef9e3ec0408\"},{\"id\":\"8fa9284b-7a58-4f13-9959-57b7d8a7fe8f\",\"dataPath\":\"Due Date\",\"header\":\"Unused Old Column\",\"disableSortBy\":false,\"formatter\":{\"type\":\"formatted_time\",\"format\":\"LARGE_WITHOUT_TIME\"},\"isDeleted\":true}],\"summary\":true,\"pageSize\":\"${pageSize?.value}\",\"paginationType\":\"server_side\",\"isLoading\":\"${fetchFacts?.isLoading}\",\"rowButtons\":[],\"isWrappable\":false,\"isScrollable\":\"vertical\",\"isSubRowsEnabled\":false,\"globalFilter\":false,\"isVisible\":true,\"totalCount\":\"${fetchFacts?.outputs?.body?.total}\"},\"events\":[]}],\"isVisible\":\"true\",\"layout\":{\"default\":{\"x\":0,\"y\":5,\"width\":12,\"height\":96}}},\"events\":[]},{\"type\":\"gridCell\",\"name\":\"gridCell1\",\"properties\":{\"children\":[{\"name\":\"text1\",\"type\":\"text\",\"properties\":{\"content\":\"## Random Fact\\n\\n${randomFact?.outputs?.fact}\",\"contentType\":\"markdown\",\"textAlign\":\"left\",\"verticalAlign\":\"top\",\"isVisible\":true},\"events\":[]}],\"isVisible\":\"true\",\"layout\":{\"default\":{\"x\":0,\"y\":101,\"width\":12,\"height\":16}}},\"events\":[]},{\"type\":\"gridCell\",\"name\":\"gridCell3\",\"properties\":{\"children\":[{\"name\":\"button0\",\"type\":\"button\",\"properties\":{\"label\":\"Increase Page Size\",\"level\":\"default\",\"isPrimary\":true,\"isBorderless\":false,\"isLoading\":false,\"isDisabled\":false,\"isVisible\":true,\"iconLeft\":\"angleUp\",\"iconRight\":\"\"},\"events\":[{\"variableName\":\"pageSize\",\"value\":\"${pageSize?.value + 1}\",\"name\":\"click\",\"type\":\"setStateVariableValue\"}]}],\"isVisible\":\"true\",\"layout\":{\"default\":{\"x\":10,\"y\":134,\"width\":2,\"height\":4}}},\"events\":[]},{\"type\":\"gridCell\",\"name\":\"gridCell4\",\"properties\":{\"children\":[{\"name\":\"button1\",\"type\":\"button\",\"properties\":{\"label\":\"Decrease Page Size\",\"level\":\"default\",\"isPrimary\":true,\"isBorderless\":false,\"isLoading\":false,\"isDisabled\":false,\"isVisible\":true,\"iconLeft\":\"angleDown\",\"iconRight\":\"\"},\"events\":[{\"variableName\":\"pageSize\",\"value\":\"${pageSize?.value - 1}\",\"name\":\"click\",\"type\":\"setStateVariableValue\"}]}],\"isVisible\":\"true\",\"layout\":{\"default\":{\"x\":10,\"y\":138,\"width\":2,\"height\":4}}},\"events\":[]}],\"backgroundColor\":\"default\"},\"events\":[]}],\"queries\":[{\"id\":\"92ff0bb8-553b-4f31-87c7-ef5bd16d47d5\",\"type\":\"action\",\"name\":\"fetchFacts\",\"events\":[],\"properties\":{\"spec\":{\"fqn\":\"com.datadoghq.http.request\",\"connectionId\":\"5e63f4a8-4ce6-47de-ba11-f6617c1d54f3\",\"inputs\":{\"verb\":\"GET\",\"url\":\"https://catfact.ninja/facts\",\"urlParams\":[{\"key\":\"limit\",\"value\":\"${pageSize.value.toString()}\"},{\"key\":\"page\",\"value\":\"${(table0.pageIndex + 1).toString()}\"}]}}}},{\"type\":\"stateVariable\",\"name\":\"pageSize\",\"properties\":{\"defaultValue\":\"${20}\"},\"id\":\"afd03c81-4075-4432-8618-ba09d52d2f2d\"},{\"type\":\"dataTransform\",\"name\":\"randomFact\",\"properties\":{\"outputs\":\"${(() => {const facts = fetchFacts.outputs.body.data\\nreturn facts[Math.floor(Math.random()*facts.length)]\\n})()}\"},\"id\":\"0fb22859-47dc-4137-9e41-7b67d04c525c\"}],\"name\":\"Example Cat Facts Viewer\",\"description\":\"This is a slightly complicated example app that fetches and displays cat facts\"}}}" } ], "step": "there is a valid \"app\" in the system", diff --git a/lib/datadog_api_client/configuration.rb b/lib/datadog_api_client/configuration.rb index 5f8aed60fa89..921de0897ddc 100644 --- a/lib/datadog_api_client/configuration.rb +++ b/lib/datadog_api_client/configuration.rb @@ -194,14 +194,6 @@ def initialize "v2.get_open_api": false, "v2.list_apis": false, "v2.update_open_api": false, - "v2.create_app": false, - "v2.delete_app": false, - "v2.delete_apps": false, - "v2.get_app": false, - "v2.list_apps": false, - "v2.publish_app": false, - "v2.unpublish_app": false, - "v2.update_app": false, "v2.cancel_data_deletion_request": false, "v2.create_data_deletion_request": false, "v2.get_data_deletion_requests": false, diff --git a/lib/datadog_api_client/inflector.rb b/lib/datadog_api_client/inflector.rb index 319d7687fce6..6bbf445470fc 100644 --- a/lib/datadog_api_client/inflector.rb +++ b/lib/datadog_api_client/inflector.rb @@ -933,6 +933,22 @@ def overrides "v2.action_connection_data_update" => "ActionConnectionDataUpdate", "v2.action_connection_integration" => "ActionConnectionIntegration", "v2.action_connection_integration_update" => "ActionConnectionIntegrationUpdate", + "v2.action_query" => "ActionQuery", + "v2.action_query_condition" => "ActionQueryCondition", + "v2.action_query_debounce_in_ms" => "ActionQueryDebounceInMs", + "v2.action_query_mocked_outputs" => "ActionQueryMockedOutputs", + "v2.action_query_mocked_outputs_enabled" => "ActionQueryMockedOutputsEnabled", + "v2.action_query_mocked_outputs_object" => "ActionQueryMockedOutputsObject", + "v2.action_query_only_trigger_manually" => "ActionQueryOnlyTriggerManually", + "v2.action_query_polling_interval_in_ms" => "ActionQueryPollingIntervalInMs", + "v2.action_query_properties" => "ActionQueryProperties", + "v2.action_query_requires_confirmation" => "ActionQueryRequiresConfirmation", + "v2.action_query_show_toast_on_error" => "ActionQueryShowToastOnError", + "v2.action_query_spec" => "ActionQuerySpec", + "v2.action_query_spec_connection_group" => "ActionQuerySpecConnectionGroup", + "v2.action_query_spec_inputs" => "ActionQuerySpecInputs", + "v2.action_query_spec_object" => "ActionQuerySpecObject", + "v2.action_query_type" => "ActionQueryType", "v2.active_billing_dimensions_attributes" => "ActiveBillingDimensionsAttributes", "v2.active_billing_dimensions_body" => "ActiveBillingDimensionsBody", "v2.active_billing_dimensions_response" => "ActiveBillingDimensionsResponse", @@ -1457,6 +1473,9 @@ def overrides "v2.data_deletion_response_item_attributes" => "DataDeletionResponseItemAttributes", "v2.data_deletion_response_meta" => "DataDeletionResponseMeta", "v2.data_scalar_column" => "DataScalarColumn", + "v2.data_transform" => "DataTransform", + "v2.data_transform_properties" => "DataTransformProperties", + "v2.data_transform_type" => "DataTransformType", "v2.delete_app_response" => "DeleteAppResponse", "v2.delete_app_response_data" => "DeleteAppResponseData", "v2.delete_apps_request" => "DeleteAppsRequest", @@ -2269,7 +2288,6 @@ def overrides "v2.query" => "Query", "v2.query_formula" => "QueryFormula", "v2.query_sort_order" => "QuerySortOrder", - "v2.query_type" => "QueryType", "v2.readiness_gate" => "ReadinessGate", "v2.readiness_gate_threshold_type" => "ReadinessGateThresholdType", "v2.relationship_item" => "RelationshipItem", @@ -2778,6 +2796,9 @@ def overrides "v2.spec" => "Spec", "v2.spec_version" => "SpecVersion", "v2.state" => "State", + "v2.state_variable" => "StateVariable", + "v2.state_variable_properties" => "StateVariableProperties", + "v2.state_variable_type" => "StateVariableType", "v2.step" => "Step", "v2.step_display" => "StepDisplay", "v2.step_display_bounds" => "StepDisplayBounds", diff --git a/lib/datadog_api_client/v2/api/app_builder_api.rb b/lib/datadog_api_client/v2/api/app_builder_api.rb index b9bf48c8adb3..effacbd6a91f 100644 --- a/lib/datadog_api_client/v2/api/app_builder_api.rb +++ b/lib/datadog_api_client/v2/api/app_builder_api.rb @@ -39,12 +39,6 @@ def create_app(body, opts = {}) # @param opts [Hash] the optional parameters # @return [Array<(CreateAppResponse, Integer, Hash)>] CreateAppResponse data, response status code and response headers def create_app_with_http_info(body, opts = {}) - unstable_enabled = @api_client.config.unstable_operations["v2.create_app".to_sym] - if unstable_enabled - @api_client.config.logger.warn format("Using unstable operation '%s'", "v2.create_app") - else - raise DatadogAPIClient::APIError.new(message: format("Unstable operation '%s' is disabled", "v2.create_app")) - end if @api_client.config.debugging @api_client.config.logger.debug 'Calling API: AppBuilderAPI.create_app ...' @@ -112,12 +106,6 @@ def delete_app(app_id, opts = {}) # @param opts [Hash] the optional parameters # @return [Array<(DeleteAppResponse, Integer, Hash)>] DeleteAppResponse data, response status code and response headers def delete_app_with_http_info(app_id, opts = {}) - unstable_enabled = @api_client.config.unstable_operations["v2.delete_app".to_sym] - if unstable_enabled - @api_client.config.logger.warn format("Using unstable operation '%s'", "v2.delete_app") - else - raise DatadogAPIClient::APIError.new(message: format("Unstable operation '%s' is disabled", "v2.delete_app")) - end if @api_client.config.debugging @api_client.config.logger.debug 'Calling API: AppBuilderAPI.delete_app ...' @@ -183,12 +171,6 @@ def delete_apps(body, opts = {}) # @param opts [Hash] the optional parameters # @return [Array<(DeleteAppsResponse, Integer, Hash)>] DeleteAppsResponse data, response status code and response headers def delete_apps_with_http_info(body, opts = {}) - unstable_enabled = @api_client.config.unstable_operations["v2.delete_apps".to_sym] - if unstable_enabled - @api_client.config.logger.warn format("Using unstable operation '%s'", "v2.delete_apps") - else - raise DatadogAPIClient::APIError.new(message: format("Unstable operation '%s' is disabled", "v2.delete_apps")) - end if @api_client.config.debugging @api_client.config.logger.debug 'Calling API: AppBuilderAPI.delete_apps ...' @@ -257,12 +239,6 @@ def get_app(app_id, opts = {}) # @option opts [String] :version The version number of the app to retrieve. If not specified, the latest version is returned. Version numbers start at 1 and increment with each update. The special values `latest` and `deployed` can be used to retrieve the latest version or the published version, respectively. # @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] - if unstable_enabled - @api_client.config.logger.warn format("Using unstable operation '%s'", "v2.get_app") - else - raise DatadogAPIClient::APIError.new(message: format("Unstable operation '%s' is disabled", "v2.get_app")) - end if @api_client.config.debugging @api_client.config.logger.debug 'Calling API: AppBuilderAPI.get_app ...' @@ -339,12 +315,6 @@ def list_apps(opts = {}) # @option opts [Array] :sort The fields and direction to sort apps by. # @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] - if unstable_enabled - @api_client.config.logger.warn format("Using unstable operation '%s'", "v2.list_apps") - else - raise DatadogAPIClient::APIError.new(message: format("Unstable operation '%s' is disabled", "v2.list_apps")) - end if @api_client.config.debugging @api_client.config.logger.debug 'Calling API: AppBuilderAPI.list_apps ...' @@ -417,12 +387,6 @@ def publish_app(app_id, opts = {}) # @param opts [Hash] the optional parameters # @return [Array<(PublishAppResponse, Integer, Hash)>] PublishAppResponse data, response status code and response headers def publish_app_with_http_info(app_id, opts = {}) - unstable_enabled = @api_client.config.unstable_operations["v2.publish_app".to_sym] - if unstable_enabled - @api_client.config.logger.warn format("Using unstable operation '%s'", "v2.publish_app") - else - raise DatadogAPIClient::APIError.new(message: format("Unstable operation '%s' is disabled", "v2.publish_app")) - end if @api_client.config.debugging @api_client.config.logger.debug 'Calling API: AppBuilderAPI.publish_app ...' @@ -488,12 +452,6 @@ def unpublish_app(app_id, opts = {}) # @param opts [Hash] the optional parameters # @return [Array<(UnpublishAppResponse, Integer, Hash)>] UnpublishAppResponse data, response status code and response headers def unpublish_app_with_http_info(app_id, opts = {}) - unstable_enabled = @api_client.config.unstable_operations["v2.unpublish_app".to_sym] - if unstable_enabled - @api_client.config.logger.warn format("Using unstable operation '%s'", "v2.unpublish_app") - else - raise DatadogAPIClient::APIError.new(message: format("Unstable operation '%s' is disabled", "v2.unpublish_app")) - end if @api_client.config.debugging @api_client.config.logger.debug 'Calling API: AppBuilderAPI.unpublish_app ...' @@ -560,12 +518,6 @@ def update_app(app_id, body, opts = {}) # @param opts [Hash] the optional parameters # @return [Array<(UpdateAppResponse, Integer, Hash)>] UpdateAppResponse data, response status code and response headers def update_app_with_http_info(app_id, body, opts = {}) - unstable_enabled = @api_client.config.unstable_operations["v2.update_app".to_sym] - if unstable_enabled - @api_client.config.logger.warn format("Using unstable operation '%s'", "v2.update_app") - else - raise DatadogAPIClient::APIError.new(message: format("Unstable operation '%s' is disabled", "v2.update_app")) - end if @api_client.config.debugging @api_client.config.logger.debug 'Calling API: AppBuilderAPI.update_app ...' diff --git a/lib/datadog_api_client/v2/models/action_query.rb b/lib/datadog_api_client/v2/models/action_query.rb new file mode 100644 index 000000000000..d9263e27374a --- /dev/null +++ b/lib/datadog_api_client/v2/models/action_query.rb @@ -0,0 +1,198 @@ +=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 + # An action query. This query type is used to trigger an action, such as sending a HTTP request. + class ActionQuery + include BaseGenericModel + + # Events to listen for downstream of the action query. + attr_accessor :events + + # The ID of the action query. + attr_reader :id + + # A unique identifier for this action query. This name is also used to access the query's result throughout the app. + attr_reader :name + + # The properties of the action query. + attr_reader :properties + + # The action query type. + attr_reader :type + + attr_accessor :additional_properties + + # Attribute mapping from ruby-style variable name to JSON key. + # @!visibility private + def self.attribute_map + { + :'events' => :'events', + :'id' => :'id', + :'name' => :'name', + :'properties' => :'properties', + :'type' => :'type' + } + end + + # Attribute type mapping. + # @!visibility private + def self.openapi_types + { + :'events' => :'Array', + :'id' => :'UUID', + :'name' => :'String', + :'properties' => :'ActionQueryProperties', + :'type' => :'ActionQueryType' + } + 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::ActionQuery` 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?(:'events') + if (value = attributes[:'events']).is_a?(Array) + self.events = value + end + end + + if attributes.key?(:'id') + self.id = attributes[:'id'] + end + + if attributes.key?(:'name') + self.name = attributes[:'name'] + end + + if attributes.key?(:'properties') + self.properties = attributes[:'properties'] + end + + if attributes.key?(:'type') + self.type = attributes[:'type'] + end + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + # @!visibility private + def valid? + return false if @id.nil? + return false if @name.nil? + return false if @properties.nil? + return false if @type.nil? + true + end + + # Custom attribute writer method with validation + # @param id [Object] Object to be assigned + # @!visibility private + def id=(id) + if id.nil? + fail ArgumentError, 'invalid value for "id", id cannot be nil.' + end + @id = id + end + + # Custom attribute writer method with validation + # @param name [Object] Object to be assigned + # @!visibility private + def name=(name) + if name.nil? + fail ArgumentError, 'invalid value for "name", name cannot be nil.' + end + @name = name + end + + # Custom attribute writer method with validation + # @param properties [Object] Object to be assigned + # @!visibility private + def properties=(properties) + if properties.nil? + fail ArgumentError, 'invalid value for "properties", properties cannot be nil.' + end + @properties = properties + end + + # Custom attribute writer method with validation + # @param type [Object] Object to be assigned + # @!visibility private + def type=(type) + if type.nil? + fail ArgumentError, 'invalid value for "type", type cannot be nil.' + end + @type = type + 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 && + events == o.events && + id == o.id && + name == o.name && + properties == o.properties && + type == o.type && + additional_properties == o.additional_properties + end + + # Calculates hash code according to all attributes. + # @return [Integer] Hash code + # @!visibility private + def hash + [events, id, name, properties, type, additional_properties].hash + end + end +end diff --git a/lib/datadog_api_client/v2/models/action_query_condition.rb b/lib/datadog_api_client/v2/models/action_query_condition.rb new file mode 100644 index 000000000000..6071a3749f77 --- /dev/null +++ b/lib/datadog_api_client/v2/models/action_query_condition.rb @@ -0,0 +1,63 @@ +=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 + # Whether to run this query. If specified, the query will only run if this condition evaluates to `true` in JavaScript and all other conditions are also met. + module ActionQueryCondition + class << self + include BaseOneOfModel + include BaseOneOfModelNoDiscriminator + + # List of class defined in oneOf (OpenAPI v3) + def openapi_one_of + [ + :'Boolean', + :'String' + ] + end + # Builds the object + # @param data [Mixed] Data to be matched against the list of oneOf items + # @return [Object] Returns the model or the data itself + def build(data) + # Go through the list of oneOf items and attempt to identify the appropriate one. + # Note: + # - We do not attempt to check whether exactly one item matches. + # - No advanced validation of types in some cases (e.g. "x: { type: string }" will happily match { x: 123 }) + # due to the way the deserialization is made in the base_object template (it just casts without verifying). + # - TODO: scalar values are de facto behaving as if they were nullable. + # - TODO: logging when debugging is set. + openapi_one_of.each do |klass| + begin + next if klass == :AnyType # "nullable: true" + typed_data = find_and_cast_into_type(klass, data) + next if typed_data.respond_to?(:_unparsed) && typed_data._unparsed + return typed_data if typed_data + rescue # rescue all errors so we keep iterating even if the current item lookup raises + end + end + + if openapi_one_of.include?(:AnyType) + data + else + self._unparsed = true + DatadogAPIClient::UnparsedObject.new(data) + end + end + end + end +end diff --git a/lib/datadog_api_client/v2/models/action_query_debounce_in_ms.rb b/lib/datadog_api_client/v2/models/action_query_debounce_in_ms.rb new file mode 100644 index 000000000000..fec61bd87622 --- /dev/null +++ b/lib/datadog_api_client/v2/models/action_query_debounce_in_ms.rb @@ -0,0 +1,63 @@ +=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 minimum time in milliseconds that must pass before the query can be triggered again. This is useful for preventing accidental double-clicks from triggering the query multiple times. + module ActionQueryDebounceInMs + class << self + include BaseOneOfModel + include BaseOneOfModelNoDiscriminator + + # List of class defined in oneOf (OpenAPI v3) + def openapi_one_of + [ + :'Float', + :'String' + ] + end + # Builds the object + # @param data [Mixed] Data to be matched against the list of oneOf items + # @return [Object] Returns the model or the data itself + def build(data) + # Go through the list of oneOf items and attempt to identify the appropriate one. + # Note: + # - We do not attempt to check whether exactly one item matches. + # - No advanced validation of types in some cases (e.g. "x: { type: string }" will happily match { x: 123 }) + # due to the way the deserialization is made in the base_object template (it just casts without verifying). + # - TODO: scalar values are de facto behaving as if they were nullable. + # - TODO: logging when debugging is set. + openapi_one_of.each do |klass| + begin + next if klass == :AnyType # "nullable: true" + typed_data = find_and_cast_into_type(klass, data) + next if typed_data.respond_to?(:_unparsed) && typed_data._unparsed + return typed_data if typed_data + rescue # rescue all errors so we keep iterating even if the current item lookup raises + end + end + + if openapi_one_of.include?(:AnyType) + data + else + self._unparsed = true + DatadogAPIClient::UnparsedObject.new(data) + end + end + end + end +end diff --git a/lib/datadog_api_client/v2/models/action_query_mocked_outputs.rb b/lib/datadog_api_client/v2/models/action_query_mocked_outputs.rb new file mode 100644 index 000000000000..9e53e50dcb14 --- /dev/null +++ b/lib/datadog_api_client/v2/models/action_query_mocked_outputs.rb @@ -0,0 +1,63 @@ +=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 mocked outputs of the action query. This is useful for testing the app without actually running the action. + module ActionQueryMockedOutputs + class << self + include BaseOneOfModel + include BaseOneOfModelNoDiscriminator + + # List of class defined in oneOf (OpenAPI v3) + def openapi_one_of + [ + :'String', + :'ActionQueryMockedOutputsObject' + ] + end + # Builds the object + # @param data [Mixed] Data to be matched against the list of oneOf items + # @return [Object] Returns the model or the data itself + def build(data) + # Go through the list of oneOf items and attempt to identify the appropriate one. + # Note: + # - We do not attempt to check whether exactly one item matches. + # - No advanced validation of types in some cases (e.g. "x: { type: string }" will happily match { x: 123 }) + # due to the way the deserialization is made in the base_object template (it just casts without verifying). + # - TODO: scalar values are de facto behaving as if they were nullable. + # - TODO: logging when debugging is set. + openapi_one_of.each do |klass| + begin + next if klass == :AnyType # "nullable: true" + typed_data = find_and_cast_into_type(klass, data) + next if typed_data.respond_to?(:_unparsed) && typed_data._unparsed + return typed_data if typed_data + rescue # rescue all errors so we keep iterating even if the current item lookup raises + end + end + + if openapi_one_of.include?(:AnyType) + data + else + self._unparsed = true + DatadogAPIClient::UnparsedObject.new(data) + end + end + end + end +end diff --git a/lib/datadog_api_client/v2/models/action_query_mocked_outputs_enabled.rb b/lib/datadog_api_client/v2/models/action_query_mocked_outputs_enabled.rb new file mode 100644 index 000000000000..c3e48600c2b1 --- /dev/null +++ b/lib/datadog_api_client/v2/models/action_query_mocked_outputs_enabled.rb @@ -0,0 +1,63 @@ +=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 + # Whether to enable the mocked outputs for testing. + module ActionQueryMockedOutputsEnabled + class << self + include BaseOneOfModel + include BaseOneOfModelNoDiscriminator + + # List of class defined in oneOf (OpenAPI v3) + def openapi_one_of + [ + :'Boolean', + :'String' + ] + end + # Builds the object + # @param data [Mixed] Data to be matched against the list of oneOf items + # @return [Object] Returns the model or the data itself + def build(data) + # Go through the list of oneOf items and attempt to identify the appropriate one. + # Note: + # - We do not attempt to check whether exactly one item matches. + # - No advanced validation of types in some cases (e.g. "x: { type: string }" will happily match { x: 123 }) + # due to the way the deserialization is made in the base_object template (it just casts without verifying). + # - TODO: scalar values are de facto behaving as if they were nullable. + # - TODO: logging when debugging is set. + openapi_one_of.each do |klass| + begin + next if klass == :AnyType # "nullable: true" + typed_data = find_and_cast_into_type(klass, data) + next if typed_data.respond_to?(:_unparsed) && typed_data._unparsed + return typed_data if typed_data + rescue # rescue all errors so we keep iterating even if the current item lookup raises + end + end + + if openapi_one_of.include?(:AnyType) + data + else + self._unparsed = true + DatadogAPIClient::UnparsedObject.new(data) + end + end + end + end +end diff --git a/lib/datadog_api_client/v2/models/action_query_mocked_outputs_object.rb b/lib/datadog_api_client/v2/models/action_query_mocked_outputs_object.rb new file mode 100644 index 000000000000..673f3778ed87 --- /dev/null +++ b/lib/datadog_api_client/v2/models/action_query_mocked_outputs_object.rb @@ -0,0 +1,133 @@ +=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 mocked outputs of the action query. + class ActionQueryMockedOutputsObject + include BaseGenericModel + + # Whether to enable the mocked outputs for testing. + attr_reader :enabled + + # The mocked outputs of the action query, serialized as JSON. + attr_accessor :outputs + + attr_accessor :additional_properties + + # Attribute mapping from ruby-style variable name to JSON key. + # @!visibility private + def self.attribute_map + { + :'enabled' => :'enabled', + :'outputs' => :'outputs' + } + end + + # Attribute type mapping. + # @!visibility private + def self.openapi_types + { + :'enabled' => :'ActionQueryMockedOutputsEnabled', + :'outputs' => :'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::ActionQueryMockedOutputsObject` 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?(:'enabled') + self.enabled = attributes[:'enabled'] + end + + if attributes.key?(:'outputs') + self.outputs = attributes[:'outputs'] + end + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + # @!visibility private + def valid? + return false if @enabled.nil? + true + end + + # Custom attribute writer method with validation + # @param enabled [Object] Object to be assigned + # @!visibility private + def enabled=(enabled) + if enabled.nil? + fail ArgumentError, 'invalid value for "enabled", enabled cannot be nil.' + end + @enabled = enabled + 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 && + enabled == o.enabled && + outputs == o.outputs && + additional_properties == o.additional_properties + end + + # Calculates hash code according to all attributes. + # @return [Integer] Hash code + # @!visibility private + def hash + [enabled, outputs, additional_properties].hash + end + end +end diff --git a/lib/datadog_api_client/v2/models/action_query_only_trigger_manually.rb b/lib/datadog_api_client/v2/models/action_query_only_trigger_manually.rb new file mode 100644 index 000000000000..8f2a979876b0 --- /dev/null +++ b/lib/datadog_api_client/v2/models/action_query_only_trigger_manually.rb @@ -0,0 +1,63 @@ +=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 + # Determines when this query is executed. If set to `false`, the query will run when the app loads and whenever any query arguments change. If set to `true`, the query will only run when manually triggered from elsewhere in the app. + module ActionQueryOnlyTriggerManually + class << self + include BaseOneOfModel + include BaseOneOfModelNoDiscriminator + + # List of class defined in oneOf (OpenAPI v3) + def openapi_one_of + [ + :'Boolean', + :'String' + ] + end + # Builds the object + # @param data [Mixed] Data to be matched against the list of oneOf items + # @return [Object] Returns the model or the data itself + def build(data) + # Go through the list of oneOf items and attempt to identify the appropriate one. + # Note: + # - We do not attempt to check whether exactly one item matches. + # - No advanced validation of types in some cases (e.g. "x: { type: string }" will happily match { x: 123 }) + # due to the way the deserialization is made in the base_object template (it just casts without verifying). + # - TODO: scalar values are de facto behaving as if they were nullable. + # - TODO: logging when debugging is set. + openapi_one_of.each do |klass| + begin + next if klass == :AnyType # "nullable: true" + typed_data = find_and_cast_into_type(klass, data) + next if typed_data.respond_to?(:_unparsed) && typed_data._unparsed + return typed_data if typed_data + rescue # rescue all errors so we keep iterating even if the current item lookup raises + end + end + + if openapi_one_of.include?(:AnyType) + data + else + self._unparsed = true + DatadogAPIClient::UnparsedObject.new(data) + end + end + end + end +end diff --git a/lib/datadog_api_client/v2/models/action_query_polling_interval_in_ms.rb b/lib/datadog_api_client/v2/models/action_query_polling_interval_in_ms.rb new file mode 100644 index 000000000000..52c43e402177 --- /dev/null +++ b/lib/datadog_api_client/v2/models/action_query_polling_interval_in_ms.rb @@ -0,0 +1,63 @@ +=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 + # If specified, the app will poll the query at the specified interval in milliseconds. The minimum polling interval is 15 seconds. The query will only poll when the app's browser tab is active. + module ActionQueryPollingIntervalInMs + class << self + include BaseOneOfModel + include BaseOneOfModelNoDiscriminator + + # List of class defined in oneOf (OpenAPI v3) + def openapi_one_of + [ + :'Float', + :'String' + ] + end + # Builds the object + # @param data [Mixed] Data to be matched against the list of oneOf items + # @return [Object] Returns the model or the data itself + def build(data) + # Go through the list of oneOf items and attempt to identify the appropriate one. + # Note: + # - We do not attempt to check whether exactly one item matches. + # - No advanced validation of types in some cases (e.g. "x: { type: string }" will happily match { x: 123 }) + # due to the way the deserialization is made in the base_object template (it just casts without verifying). + # - TODO: scalar values are de facto behaving as if they were nullable. + # - TODO: logging when debugging is set. + openapi_one_of.each do |klass| + begin + next if klass == :AnyType # "nullable: true" + typed_data = find_and_cast_into_type(klass, data) + next if typed_data.respond_to?(:_unparsed) && typed_data._unparsed + return typed_data if typed_data + rescue # rescue all errors so we keep iterating even if the current item lookup raises + end + end + + if openapi_one_of.include?(:AnyType) + data + else + self._unparsed = true + DatadogAPIClient::UnparsedObject.new(data) + end + end + end + end +end diff --git a/lib/datadog_api_client/v2/models/action_query_properties.rb b/lib/datadog_api_client/v2/models/action_query_properties.rb new file mode 100644 index 000000000000..91eda4d19215 --- /dev/null +++ b/lib/datadog_api_client/v2/models/action_query_properties.rb @@ -0,0 +1,203 @@ +=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 properties of the action query. + class ActionQueryProperties + include BaseGenericModel + + # Whether to run this query. If specified, the query will only run if this condition evaluates to `true` in JavaScript and all other conditions are also met. + attr_accessor :condition + + # The minimum time in milliseconds that must pass before the query can be triggered again. This is useful for preventing accidental double-clicks from triggering the query multiple times. + attr_accessor :debounce_in_ms + + # The mocked outputs of the action query. This is useful for testing the app without actually running the action. + attr_accessor :mocked_outputs + + # Determines when this query is executed. If set to `false`, the query will run when the app loads and whenever any query arguments change. If set to `true`, the query will only run when manually triggered from elsewhere in the app. + attr_accessor :only_trigger_manually + + # The post-query transformation function, which is a JavaScript function that changes the query's `.outputs` property after the query's execution. + attr_accessor :outputs + + # If specified, the app will poll the query at the specified interval in milliseconds. The minimum polling interval is 15 seconds. The query will only poll when the app's browser tab is active. + attr_accessor :polling_interval_in_ms + + # Whether to prompt the user to confirm this query before it runs. + attr_accessor :requires_confirmation + + # Whether to display a toast to the user when the query returns an error. + attr_accessor :show_toast_on_error + + # The definition of the action query. + attr_reader :spec + + attr_accessor :additional_properties + + # Attribute mapping from ruby-style variable name to JSON key. + # @!visibility private + def self.attribute_map + { + :'condition' => :'condition', + :'debounce_in_ms' => :'debounceInMs', + :'mocked_outputs' => :'mockedOutputs', + :'only_trigger_manually' => :'onlyTriggerManually', + :'outputs' => :'outputs', + :'polling_interval_in_ms' => :'pollingIntervalInMs', + :'requires_confirmation' => :'requiresConfirmation', + :'show_toast_on_error' => :'showToastOnError', + :'spec' => :'spec' + } + end + + # Attribute type mapping. + # @!visibility private + def self.openapi_types + { + :'condition' => :'ActionQueryCondition', + :'debounce_in_ms' => :'ActionQueryDebounceInMs', + :'mocked_outputs' => :'ActionQueryMockedOutputs', + :'only_trigger_manually' => :'ActionQueryOnlyTriggerManually', + :'outputs' => :'String', + :'polling_interval_in_ms' => :'ActionQueryPollingIntervalInMs', + :'requires_confirmation' => :'ActionQueryRequiresConfirmation', + :'show_toast_on_error' => :'ActionQueryShowToastOnError', + :'spec' => :'ActionQuerySpec' + } + 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::ActionQueryProperties` 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?(:'condition') + self.condition = attributes[:'condition'] + end + + if attributes.key?(:'debounce_in_ms') + self.debounce_in_ms = attributes[:'debounce_in_ms'] + end + + if attributes.key?(:'mocked_outputs') + self.mocked_outputs = attributes[:'mocked_outputs'] + end + + if attributes.key?(:'only_trigger_manually') + self.only_trigger_manually = attributes[:'only_trigger_manually'] + end + + if attributes.key?(:'outputs') + self.outputs = attributes[:'outputs'] + end + + if attributes.key?(:'polling_interval_in_ms') + self.polling_interval_in_ms = attributes[:'polling_interval_in_ms'] + end + + if attributes.key?(:'requires_confirmation') + self.requires_confirmation = attributes[:'requires_confirmation'] + end + + if attributes.key?(:'show_toast_on_error') + self.show_toast_on_error = attributes[:'show_toast_on_error'] + end + + if attributes.key?(:'spec') + self.spec = attributes[:'spec'] + end + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + # @!visibility private + def valid? + return false if @spec.nil? + true + end + + # Custom attribute writer method with validation + # @param spec [Object] Object to be assigned + # @!visibility private + def spec=(spec) + if spec.nil? + fail ArgumentError, 'invalid value for "spec", spec cannot be nil.' + end + @spec = spec + 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 && + condition == o.condition && + debounce_in_ms == o.debounce_in_ms && + mocked_outputs == o.mocked_outputs && + only_trigger_manually == o.only_trigger_manually && + outputs == o.outputs && + polling_interval_in_ms == o.polling_interval_in_ms && + requires_confirmation == o.requires_confirmation && + show_toast_on_error == o.show_toast_on_error && + spec == o.spec && + additional_properties == o.additional_properties + end + + # Calculates hash code according to all attributes. + # @return [Integer] Hash code + # @!visibility private + def hash + [condition, debounce_in_ms, mocked_outputs, only_trigger_manually, outputs, polling_interval_in_ms, requires_confirmation, show_toast_on_error, spec, additional_properties].hash + end + end +end diff --git a/lib/datadog_api_client/v2/models/action_query_requires_confirmation.rb b/lib/datadog_api_client/v2/models/action_query_requires_confirmation.rb new file mode 100644 index 000000000000..7e2a6360dee2 --- /dev/null +++ b/lib/datadog_api_client/v2/models/action_query_requires_confirmation.rb @@ -0,0 +1,63 @@ +=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 + # Whether to prompt the user to confirm this query before it runs. + module ActionQueryRequiresConfirmation + class << self + include BaseOneOfModel + include BaseOneOfModelNoDiscriminator + + # List of class defined in oneOf (OpenAPI v3) + def openapi_one_of + [ + :'Boolean', + :'String' + ] + end + # Builds the object + # @param data [Mixed] Data to be matched against the list of oneOf items + # @return [Object] Returns the model or the data itself + def build(data) + # Go through the list of oneOf items and attempt to identify the appropriate one. + # Note: + # - We do not attempt to check whether exactly one item matches. + # - No advanced validation of types in some cases (e.g. "x: { type: string }" will happily match { x: 123 }) + # due to the way the deserialization is made in the base_object template (it just casts without verifying). + # - TODO: scalar values are de facto behaving as if they were nullable. + # - TODO: logging when debugging is set. + openapi_one_of.each do |klass| + begin + next if klass == :AnyType # "nullable: true" + typed_data = find_and_cast_into_type(klass, data) + next if typed_data.respond_to?(:_unparsed) && typed_data._unparsed + return typed_data if typed_data + rescue # rescue all errors so we keep iterating even if the current item lookup raises + end + end + + if openapi_one_of.include?(:AnyType) + data + else + self._unparsed = true + DatadogAPIClient::UnparsedObject.new(data) + end + end + end + end +end diff --git a/lib/datadog_api_client/v2/models/action_query_show_toast_on_error.rb b/lib/datadog_api_client/v2/models/action_query_show_toast_on_error.rb new file mode 100644 index 000000000000..7ba6e249aa31 --- /dev/null +++ b/lib/datadog_api_client/v2/models/action_query_show_toast_on_error.rb @@ -0,0 +1,63 @@ +=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 + # Whether to display a toast to the user when the query returns an error. + module ActionQueryShowToastOnError + class << self + include BaseOneOfModel + include BaseOneOfModelNoDiscriminator + + # List of class defined in oneOf (OpenAPI v3) + def openapi_one_of + [ + :'Boolean', + :'String' + ] + end + # Builds the object + # @param data [Mixed] Data to be matched against the list of oneOf items + # @return [Object] Returns the model or the data itself + def build(data) + # Go through the list of oneOf items and attempt to identify the appropriate one. + # Note: + # - We do not attempt to check whether exactly one item matches. + # - No advanced validation of types in some cases (e.g. "x: { type: string }" will happily match { x: 123 }) + # due to the way the deserialization is made in the base_object template (it just casts without verifying). + # - TODO: scalar values are de facto behaving as if they were nullable. + # - TODO: logging when debugging is set. + openapi_one_of.each do |klass| + begin + next if klass == :AnyType # "nullable: true" + typed_data = find_and_cast_into_type(klass, data) + next if typed_data.respond_to?(:_unparsed) && typed_data._unparsed + return typed_data if typed_data + rescue # rescue all errors so we keep iterating even if the current item lookup raises + end + end + + if openapi_one_of.include?(:AnyType) + data + else + self._unparsed = true + DatadogAPIClient::UnparsedObject.new(data) + end + end + end + end +end diff --git a/lib/datadog_api_client/v2/models/action_query_spec.rb b/lib/datadog_api_client/v2/models/action_query_spec.rb new file mode 100644 index 000000000000..d91a9e35cd4c --- /dev/null +++ b/lib/datadog_api_client/v2/models/action_query_spec.rb @@ -0,0 +1,63 @@ +=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 the action query. + module ActionQuerySpec + class << self + include BaseOneOfModel + include BaseOneOfModelNoDiscriminator + + # List of class defined in oneOf (OpenAPI v3) + def openapi_one_of + [ + :'String', + :'ActionQuerySpecObject' + ] + end + # Builds the object + # @param data [Mixed] Data to be matched against the list of oneOf items + # @return [Object] Returns the model or the data itself + def build(data) + # Go through the list of oneOf items and attempt to identify the appropriate one. + # Note: + # - We do not attempt to check whether exactly one item matches. + # - No advanced validation of types in some cases (e.g. "x: { type: string }" will happily match { x: 123 }) + # due to the way the deserialization is made in the base_object template (it just casts without verifying). + # - TODO: scalar values are de facto behaving as if they were nullable. + # - TODO: logging when debugging is set. + openapi_one_of.each do |klass| + begin + next if klass == :AnyType # "nullable: true" + typed_data = find_and_cast_into_type(klass, data) + next if typed_data.respond_to?(:_unparsed) && typed_data._unparsed + return typed_data if typed_data + rescue # rescue all errors so we keep iterating even if the current item lookup raises + end + end + + if openapi_one_of.include?(:AnyType) + data + else + self._unparsed = true + DatadogAPIClient::UnparsedObject.new(data) + end + end + end + end +end diff --git a/lib/datadog_api_client/v2/models/action_query_spec_connection_group.rb b/lib/datadog_api_client/v2/models/action_query_spec_connection_group.rb new file mode 100644 index 000000000000..7c21fd6702de --- /dev/null +++ b/lib/datadog_api_client/v2/models/action_query_spec_connection_group.rb @@ -0,0 +1,117 @@ +=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 connection group to use for an action query. + class ActionQuerySpecConnectionGroup + include BaseGenericModel + + # The ID of the connection group. + attr_accessor :id + + # The tags of the connection group. + attr_accessor :tags + + attr_accessor :additional_properties + + # Attribute mapping from ruby-style variable name to JSON key. + # @!visibility private + def self.attribute_map + { + :'id' => :'id', + :'tags' => :'tags' + } + end + + # Attribute type mapping. + # @!visibility private + def self.openapi_types + { + :'id' => :'UUID', + :'tags' => :'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::ActionQuerySpecConnectionGroup` 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?(:'id') + self.id = attributes[:'id'] + end + + if attributes.key?(:'tags') + if (value = attributes[:'tags']).is_a?(Array) + self.tags = 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 && + id == o.id && + tags == o.tags && + additional_properties == o.additional_properties + end + + # Calculates hash code according to all attributes. + # @return [Integer] Hash code + # @!visibility private + def hash + [id, tags, additional_properties].hash + end + end +end diff --git a/lib/datadog_api_client/v2/models/action_query_spec_inputs.rb b/lib/datadog_api_client/v2/models/action_query_spec_inputs.rb new file mode 100644 index 000000000000..e801237b9279 --- /dev/null +++ b/lib/datadog_api_client/v2/models/action_query_spec_inputs.rb @@ -0,0 +1,63 @@ +=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 inputs to the action query. These are the values that are passed to the action when it is triggered. + module ActionQuerySpecInputs + class << self + include BaseOneOfModel + include BaseOneOfModelNoDiscriminator + + # List of class defined in oneOf (OpenAPI v3) + def openapi_one_of + [ + :'String', + :'ActionQuerySpecInput' + ] + end + # Builds the object + # @param data [Mixed] Data to be matched against the list of oneOf items + # @return [Object] Returns the model or the data itself + def build(data) + # Go through the list of oneOf items and attempt to identify the appropriate one. + # Note: + # - We do not attempt to check whether exactly one item matches. + # - No advanced validation of types in some cases (e.g. "x: { type: string }" will happily match { x: 123 }) + # due to the way the deserialization is made in the base_object template (it just casts without verifying). + # - TODO: scalar values are de facto behaving as if they were nullable. + # - TODO: logging when debugging is set. + openapi_one_of.each do |klass| + begin + next if klass == :AnyType # "nullable: true" + typed_data = find_and_cast_into_type(klass, data) + next if typed_data.respond_to?(:_unparsed) && typed_data._unparsed + return typed_data if typed_data + rescue # rescue all errors so we keep iterating even if the current item lookup raises + end + end + + if openapi_one_of.include?(:AnyType) + data + else + self._unparsed = true + DatadogAPIClient::UnparsedObject.new(data) + end + end + end + end +end diff --git a/lib/datadog_api_client/v2/models/action_query_spec_object.rb b/lib/datadog_api_client/v2/models/action_query_spec_object.rb new file mode 100644 index 000000000000..c06ff75b838a --- /dev/null +++ b/lib/datadog_api_client/v2/models/action_query_spec_object.rb @@ -0,0 +1,153 @@ +=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 action query spec object. + class ActionQuerySpecObject + include BaseGenericModel + + # The connection group to use for an action query. + attr_accessor :connection_group + + # The ID of the custom connection to use for this action query. + attr_accessor :connection_id + + # The fully qualified name of the action type. + attr_reader :fqn + + # The inputs to the action query. These are the values that are passed to the action when it is triggered. + attr_accessor :inputs + + attr_accessor :additional_properties + + # Attribute mapping from ruby-style variable name to JSON key. + # @!visibility private + def self.attribute_map + { + :'connection_group' => :'connectionGroup', + :'connection_id' => :'connectionId', + :'fqn' => :'fqn', + :'inputs' => :'inputs' + } + end + + # Attribute type mapping. + # @!visibility private + def self.openapi_types + { + :'connection_group' => :'ActionQuerySpecConnectionGroup', + :'connection_id' => :'String', + :'fqn' => :'String', + :'inputs' => :'ActionQuerySpecInputs' + } + 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::ActionQuerySpecObject` 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?(:'connection_group') + self.connection_group = attributes[:'connection_group'] + end + + if attributes.key?(:'connection_id') + self.connection_id = attributes[:'connection_id'] + end + + if attributes.key?(:'fqn') + self.fqn = attributes[:'fqn'] + end + + if attributes.key?(:'inputs') + self.inputs = attributes[:'inputs'] + end + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + # @!visibility private + def valid? + return false if @fqn.nil? + true + end + + # Custom attribute writer method with validation + # @param fqn [Object] Object to be assigned + # @!visibility private + def fqn=(fqn) + if fqn.nil? + fail ArgumentError, 'invalid value for "fqn", fqn cannot be nil.' + end + @fqn = fqn + 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 && + connection_group == o.connection_group && + connection_id == o.connection_id && + fqn == o.fqn && + inputs == o.inputs && + additional_properties == o.additional_properties + end + + # Calculates hash code according to all attributes. + # @return [Integer] Hash code + # @!visibility private + def hash + [connection_group, connection_id, fqn, inputs, additional_properties].hash + end + end +end diff --git a/lib/datadog_api_client/v2/models/action_query_type.rb b/lib/datadog_api_client/v2/models/action_query_type.rb new file mode 100644 index 000000000000..fc3403ef636b --- /dev/null +++ b/lib/datadog_api_client/v2/models/action_query_type.rb @@ -0,0 +1,26 @@ +=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 action query type. + class ActionQueryType + include BaseEnumModel + + ACTION = "action".freeze + end +end diff --git a/lib/datadog_api_client/v2/models/data_transform.rb b/lib/datadog_api_client/v2/models/data_transform.rb new file mode 100644 index 000000000000..4ab2c1946165 --- /dev/null +++ b/lib/datadog_api_client/v2/models/data_transform.rb @@ -0,0 +1,186 @@ +=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 + # A data transformer, which is custom JavaScript code that executes and transforms data when its inputs change. + class DataTransform + include BaseGenericModel + + # The ID of the data transformer. + attr_reader :id + + # A unique identifier for this data transformer. This name is also used to access the transformer's result throughout the app. + attr_reader :name + + # The properties of the data transformer. + attr_reader :properties + + # The data transform type. + attr_reader :type + + attr_accessor :additional_properties + + # Attribute mapping from ruby-style variable name to JSON key. + # @!visibility private + def self.attribute_map + { + :'id' => :'id', + :'name' => :'name', + :'properties' => :'properties', + :'type' => :'type' + } + end + + # Attribute type mapping. + # @!visibility private + def self.openapi_types + { + :'id' => :'UUID', + :'name' => :'String', + :'properties' => :'DataTransformProperties', + :'type' => :'DataTransformType' + } + 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::DataTransform` 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?(:'id') + self.id = attributes[:'id'] + end + + if attributes.key?(:'name') + self.name = attributes[:'name'] + end + + if attributes.key?(:'properties') + self.properties = attributes[:'properties'] + end + + if attributes.key?(:'type') + self.type = attributes[:'type'] + end + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + # @!visibility private + def valid? + return false if @id.nil? + return false if @name.nil? + return false if @properties.nil? + return false if @type.nil? + true + end + + # Custom attribute writer method with validation + # @param id [Object] Object to be assigned + # @!visibility private + def id=(id) + if id.nil? + fail ArgumentError, 'invalid value for "id", id cannot be nil.' + end + @id = id + end + + # Custom attribute writer method with validation + # @param name [Object] Object to be assigned + # @!visibility private + def name=(name) + if name.nil? + fail ArgumentError, 'invalid value for "name", name cannot be nil.' + end + @name = name + end + + # Custom attribute writer method with validation + # @param properties [Object] Object to be assigned + # @!visibility private + def properties=(properties) + if properties.nil? + fail ArgumentError, 'invalid value for "properties", properties cannot be nil.' + end + @properties = properties + end + + # Custom attribute writer method with validation + # @param type [Object] Object to be assigned + # @!visibility private + def type=(type) + if type.nil? + fail ArgumentError, 'invalid value for "type", type cannot be nil.' + end + @type = type + 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 && + id == o.id && + name == o.name && + properties == o.properties && + type == o.type && + additional_properties == o.additional_properties + end + + # Calculates hash code according to all attributes. + # @return [Integer] Hash code + # @!visibility private + def hash + [id, name, properties, type, additional_properties].hash + end + end +end diff --git a/lib/datadog_api_client/v2/models/data_transform_properties.rb b/lib/datadog_api_client/v2/models/data_transform_properties.rb new file mode 100644 index 000000000000..9080a602daa4 --- /dev/null +++ b/lib/datadog_api_client/v2/models/data_transform_properties.rb @@ -0,0 +1,105 @@ +=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 properties of the data transformer. + class DataTransformProperties + include BaseGenericModel + + # A JavaScript function that returns the transformed data. + attr_accessor :outputs + + attr_accessor :additional_properties + + # Attribute mapping from ruby-style variable name to JSON key. + # @!visibility private + def self.attribute_map + { + :'outputs' => :'outputs' + } + end + + # Attribute type mapping. + # @!visibility private + def self.openapi_types + { + :'outputs' => :'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::DataTransformProperties` 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?(:'outputs') + self.outputs = attributes[:'outputs'] + 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 && + outputs == o.outputs && + additional_properties == o.additional_properties + end + + # Calculates hash code according to all attributes. + # @return [Integer] Hash code + # @!visibility private + def hash + [outputs, additional_properties].hash + end + end +end diff --git a/lib/datadog_api_client/v2/models/query_type.rb b/lib/datadog_api_client/v2/models/data_transform_type.rb similarity index 84% rename from lib/datadog_api_client/v2/models/query_type.rb rename to lib/datadog_api_client/v2/models/data_transform_type.rb index a73c621c67f2..6cc272a14e89 100644 --- a/lib/datadog_api_client/v2/models/query_type.rb +++ b/lib/datadog_api_client/v2/models/data_transform_type.rb @@ -17,12 +17,10 @@ require 'time' module DatadogAPIClient::V2 - # The query type. - class QueryType + # The data transform type. + class DataTransformType include BaseEnumModel - ACTION = "action".freeze - STATEVARIABLE = "stateVariable".freeze DATATRANSFORM = "dataTransform".freeze end end diff --git a/lib/datadog_api_client/v2/models/query.rb b/lib/datadog_api_client/v2/models/query.rb index 17dca357c15b..4974bb40515d 100644 --- a/lib/datadog_api_client/v2/models/query.rb +++ b/lib/datadog_api_client/v2/models/query.rb @@ -17,171 +17,48 @@ require 'time' module DatadogAPIClient::V2 - # A query used by an app. This can take the form of an external action, a data transformation, or a state variable change. - class Query - include BaseGenericModel - - # Events to listen for downstream of the query. - attr_accessor :events - - # The ID of the query. - attr_reader :id - - # The name of the query. The name must be unique within the app and is visible in the app editor. - attr_reader :name - - # The properties of the query. The properties vary depending on the query type. - attr_accessor :properties - - # The query type. - attr_reader :type - - attr_accessor :additional_properties - - # Attribute mapping from ruby-style variable name to JSON key. - # @!visibility private - def self.attribute_map - { - :'events' => :'events', - :'id' => :'id', - :'name' => :'name', - :'properties' => :'properties', - :'type' => :'type' - } - end - - # Attribute type mapping. - # @!visibility private - def self.openapi_types - { - :'events' => :'Array', - :'id' => :'UUID', - :'name' => :'String', - :'properties' => :'Object', - :'type' => :'QueryType' - } - 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::Query` initialize method" + # A data query used by an app. This can take the form of an external action, a data transformation, or a state variable. + module Query + class << self + include BaseOneOfModel + include BaseOneOfModelNoDiscriminator + + # List of class defined in oneOf (OpenAPI v3) + def openapi_one_of + [ + :'ActionQuery', + :'DataTransform', + :'StateVariable' + ] 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?(:'events') - if (value = attributes[:'events']).is_a?(Array) - self.events = value + # Builds the object + # @param data [Mixed] Data to be matched against the list of oneOf items + # @return [Object] Returns the model or the data itself + def build(data) + # Go through the list of oneOf items and attempt to identify the appropriate one. + # Note: + # - We do not attempt to check whether exactly one item matches. + # - No advanced validation of types in some cases (e.g. "x: { type: string }" will happily match { x: 123 }) + # due to the way the deserialization is made in the base_object template (it just casts without verifying). + # - TODO: scalar values are de facto behaving as if they were nullable. + # - TODO: logging when debugging is set. + openapi_one_of.each do |klass| + begin + next if klass == :AnyType # "nullable: true" + typed_data = find_and_cast_into_type(klass, data) + next if typed_data.respond_to?(:_unparsed) && typed_data._unparsed + return typed_data if typed_data + rescue # rescue all errors so we keep iterating even if the current item lookup raises + end end - end - - if attributes.key?(:'id') - self.id = attributes[:'id'] - end - - if attributes.key?(:'name') - self.name = attributes[:'name'] - end - - if attributes.key?(:'properties') - self.properties = attributes[:'properties'] - end - if attributes.key?(:'type') - self.type = attributes[:'type'] - end - end - - # Check to see if the all the properties in the model are valid - # @return true if the model is valid - # @!visibility private - def valid? - return false if @id.nil? - return false if @name.nil? - return false if @type.nil? - true - end - - # Custom attribute writer method with validation - # @param id [Object] Object to be assigned - # @!visibility private - def id=(id) - if id.nil? - fail ArgumentError, 'invalid value for "id", id cannot be nil.' - end - @id = id - end - - # Custom attribute writer method with validation - # @param name [Object] Object to be assigned - # @!visibility private - def name=(name) - if name.nil? - fail ArgumentError, 'invalid value for "name", name cannot be nil.' - end - @name = name - end - - # Custom attribute writer method with validation - # @param type [Object] Object to be assigned - # @!visibility private - def type=(type) - if type.nil? - fail ArgumentError, 'invalid value for "type", type cannot be nil.' - end - @type = type - 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}")) + if openapi_one_of.include?(:AnyType) + data + else + self._unparsed = true + DatadogAPIClient::UnparsedObject.new(data) 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 && - events == o.events && - id == o.id && - name == o.name && - properties == o.properties && - type == o.type && - additional_properties == o.additional_properties - end - - # Calculates hash code according to all attributes. - # @return [Integer] Hash code - # @!visibility private - def hash - [events, id, name, properties, type, additional_properties].hash end end end diff --git a/lib/datadog_api_client/v2/models/state_variable.rb b/lib/datadog_api_client/v2/models/state_variable.rb new file mode 100644 index 000000000000..c1aaefa8a956 --- /dev/null +++ b/lib/datadog_api_client/v2/models/state_variable.rb @@ -0,0 +1,186 @@ +=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 + # A variable, which can be set and read by other components in the app. + class StateVariable + include BaseGenericModel + + # The ID of the state variable. + attr_reader :id + + # A unique identifier for this state variable. This name is also used to access the variable's value throughout the app. + attr_reader :name + + # The properties of the state variable. + attr_reader :properties + + # The state variable type. + attr_reader :type + + attr_accessor :additional_properties + + # Attribute mapping from ruby-style variable name to JSON key. + # @!visibility private + def self.attribute_map + { + :'id' => :'id', + :'name' => :'name', + :'properties' => :'properties', + :'type' => :'type' + } + end + + # Attribute type mapping. + # @!visibility private + def self.openapi_types + { + :'id' => :'UUID', + :'name' => :'String', + :'properties' => :'StateVariableProperties', + :'type' => :'StateVariableType' + } + 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::StateVariable` 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?(:'id') + self.id = attributes[:'id'] + end + + if attributes.key?(:'name') + self.name = attributes[:'name'] + end + + if attributes.key?(:'properties') + self.properties = attributes[:'properties'] + end + + if attributes.key?(:'type') + self.type = attributes[:'type'] + end + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + # @!visibility private + def valid? + return false if @id.nil? + return false if @name.nil? + return false if @properties.nil? + return false if @type.nil? + true + end + + # Custom attribute writer method with validation + # @param id [Object] Object to be assigned + # @!visibility private + def id=(id) + if id.nil? + fail ArgumentError, 'invalid value for "id", id cannot be nil.' + end + @id = id + end + + # Custom attribute writer method with validation + # @param name [Object] Object to be assigned + # @!visibility private + def name=(name) + if name.nil? + fail ArgumentError, 'invalid value for "name", name cannot be nil.' + end + @name = name + end + + # Custom attribute writer method with validation + # @param properties [Object] Object to be assigned + # @!visibility private + def properties=(properties) + if properties.nil? + fail ArgumentError, 'invalid value for "properties", properties cannot be nil.' + end + @properties = properties + end + + # Custom attribute writer method with validation + # @param type [Object] Object to be assigned + # @!visibility private + def type=(type) + if type.nil? + fail ArgumentError, 'invalid value for "type", type cannot be nil.' + end + @type = type + 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 && + id == o.id && + name == o.name && + properties == o.properties && + type == o.type && + additional_properties == o.additional_properties + end + + # Calculates hash code according to all attributes. + # @return [Integer] Hash code + # @!visibility private + def hash + [id, name, properties, type, additional_properties].hash + end + end +end diff --git a/lib/datadog_api_client/v2/models/state_variable_properties.rb b/lib/datadog_api_client/v2/models/state_variable_properties.rb new file mode 100644 index 000000000000..48f4cddc41ef --- /dev/null +++ b/lib/datadog_api_client/v2/models/state_variable_properties.rb @@ -0,0 +1,105 @@ +=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 properties of the state variable. + class StateVariableProperties + include BaseGenericModel + + # The default value of the state variable. + attr_accessor :default_value + + attr_accessor :additional_properties + + # Attribute mapping from ruby-style variable name to JSON key. + # @!visibility private + def self.attribute_map + { + :'default_value' => :'defaultValue' + } + end + + # Attribute type mapping. + # @!visibility private + def self.openapi_types + { + :'default_value' => :'Object' + } + 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::StateVariableProperties` 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?(:'default_value') + self.default_value = attributes[:'default_value'] + 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 && + default_value == o.default_value && + additional_properties == o.additional_properties + end + + # Calculates hash code according to all attributes. + # @return [Integer] Hash code + # @!visibility private + def hash + [default_value, additional_properties].hash + end + end +end diff --git a/lib/datadog_api_client/v2/models/state_variable_type.rb b/lib/datadog_api_client/v2/models/state_variable_type.rb new file mode 100644 index 000000000000..e828bf50dbd8 --- /dev/null +++ b/lib/datadog_api_client/v2/models/state_variable_type.rb @@ -0,0 +1,26 @@ +=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 state variable type. + class StateVariableType + include BaseEnumModel + + STATEVARIABLE = "stateVariable".freeze + end +end