From b74c6c6810b5b5ea1626abb46c14976cbdfee757 Mon Sep 17 00:00:00 2001 From: "api-clients-generation-pipeline[bot]" <54105614+api-clients-generation-pipeline[bot]@users.noreply.github.com> Date: Wed, 3 Jun 2026 06:12:10 +0000 Subject: [PATCH 1/6] Regenerate client from commit b0c2692 of spec repo (#3438) Co-authored-by: ci.datadog-api-spec --- .generator/schemas/v2/openapi.yaml | 154 +++++++++++++++ .../stegadography/GetStegadographyWidgets.rb | 5 + features/scenarios_model_mapping.rb | 3 + features/v2/fixtures/stegadography/image.png | Bin 0 -> 69 bytes features/v2/stegadography.feature | 26 +++ features/v2/undo.json | 6 + lib/datadog_api_client/inflector.rb | 6 + .../v2/api/stegadography_api.rb | 97 +++++++++ .../stegadography_get_widgets_request.rb | 123 ++++++++++++ .../stegadography_get_widgets_response.rb | 125 ++++++++++++ .../v2/models/stegadography_widget.rb | 165 ++++++++++++++++ .../models/stegadography_widget_attributes.rb | 186 ++++++++++++++++++ .../v2/models/stegadography_widget_type.rb | 26 +++ 13 files changed, 922 insertions(+) create mode 100644 examples/v2/stegadography/GetStegadographyWidgets.rb create mode 100644 features/v2/fixtures/stegadography/image.png create mode 100644 features/v2/stegadography.feature create mode 100644 lib/datadog_api_client/v2/api/stegadography_api.rb create mode 100644 lib/datadog_api_client/v2/models/stegadography_get_widgets_request.rb create mode 100644 lib/datadog_api_client/v2/models/stegadography_get_widgets_response.rb create mode 100644 lib/datadog_api_client/v2/models/stegadography_widget.rb create mode 100644 lib/datadog_api_client/v2/models/stegadography_widget_attributes.rb create mode 100644 lib/datadog_api_client/v2/models/stegadography_widget_type.rb diff --git a/.generator/schemas/v2/openapi.yaml b/.generator/schemas/v2/openapi.yaml index 52c5ef104a4d..7f143003a39a 100644 --- a/.generator/schemas/v2/openapi.yaml +++ b/.generator/schemas/v2/openapi.yaml @@ -86739,6 +86739,89 @@ components: required: - data type: object + StegadographyGetWidgetsRequest: + description: Multipart form data containing the PNG image to scan for watermarks. + properties: + image: + description: PNG image file to scan for embedded watermarks. + example: "screenshot.png" + format: binary + type: string + required: + - image + type: object + StegadographyGetWidgetsResponse: + description: Response containing watermarked widgets recovered from an image. + properties: + data: + $ref: "#/components/schemas/StegadographyWidgetItems" + required: + - data + type: object + StegadographyWidget: + description: A single watermarked widget resource recovered from an image. + properties: + attributes: + $ref: "#/components/schemas/StegadographyWidgetAttributes" + id: + description: Composite identifier formed from the organization ID and watermark, separated by a colon. + example: "abc123:0123456789abcdef" + type: string + type: + $ref: "#/components/schemas/StegadographyWidgetType" + required: + - id + - type + - attributes + type: object + StegadographyWidgetAttributes: + description: Attributes of a watermarked widget recovered from an image. + properties: + locationx: + description: Horizontal pixel coordinate where the watermark was found in the image. + example: 100 + format: int64 + type: integer + locationy: + description: Vertical pixel coordinate where the watermark was found in the image. + example: 200 + format: int64 + type: integer + rawData: + description: JSON-encoded string representing the widget state. + example: '{"widgetType":"timeseries","requests":[]}' + type: string + watermark: + description: Hex-encoded watermark string identifying the widget. + example: "0123456789abcdef" + type: string + required: + - rawData + - watermark + - locationx + - locationy + type: object + StegadographyWidgetItems: + description: List of watermarked widget resources recovered from an image. + example: + - attributes: + locationx: 100 + locationy: 200 + rawData: '{"widgetType":"timeseries","requests":[]}' + watermark: "0123456789abcdef" + id: "abc123:0123456789abcdef" + type: widget + items: + $ref: "#/components/schemas/StegadographyWidget" + type: array + StegadographyWidgetType: + description: Stegadography widget resource type. + enum: + - widget + example: widget + type: string + x-enum-varnames: + - WIDGET Step: description: A Step is a sub-component of a workflow. Each Step performs an action. properties: @@ -167338,6 +167421,75 @@ paths: - status_pages_settings_write - status_pages_public_page_publish - status_pages_internal_page_publish + /api/v2/stegadography/get-widgets: + post: + description: |- + Extracts watermarks from a PNG image and returns the cached widget data + associated with each watermark found. The image must be uploaded as a + `multipart/form-data` request with the file in the `image` field. + Only widgets belonging to the authenticated organization are returned. + operationId: GetStegadographyWidgets + requestBody: + content: + multipart/form-data: + examples: + default: + value: + image: "screenshot.png" + schema: + $ref: "#/components/schemas/StegadographyGetWidgetsRequest" + description: PNG image to extract watermarks from. + required: true + responses: + "200": + content: + application/json: + examples: + default: + value: + data: + - attributes: + locationx: 100 + locationy: 200 + rawData: '{"widgetType":"timeseries","requests":[]}' + watermark: "0123456789abcdef" + id: "abc123:0123456789abcdef" + type: widget + schema: + $ref: "#/components/schemas/StegadographyGetWidgetsResponse" + description: OK + "400": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Bad Request + "403": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Forbidden + "415": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Unsupported Media Type + "429": + $ref: "#/components/responses/TooManyRequestsResponse" + "500": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Internal Server Error + security: + - apiKeyAuth: [] + appKeyAuth: [] + summary: Get widgets from an image + tags: + - Stegadography /api/v2/synthetics/api-multistep/subtests/{public_id}: get: description: |- @@ -175651,6 +175803,8 @@ tags: externalDocs: url: https://docs.datadoghq.com/api/latest/statuspage-integration name: Statuspage Integration + - description: Extract watermarks embedded in dashboard screenshots to retrieve cached widget state. + name: Stegadography - description: |- Enable Storage Management for S3 buckets, GCS buckets, and Azure containers. Each configuration registers the destination that holds inventory reports for the storage being monitored. name: Storage Management diff --git a/examples/v2/stegadography/GetStegadographyWidgets.rb b/examples/v2/stegadography/GetStegadographyWidgets.rb new file mode 100644 index 000000000000..c858808c620f --- /dev/null +++ b/examples/v2/stegadography/GetStegadographyWidgets.rb @@ -0,0 +1,5 @@ +# Get widgets from an image returns "OK" response + +require "datadog_api_client" +api_instance = DatadogAPIClient::V2::StegadographyAPI.new +p api_instance.get_stegadography_widgets(File.open("fixtures/stegadography/image.png", "r")) diff --git a/features/scenarios_model_mapping.rb b/features/scenarios_model_mapping.rb index c3e7e7142da3..c52c3d791fc7 100644 --- a/features/scenarios_model_mapping.rb +++ b/features/scenarios_model_mapping.rb @@ -5171,6 +5171,9 @@ "v2.UnpublishStatusPage" => { "page_id" => "UUID", }, + "v2.GetStegadographyWidgets" => { + "image" => "File", + }, "v2.GetApiMultistepSubtests" => { "public_id" => "String", }, diff --git a/features/v2/fixtures/stegadography/image.png b/features/v2/fixtures/stegadography/image.png new file mode 100644 index 0000000000000000000000000000000000000000..94381b429d7f7fe87e1bade52d893ab348ae29cc GIT binary patch literal 69 zcmeAS@N?(olHy`uVBq!ia0vp^j3CUx1SBVv2j2ryJf1F&Ar*6yfBgS%&%pYR=^yWV Rw;e!n22WQ%mvv4FO#tpo5$gZ| literal 0 HcmV?d00001 diff --git a/features/v2/stegadography.feature b/features/v2/stegadography.feature new file mode 100644 index 000000000000..86c2d3a2a8b8 --- /dev/null +++ b/features/v2/stegadography.feature @@ -0,0 +1,26 @@ +@endpoint(stegadography) @endpoint(stegadography-v2) +Feature: Stegadography + Extract watermarks embedded in dashboard screenshots to retrieve cached + widget state. + + Background: + Given a valid "apiKeyAuth" key in the system + And a valid "appKeyAuth" key in the system + And an instance of "Stegadography" API + And new "GetStegadographyWidgets" request + + @generated @skip @team:DataDog/dataviz-backend-maintainers + Scenario: Get widgets from an image returns "Bad Request" response + When the request is sent + Then the response status is 400 Bad Request + + @integration-only @skip-terraform-config @skip-validation @team:DataDog/dataviz-backend-maintainers + Scenario: Get widgets from an image returns "OK" response + Given request contains "image" parameter with value "fixtures/stegadography/image.png" + When the request is sent + Then the response status is 200 OK + + @generated @skip @team:DataDog/dataviz-backend-maintainers + Scenario: Get widgets from an image returns "Unsupported Media Type" response + When the request is sent + Then the response status is 415 Unsupported Media Type diff --git a/features/v2/undo.json b/features/v2/undo.json index f60cf1a2f731..0ba8d5b4fa3e 100644 --- a/features/v2/undo.json +++ b/features/v2/undo.json @@ -7918,6 +7918,12 @@ "type": "idempotent" } }, + "GetStegadographyWidgets": { + "tag": "Stegadography", + "undo": { + "type": "safe" + } + }, "GetApiMultistepSubtests": { "tag": "Synthetics", "undo": { diff --git a/lib/datadog_api_client/inflector.rb b/lib/datadog_api_client/inflector.rb index 838c1450b433..fdfb36a692e1 100644 --- a/lib/datadog_api_client/inflector.rb +++ b/lib/datadog_api_client/inflector.rb @@ -6487,6 +6487,11 @@ def overrides "v2.statuspage_url_setting_update_attributes" => "StatuspageUrlSettingUpdateAttributes", "v2.statuspage_url_setting_update_data" => "StatuspageUrlSettingUpdateData", "v2.statuspage_url_setting_update_request" => "StatuspageUrlSettingUpdateRequest", + "v2.stegadography_get_widgets_request" => "StegadographyGetWidgetsRequest", + "v2.stegadography_get_widgets_response" => "StegadographyGetWidgetsResponse", + "v2.stegadography_widget" => "StegadographyWidget", + "v2.stegadography_widget_attributes" => "StegadographyWidgetAttributes", + "v2.stegadography_widget_type" => "StegadographyWidgetType", "v2.step" => "Step", "v2.step_display" => "StepDisplay", "v2.step_display_bounds" => "StepDisplayBounds", @@ -7381,6 +7386,7 @@ def overrides "v2.static_analysis_api" => "StaticAnalysisAPI", "v2.status_pages_api" => "StatusPagesAPI", "v2.statuspage_integration_api" => "StatuspageIntegrationAPI", + "v2.stegadography_api" => "StegadographyAPI", "v2.storage_management_api" => "StorageManagementAPI", "v2.synthetics_api" => "SyntheticsAPI", "v2.teams_api" => "TeamsAPI", diff --git a/lib/datadog_api_client/v2/api/stegadography_api.rb b/lib/datadog_api_client/v2/api/stegadography_api.rb new file mode 100644 index 000000000000..7b820711a336 --- /dev/null +++ b/lib/datadog_api_client/v2/api/stegadography_api.rb @@ -0,0 +1,97 @@ +=begin +#Datadog API V2 Collection + +#Collection of all Datadog Public endpoints. + +The version of the OpenAPI document: 1.0 +Contact: support@datadoghq.com +Generated by: https://github.com/DataDog/datadog-api-client-ruby/tree/master/.generator + + Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. + This product includes software developed at Datadog (https://www.datadoghq.com/). + Copyright 2020-Present Datadog, Inc. + +=end + +require 'cgi' + +module DatadogAPIClient::V2 + class StegadographyAPI + attr_accessor :api_client + + def initialize(api_client = DatadogAPIClient::APIClient.default) + @api_client = api_client + end + + # Get widgets from an image. + # + # @see #get_stegadography_widgets_with_http_info + def get_stegadography_widgets(image, opts = {}) + data, _status_code, _headers = get_stegadography_widgets_with_http_info(image, opts) + data + end + + # Get widgets from an image. + # + # Extracts watermarks from a PNG image and returns the cached widget data + # associated with each watermark found. The image must be uploaded as a + # `multipart/form-data` request with the file in the `image` field. + # Only widgets belonging to the authenticated organization are returned. + # + # @param image [File] PNG image file to scan for embedded watermarks. + # @param opts [Hash] the optional parameters + # @return [Array<(StegadographyGetWidgetsResponse, Integer, Hash)>] StegadographyGetWidgetsResponse data, response status code and response headers + def get_stegadography_widgets_with_http_info(image, opts = {}) + + if @api_client.config.debugging + @api_client.config.logger.debug 'Calling API: StegadographyAPI.get_stegadography_widgets ...' + end + # verify the required parameter 'image' is set + if @api_client.config.client_side_validation && image.nil? + fail ArgumentError, "Missing the required parameter 'image' when calling StegadographyAPI.get_stegadography_widgets" + end + # resource path + local_var_path = '/api/v2/stegadography/get-widgets' + + # query parameters + query_params = opts[:query_params] || {} + + # header parameters + header_params = opts[:header_params] || {} + # HTTP header 'Accept' (if needed) + header_params['Accept'] = @api_client.select_header_accept(['application/json']) + # HTTP header 'Content-Type' + header_params['Content-Type'] = @api_client.select_header_content_type(['multipart/form-data']) + + # form parameters + form_params = opts[:form_params] || {} + form_params['image'] = image + + # http body (model) + post_body = opts[:debug_body] + + # return_type + return_type = opts[:debug_return_type] || 'StegadographyGetWidgetsResponse' + + # auth_names + auth_names = opts[:debug_auth_names] || [:apiKeyAuth, :appKeyAuth] + + new_options = opts.merge( + :operation => :get_stegadography_widgets, + :header_params => header_params, + :query_params => query_params, + :form_params => form_params, + :body => post_body, + :auth_names => auth_names, + :return_type => return_type, + :api_version => "V2" + ) + + data, status_code, headers = @api_client.call_api(Net::HTTP::Post, local_var_path, new_options) + if @api_client.config.debugging + @api_client.config.logger.debug "API called: StegadographyAPI#get_stegadography_widgets\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}" + end + return data, status_code, headers + end + end +end diff --git a/lib/datadog_api_client/v2/models/stegadography_get_widgets_request.rb b/lib/datadog_api_client/v2/models/stegadography_get_widgets_request.rb new file mode 100644 index 000000000000..e355c674c2f4 --- /dev/null +++ b/lib/datadog_api_client/v2/models/stegadography_get_widgets_request.rb @@ -0,0 +1,123 @@ +=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 + # Multipart form data containing the PNG image to scan for watermarks. + class StegadographyGetWidgetsRequest + include BaseGenericModel + + # PNG image file to scan for embedded watermarks. + attr_reader :image + + attr_accessor :additional_properties + + # Attribute mapping from ruby-style variable name to JSON key. + # @!visibility private + def self.attribute_map + { + :'image' => :'image' + } + end + + # Attribute type mapping. + # @!visibility private + def self.openapi_types + { + :'image' => :'File' + } + 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::StegadographyGetWidgetsRequest` 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?(:'image') + self.image = attributes[:'image'] + 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 @image.nil? + true + end + + # Custom attribute writer method with validation + # @param image [Object] Object to be assigned + # @!visibility private + def image=(image) + if image.nil? + fail ArgumentError, 'invalid value for "image", image cannot be nil.' + end + @image = image + 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 && + image == o.image && + additional_properties == o.additional_properties + end + + # Calculates hash code according to all attributes. + # @return [Integer] Hash code + # @!visibility private + def hash + [image, additional_properties].hash + end + end +end diff --git a/lib/datadog_api_client/v2/models/stegadography_get_widgets_response.rb b/lib/datadog_api_client/v2/models/stegadography_get_widgets_response.rb new file mode 100644 index 000000000000..5ae7c5277634 --- /dev/null +++ b/lib/datadog_api_client/v2/models/stegadography_get_widgets_response.rb @@ -0,0 +1,125 @@ +=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 + # Response containing watermarked widgets recovered from an image. + class StegadographyGetWidgetsResponse + include BaseGenericModel + + # List of watermarked widget resources recovered from an image. + attr_reader :data + + attr_accessor :additional_properties + + # Attribute mapping from ruby-style variable name to JSON key. + # @!visibility private + def self.attribute_map + { + :'data' => :'data' + } + end + + # Attribute type mapping. + # @!visibility private + def self.openapi_types + { + :'data' => :'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::StegadographyGetWidgetsResponse` 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?(:'data') + if (value = attributes[:'data']).is_a?(Array) + self.data = value + end + 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 @data.nil? + true + end + + # Custom attribute writer method with validation + # @param data [Object] Object to be assigned + # @!visibility private + def data=(data) + if data.nil? + fail ArgumentError, 'invalid value for "data", data cannot be nil.' + end + @data = data + 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 && + data == o.data && + additional_properties == o.additional_properties + end + + # Calculates hash code according to all attributes. + # @return [Integer] Hash code + # @!visibility private + def hash + [data, additional_properties].hash + end + end +end diff --git a/lib/datadog_api_client/v2/models/stegadography_widget.rb b/lib/datadog_api_client/v2/models/stegadography_widget.rb new file mode 100644 index 000000000000..2f79a7372056 --- /dev/null +++ b/lib/datadog_api_client/v2/models/stegadography_widget.rb @@ -0,0 +1,165 @@ +=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 single watermarked widget resource recovered from an image. + class StegadographyWidget + include BaseGenericModel + + # Attributes of a watermarked widget recovered from an image. + attr_reader :attributes + + # Composite identifier formed from the organization ID and watermark, separated by a colon. + attr_reader :id + + # Stegadography widget resource type. + attr_reader :type + + attr_accessor :additional_properties + + # Attribute mapping from ruby-style variable name to JSON key. + # @!visibility private + def self.attribute_map + { + :'attributes' => :'attributes', + :'id' => :'id', + :'type' => :'type' + } + end + + # Attribute type mapping. + # @!visibility private + def self.openapi_types + { + :'attributes' => :'StegadographyWidgetAttributes', + :'id' => :'String', + :'type' => :'StegadographyWidgetType' + } + 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::StegadographyWidget` 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?(:'attributes') + self.attributes = attributes[:'attributes'] + end + + if attributes.key?(:'id') + self.id = attributes[:'id'] + 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 @attributes.nil? + return false if @id.nil? + return false if @type.nil? + true + end + + # Custom attribute writer method with validation + # @param attributes [Object] Object to be assigned + # @!visibility private + def attributes=(attributes) + if attributes.nil? + fail ArgumentError, 'invalid value for "attributes", attributes cannot be nil.' + end + @attributes = attributes + 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 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 && + attributes == o.attributes && + id == o.id && + type == o.type && + additional_properties == o.additional_properties + end + + # Calculates hash code according to all attributes. + # @return [Integer] Hash code + # @!visibility private + def hash + [attributes, id, type, additional_properties].hash + end + end +end diff --git a/lib/datadog_api_client/v2/models/stegadography_widget_attributes.rb b/lib/datadog_api_client/v2/models/stegadography_widget_attributes.rb new file mode 100644 index 000000000000..6805c5386bc2 --- /dev/null +++ b/lib/datadog_api_client/v2/models/stegadography_widget_attributes.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 + # Attributes of a watermarked widget recovered from an image. + class StegadographyWidgetAttributes + include BaseGenericModel + + # Horizontal pixel coordinate where the watermark was found in the image. + attr_reader :locationx + + # Vertical pixel coordinate where the watermark was found in the image. + attr_reader :locationy + + # JSON-encoded string representing the widget state. + attr_reader :raw_data + + # Hex-encoded watermark string identifying the widget. + attr_reader :watermark + + attr_accessor :additional_properties + + # Attribute mapping from ruby-style variable name to JSON key. + # @!visibility private + def self.attribute_map + { + :'locationx' => :'locationx', + :'locationy' => :'locationy', + :'raw_data' => :'rawData', + :'watermark' => :'watermark' + } + end + + # Attribute type mapping. + # @!visibility private + def self.openapi_types + { + :'locationx' => :'Integer', + :'locationy' => :'Integer', + :'raw_data' => :'String', + :'watermark' => :'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::StegadographyWidgetAttributes` 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?(:'locationx') + self.locationx = attributes[:'locationx'] + end + + if attributes.key?(:'locationy') + self.locationy = attributes[:'locationy'] + end + + if attributes.key?(:'raw_data') + self.raw_data = attributes[:'raw_data'] + end + + if attributes.key?(:'watermark') + self.watermark = attributes[:'watermark'] + 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 @locationx.nil? + return false if @locationy.nil? + return false if @raw_data.nil? + return false if @watermark.nil? + true + end + + # Custom attribute writer method with validation + # @param locationx [Object] Object to be assigned + # @!visibility private + def locationx=(locationx) + if locationx.nil? + fail ArgumentError, 'invalid value for "locationx", locationx cannot be nil.' + end + @locationx = locationx + end + + # Custom attribute writer method with validation + # @param locationy [Object] Object to be assigned + # @!visibility private + def locationy=(locationy) + if locationy.nil? + fail ArgumentError, 'invalid value for "locationy", locationy cannot be nil.' + end + @locationy = locationy + end + + # Custom attribute writer method with validation + # @param raw_data [Object] Object to be assigned + # @!visibility private + def raw_data=(raw_data) + if raw_data.nil? + fail ArgumentError, 'invalid value for "raw_data", raw_data cannot be nil.' + end + @raw_data = raw_data + end + + # Custom attribute writer method with validation + # @param watermark [Object] Object to be assigned + # @!visibility private + def watermark=(watermark) + if watermark.nil? + fail ArgumentError, 'invalid value for "watermark", watermark cannot be nil.' + end + @watermark = watermark + 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 && + locationx == o.locationx && + locationy == o.locationy && + raw_data == o.raw_data && + watermark == o.watermark && + additional_properties == o.additional_properties + end + + # Calculates hash code according to all attributes. + # @return [Integer] Hash code + # @!visibility private + def hash + [locationx, locationy, raw_data, watermark, additional_properties].hash + end + end +end diff --git a/lib/datadog_api_client/v2/models/stegadography_widget_type.rb b/lib/datadog_api_client/v2/models/stegadography_widget_type.rb new file mode 100644 index 000000000000..e1fbee6907a6 --- /dev/null +++ b/lib/datadog_api_client/v2/models/stegadography_widget_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 + # Stegadography widget resource type. + class StegadographyWidgetType + include BaseEnumModel + + WIDGET = "widget".freeze + end +end From ed33bd8f7c476299397cc42e513502236115159c Mon Sep 17 00:00:00 2001 From: "api-clients-generation-pipeline[bot]" <54105614+api-clients-generation-pipeline[bot]@users.noreply.github.com> Date: Wed, 3 Jun 2026 06:27:27 +0000 Subject: [PATCH 2/6] Regenerate client from commit e9e9518 of spec repo (#3412) Co-authored-by: ci.datadog-api-spec --- .generator/schemas/v2/openapi.yaml | 28 +++++++++++++++++++ .../v2/logs-archives/CreateLogsArchive.rb | 8 ++++++ .../v2/logs-archives/UpdateLogsArchive.rb | 8 ++++++ features/v2/logs_archives.feature | 10 +++---- .../v2/models/logs_archive_attributes.rb | 26 ++++++++++++++++- .../logs_archive_create_request_attributes.rb | 26 ++++++++++++++++- 6 files changed, 99 insertions(+), 7 deletions(-) diff --git a/.generator/schemas/v2/openapi.yaml b/.generator/schemas/v2/openapi.yaml index 7f143003a39a..5b666039abca 100644 --- a/.generator/schemas/v2/openapi.yaml +++ b/.generator/schemas/v2/openapi.yaml @@ -51629,10 +51629,24 @@ components: If it is set to "false", the tags will be deleted when the logs are sent to the archive. example: false type: boolean + lookup_attributes: + description: An array of attributes to use as lookup keys for the archive. + example: ["trace_id", "user_id"] + items: + description: A lookup attribute name. + type: string + type: array name: description: The archive name. example: Nginx Archive type: string + partitioning_attributes: + description: An array of attributes to use as partition keys for the archive. The attribute used most frequently for querying should be first. + example: ["service", "status"] + items: + description: A partition attribute name. + type: string + type: array query: description: The archive query/filter. Logs matching this query are included in the archive. example: source:nginx @@ -51688,10 +51702,24 @@ components: If it is set to "false", the tags will be deleted when the logs are sent to the archive. example: false type: boolean + lookup_attributes: + description: An array of attributes to use as lookup keys for the archive. + example: ["trace_id", "user_id"] + items: + description: A lookup attribute name. + type: string + type: array name: description: The archive name. example: Nginx Archive type: string + partitioning_attributes: + description: An array of attributes to use as partition keys for the archive. The attribute used most frequently for querying should be first. + example: ["service", "status"] + items: + description: A partition attribute name. + type: string + type: array query: description: The archive query/filter. Logs matching this query are included in the archive. example: source:nginx diff --git a/examples/v2/logs-archives/CreateLogsArchive.rb b/examples/v2/logs-archives/CreateLogsArchive.rb index 91dce9063744..4fdf176494c3 100644 --- a/examples/v2/logs-archives/CreateLogsArchive.rb +++ b/examples/v2/logs-archives/CreateLogsArchive.rb @@ -17,7 +17,15 @@ type: DatadogAPIClient::V2::LogsArchiveDestinationAzureType::AZURE, }), include_tags: false, + lookup_attributes: [ + "trace_id", + "user_id", + ], name: "Nginx Archive", + partitioning_attributes: [ + "service", + "status", + ], query: "source:nginx", rehydration_max_scan_size_in_gb: 100, rehydration_tags: [ diff --git a/examples/v2/logs-archives/UpdateLogsArchive.rb b/examples/v2/logs-archives/UpdateLogsArchive.rb index e4b68a52615b..4ba52ec83065 100644 --- a/examples/v2/logs-archives/UpdateLogsArchive.rb +++ b/examples/v2/logs-archives/UpdateLogsArchive.rb @@ -17,7 +17,15 @@ type: DatadogAPIClient::V2::LogsArchiveDestinationAzureType::AZURE, }), include_tags: false, + lookup_attributes: [ + "trace_id", + "user_id", + ], name: "Nginx Archive", + partitioning_attributes: [ + "service", + "status", + ], query: "source:nginx", rehydration_max_scan_size_in_gb: 100, rehydration_tags: [ diff --git a/features/v2/logs_archives.feature b/features/v2/logs_archives.feature index 4b58769df54e..752be13634fc 100644 --- a/features/v2/logs_archives.feature +++ b/features/v2/logs_archives.feature @@ -12,14 +12,14 @@ Feature: Logs Archives @generated @skip @team:DataDog/logs-backend @team:DataDog/logs-forwarding Scenario: Create an archive returns "Bad Request" response Given new "CreateLogsArchive" request - And body with value {"data": {"attributes": {"compression_method": "GZIP", "destination": {"container": "container-name", "integration": {"client_id": "aaaaaaaa-1a1a-1a1a-1a1a-aaaaaaaaaaaa", "tenant_id": "aaaaaaaa-1a1a-1a1a-1a1a-aaaaaaaaaaaa"}, "storage_account": "account-name", "type": "azure"}, "include_tags": false, "name": "Nginx Archive", "query": "source:nginx", "rehydration_max_scan_size_in_gb": 100, "rehydration_tags": ["team:intake", "team:app"]}, "type": "archives"}} + And body with value {"data": {"attributes": {"compression_method": "GZIP", "destination": {"container": "container-name", "integration": {"client_id": "aaaaaaaa-1a1a-1a1a-1a1a-aaaaaaaaaaaa", "tenant_id": "aaaaaaaa-1a1a-1a1a-1a1a-aaaaaaaaaaaa"}, "storage_account": "account-name", "type": "azure"}, "include_tags": false, "lookup_attributes": ["trace_id", "user_id"], "name": "Nginx Archive", "partitioning_attributes": ["service", "status"], "query": "source:nginx", "rehydration_max_scan_size_in_gb": 100, "rehydration_tags": ["team:intake", "team:app"]}, "type": "archives"}} When the request is sent Then the response status is 400 Bad Request @generated @skip @team:DataDog/logs-backend @team:DataDog/logs-forwarding Scenario: Create an archive returns "OK" response Given new "CreateLogsArchive" request - And body with value {"data": {"attributes": {"compression_method": "GZIP", "destination": {"container": "container-name", "integration": {"client_id": "aaaaaaaa-1a1a-1a1a-1a1a-aaaaaaaaaaaa", "tenant_id": "aaaaaaaa-1a1a-1a1a-1a1a-aaaaaaaaaaaa"}, "storage_account": "account-name", "type": "azure"}, "include_tags": false, "name": "Nginx Archive", "query": "source:nginx", "rehydration_max_scan_size_in_gb": 100, "rehydration_tags": ["team:intake", "team:app"]}, "type": "archives"}} + And body with value {"data": {"attributes": {"compression_method": "GZIP", "destination": {"container": "container-name", "integration": {"client_id": "aaaaaaaa-1a1a-1a1a-1a1a-aaaaaaaaaaaa", "tenant_id": "aaaaaaaa-1a1a-1a1a-1a1a-aaaaaaaaaaaa"}, "storage_account": "account-name", "type": "azure"}, "include_tags": false, "lookup_attributes": ["trace_id", "user_id"], "name": "Nginx Archive", "partitioning_attributes": ["service", "status"], "query": "source:nginx", "rehydration_max_scan_size_in_gb": 100, "rehydration_tags": ["team:intake", "team:app"]}, "type": "archives"}} When the request is sent Then the response status is 200 OK @@ -150,7 +150,7 @@ Feature: Logs Archives Scenario: Update an archive returns "Bad Request" response Given new "UpdateLogsArchive" request And request contains "archive_id" parameter from "REPLACE.ME" - And body with value {"data": {"attributes": {"compression_method": "GZIP", "destination": {"container": "container-name", "integration": {"client_id": "aaaaaaaa-1a1a-1a1a-1a1a-aaaaaaaaaaaa", "tenant_id": "aaaaaaaa-1a1a-1a1a-1a1a-aaaaaaaaaaaa"}, "storage_account": "account-name", "type": "azure"}, "include_tags": false, "name": "Nginx Archive", "query": "source:nginx", "rehydration_max_scan_size_in_gb": 100, "rehydration_tags": ["team:intake", "team:app"]}, "type": "archives"}} + And body with value {"data": {"attributes": {"compression_method": "GZIP", "destination": {"container": "container-name", "integration": {"client_id": "aaaaaaaa-1a1a-1a1a-1a1a-aaaaaaaaaaaa", "tenant_id": "aaaaaaaa-1a1a-1a1a-1a1a-aaaaaaaaaaaa"}, "storage_account": "account-name", "type": "azure"}, "include_tags": false, "lookup_attributes": ["trace_id", "user_id"], "name": "Nginx Archive", "partitioning_attributes": ["service", "status"], "query": "source:nginx", "rehydration_max_scan_size_in_gb": 100, "rehydration_tags": ["team:intake", "team:app"]}, "type": "archives"}} When the request is sent Then the response status is 400 Bad Request @@ -158,7 +158,7 @@ Feature: Logs Archives Scenario: Update an archive returns "Not found" response Given new "UpdateLogsArchive" request And request contains "archive_id" parameter from "REPLACE.ME" - And body with value {"data": {"attributes": {"compression_method": "GZIP", "destination": {"container": "container-name", "integration": {"client_id": "aaaaaaaa-1a1a-1a1a-1a1a-aaaaaaaaaaaa", "tenant_id": "aaaaaaaa-1a1a-1a1a-1a1a-aaaaaaaaaaaa"}, "storage_account": "account-name", "type": "azure"}, "include_tags": false, "name": "Nginx Archive", "query": "source:nginx", "rehydration_max_scan_size_in_gb": 100, "rehydration_tags": ["team:intake", "team:app"]}, "type": "archives"}} + And body with value {"data": {"attributes": {"compression_method": "GZIP", "destination": {"container": "container-name", "integration": {"client_id": "aaaaaaaa-1a1a-1a1a-1a1a-aaaaaaaaaaaa", "tenant_id": "aaaaaaaa-1a1a-1a1a-1a1a-aaaaaaaaaaaa"}, "storage_account": "account-name", "type": "azure"}, "include_tags": false, "lookup_attributes": ["trace_id", "user_id"], "name": "Nginx Archive", "partitioning_attributes": ["service", "status"], "query": "source:nginx", "rehydration_max_scan_size_in_gb": 100, "rehydration_tags": ["team:intake", "team:app"]}, "type": "archives"}} When the request is sent Then the response status is 404 Not found @@ -166,7 +166,7 @@ Feature: Logs Archives Scenario: Update an archive returns "OK" response Given new "UpdateLogsArchive" request And request contains "archive_id" parameter from "REPLACE.ME" - And body with value {"data": {"attributes": {"compression_method": "GZIP", "destination": {"container": "container-name", "integration": {"client_id": "aaaaaaaa-1a1a-1a1a-1a1a-aaaaaaaaaaaa", "tenant_id": "aaaaaaaa-1a1a-1a1a-1a1a-aaaaaaaaaaaa"}, "storage_account": "account-name", "type": "azure"}, "include_tags": false, "name": "Nginx Archive", "query": "source:nginx", "rehydration_max_scan_size_in_gb": 100, "rehydration_tags": ["team:intake", "team:app"]}, "type": "archives"}} + And body with value {"data": {"attributes": {"compression_method": "GZIP", "destination": {"container": "container-name", "integration": {"client_id": "aaaaaaaa-1a1a-1a1a-1a1a-aaaaaaaaaaaa", "tenant_id": "aaaaaaaa-1a1a-1a1a-1a1a-aaaaaaaaaaaa"}, "storage_account": "account-name", "type": "azure"}, "include_tags": false, "lookup_attributes": ["trace_id", "user_id"], "name": "Nginx Archive", "partitioning_attributes": ["service", "status"], "query": "source:nginx", "rehydration_max_scan_size_in_gb": 100, "rehydration_tags": ["team:intake", "team:app"]}, "type": "archives"}} When the request is sent Then the response status is 200 OK diff --git a/lib/datadog_api_client/v2/models/logs_archive_attributes.rb b/lib/datadog_api_client/v2/models/logs_archive_attributes.rb index fae8383c62db..d43229c9bf33 100644 --- a/lib/datadog_api_client/v2/models/logs_archive_attributes.rb +++ b/lib/datadog_api_client/v2/models/logs_archive_attributes.rb @@ -31,9 +31,15 @@ class LogsArchiveAttributes # If it is set to "false", the tags will be deleted when the logs are sent to the archive. attr_accessor :include_tags + # An array of attributes to use as lookup keys for the archive. + attr_accessor :lookup_attributes + # The archive name. attr_reader :name + # An array of attributes to use as partition keys for the archive. The attribute used most frequently for querying should be first. + attr_accessor :partitioning_attributes + # The archive query/filter. Logs matching this query are included in the archive. attr_reader :query @@ -55,7 +61,9 @@ def self.attribute_map :'compression_method' => :'compression_method', :'destination' => :'destination', :'include_tags' => :'include_tags', + :'lookup_attributes' => :'lookup_attributes', :'name' => :'name', + :'partitioning_attributes' => :'partitioning_attributes', :'query' => :'query', :'rehydration_max_scan_size_in_gb' => :'rehydration_max_scan_size_in_gb', :'rehydration_tags' => :'rehydration_tags', @@ -70,7 +78,9 @@ def self.openapi_types :'compression_method' => :'LogsArchiveAttributesCompressionMethod', :'destination' => :'LogsArchiveDestination', :'include_tags' => :'Boolean', + :'lookup_attributes' => :'Array', :'name' => :'String', + :'partitioning_attributes' => :'Array', :'query' => :'String', :'rehydration_max_scan_size_in_gb' => :'Integer', :'rehydration_tags' => :'Array', @@ -117,10 +127,22 @@ def initialize(attributes = {}) self.include_tags = attributes[:'include_tags'] end + if attributes.key?(:'lookup_attributes') + if (value = attributes[:'lookup_attributes']).is_a?(Array) + self.lookup_attributes = value + end + end + if attributes.key?(:'name') self.name = attributes[:'name'] end + if attributes.key?(:'partitioning_attributes') + if (value = attributes[:'partitioning_attributes']).is_a?(Array) + self.partitioning_attributes = value + end + end + if attributes.key?(:'query') self.query = attributes[:'query'] end @@ -198,7 +220,9 @@ def ==(o) compression_method == o.compression_method && destination == o.destination && include_tags == o.include_tags && + lookup_attributes == o.lookup_attributes && name == o.name && + partitioning_attributes == o.partitioning_attributes && query == o.query && rehydration_max_scan_size_in_gb == o.rehydration_max_scan_size_in_gb && rehydration_tags == o.rehydration_tags && @@ -210,7 +234,7 @@ def ==(o) # @return [Integer] Hash code # @!visibility private def hash - [compression_method, destination, include_tags, name, query, rehydration_max_scan_size_in_gb, rehydration_tags, state, additional_properties].hash + [compression_method, destination, include_tags, lookup_attributes, name, partitioning_attributes, query, rehydration_max_scan_size_in_gb, rehydration_tags, state, additional_properties].hash end end end diff --git a/lib/datadog_api_client/v2/models/logs_archive_create_request_attributes.rb b/lib/datadog_api_client/v2/models/logs_archive_create_request_attributes.rb index 4cbd5ae4ddaa..477fee559acf 100644 --- a/lib/datadog_api_client/v2/models/logs_archive_create_request_attributes.rb +++ b/lib/datadog_api_client/v2/models/logs_archive_create_request_attributes.rb @@ -31,9 +31,15 @@ class LogsArchiveCreateRequestAttributes # If it is set to "false", the tags will be deleted when the logs are sent to the archive. attr_accessor :include_tags + # An array of attributes to use as lookup keys for the archive. + attr_accessor :lookup_attributes + # The archive name. attr_reader :name + # An array of attributes to use as partition keys for the archive. The attribute used most frequently for querying should be first. + attr_accessor :partitioning_attributes + # The archive query/filter. Logs matching this query are included in the archive. attr_reader :query @@ -52,7 +58,9 @@ def self.attribute_map :'compression_method' => :'compression_method', :'destination' => :'destination', :'include_tags' => :'include_tags', + :'lookup_attributes' => :'lookup_attributes', :'name' => :'name', + :'partitioning_attributes' => :'partitioning_attributes', :'query' => :'query', :'rehydration_max_scan_size_in_gb' => :'rehydration_max_scan_size_in_gb', :'rehydration_tags' => :'rehydration_tags' @@ -66,7 +74,9 @@ def self.openapi_types :'compression_method' => :'LogsArchiveAttributesCompressionMethod', :'destination' => :'LogsArchiveCreateRequestDestination', :'include_tags' => :'Boolean', + :'lookup_attributes' => :'Array', :'name' => :'String', + :'partitioning_attributes' => :'Array', :'query' => :'String', :'rehydration_max_scan_size_in_gb' => :'Integer', :'rehydration_tags' => :'Array' @@ -111,10 +121,22 @@ def initialize(attributes = {}) self.include_tags = attributes[:'include_tags'] end + if attributes.key?(:'lookup_attributes') + if (value = attributes[:'lookup_attributes']).is_a?(Array) + self.lookup_attributes = value + end + end + if attributes.key?(:'name') self.name = attributes[:'name'] end + if attributes.key?(:'partitioning_attributes') + if (value = attributes[:'partitioning_attributes']).is_a?(Array) + self.partitioning_attributes = value + end + end + if attributes.key?(:'query') self.query = attributes[:'query'] end @@ -199,7 +221,9 @@ def ==(o) compression_method == o.compression_method && destination == o.destination && include_tags == o.include_tags && + lookup_attributes == o.lookup_attributes && name == o.name && + partitioning_attributes == o.partitioning_attributes && query == o.query && rehydration_max_scan_size_in_gb == o.rehydration_max_scan_size_in_gb && rehydration_tags == o.rehydration_tags && @@ -210,7 +234,7 @@ def ==(o) # @return [Integer] Hash code # @!visibility private def hash - [compression_method, destination, include_tags, name, query, rehydration_max_scan_size_in_gb, rehydration_tags, additional_properties].hash + [compression_method, destination, include_tags, lookup_attributes, name, partitioning_attributes, query, rehydration_max_scan_size_in_gb, rehydration_tags, additional_properties].hash end end end From bc8ea62875ddb1eeb4adac019ad18d10f65c097e Mon Sep 17 00:00:00 2001 From: "api-clients-generation-pipeline[bot]" <54105614+api-clients-generation-pipeline[bot]@users.noreply.github.com> Date: Wed, 3 Jun 2026 07:35:20 +0000 Subject: [PATCH 3/6] Regenerate client from commit d125f6f of spec repo (#3433) Co-authored-by: ci.datadog-api-spec --- .generator/schemas/v1/openapi.yaml | 59 ++++++++++++++++- lib/datadog_api_client/inflector.rb | 2 + .../v1/models/list_stream_issue_persona.rb | 29 ++++++++ .../v1/models/list_stream_issue_state.rb | 29 ++++++++ .../v1/models/list_stream_query.rb | 66 +++++++++++++++++-- .../v1/models/list_stream_source.rb | 3 +- 6 files changed, 180 insertions(+), 8 deletions(-) create mode 100644 lib/datadog_api_client/v1/models/list_stream_issue_persona.rb create mode 100644 lib/datadog_api_client/v1/models/list_stream_issue_state.rb diff --git a/.generator/schemas/v1/openapi.yaml b/.generator/schemas/v1/openapi.yaml index 0040506a5547..afe196e102fc 100644 --- a/.generator/schemas/v1/openapi.yaml +++ b/.generator/schemas/v1/openapi.yaml @@ -5716,9 +5716,41 @@ components: required: - facet type: object + ListStreamIssuePersona: + description: Persona filter for the `issue_stream` data source. + enum: + - all + - browser + - mobile + - backend + type: string + x-enum-varnames: + - ALL + - BROWSER + - MOBILE + - BACKEND + ListStreamIssueState: + description: Issue state filter for the `issue_stream` data source. + enum: + - OPEN + - IGNORED + - ACKNOWLEDGED + - RESOLVED + type: string + x-enum-varnames: + - OPEN + - IGNORED + - ACKNOWLEDGED + - RESOLVED ListStreamQuery: description: Updated list stream widget. properties: + assignee_uuids: + description: Filter by assignee UUIDs. Usable only with `issue_stream`. + items: + description: Assignee UUID. + type: string + type: array clustering_pattern_field_path: description: Specifies the field for logs pattern clustering. Usable only with logs_pattern_stream. example: "message" @@ -5746,16 +5778,35 @@ components: description: Index. type: string type: array + persona: + $ref: "#/components/schemas/ListStreamIssuePersona" query_string: description: Widget query. example: "@service:app" type: string sort: $ref: "#/components/schemas/WidgetFieldSort" + states: + description: Filter by issue states. Usable only with `issue_stream`. + items: + $ref: "#/components/schemas/ListStreamIssueState" + type: array storage: description: Option for storage location. Feature in Private Beta. example: "indexes" type: string + suspected_causes: + description: Filter by suspected causes. Usable only with `issue_stream`. + items: + description: Suspected cause. + type: string + type: array + team_handles: + description: Filter by team handles. Usable only with `issue_stream`. + items: + description: Team handle. + type: string + type: array required: - query_string - data_source @@ -5769,8 +5820,8 @@ components: x-enum-varnames: - EVENT_LIST ListStreamSource: - default: apm_issue_stream - description: Source from which to query items to display in the stream. + default: logs_stream + description: Source from which to query items to display in the stream. apm_issue_stream, rum_issue_stream, and logs_issue_stream are deprecated. Use issue_stream instead. enum: - logs_stream - audit_stream @@ -5785,7 +5836,8 @@ components: - event_stream - rum_stream - llm_observability_stream - example: apm_issue_stream + - issue_stream + example: logs_stream type: string x-enum-varnames: - LOGS_STREAM @@ -5801,6 +5853,7 @@ components: - EVENT_STREAM - RUM_STREAM - LLM_OBSERVABILITY_STREAM + - ISSUE_STREAM ListStreamWidgetDefinition: description: |- The list stream visualization displays a table of recent events in your application that diff --git a/lib/datadog_api_client/inflector.rb b/lib/datadog_api_client/inflector.rb index fdfb36a692e1..608ddaf5fdd2 100644 --- a/lib/datadog_api_client/inflector.rb +++ b/lib/datadog_api_client/inflector.rb @@ -263,6 +263,8 @@ def overrides "v1.list_stream_compute_aggregation" => "ListStreamComputeAggregation", "v1.list_stream_compute_items" => "ListStreamComputeItems", "v1.list_stream_group_by_items" => "ListStreamGroupByItems", + "v1.list_stream_issue_persona" => "ListStreamIssuePersona", + "v1.list_stream_issue_state" => "ListStreamIssueState", "v1.list_stream_query" => "ListStreamQuery", "v1.list_stream_response_format" => "ListStreamResponseFormat", "v1.list_stream_source" => "ListStreamSource", diff --git a/lib/datadog_api_client/v1/models/list_stream_issue_persona.rb b/lib/datadog_api_client/v1/models/list_stream_issue_persona.rb new file mode 100644 index 000000000000..be243207fa78 --- /dev/null +++ b/lib/datadog_api_client/v1/models/list_stream_issue_persona.rb @@ -0,0 +1,29 @@ +=begin +#Datadog API V1 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::V1 + # Persona filter for the `issue_stream` data source. + class ListStreamIssuePersona + include BaseEnumModel + + ALL = "all".freeze + BROWSER = "browser".freeze + MOBILE = "mobile".freeze + BACKEND = "backend".freeze + end +end diff --git a/lib/datadog_api_client/v1/models/list_stream_issue_state.rb b/lib/datadog_api_client/v1/models/list_stream_issue_state.rb new file mode 100644 index 000000000000..5e9e62cea91a --- /dev/null +++ b/lib/datadog_api_client/v1/models/list_stream_issue_state.rb @@ -0,0 +1,29 @@ +=begin +#Datadog API V1 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::V1 + # Issue state filter for the `issue_stream` data source. + class ListStreamIssueState + include BaseEnumModel + + OPEN = "OPEN".freeze + IGNORED = "IGNORED".freeze + ACKNOWLEDGED = "ACKNOWLEDGED".freeze + RESOLVED = "RESOLVED".freeze + end +end diff --git a/lib/datadog_api_client/v1/models/list_stream_query.rb b/lib/datadog_api_client/v1/models/list_stream_query.rb index 2498d0bae500..9046dd811bdd 100644 --- a/lib/datadog_api_client/v1/models/list_stream_query.rb +++ b/lib/datadog_api_client/v1/models/list_stream_query.rb @@ -21,13 +21,16 @@ module DatadogAPIClient::V1 class ListStreamQuery include BaseGenericModel + # Filter by assignee UUIDs. Usable only with `issue_stream`. + attr_accessor :assignee_uuids + # Specifies the field for logs pattern clustering. Usable only with logs_pattern_stream. attr_accessor :clustering_pattern_field_path # Compute configuration for the List Stream Widget. Compute can be used only with the logs_transaction_stream (from 1 to 5 items) list stream source. attr_reader :compute - # Source from which to query items to display in the stream. + # Source from which to query items to display in the stream. apm_issue_stream, rum_issue_stream, and logs_issue_stream are deprecated. Use issue_stream instead. attr_reader :data_source # Size to use to display an event. @@ -39,30 +42,47 @@ class ListStreamQuery # List of indexes. attr_accessor :indexes + # Persona filter for the `issue_stream` data source. + attr_accessor :persona + # Widget query. attr_reader :query_string # Which column and order to sort by attr_accessor :sort + # Filter by issue states. Usable only with `issue_stream`. + attr_accessor :states + # Option for storage location. Feature in Private Beta. attr_accessor :storage + # Filter by suspected causes. Usable only with `issue_stream`. + attr_accessor :suspected_causes + + # Filter by team handles. Usable only with `issue_stream`. + attr_accessor :team_handles + attr_accessor :additional_properties # Attribute mapping from ruby-style variable name to JSON key. # @!visibility private def self.attribute_map { + :'assignee_uuids' => :'assignee_uuids', :'clustering_pattern_field_path' => :'clustering_pattern_field_path', :'compute' => :'compute', :'data_source' => :'data_source', :'event_size' => :'event_size', :'group_by' => :'group_by', :'indexes' => :'indexes', + :'persona' => :'persona', :'query_string' => :'query_string', :'sort' => :'sort', - :'storage' => :'storage' + :'states' => :'states', + :'storage' => :'storage', + :'suspected_causes' => :'suspected_causes', + :'team_handles' => :'team_handles' } end @@ -70,15 +90,20 @@ def self.attribute_map # @!visibility private def self.openapi_types { + :'assignee_uuids' => :'Array', :'clustering_pattern_field_path' => :'String', :'compute' => :'Array', :'data_source' => :'ListStreamSource', :'event_size' => :'WidgetEventSize', :'group_by' => :'Array', :'indexes' => :'Array', + :'persona' => :'ListStreamIssuePersona', :'query_string' => :'String', :'sort' => :'WidgetFieldSort', - :'storage' => :'String' + :'states' => :'Array', + :'storage' => :'String', + :'suspected_causes' => :'Array', + :'team_handles' => :'Array' } end @@ -100,6 +125,12 @@ def initialize(attributes = {}) end } + if attributes.key?(:'assignee_uuids') + if (value = attributes[:'assignee_uuids']).is_a?(Array) + self.assignee_uuids = value + end + end + if attributes.key?(:'clustering_pattern_field_path') self.clustering_pattern_field_path = attributes[:'clustering_pattern_field_path'] end @@ -130,6 +161,10 @@ def initialize(attributes = {}) end end + if attributes.key?(:'persona') + self.persona = attributes[:'persona'] + end + if attributes.key?(:'query_string') self.query_string = attributes[:'query_string'] end @@ -138,9 +173,27 @@ def initialize(attributes = {}) self.sort = attributes[:'sort'] end + if attributes.key?(:'states') + if (value = attributes[:'states']).is_a?(Array) + self.states = value + end + end + if attributes.key?(:'storage') self.storage = attributes[:'storage'] end + + if attributes.key?(:'suspected_causes') + if (value = attributes[:'suspected_causes']).is_a?(Array) + self.suspected_causes = value + end + end + + if attributes.key?(:'team_handles') + if (value = attributes[:'team_handles']).is_a?(Array) + self.team_handles = value + end + end end # Check to see if the all the properties in the model are valid @@ -224,15 +277,20 @@ def to_hash def ==(o) return true if self.equal?(o) self.class == o.class && + assignee_uuids == o.assignee_uuids && clustering_pattern_field_path == o.clustering_pattern_field_path && compute == o.compute && data_source == o.data_source && event_size == o.event_size && group_by == o.group_by && indexes == o.indexes && + persona == o.persona && query_string == o.query_string && sort == o.sort && + states == o.states && storage == o.storage && + suspected_causes == o.suspected_causes && + team_handles == o.team_handles && additional_properties == o.additional_properties end @@ -240,7 +298,7 @@ def ==(o) # @return [Integer] Hash code # @!visibility private def hash - [clustering_pattern_field_path, compute, data_source, event_size, group_by, indexes, query_string, sort, storage, additional_properties].hash + [assignee_uuids, clustering_pattern_field_path, compute, data_source, event_size, group_by, indexes, persona, query_string, sort, states, storage, suspected_causes, team_handles, additional_properties].hash end end end diff --git a/lib/datadog_api_client/v1/models/list_stream_source.rb b/lib/datadog_api_client/v1/models/list_stream_source.rb index 419955d2d14d..40858dfe4e33 100644 --- a/lib/datadog_api_client/v1/models/list_stream_source.rb +++ b/lib/datadog_api_client/v1/models/list_stream_source.rb @@ -17,7 +17,7 @@ require 'time' module DatadogAPIClient::V1 - # Source from which to query items to display in the stream. + # Source from which to query items to display in the stream. apm_issue_stream, rum_issue_stream, and logs_issue_stream are deprecated. Use issue_stream instead. class ListStreamSource include BaseEnumModel @@ -34,5 +34,6 @@ class ListStreamSource EVENT_STREAM = "event_stream".freeze RUM_STREAM = "rum_stream".freeze LLM_OBSERVABILITY_STREAM = "llm_observability_stream".freeze + ISSUE_STREAM = "issue_stream".freeze end end From 4d149f87be7eb5ff11acdba14c634427bfd3bd56 Mon Sep 17 00:00:00 2001 From: "api-clients-generation-pipeline[bot]" <54105614+api-clients-generation-pipeline[bot]@users.noreply.github.com> Date: Wed, 3 Jun 2026 08:14:30 +0000 Subject: [PATCH 4/6] Regenerate client from commit c9c6996 of spec repo (#3281) Co-authored-by: ci.datadog-api-spec --- features/v1/usage_metering.feature | 188 ++++++++++++++--------------- features/v2/usage_metering.feature | 54 ++++----- 2 files changed, 121 insertions(+), 121 deletions(-) diff --git a/features/v1/usage_metering.feature b/features/v1/usage_metering.feature index ea9e1ca4b449..e8651834ac22 100644 --- a/features/v1/usage_metering.feature +++ b/features/v1/usage_metering.feature @@ -14,32 +14,32 @@ Feature: Usage Metering And a valid "appKeyAuth" key in the system And an instance of "UsageMetering" API - @team:DataDog/revenue-query + @team:DataDog/billing-hub Scenario: Get all custom metrics by hourly average returns "Bad Request" response Given new "GetUsageTopAvgMetrics" request When the request is sent Then the response status is 400 Bad Request - @team:DataDog/revenue-query + @team:DataDog/billing-hub Scenario: Get all custom metrics by hourly average returns "OK" response Given new "GetUsageTopAvgMetrics" request And request contains "day" parameter with value "{{ timeISO('now - 3d') }}" When the request is sent Then the response status is 200 OK - @generated @skip @team:DataDog/revenue-query + @generated @skip @team:DataDog/billing-hub Scenario: Get billable usage across your account returns "Bad Request" response Given new "GetUsageBillableSummary" request When the request is sent Then the response status is 400 Bad Request - @generated @skip @team:DataDog/revenue-query + @generated @skip @team:DataDog/billing-hub Scenario: Get billable usage across your account returns "OK" response Given new "GetUsageBillableSummary" request When the request is sent Then the response status is 200 OK - @skip @team:DataDog/revenue-query + @skip @team:DataDog/billing-hub Scenario: Get hourly logs usage by retention returns "Bad Request" response Given new "GetUsageLogsByRetention" request And request contains "start_hr" parameter with value "{{ timeISO('now - 3d') }}" @@ -47,7 +47,7 @@ Feature: Usage Metering When the request is sent Then the response status is 400 Bad Request - @skip @team:DataDog/revenue-query + @skip @team:DataDog/billing-hub Scenario: Get hourly logs usage by retention returns "OK" response Given new "GetUsageLogsByRetention" request And request contains "start_hr" parameter with value "{{ timeISO('now - 5d') }}" @@ -55,7 +55,7 @@ Feature: Usage Metering When the request is sent Then the response status is 200 OK - @skip @team:DataDog/revenue-query + @skip @team:DataDog/billing-hub Scenario: Get hourly usage attribution returns "Bad Request" response Given new "GetHourlyUsageAttribution" request And request contains "start_hr" parameter with value "{{ timeISO('now - 3d') }}" @@ -63,7 +63,7 @@ Feature: Usage Metering When the request is sent Then the response status is 400 Bad Request - @team:DataDog/revenue-query + @team:DataDog/billing-hub Scenario: Get hourly usage attribution returns "OK" response Given new "GetHourlyUsageAttribution" request And request contains "start_hr" parameter with value "{{ timeISO('now - 3d') }}" @@ -71,7 +71,7 @@ Feature: Usage Metering When the request is sent Then the response status is 200 OK - @skip @team:DataDog/revenue-query + @skip @team:DataDog/billing-hub Scenario: Get hourly usage for CI visibility returns "Bad Request" response Given new "GetUsageCIApp" request And request contains "start_hr" parameter with value "{{ timeISO('now - 3d') }}" @@ -79,7 +79,7 @@ Feature: Usage Metering When the request is sent Then the response status is 400 Bad Request - @skip @team:DataDog/revenue-query + @skip @team:DataDog/billing-hub Scenario: Get hourly usage for CI visibility returns "OK" response Given new "GetUsageCIApp" request And request contains "start_hr" parameter with value "{{ timeISO('now - 5d') }}" @@ -87,21 +87,21 @@ Feature: Usage Metering When the request is sent Then the response status is 200 OK - @generated @skip @team:DataDog/revenue-query + @generated @skip @team:DataDog/billing-hub Scenario: Get hourly usage for CSM Pro returns "Bad Request" response Given new "GetUsageCloudSecurityPostureManagement" request And request contains "start_hr" parameter from "REPLACE.ME" When the request is sent Then the response status is 400 Bad Request - @skip @team:DataDog/revenue-query + @skip @team:DataDog/billing-hub Scenario: Get hourly usage for CSM Pro returns "OK" response Given new "GetUsageCloudSecurityPostureManagement" request And request contains "start_hr" parameter with value "{{ timeISO('now - 3d') }}" When the request is sent Then the response status is 200 OK - @skip @team:DataDog/revenue-query + @skip @team:DataDog/billing-hub Scenario: Get hourly usage for Database Monitoring returns "OK" response Given new "GetUsageDBM" request And request contains "start_hr" parameter with value "{{ timeISO('now - 5d') }}" @@ -109,7 +109,7 @@ Feature: Usage Metering When the request is sent Then the response status is 200 OK - @skip @team:DataDog/revenue-query + @skip @team:DataDog/billing-hub Scenario: Get hourly usage for Fargate returns "Bad Request" response Given new "GetUsageFargate" request And request contains "start_hr" parameter with value "{{ timeISO('now - 3d') }}" @@ -117,7 +117,7 @@ Feature: Usage Metering When the request is sent Then the response status is 400 Bad Request - @skip @team:DataDog/revenue-query + @skip @team:DataDog/billing-hub Scenario: Get hourly usage for Fargate returns "OK" response Given new "GetUsageFargate" request And request contains "start_hr" parameter with value "{{ timeISO('now - 5d') }}" @@ -125,7 +125,7 @@ Feature: Usage Metering When the request is sent Then the response status is 200 OK - @skip @team:DataDog/revenue-query + @skip @team:DataDog/billing-hub Scenario: Get hourly usage for IoT returns "Bad Request" response Given new "GetUsageInternetOfThings" request And request contains "start_hr" parameter with value "{{ timeISO('now - 3d') }}" @@ -133,7 +133,7 @@ Feature: Usage Metering When the request is sent Then the response status is 400 Bad Request - @skip @team:DataDog/revenue-query + @skip @team:DataDog/billing-hub Scenario: Get hourly usage for IoT returns "OK" response Given new "GetUsageInternetOfThings" request And request contains "start_hr" parameter with value "{{ timeISO('now - 5d') }}" @@ -141,7 +141,7 @@ Feature: Usage Metering When the request is sent Then the response status is 200 OK - @skip @team:DataDog/revenue-query + @skip @team:DataDog/billing-hub Scenario: Get hourly usage for Lambda returns "Bad Request" response Given new "GetUsageLambda" request And request contains "start_hr" parameter with value "{{ timeISO('now - 3d') }}" @@ -149,7 +149,7 @@ Feature: Usage Metering When the request is sent Then the response status is 400 Bad Request - @skip @team:DataDog/revenue-query + @skip @team:DataDog/billing-hub Scenario: Get hourly usage for Lambda returns "OK" response Given new "GetUsageLambda" request And request contains "start_hr" parameter with value "{{ timeISO('now - 5d') }}" @@ -157,7 +157,7 @@ Feature: Usage Metering When the request is sent Then the response status is 200 OK - @team:DataDog/revenue-query + @team:DataDog/billing-hub Scenario: Get hourly usage for Logs by Index returns "Bad Request" response Given new "GetUsageLogsByIndex" request And request contains "start_hr" parameter with value "{{ timeISO('now - 3d') }}" @@ -165,7 +165,7 @@ Feature: Usage Metering When the request is sent Then the response status is 400 Bad Request - @team:DataDog/revenue-query + @team:DataDog/billing-hub Scenario: Get hourly usage for Logs by Index returns "OK" response Given new "GetUsageLogsByIndex" request And request contains "start_hr" parameter with value "{{ timeISO('now - 5d') }}" @@ -173,7 +173,7 @@ Feature: Usage Metering When the request is sent Then the response status is 200 OK - @skip @team:DataDog/revenue-query + @skip @team:DataDog/billing-hub Scenario: Get hourly usage for Logs returns "Bad Request" response Given new "GetUsageLogs" request And request contains "start_hr" parameter with value "{{ timeISO('now - 3d') }}" @@ -181,7 +181,7 @@ Feature: Usage Metering When the request is sent Then the response status is 400 Bad Request - @skip @team:DataDog/revenue-query + @skip @team:DataDog/billing-hub Scenario: Get hourly usage for Logs returns "OK" response Given new "GetUsageLogs" request And request contains "start_hr" parameter with value "{{ timeISO('now - 5d') }}" @@ -189,7 +189,7 @@ Feature: Usage Metering When the request is sent Then the response status is 200 OK - @skip @team:DataDog/revenue-query + @skip @team:DataDog/billing-hub Scenario: Get hourly usage for Network Flows returns "Bad Request" response Given new "GetUsageNetworkFlows" request And request contains "start_hr" parameter with value "{{ timeISO('now - 3d') }}" @@ -197,7 +197,7 @@ Feature: Usage Metering When the request is sent Then the response status is 400 Bad Request - @skip @team:DataDog/revenue-query + @skip @team:DataDog/billing-hub Scenario: Get hourly usage for Network Flows returns "OK" response Given new "GetUsageNetworkFlows" request And request contains "start_hr" parameter with value "{{ timeISO('now - 5d') }}" @@ -205,7 +205,7 @@ Feature: Usage Metering When the request is sent Then the response status is 200 OK - @skip @team:DataDog/revenue-query + @skip @team:DataDog/billing-hub Scenario: Get hourly usage for Network Hosts returns "Bad Request" response Given new "GetUsageNetworkHosts" request And request contains "start_hr" parameter with value "{{ timeISO('now - 3d') }}" @@ -213,7 +213,7 @@ Feature: Usage Metering When the request is sent Then the response status is 400 Bad Request - @skip @team:DataDog/revenue-query + @skip @team:DataDog/billing-hub Scenario: Get hourly usage for Network Hosts returns "OK" response Given new "GetUsageNetworkHosts" request And request contains "start_hr" parameter with value "{{ timeISO('now - 5d') }}" @@ -221,7 +221,7 @@ Feature: Usage Metering When the request is sent Then the response status is 200 OK - @skip @team:DataDog/revenue-query + @skip @team:DataDog/billing-hub Scenario: Get hourly usage for Online Archive returns "Bad Request" response Given new "GetUsageOnlineArchive" request And request contains "start_hr" parameter with value "{{ timeISO('now - 3d') }}" @@ -229,7 +229,7 @@ Feature: Usage Metering When the request is sent Then the response status is 400 Bad Request - @skip @team:DataDog/revenue-query + @skip @team:DataDog/billing-hub Scenario: Get hourly usage for Online Archive returns "OK" response Given new "GetUsageOnlineArchive" request And request contains "start_hr" parameter with value "{{ timeISO('now - 5d') }}" @@ -237,7 +237,7 @@ Feature: Usage Metering When the request is sent Then the response status is 200 OK - @skip @team:DataDog/revenue-query + @skip @team:DataDog/billing-hub Scenario: Get hourly usage for RUM Sessions returns "Bad Request" response Given new "GetUsageRumSessions" request And request contains "start_hr" parameter with value "{{ timeISO('now - 3d') }}" @@ -245,7 +245,7 @@ Feature: Usage Metering When the request is sent Then the response status is 400 Bad Request - @skip @team:DataDog/revenue-query + @skip @team:DataDog/billing-hub Scenario: Get hourly usage for RUM Sessions returns "OK" response Given new "GetUsageRumSessions" request And request contains "start_hr" parameter with value "{{ timeISO('now - 5d') }}" @@ -253,7 +253,7 @@ Feature: Usage Metering When the request is sent Then the response status is 200 OK - @skip @team:DataDog/revenue-query + @skip @team:DataDog/billing-hub Scenario: Get hourly usage for RUM Units returns "OK" response Given new "GetUsageRumUnits" request And request contains "start_hr" parameter with value "{{ timeISO('now - 5d') }}" @@ -261,35 +261,35 @@ Feature: Usage Metering When the request is sent Then the response status is 200 OK - @generated @skip @team:DataDog/revenue-query + @generated @skip @team:DataDog/billing-hub Scenario: Get hourly usage for RUM sessions returns "Bad Request" response Given new "GetUsageRumSessions" request And request contains "start_hr" parameter from "REPLACE.ME" When the request is sent Then the response status is 400 Bad Request - @generated @skip @team:DataDog/revenue-query + @generated @skip @team:DataDog/billing-hub Scenario: Get hourly usage for RUM sessions returns "OK" response Given new "GetUsageRumSessions" request And request contains "start_hr" parameter from "REPLACE.ME" When the request is sent Then the response status is 200 OK - @generated @skip @team:DataDog/revenue-query + @generated @skip @team:DataDog/billing-hub Scenario: Get hourly usage for RUM units returns "Bad Request" response Given new "GetUsageRumUnits" request And request contains "start_hr" parameter from "REPLACE.ME" When the request is sent Then the response status is 400 Bad Request - @generated @skip @team:DataDog/revenue-query + @generated @skip @team:DataDog/billing-hub Scenario: Get hourly usage for RUM units returns "OK" response Given new "GetUsageRumUnits" request And request contains "start_hr" parameter from "REPLACE.ME" When the request is sent Then the response status is 200 OK - @skip @team:DataDog/revenue-query + @skip @team:DataDog/billing-hub Scenario: Get hourly usage for SNMP devices returns "Bad Request" response Given new "GetUsageSNMP" request And request contains "start_hr" parameter with value "{{ timeISO('now - 3d') }}" @@ -297,7 +297,7 @@ Feature: Usage Metering When the request is sent Then the response status is 400 Bad Request - @skip @team:DataDog/revenue-query + @skip @team:DataDog/billing-hub Scenario: Get hourly usage for SNMP devices returns "OK" response Given new "GetUsageSNMP" request And request contains "start_hr" parameter with value "{{ timeISO('now - 5d') }}" @@ -305,7 +305,7 @@ Feature: Usage Metering When the request is sent Then the response status is 200 OK - @skip @team:DataDog/revenue-query + @skip @team:DataDog/billing-hub Scenario: Get hourly usage for Sensitive Data Scanner returns "OK" response Given new "GetUsageSDS" request And request contains "start_hr" parameter with value "{{ timeISO('now - 5d') }}" @@ -313,7 +313,7 @@ Feature: Usage Metering When the request is sent Then the response status is 200 OK - @skip @team:DataDog/revenue-query + @skip @team:DataDog/billing-hub Scenario: Get hourly usage for Synthetics API Checks returns "Bad Request" response Given new "GetUsageSyntheticsAPI" request And request contains "start_hr" parameter with value "{{ timeISO('now - 3d') }}" @@ -321,7 +321,7 @@ Feature: Usage Metering When the request is sent Then the response status is 400 Bad Request - @skip @team:DataDog/revenue-query + @skip @team:DataDog/billing-hub Scenario: Get hourly usage for Synthetics API Checks returns "OK" response Given new "GetUsageSyntheticsAPI" request And request contains "start_hr" parameter with value "{{ timeISO('now - 5d') }}" @@ -329,7 +329,7 @@ Feature: Usage Metering When the request is sent Then the response status is 200 OK - @skip @team:DataDog/revenue-query + @skip @team:DataDog/billing-hub Scenario: Get hourly usage for Synthetics Browser Checks returns "Bad Request" response Given new "GetUsageSyntheticsBrowser" request And request contains "start_hr" parameter with value "{{ timeISO('now - 3d') }}" @@ -337,7 +337,7 @@ Feature: Usage Metering When the request is sent Then the response status is 400 Bad Request - @skip @team:DataDog/revenue-query + @skip @team:DataDog/billing-hub Scenario: Get hourly usage for Synthetics Browser Checks returns "OK" response Given new "GetUsageSyntheticsBrowser" request And request contains "start_hr" parameter with value "{{ timeISO('now - 5d') }}" @@ -345,7 +345,7 @@ Feature: Usage Metering When the request is sent Then the response status is 200 OK - @skip @team:DataDog/revenue-query + @skip @team:DataDog/billing-hub Scenario: Get hourly usage for analyzed logs returns "Bad Request" response Given new "GetUsageAnalyzedLogs" request And request contains "start_hr" parameter with value "{{ timeISO('now - 3d') }}" @@ -353,7 +353,7 @@ Feature: Usage Metering When the request is sent Then the response status is 400 Bad Request - @skip @team:DataDog/revenue-query + @skip @team:DataDog/billing-hub Scenario: Get hourly usage for analyzed logs returns "OK" response Given new "GetUsageAnalyzedLogs" request And request contains "start_hr" parameter with value "{{ timeISO('now - 5d') }}" @@ -361,14 +361,14 @@ Feature: Usage Metering When the request is sent Then the response status is 200 OK - @generated @skip @team:DataDog/revenue-query + @generated @skip @team:DataDog/billing-hub Scenario: Get hourly usage for audit logs returns "Bad Request" response Given new "GetUsageAuditLogs" request And request contains "start_hr" parameter from "REPLACE.ME" When the request is sent Then the response status is 400 Bad Request - @skip @team:DataDog/revenue-query + @skip @team:DataDog/billing-hub Scenario: Get hourly usage for audit logs returns "OK" response Given new "GetUsageAuditLogs" request And request contains "start_hr" parameter with value "{{ timeISO('now - 5d') }}" @@ -376,14 +376,14 @@ Feature: Usage Metering When the request is sent Then the response status is 200 OK - @generated @skip @team:DataDog/revenue-query + @generated @skip @team:DataDog/billing-hub Scenario: Get hourly usage for cloud workload security returns "Bad Request" response Given new "GetUsageCWS" request And request contains "start_hr" parameter from "REPLACE.ME" When the request is sent Then the response status is 400 Bad Request - @skip @team:DataDog/revenue-query + @skip @team:DataDog/billing-hub Scenario: Get hourly usage for cloud workload security returns "OK" response Given new "GetUsageCWS" request And request contains "start_hr" parameter with value "{{ timeISO('now - 5d') }}" @@ -391,7 +391,7 @@ Feature: Usage Metering When the request is sent Then the response status is 200 OK - @skip @team:DataDog/revenue-query + @skip @team:DataDog/billing-hub Scenario: Get hourly usage for custom metrics returns "Bad Request" response Given new "GetUsageTimeseries" request And request contains "start_hr" parameter with value "{{ timeISO('now - 3d') }}" @@ -399,7 +399,7 @@ Feature: Usage Metering When the request is sent Then the response status is 400 Bad Request - @skip @team:DataDog/revenue-query + @skip @team:DataDog/billing-hub Scenario: Get hourly usage for custom metrics returns "OK" response Given new "GetUsageTimeseries" request And request contains "start_hr" parameter with value "{{ timeISO('now - 5d') }}" @@ -407,21 +407,21 @@ Feature: Usage Metering When the request is sent Then the response status is 200 OK - @generated @skip @team:DataDog/revenue-query + @generated @skip @team:DataDog/billing-hub Scenario: Get hourly usage for database monitoring returns "Bad Request" response Given new "GetUsageDBM" request And request contains "start_hr" parameter from "REPLACE.ME" When the request is sent Then the response status is 400 Bad Request - @generated @skip @team:DataDog/revenue-query + @generated @skip @team:DataDog/billing-hub Scenario: Get hourly usage for database monitoring returns "OK" response Given new "GetUsageDBM" request And request contains "start_hr" parameter from "REPLACE.ME" When the request is sent Then the response status is 200 OK - @skip @team:DataDog/revenue-query + @skip @team:DataDog/billing-hub Scenario: Get hourly usage for hosts and containers returns "Bad Request" response Given new "GetUsageHosts" request And request contains "start_hr" parameter with value "{{ timeISO('now - 3d') }}" @@ -429,7 +429,7 @@ Feature: Usage Metering When the request is sent Then the response status is 400 Bad Request - @skip @team:DataDog/revenue-query + @skip @team:DataDog/billing-hub Scenario: Get hourly usage for hosts and containers returns "OK" response Given new "GetUsageHosts" request And request contains "start_hr" parameter with value "{{ timeISO('now - 5d') }}" @@ -437,7 +437,7 @@ Feature: Usage Metering When the request is sent Then the response status is 200 OK - @skip @team:DataDog/revenue-query + @skip @team:DataDog/billing-hub Scenario: Get hourly usage for incident management returns "Bad Request" response Given new "GetIncidentManagement" request And request contains "start_hr" parameter with value "{{ timeISO('now - 3d') }}" @@ -445,7 +445,7 @@ Feature: Usage Metering When the request is sent Then the response status is 400 Bad Request - @skip @team:DataDog/revenue-query + @skip @team:DataDog/billing-hub Scenario: Get hourly usage for incident management returns "OK" response Given new "GetIncidentManagement" request And request contains "start_hr" parameter with value "{{ timeISO('now - 5d') }}" @@ -453,7 +453,7 @@ Feature: Usage Metering When the request is sent Then the response status is 200 OK - @skip @team:DataDog/revenue-query + @skip @team:DataDog/billing-hub Scenario: Get hourly usage for indexed spans returns "Bad Request" response Given new "GetUsageIndexedSpans" request And request contains "start_hr" parameter with value "{{ timeISO('now - 3d') }}" @@ -461,7 +461,7 @@ Feature: Usage Metering When the request is sent Then the response status is 400 Bad Request - @skip @team:DataDog/revenue-query + @skip @team:DataDog/billing-hub Scenario: Get hourly usage for indexed spans returns "OK" response Given new "GetUsageIndexedSpans" request And request contains "start_hr" parameter with value "{{ timeISO('now - 5d') }}" @@ -469,7 +469,7 @@ Feature: Usage Metering When the request is sent Then the response status is 200 OK - @skip @team:DataDog/revenue-query + @skip @team:DataDog/billing-hub Scenario: Get hourly usage for ingested spans returns "Bad Request" response Given new "GetIngestedSpans" request And request contains "start_hr" parameter with value "{{ timeISO('now - 3d') }}" @@ -477,7 +477,7 @@ Feature: Usage Metering When the request is sent Then the response status is 400 Bad Request - @skip @team:DataDog/revenue-query + @skip @team:DataDog/billing-hub Scenario: Get hourly usage for ingested spans returns "OK" response Given new "GetIngestedSpans" request And request contains "start_hr" parameter with value "{{ timeISO('now - 5d') }}" @@ -485,63 +485,63 @@ Feature: Usage Metering When the request is sent Then the response status is 200 OK - @generated @skip @team:DataDog/revenue-query + @generated @skip @team:DataDog/billing-hub Scenario: Get hourly usage for logs by index returns "Bad Request" response Given new "GetUsageLogsByIndex" request And request contains "start_hr" parameter from "REPLACE.ME" When the request is sent Then the response status is 400 Bad Request - @generated @skip @team:DataDog/revenue-query + @generated @skip @team:DataDog/billing-hub Scenario: Get hourly usage for logs by index returns "OK" response Given new "GetUsageLogsByIndex" request And request contains "start_hr" parameter from "REPLACE.ME" When the request is sent Then the response status is 200 OK - @generated @skip @team:DataDog/revenue-query + @generated @skip @team:DataDog/billing-hub Scenario: Get hourly usage for logs returns "Bad Request" response Given new "GetUsageLogs" request And request contains "start_hr" parameter from "REPLACE.ME" When the request is sent Then the response status is 400 Bad Request - @generated @skip @team:DataDog/revenue-query + @generated @skip @team:DataDog/billing-hub Scenario: Get hourly usage for logs returns "OK" response Given new "GetUsageLogs" request And request contains "start_hr" parameter from "REPLACE.ME" When the request is sent Then the response status is 200 OK - @generated @skip @team:DataDog/revenue-query + @generated @skip @team:DataDog/billing-hub Scenario: Get hourly usage for network hosts returns "Bad Request" response Given new "GetUsageNetworkHosts" request And request contains "start_hr" parameter from "REPLACE.ME" When the request is sent Then the response status is 400 Bad Request - @generated @skip @team:DataDog/revenue-query + @generated @skip @team:DataDog/billing-hub Scenario: Get hourly usage for network hosts returns "OK" response Given new "GetUsageNetworkHosts" request And request contains "start_hr" parameter from "REPLACE.ME" When the request is sent Then the response status is 200 OK - @generated @skip @team:DataDog/revenue-query + @generated @skip @team:DataDog/billing-hub Scenario: Get hourly usage for online archive returns "Bad Request" response Given new "GetUsageOnlineArchive" request And request contains "start_hr" parameter from "REPLACE.ME" When the request is sent Then the response status is 400 Bad Request - @generated @skip @team:DataDog/revenue-query + @generated @skip @team:DataDog/billing-hub Scenario: Get hourly usage for online archive returns "OK" response Given new "GetUsageOnlineArchive" request And request contains "start_hr" parameter from "REPLACE.ME" When the request is sent Then the response status is 200 OK - @skip @team:DataDog/revenue-query + @skip @team:DataDog/billing-hub Scenario: Get hourly usage for profiled hosts returns "Bad Request" response Given new "GetUsageProfiling" request And request contains "start_hr" parameter with value "{{ timeISO('now - 3d') }}" @@ -549,7 +549,7 @@ Feature: Usage Metering When the request is sent Then the response status is 400 Bad Request - @skip @team:DataDog/revenue-query + @skip @team:DataDog/billing-hub Scenario: Get hourly usage for profiled hosts returns "OK" response Given new "GetUsageProfiling" request And request contains "start_hr" parameter with value "{{ timeISO('now - 5d') }}" @@ -557,63 +557,63 @@ Feature: Usage Metering When the request is sent Then the response status is 200 OK - @generated @skip @team:DataDog/revenue-query + @generated @skip @team:DataDog/billing-hub Scenario: Get hourly usage for sensitive data scanner returns "Bad Request" response Given new "GetUsageSDS" request And request contains "start_hr" parameter from "REPLACE.ME" When the request is sent Then the response status is 400 Bad Request - @generated @skip @team:DataDog/revenue-query + @generated @skip @team:DataDog/billing-hub Scenario: Get hourly usage for sensitive data scanner returns "OK" response Given new "GetUsageSDS" request And request contains "start_hr" parameter from "REPLACE.ME" When the request is sent Then the response status is 200 OK - @generated @skip @team:DataDog/revenue-query + @generated @skip @team:DataDog/billing-hub Scenario: Get hourly usage for synthetics API checks returns "Bad Request" response Given new "GetUsageSyntheticsAPI" request And request contains "start_hr" parameter from "REPLACE.ME" When the request is sent Then the response status is 400 Bad Request - @generated @skip @team:DataDog/revenue-query + @generated @skip @team:DataDog/billing-hub Scenario: Get hourly usage for synthetics API checks returns "OK" response Given new "GetUsageSyntheticsAPI" request And request contains "start_hr" parameter from "REPLACE.ME" When the request is sent Then the response status is 200 OK - @generated @skip @team:DataDog/revenue-query + @generated @skip @team:DataDog/billing-hub Scenario: Get hourly usage for synthetics browser checks returns "Bad Request" response Given new "GetUsageSyntheticsBrowser" request And request contains "start_hr" parameter from "REPLACE.ME" When the request is sent Then the response status is 400 Bad Request - @generated @skip @team:DataDog/revenue-query + @generated @skip @team:DataDog/billing-hub Scenario: Get hourly usage for synthetics browser checks returns "OK" response Given new "GetUsageSyntheticsBrowser" request And request contains "start_hr" parameter from "REPLACE.ME" When the request is sent Then the response status is 200 OK - @generated @skip @team:DataDog/revenue-query + @generated @skip @team:DataDog/billing-hub Scenario: Get hourly usage for synthetics checks returns "Bad Request" response Given new "GetUsageSynthetics" request And request contains "start_hr" parameter from "REPLACE.ME" When the request is sent Then the response status is 400 Bad Request - @generated @skip @team:DataDog/revenue-query + @generated @skip @team:DataDog/billing-hub Scenario: Get hourly usage for synthetics checks returns "OK" response Given new "GetUsageSynthetics" request And request contains "start_hr" parameter from "REPLACE.ME" When the request is sent Then the response status is 200 OK - @skip @team:DataDog/revenue-query + @skip @team:DataDog/billing-hub Scenario: Get mobile hourly usage for RUM Sessions returns "OK" response Given new "GetUsageRumSessions" request And request contains "start_hr" parameter with value "{{ timeISO('now - 5d') }}" @@ -622,7 +622,7 @@ Feature: Usage Metering When the request is sent Then the response status is 200 OK - @skip @team:DataDog/revenue-query + @skip @team:DataDog/billing-hub Scenario: Get monthly usage attribution returns "Bad Request" response Given new "GetMonthlyUsageAttribution" request And request contains "start_month" parameter with value "{{ timeISO('now - 3d') }}" @@ -630,7 +630,7 @@ Feature: Usage Metering When the request is sent Then the response status is 400 Bad Request - @team:DataDog/revenue-query + @team:DataDog/billing-hub Scenario: Get monthly usage attribution returns "OK" response Given new "GetMonthlyUsageAttribution" request And request contains "start_month" parameter with value "{{ timeISO('now - 3d') }}" @@ -638,68 +638,68 @@ Feature: Usage Metering When the request is sent Then the response status is 200 OK - @generated @skip @team:DataDog/revenue-query + @generated @skip @team:DataDog/billing-hub Scenario: Get specified daily custom reports returns "Not Found" response Given new "GetSpecifiedDailyCustomReports" request And request contains "report_id" parameter from "REPLACE.ME" When the request is sent Then the response status is 404 Not Found - @replay-only @team:DataDog/revenue-query + @replay-only @team:DataDog/billing-hub Scenario: Get specified daily custom reports returns "OK" response Given new "GetSpecifiedDailyCustomReports" request And request contains "report_id" parameter with value "2022-03-20" When the request is sent Then the response status is 200 OK - @generated @skip @team:DataDog/revenue-query + @generated @skip @team:DataDog/billing-hub Scenario: Get specified monthly custom reports returns "Bad Request" response Given new "GetSpecifiedMonthlyCustomReports" request And request contains "report_id" parameter from "REPLACE.ME" When the request is sent Then the response status is 400 Bad Request - @generated @skip @team:DataDog/revenue-query + @generated @skip @team:DataDog/billing-hub Scenario: Get specified monthly custom reports returns "Not Found" response Given new "GetSpecifiedMonthlyCustomReports" request And request contains "report_id" parameter from "REPLACE.ME" When the request is sent Then the response status is 404 Not Found - @replay-only @team:DataDog/revenue-query + @replay-only @team:DataDog/billing-hub Scenario: Get specified monthly custom reports returns "OK" response Given new "GetSpecifiedMonthlyCustomReports" request And request contains "report_id" parameter with value "2021-05-01" When the request is sent Then the response status is 200 OK - @skip @team:DataDog/revenue-query + @skip @team:DataDog/billing-hub Scenario: Get the list of available daily custom reports returns "OK" response Given new "GetDailyCustomReports" request When the request is sent Then the response status is 200 OK - @skip @team:DataDog/revenue-query + @skip @team:DataDog/billing-hub Scenario: Get the list of available monthly custom reports returns "OK" response Given new "GetMonthlyCustomReports" request When the request is sent Then the response status is 200 OK - @generated @skip @team:DataDog/revenue-query + @generated @skip @team:DataDog/billing-hub Scenario: Get usage across your account returns "Bad Request" response Given new "GetUsageSummary" request And request contains "start_month" parameter from "REPLACE.ME" When the request is sent Then the response status is 400 Bad Request - @generated @skip @team:DataDog/revenue-query + @generated @skip @team:DataDog/billing-hub Scenario: Get usage across your account returns "OK" response Given new "GetUsageSummary" request And request contains "start_month" parameter from "REPLACE.ME" When the request is sent Then the response status is 200 OK - @skip @team:DataDog/revenue-query + @skip @team:DataDog/billing-hub Scenario: Paginate monthly usage attribution Given there is a valid "monthly_usage_attribution" response And new "GetMonthlyUsageAttribution" request @@ -709,14 +709,14 @@ Feature: Usage Metering When the request is sent Then the response status is 200 OK - @generated @skip @team:DataDog/revenue-query + @generated @skip @team:DataDog/billing-hub Scenario: get hourly usage for network flows returns "Bad Request" response Given new "GetUsageNetworkFlows" request And request contains "start_hr" parameter from "REPLACE.ME" When the request is sent Then the response status is 400 Bad Request - @generated @skip @team:DataDog/revenue-query + @generated @skip @team:DataDog/billing-hub Scenario: get hourly usage for network flows returns "OK" response Given new "GetUsageNetworkFlows" request And request contains "start_hr" parameter from "REPLACE.ME" diff --git a/features/v2/usage_metering.feature b/features/v2/usage_metering.feature index d953a11c0842..aedd42d8d527 100644 --- a/features/v2/usage_metering.feature +++ b/features/v2/usage_metering.feature @@ -14,7 +14,7 @@ Feature: Usage Metering And a valid "appKeyAuth" key in the system And an instance of "UsageMetering" API - @replay-only @team:DataDog/revenue-query + @replay-only @team:DataDog/billing-hub Scenario: Get Monthly Cost Attribution returns "Bad Request" response Given new "GetMonthlyCostAttribution" request And request contains "start_month" parameter with value "{{ timeISO('now - 5d') }}" @@ -23,7 +23,7 @@ Feature: Usage Metering When the request is sent Then the response status is 400 Bad Request - @replay-only @team:DataDog/revenue-query + @replay-only @team:DataDog/billing-hub Scenario: Get Monthly Cost Attribution returns "OK" response Given new "GetMonthlyCostAttribution" request And request contains "start_month" parameter with value "{{ timeISO('now - 5d') }}" @@ -32,64 +32,64 @@ Feature: Usage Metering When the request is sent Then the response status is 200 OK - @generated @skip @team:DataDog/revenue-query + @generated @skip @team:DataDog/billing-hub Scenario: Get active billing dimensions for cost attribution returns "Bad Request" response Given new "GetActiveBillingDimensions" request When the request is sent Then the response status is 400 Bad Request - @team:DataDog/revenue-query + @team:DataDog/billing-hub Scenario: Get active billing dimensions for cost attribution returns "OK" response Given new "GetActiveBillingDimensions" request When the request is sent Then the response status is 200 OK - @team:DataDog/revenue-query + @team:DataDog/billing-hub Scenario: Get billing dimension mapping for usage endpoints returns "Bad Request" response Given new "GetBillingDimensionMapping" request When the request is sent Then the response status is 400 Bad Request - @skip @team:DataDog/revenue-query + @skip @team:DataDog/billing-hub Scenario: Get billing dimension mapping for usage endpoints returns "OK" response Given new "GetBillingDimensionMapping" request When the request is sent Then the response status is 200 OK - @generated @skip @team:DataDog/revenue-query + @generated @skip @team:DataDog/billing-hub Scenario: Get cost across multi-org account returns "Bad Request" response Given new "GetCostByOrg" request And request contains "start_month" parameter from "REPLACE.ME" When the request is sent Then the response status is 400 Bad Request - @replay-only @team:DataDog/revenue-query + @replay-only @team:DataDog/billing-hub Scenario: Get cost across multi-org account returns "OK" response Given new "GetCostByOrg" request And request contains "start_month" parameter with value "{{ timeISO('now - 3d') }}" When the request is sent Then the response status is 200 OK - @generated @skip @team:DataDog/revenue-query + @generated @skip @team:DataDog/billing-hub Scenario: Get estimated cost across your account returns "Bad Request" response Given new "GetEstimatedCostByOrg" request When the request is sent Then the response status is 400 Bad Request - @generated @skip @team:DataDog/revenue-query + @generated @skip @team:DataDog/billing-hub Scenario: Get estimated cost across your account returns "OK" response Given new "GetEstimatedCostByOrg" request When the request is sent Then the response status is 200 OK - @generated @skip @team:DataDog/revenue-query + @generated @skip @team:DataDog/billing-hub Scenario: Get historical cost across your account returns "Bad Request" response Given new "GetHistoricalCostByOrg" request And request contains "start_month" parameter from "REPLACE.ME" When the request is sent Then the response status is 400 Bad Request - @replay-only @team:DataDog/revenue-query + @replay-only @team:DataDog/billing-hub Scenario: Get historical cost across your account returns "OK" response Given new "GetHistoricalCostByOrg" request And request contains "start_month" parameter with value "{{ timeISO('now - 2M') }}" @@ -97,7 +97,7 @@ Feature: Usage Metering When the request is sent Then the response status is 200 OK - @team:DataDog/revenue-query + @team:DataDog/billing-hub Scenario: Get hourly usage by product family returns "Bad Request" response Given new "GetHourlyUsage" request And request contains "filter[timestamp][start]" parameter with value "{{ timeISO('now - 3d') }}" @@ -106,7 +106,7 @@ Feature: Usage Metering When the request is sent Then the response status is 400 Bad Request - @team:DataDog/revenue-query + @team:DataDog/billing-hub Scenario: Get hourly usage by product family returns "OK" response Given new "GetHourlyUsage" request And request contains "filter[timestamp][start]" parameter with value "{{ timeISO('now - 3d') }}" @@ -116,7 +116,7 @@ Feature: Usage Metering And the response "data[0].type" is equal to "usage_timeseries" And the response "data[0].attributes.region" is equal to "us" - @team:DataDog/revenue-query + @team:DataDog/billing-hub Scenario: Get hourly usage for Application Security returns "Bad Request" response Given new "GetUsageApplicationSecurityMonitoring" request And request contains "start_hr" parameter with value "{{ timeISO('now - 3d') }}" @@ -124,7 +124,7 @@ Feature: Usage Metering When the request is sent Then the response status is 400 Bad Request - @team:DataDog/revenue-query + @team:DataDog/billing-hub Scenario: Get hourly usage for Lambda traced invocations returns "Bad Request" response Given new "GetUsageLambdaTracedInvocations" request And request contains "start_hr" parameter with value "{{ timeISO('now - 3d') }}" @@ -132,7 +132,7 @@ Feature: Usage Metering When the request is sent Then the response status is 400 Bad Request - @team:DataDog/revenue-query + @team:DataDog/billing-hub Scenario: Get hourly usage for Lambda traced invocations returns "OK" response Given new "GetUsageLambdaTracedInvocations" request And request contains "start_hr" parameter with value "{{ timeISO('now - 5d') }}" @@ -142,7 +142,7 @@ Feature: Usage Metering And the response "data[0].type" is equal to "usage_timeseries" And the response "data[0].attributes.product_family" is equal to "lambda-traced-invocations" - @team:DataDog/revenue-query + @team:DataDog/billing-hub Scenario: Get hourly usage for Observability Pipelines returns "Bad Request" response Given new "GetUsageObservabilityPipelines" request And request contains "start_hr" parameter with value "{{ timeISO('now - 3d') }}" @@ -150,14 +150,14 @@ Feature: Usage Metering When the request is sent Then the response status is 400 Bad Request - @generated @skip @team:DataDog/revenue-query + @generated @skip @team:DataDog/billing-hub Scenario: Get hourly usage for application security returns "Bad Request" response Given new "GetUsageApplicationSecurityMonitoring" request And request contains "start_hr" parameter from "REPLACE.ME" When the request is sent Then the response status is 400 Bad Request - @team:DataDog/revenue-query + @team:DataDog/billing-hub Scenario: Get hourly usage for application security returns "OK" response Given new "GetUsageApplicationSecurityMonitoring" request And request contains "start_hr" parameter with value "{{ timeISO('now - 5d') }}" @@ -167,14 +167,14 @@ Feature: Usage Metering And the response "data[0].type" is equal to "usage_timeseries" And the response "data[0].attributes.product_family" is equal to "app-sec" - @generated @skip @team:DataDog/revenue-query + @generated @skip @team:DataDog/billing-hub Scenario: Get hourly usage for observability pipelines returns "Bad Request" response Given new "GetUsageObservabilityPipelines" request And request contains "start_hr" parameter from "REPLACE.ME" When the request is sent Then the response status is 400 Bad Request - @team:DataDog/revenue-query + @team:DataDog/billing-hub Scenario: Get hourly usage for observability pipelines returns "OK" response Given new "GetUsageObservabilityPipelines" request And request contains "start_hr" parameter with value "{{ timeISO('now - 5d') }}" @@ -184,26 +184,26 @@ Feature: Usage Metering And the response "data[0].type" is equal to "usage_timeseries" And the response "data[0].attributes.product_family" is equal to "observability-pipelines" - @generated @skip @team:DataDog/revenue-query + @generated @skip @team:DataDog/billing-hub Scenario: Get projected cost across your account returns "Bad Request" response Given new "GetProjectedCost" request When the request is sent Then the response status is 400 Bad Request - @replay-only @team:DataDog/revenue-query + @replay-only @team:DataDog/billing-hub Scenario: Get projected cost across your account returns "OK" response Given new "GetProjectedCost" request And request contains "view" parameter with value "sub-org" When the request is sent Then the response status is 200 OK - @generated @skip @team:DataDog/revenue-query + @generated @skip @team:DataDog/billing-hub Scenario: Get usage attribution types returns "OK" response Given new "GetUsageAttributionTypes" request When the request is sent Then the response status is 200 OK - @team:DataDog/revenue-query + @team:DataDog/billing-hub Scenario: GetEstimatedCostByOrg with both start_month and start_date returns "Bad Request" response Given new "GetEstimatedCostByOrg" request And request contains "view" parameter with value "sub-org" @@ -212,7 +212,7 @@ Feature: Usage Metering When the request is sent Then the response status is 400 Bad Request - @replay-only @team:DataDog/revenue-query + @replay-only @team:DataDog/billing-hub Scenario: GetEstimatedCostByOrg with start_month returns "OK" response Given new "GetEstimatedCostByOrg" request And request contains "view" parameter with value "sub-org" From bd0b31116321b8fc30ab29a2b41ad4b45339fd41 Mon Sep 17 00:00:00 2001 From: "api-clients-generation-pipeline[bot]" <54105614+api-clients-generation-pipeline[bot]@users.noreply.github.com> Date: Wed, 3 Jun 2026 08:23:01 +0000 Subject: [PATCH 5/6] Regenerate client from commit 3d37e10 of spec repo (#3434) Co-authored-by: ci.datadog-api-spec --- .generator/schemas/v2/openapi.yaml | 98 +++++++++---------- ...h-sankey-widget-and-RUM-data-source.frozen | 1 + ...with-sankey-widget-and-RUM-data-source.yml | 43 ++++++++ ...h-sankey-widget-and-rum-data-source.frozen | 1 - ...with-sankey-widget-and-rum-data-source.yml | 43 -------- ...RUM-data-source-returns-OK-response.frozen | 1 + ...h-RUM-data-source-returns-OK-response.yml} | 6 +- ...rum-data-source-returns-OK-response.frozen | 1 - ...RUM-data-source-returns-OK-response.frozen | 1 + ...h-RUM-data-source-returns-OK-response.yml} | 6 +- ...rum-data-source-returns-OK-response.frozen | 1 - ...metric-returns-Bad-Request-response.frozen | 1 + ...d-metric-returns-Bad-Request-response.yml} | 2 +- ...ed-metric-returns-Conflict-response.frozen | 1 + ...ased-metric-returns-Conflict-response.yml} | 16 +-- ...sed-metric-returns-Created-response.frozen | 1 + ...based-metric-returns-Created-response.yml} | 10 +- ...metric-returns-Bad-Request-response.frozen | 1 - ...ed-metric-returns-Conflict-response.frozen | 1 - ...sed-metric-returns-Created-response.frozen | 1 - ...-metric-returns-No-Content-response.frozen | 1 + ...ed-metric-returns-No-Content-response.yml} | 16 +-- ...d-metric-returns-Not-Found-response.frozen | 1 + ...sed-metric-returns-Not-Found-response.yml} | 6 +- ...-metric-returns-No-Content-response.frozen | 1 - ...d-metric-returns-Not-Found-response.frozen | 1 - ...d-metric-returns-Not-Found-response.frozen | 1 + ...sed-metric-returns-Not-Found-response.yml} | 6 +- ...UM-based-metric-returns-OK-response.frozen | 1 + ...-RUM-based-metric-returns-OK-response.yml} | 16 +-- ...d-metric-returns-Not-Found-response.frozen | 1 - ...um-based-metric-returns-OK-response.frozen | 1 - ...M-based-metrics-returns-OK-response.frozen | 1 + ...-RUM-based-metrics-returns-OK-response.yml | 20 ++++ ...m-based-metrics-returns-OK-response.frozen | 1 - ...-rum-based-metrics-returns-OK-response.yml | 20 ---- ...metric-returns-Bad-Request-response.frozen | 1 + ...d-metric-returns-Bad-Request-response.yml} | 14 +-- ...ed-metric-returns-Conflict-response.frozen | 1 + ...ased-metric-returns-Conflict-response.yml} | 14 +-- ...d-metric-returns-Not-Found-response.frozen | 1 + ...sed-metric-returns-Not-Found-response.yml} | 12 +-- ...UM-based-metric-returns-OK-response.frozen | 1 + ...-RUM-based-metric-returns-OK-response.yml} | 18 ++-- ...metric-returns-Bad-Request-response.frozen | 1 - ...ed-metric-returns-Conflict-response.frozen | 1 - ...d-metric-returns-Not-Found-response.frozen | 1 - ...um-based-metric-returns-OK-response.frozen | 1 - ...51909.rb => CreateDashboard_2844071429.rb} | 2 +- ...09843.rb => QueryScalarData_2086017331.rb} | 2 +- ...3.rb => QueryTimeseriesData_4190640887.rb} | 2 +- examples/v2/rum-metrics/CreateRumMetric.rb | 2 +- examples/v2/rum-metrics/DeleteRumMetric.rb | 2 +- examples/v2/rum-metrics/GetRumMetric.rb | 2 +- examples/v2/rum-metrics/ListRumMetrics.rb | 2 +- examples/v2/rum-metrics/UpdateRumMetric.rb | 2 +- .../AddRumReplaySessionToPlaylist.rb | 2 +- .../BulkRemoveRumReplayPlaylistSessions.rb | 2 +- .../CreateRumReplayPlaylist.rb | 2 +- .../DeleteRumReplayPlaylist.rb | 2 +- .../GetRumReplayPlaylist.rb | 2 +- .../ListRumReplayPlaylistSessions.rb | 2 +- .../ListRumReplayPlaylists.rb | 2 +- .../RemoveRumReplaySessionFromPlaylist.rb | 2 +- .../UpdateRumReplayPlaylist.rb | 2 +- .../CreateRumReplaySessionWatch.rb | 2 +- .../DeleteRumReplaySessionWatch.rb | 2 +- .../ListRumReplaySessionWatchers.rb | 2 +- .../ListRumReplayViewershipHistorySessions.rb | 2 +- features/v1/dashboards.feature | 24 ++--- features/v2/metrics.feature | 36 +++---- features/v2/rum_metrics.feature | 26 ++--- features/v2/rum_replay_playlists.feature | 20 ++-- features/v2/rum_replay_viewership.feature | 8 +- .../v2/api/rum_metrics_api.rb | 42 ++++---- .../v2/api/rum_replay_playlists_api.rb | 36 +++---- .../v2/api/rum_replay_viewership_api.rb | 16 +-- .../v2/models/rum_metric_compute.rb | 4 +- .../v2/models/rum_metric_create_attributes.rb | 6 +- .../v2/models/rum_metric_create_data.rb | 6 +- .../v2/models/rum_metric_create_request.rb | 4 +- .../v2/models/rum_metric_filter.rb | 2 +- .../v2/models/rum_metric_group_by.rb | 2 +- .../v2/models/rum_metric_response.rb | 4 +- .../models/rum_metric_response_attributes.rb | 6 +- .../v2/models/rum_metric_response_compute.rb | 4 +- .../v2/models/rum_metric_response_data.rb | 6 +- .../v2/models/rum_metric_response_filter.rb | 2 +- .../v2/models/rum_metric_response_group_by.rb | 2 +- .../v2/models/rum_metric_update_attributes.rb | 6 +- .../v2/models/rum_metric_update_compute.rb | 2 +- .../v2/models/rum_metric_update_data.rb | 6 +- .../v2/models/rum_metric_update_request.rb | 4 +- .../v2/models/rum_metrics_response.rb | 4 +- 94 files changed, 358 insertions(+), 358 deletions(-) create mode 100644 cassettes/features/v1/dashboards/Create-a-new-dashboard-with-sankey-widget-and-RUM-data-source.frozen create mode 100644 cassettes/features/v1/dashboards/Create-a-new-dashboard-with-sankey-widget-and-RUM-data-source.yml delete mode 100644 cassettes/features/v1/dashboards/Create-a-new-dashboard-with-sankey-widget-and-rum-data-source.frozen delete mode 100644 cassettes/features/v1/dashboards/Create-a-new-dashboard-with-sankey-widget-and-rum-data-source.yml create mode 100644 cassettes/features/v2/metrics/Scalar-cross-product-query-with-RUM-data-source-returns-OK-response.frozen rename cassettes/features/v2/metrics/{Scalar-cross-product-query-with-rum-data-source-returns-OK-response.yml => Scalar-cross-product-query-with-RUM-data-source-returns-OK-response.yml} (70%) delete mode 100644 cassettes/features/v2/metrics/Scalar-cross-product-query-with-rum-data-source-returns-OK-response.frozen create mode 100644 cassettes/features/v2/metrics/Timeseries-cross-product-query-with-RUM-data-source-returns-OK-response.frozen rename cassettes/features/v2/metrics/{Timeseries-cross-product-query-with-rum-data-source-returns-OK-response.yml => Timeseries-cross-product-query-with-RUM-data-source-returns-OK-response.yml} (63%) delete mode 100644 cassettes/features/v2/metrics/Timeseries-cross-product-query-with-rum-data-source-returns-OK-response.frozen create mode 100644 cassettes/features/v2/rum_metrics/Create-a-RUM-based-metric-returns-Bad-Request-response.frozen rename cassettes/features/v2/rum_metrics/{Create-a-rum-based-metric-returns-Bad-Request-response.yml => Create-a-RUM-based-metric-returns-Bad-Request-response.yml} (94%) create mode 100644 cassettes/features/v2/rum_metrics/Create-a-RUM-based-metric-returns-Conflict-response.frozen rename cassettes/features/v2/rum_metrics/{Create-a-rum-based-metric-returns-Conflict-response.yml => Create-a-RUM-based-metric-returns-Conflict-response.yml} (77%) create mode 100644 cassettes/features/v2/rum_metrics/Create-a-RUM-based-metric-returns-Created-response.frozen rename cassettes/features/v2/rum_metrics/{Create-a-rum-based-metric-returns-Created-response.yml => Create-a-RUM-based-metric-returns-Created-response.yml} (83%) delete mode 100644 cassettes/features/v2/rum_metrics/Create-a-rum-based-metric-returns-Bad-Request-response.frozen delete mode 100644 cassettes/features/v2/rum_metrics/Create-a-rum-based-metric-returns-Conflict-response.frozen delete mode 100644 cassettes/features/v2/rum_metrics/Create-a-rum-based-metric-returns-Created-response.frozen create mode 100644 cassettes/features/v2/rum_metrics/Delete-a-RUM-based-metric-returns-No-Content-response.frozen rename cassettes/features/v2/rum_metrics/{Delete-a-rum-based-metric-returns-No-Content-response.yml => Delete-a-RUM-based-metric-returns-No-Content-response.yml} (75%) create mode 100644 cassettes/features/v2/rum_metrics/Delete-a-RUM-based-metric-returns-Not-Found-response.frozen rename cassettes/features/v2/rum_metrics/{Delete-a-rum-based-metric-returns-Not-Found-response.yml => Delete-a-RUM-based-metric-returns-Not-Found-response.yml} (69%) delete mode 100644 cassettes/features/v2/rum_metrics/Delete-a-rum-based-metric-returns-No-Content-response.frozen delete mode 100644 cassettes/features/v2/rum_metrics/Delete-a-rum-based-metric-returns-Not-Found-response.frozen create mode 100644 cassettes/features/v2/rum_metrics/Get-a-RUM-based-metric-returns-Not-Found-response.frozen rename cassettes/features/v2/rum_metrics/{Get-a-rum-based-metric-returns-Not-Found-response.yml => Get-a-RUM-based-metric-returns-Not-Found-response.yml} (70%) create mode 100644 cassettes/features/v2/rum_metrics/Get-a-RUM-based-metric-returns-OK-response.frozen rename cassettes/features/v2/rum_metrics/{Get-a-rum-based-metric-returns-OK-response.yml => Get-a-RUM-based-metric-returns-OK-response.yml} (71%) delete mode 100644 cassettes/features/v2/rum_metrics/Get-a-rum-based-metric-returns-Not-Found-response.frozen delete mode 100644 cassettes/features/v2/rum_metrics/Get-a-rum-based-metric-returns-OK-response.frozen create mode 100644 cassettes/features/v2/rum_metrics/Get-all-RUM-based-metrics-returns-OK-response.frozen create mode 100644 cassettes/features/v2/rum_metrics/Get-all-RUM-based-metrics-returns-OK-response.yml delete mode 100644 cassettes/features/v2/rum_metrics/Get-all-rum-based-metrics-returns-OK-response.frozen delete mode 100644 cassettes/features/v2/rum_metrics/Get-all-rum-based-metrics-returns-OK-response.yml create mode 100644 cassettes/features/v2/rum_metrics/Update-a-RUM-based-metric-returns-Bad-Request-response.frozen rename cassettes/features/v2/rum_metrics/{Update-a-rum-based-metric-returns-Bad-Request-response.yml => Update-a-RUM-based-metric-returns-Bad-Request-response.yml} (77%) create mode 100644 cassettes/features/v2/rum_metrics/Update-a-RUM-based-metric-returns-Conflict-response.frozen rename cassettes/features/v2/rum_metrics/{Update-a-rum-based-metric-returns-Conflict-response.yml => Update-a-RUM-based-metric-returns-Conflict-response.yml} (77%) create mode 100644 cassettes/features/v2/rum_metrics/Update-a-RUM-based-metric-returns-Not-Found-response.frozen rename cassettes/features/v2/rum_metrics/{Update-a-rum-based-metric-returns-Not-Found-response.yml => Update-a-RUM-based-metric-returns-Not-Found-response.yml} (80%) create mode 100644 cassettes/features/v2/rum_metrics/Update-a-RUM-based-metric-returns-OK-response.frozen rename cassettes/features/v2/rum_metrics/{Update-a-rum-based-metric-returns-OK-response.yml => Update-a-RUM-based-metric-returns-OK-response.yml} (76%) delete mode 100644 cassettes/features/v2/rum_metrics/Update-a-rum-based-metric-returns-Bad-Request-response.frozen delete mode 100644 cassettes/features/v2/rum_metrics/Update-a-rum-based-metric-returns-Conflict-response.frozen delete mode 100644 cassettes/features/v2/rum_metrics/Update-a-rum-based-metric-returns-Not-Found-response.frozen delete mode 100644 cassettes/features/v2/rum_metrics/Update-a-rum-based-metric-returns-OK-response.frozen rename examples/v1/dashboards/{CreateDashboard_2932151909.rb => CreateDashboard_2844071429.rb} (95%) rename examples/v2/metrics/{QueryScalarData_2312509843.rb => QueryScalarData_2086017331.rb} (94%) rename examples/v2/metrics/{QueryTimeseriesData_123149143.rb => QueryTimeseriesData_4190640887.rb} (95%) diff --git a/.generator/schemas/v2/openapi.yaml b/.generator/schemas/v2/openapi.yaml index 5b666039abca..7b44538aeb1c 100644 --- a/.generator/schemas/v2/openapi.yaml +++ b/.generator/schemas/v2/openapi.yaml @@ -1559,7 +1559,7 @@ components: schema: type: string RumMetricIDParameter: - description: The name of the rum-based metric. + description: The name of the RUM-based metric. in: path name: metric_id required: true @@ -72866,7 +72866,7 @@ components: type: number type: object RumMetricCompute: - description: The compute rule to compute the rum-based metric. + description: The compute rule to compute the RUM-based metric. properties: aggregation_type: $ref: "#/components/schemas/RumMetricComputeAggregationType" @@ -72874,7 +72874,7 @@ components: $ref: "#/components/schemas/RumMetricComputeIncludePercentiles" path: description: |- - The path to the value the rum-based metric will aggregate on. + The path to the value the RUM-based metric will aggregate on. Only present when `aggregation_type` is `distribution`. example: "@duration" type: string @@ -72894,7 +72894,7 @@ components: example: true type: boolean RumMetricCreateAttributes: - description: The object describing the Datadog rum-based metric to create. + description: The object describing the Datadog RUM-based metric to create. properties: compute: $ref: "#/components/schemas/RumMetricCompute" @@ -72914,7 +72914,7 @@ components: - compute type: object RumMetricCreateData: - description: The new rum-based metric properties. + description: The new RUM-based metric properties. properties: attributes: $ref: "#/components/schemas/RumMetricCreateAttributes" @@ -72928,7 +72928,7 @@ components: - attributes type: object RumMetricCreateRequest: - description: The new rum-based metric body. + description: The new RUM-based metric body. properties: data: $ref: "#/components/schemas/RumMetricCreateData" @@ -72942,7 +72942,7 @@ components: type: string x-enum-varnames: ["SESSION", "VIEW", "ACTION", "ERROR", "RESOURCE", "LONG_TASK", "VITAL"] RumMetricFilter: - description: The rum-based metric filter. Events matching this filter will be aggregated in this metric. + description: The RUM-based metric filter. Events matching this filter will be aggregated in this metric. properties: query: default: "*" @@ -72956,7 +72956,7 @@ components: description: A group by rule. properties: path: - description: The path to the value the rum-based metric will be aggregated over. + description: The path to the value the RUM-based metric will be aggregated over. example: "@browser.name" type: string tag_name: @@ -72967,17 +72967,17 @@ components: - path type: object RumMetricID: - description: The name of the rum-based metric. + description: The name of the RUM-based metric. example: "rum.sessions.webui.count" type: string RumMetricResponse: - description: The rum-based metric object. + description: The RUM-based metric object. properties: data: $ref: "#/components/schemas/RumMetricResponseData" type: object RumMetricResponseAttributes: - description: The object describing a Datadog rum-based metric. + description: The object describing a Datadog RUM-based metric. properties: compute: $ref: "#/components/schemas/RumMetricResponseCompute" @@ -72994,7 +72994,7 @@ components: $ref: "#/components/schemas/RumMetricResponseUniqueness" type: object RumMetricResponseCompute: - description: The compute rule to compute the rum-based metric. + description: The compute rule to compute the RUM-based metric. properties: aggregation_type: $ref: "#/components/schemas/RumMetricComputeAggregationType" @@ -73002,13 +73002,13 @@ components: $ref: "#/components/schemas/RumMetricComputeIncludePercentiles" path: description: |- - The path to the value the rum-based metric will aggregate on. + The path to the value the RUM-based metric will aggregate on. Only present when `aggregation_type` is `distribution`. example: "@duration" type: string type: object RumMetricResponseData: - description: The rum-based metric properties. + description: The RUM-based metric properties. properties: attributes: $ref: "#/components/schemas/RumMetricResponseAttributes" @@ -73018,7 +73018,7 @@ components: $ref: "#/components/schemas/RumMetricType" type: object RumMetricResponseFilter: - description: The rum-based metric filter. RUM events matching this filter will be aggregated in this metric. + description: The RUM-based metric filter. RUM events matching this filter will be aggregated in this metric. properties: query: description: The search query - following the RUM search syntax. @@ -73029,7 +73029,7 @@ components: description: A group by rule. properties: path: - description: The path to the value the rum-based metric will be aggregated over. + description: The path to the value the RUM-based metric will be aggregated over. example: "@http.status_code" type: string tag_name: @@ -73066,7 +73066,7 @@ components: type: string x-enum-varnames: ["WHEN_MATCH", "WHEN_END"] RumMetricUpdateAttributes: - description: The rum-based metric properties that will be updated. + description: The RUM-based metric properties that will be updated. properties: compute: $ref: "#/components/schemas/RumMetricUpdateCompute" @@ -73079,13 +73079,13 @@ components: type: array type: object RumMetricUpdateCompute: - description: The compute rule to compute the rum-based metric. + description: The compute rule to compute the RUM-based metric. properties: include_percentiles: $ref: "#/components/schemas/RumMetricComputeIncludePercentiles" type: object RumMetricUpdateData: - description: The new rum-based metric properties. + description: The new RUM-based metric properties. properties: attributes: $ref: "#/components/schemas/RumMetricUpdateAttributes" @@ -73098,7 +73098,7 @@ components: - attributes type: object RumMetricUpdateRequest: - description: The new rum-based metric body. + description: The new RUM-based metric body. properties: data: $ref: "#/components/schemas/RumMetricUpdateData" @@ -73106,10 +73106,10 @@ components: - data type: object RumMetricsResponse: - description: All the available rum-based metric objects. + description: All the available RUM-based metric objects. properties: data: - description: A list of rum-based metric objects. + description: A list of RUM-based metric objects. items: $ref: "#/components/schemas/RumMetricResponseData" type: array @@ -150822,7 +150822,7 @@ paths: - rum_apps_write /api/v2/rum/config/metrics: get: - description: Get the list of configured rum-based metrics with their definitions. + description: Get the list of configured RUM-based metrics with their definitions. operationId: ListRumMetrics responses: "200": @@ -150854,13 +150854,13 @@ paths: $ref: "#/components/responses/NotAuthorizedResponse" "429": $ref: "#/components/responses/TooManyRequestsResponse" - summary: Get all rum-based metrics + summary: Get all RUM-based metrics tags: - Rum Metrics post: description: |- Create a metric based on your organization's RUM data. - Returns the rum-based metric object from the request body when the request is successful. + Returns the RUM-based metric object from the request body when the request is successful. operationId: CreateRumMetric requestBody: content: @@ -150886,7 +150886,7 @@ paths: type: rum_metrics schema: $ref: "#/components/schemas/RumMetricCreateRequest" - description: The definition of the new rum-based metric. + description: The definition of the new RUM-based metric. required: true responses: "201": @@ -150922,13 +150922,13 @@ paths: $ref: "#/components/responses/ConflictResponse" "429": $ref: "#/components/responses/TooManyRequestsResponse" - summary: Create a rum-based metric + summary: Create a RUM-based metric tags: - Rum Metrics x-codegen-request-body-name: body /api/v2/rum/config/metrics/{metric_id}: delete: - description: Delete a specific rum-based metric from your organization. + description: Delete a specific RUM-based metric from your organization. operationId: DeleteRumMetric parameters: - $ref: "#/components/parameters/RumMetricIDParameter" @@ -150941,11 +150941,11 @@ paths: $ref: "#/components/responses/NotFoundResponse" "429": $ref: "#/components/responses/TooManyRequestsResponse" - summary: Delete a rum-based metric + summary: Delete a RUM-based metric tags: - Rum Metrics get: - description: Get a specific rum-based metric from your organization. + description: Get a specific RUM-based metric from your organization. operationId: GetRumMetric parameters: - $ref: "#/components/parameters/RumMetricIDParameter" @@ -150981,13 +150981,13 @@ paths: $ref: "#/components/responses/NotFoundResponse" "429": $ref: "#/components/responses/TooManyRequestsResponse" - summary: Get a rum-based metric + summary: Get a RUM-based metric tags: - Rum Metrics patch: description: |- - Update a specific rum-based metric from your organization. - Returns the rum-based metric object from the request body when the request is successful. + Update a specific RUM-based metric from your organization. + Returns the RUM-based metric object from the request body when the request is successful. operationId: UpdateRumMetric parameters: - $ref: "#/components/parameters/RumMetricIDParameter" @@ -151010,7 +151010,7 @@ paths: type: rum_metrics schema: $ref: "#/components/schemas/RumMetricUpdateRequest" - description: New definition of the rum-based metric. + description: New definition of the RUM-based metric. required: true responses: "200": @@ -151048,7 +151048,7 @@ paths: $ref: "#/components/responses/ConflictResponse" "429": $ref: "#/components/responses/TooManyRequestsResponse" - summary: Update a rum-based metric + summary: Update a RUM-based metric tags: - Rum Metrics x-codegen-request-body-name: body @@ -151528,7 +151528,7 @@ paths: - apiKeyAuth: [] appKeyAuth: [] - AuthZ: [] - summary: List rum replay playlists + summary: List RUM replay playlists tags: - Rum Replay Playlists post: @@ -151572,7 +151572,7 @@ paths: - apiKeyAuth: [] appKeyAuth: [] - AuthZ: [] - summary: Create rum replay playlist + summary: Create RUM replay playlist tags: - Rum Replay Playlists /api/v2/rum/replay/playlists/{playlist_id}: @@ -151596,7 +151596,7 @@ paths: - apiKeyAuth: [] appKeyAuth: [] - AuthZ: [] - summary: Delete rum replay playlist + summary: Delete RUM replay playlist tags: - Rum Replay Playlists get: @@ -151631,7 +151631,7 @@ paths: - apiKeyAuth: [] appKeyAuth: [] - AuthZ: [] - summary: Get rum replay playlist + summary: Get RUM replay playlist tags: - Rum Replay Playlists put: @@ -151683,7 +151683,7 @@ paths: - apiKeyAuth: [] appKeyAuth: [] - AuthZ: [] - summary: Update rum replay playlist + summary: Update RUM replay playlist tags: - Rum Replay Playlists /api/v2/rum/replay/playlists/{playlist_id}/sessions: @@ -151719,7 +151719,7 @@ paths: - apiKeyAuth: [] appKeyAuth: [] - AuthZ: [] - summary: Bulk remove rum replay playlist sessions + summary: Bulk remove RUM replay playlist sessions tags: - Rum Replay Playlists get: @@ -151766,7 +151766,7 @@ paths: - apiKeyAuth: [] appKeyAuth: [] - AuthZ: [] - summary: List rum replay playlist sessions + summary: List RUM replay playlist sessions tags: - Rum Replay Playlists /api/v2/rum/replay/playlists/{playlist_id}/sessions/{session_id}: @@ -151797,7 +151797,7 @@ paths: - apiKeyAuth: [] appKeyAuth: [] - AuthZ: [] - summary: Remove rum replay session from playlist + summary: Remove RUM replay session from playlist tags: - Rum Replay Playlists put: @@ -151867,7 +151867,7 @@ paths: - apiKeyAuth: [] appKeyAuth: [] - AuthZ: [] - summary: Add rum replay session to playlist + summary: Add RUM replay session to playlist tags: - Rum Replay Playlists /api/v2/rum/replay/sessions/{session_id}/views/{view_id}/segments: @@ -151973,7 +151973,7 @@ paths: - apiKeyAuth: [] appKeyAuth: [] - AuthZ: [] - summary: List rum replay session watchers + summary: List RUM replay session watchers tags: - Rum Replay Viewership /api/v2/rum/replay/sessions/{session_id}/watches: @@ -151997,7 +151997,7 @@ paths: - apiKeyAuth: [] appKeyAuth: [] - AuthZ: [] - summary: Delete rum replay session watch + summary: Delete RUM replay session watch tags: - Rum Replay Viewership post: @@ -152049,7 +152049,7 @@ paths: - apiKeyAuth: [] appKeyAuth: [] - AuthZ: [] - summary: Create rum replay session watch + summary: Create RUM replay session watch tags: - Rum Replay Viewership /api/v2/rum/replay/viewership-history/sessions: @@ -152122,7 +152122,7 @@ paths: - apiKeyAuth: [] appKeyAuth: [] - AuthZ: [] - summary: List rum replay viewership history sessions + summary: List RUM replay viewership history sessions tags: - Rum Replay Viewership /api/v2/saml_configurations/idp_metadata: @@ -175754,7 +175754,7 @@ tags: - description: Auto-generated tag Rum Audience Management name: Rum Audience Management - description: |- - Manage configuration of [rum-based metrics](https://app.datadoghq.com/rum/generate-metrics) for your organization. + Manage configuration of [RUM-based metrics](https://app.datadoghq.com/rum/generate-metrics) for your organization. externalDocs: description: Find out more at url: https://docs.datadoghq.com/real_user_monitoring/platform/generate_metrics/ diff --git a/cassettes/features/v1/dashboards/Create-a-new-dashboard-with-sankey-widget-and-RUM-data-source.frozen b/cassettes/features/v1/dashboards/Create-a-new-dashboard-with-sankey-widget-and-RUM-data-source.frozen new file mode 100644 index 000000000000..bee81a6b80cd --- /dev/null +++ b/cassettes/features/v1/dashboards/Create-a-new-dashboard-with-sankey-widget-and-RUM-data-source.frozen @@ -0,0 +1 @@ +2026-06-02T12:32:21.161Z \ No newline at end of file diff --git a/cassettes/features/v1/dashboards/Create-a-new-dashboard-with-sankey-widget-and-RUM-data-source.yml b/cassettes/features/v1/dashboards/Create-a-new-dashboard-with-sankey-widget-and-RUM-data-source.yml new file mode 100644 index 000000000000..bcb09e0004f4 --- /dev/null +++ b/cassettes/features/v1/dashboards/Create-a-new-dashboard-with-sankey-widget-and-RUM-data-source.yml @@ -0,0 +1,43 @@ +http_interactions: +- recorded_at: Tue, 02 Jun 2026 12:32:21 GMT + request: + body: + encoding: UTF-8 + string: '{"description":"","layout_type":"free","notify_list":[],"template_variables":[],"title":"Test-Create_a_new_dashboard_with_sankey_widget_and_RUM_data_source-1780403541","widgets":[{"definition":{"requests":[{"query":{"data_source":"rum","mode":"source","query_string":"@type:view"},"request_type":"sankey"}],"title":"","title_align":"left","title_size":"16","type":"sankey"},"layout":{"height":15,"width":47,"x":0,"y":0}}]}' + headers: + Accept: + - application/json + Content-Type: + - application/json + method: POST + uri: https://api.datadoghq.com/api/v1/dashboard + response: + body: + encoding: UTF-8 + string: '{"id":"js9-hx8-hsy","title":"Test-Create_a_new_dashboard_with_sankey_widget_and_RUM_data_source-1780403541","description":"","author_handle":"9919ec9b-ebc7-49ee-8dc8-03626e717cca","author_name":"CI + Account","layout_type":"free","url":"/dashboard/js9-hx8-hsy/test-createanewdashboardwithsankeywidgetandrumdatasource-1780403541","template_variables":[],"widgets":[{"definition":{"requests":[{"query":{"data_source":"rum","mode":"source","query_string":"@type:view"},"request_type":"sankey"}],"title":"","title_align":"left","title_size":"16","type":"sankey"},"layout":{"height":15,"width":47,"x":0,"y":0},"id":8566545221037666}],"notify_list":[],"created_at":"2026-06-02T12:32:21.497655+00:00","modified_at":"2026-06-02T12:32:21.497655+00:00","restricted_roles":[]}' + headers: + Content-Type: + - application/json + status: + code: 200 + message: OK +- recorded_at: Tue, 02 Jun 2026 12:32:21 GMT + request: + body: null + headers: + Accept: + - application/json + method: DELETE + uri: https://api.datadoghq.com/api/v1/dashboard/js9-hx8-hsy + response: + body: + encoding: UTF-8 + string: '{"deleted_dashboard_id":"js9-hx8-hsy"}' + headers: + Content-Type: + - application/json + status: + code: 200 + message: OK +recorded_with: VCR 6.0.0 diff --git a/cassettes/features/v1/dashboards/Create-a-new-dashboard-with-sankey-widget-and-rum-data-source.frozen b/cassettes/features/v1/dashboards/Create-a-new-dashboard-with-sankey-widget-and-rum-data-source.frozen deleted file mode 100644 index 6f1ee04a8ff4..000000000000 --- a/cassettes/features/v1/dashboards/Create-a-new-dashboard-with-sankey-widget-and-rum-data-source.frozen +++ /dev/null @@ -1 +0,0 @@ -2026-01-02T15:26:19.626Z \ No newline at end of file diff --git a/cassettes/features/v1/dashboards/Create-a-new-dashboard-with-sankey-widget-and-rum-data-source.yml b/cassettes/features/v1/dashboards/Create-a-new-dashboard-with-sankey-widget-and-rum-data-source.yml deleted file mode 100644 index e4a24d1c69f6..000000000000 --- a/cassettes/features/v1/dashboards/Create-a-new-dashboard-with-sankey-widget-and-rum-data-source.yml +++ /dev/null @@ -1,43 +0,0 @@ -http_interactions: -- recorded_at: Fri, 02 Jan 2026 15:26:19 GMT - request: - body: - encoding: UTF-8 - string: '{"description":"","layout_type":"free","notify_list":[],"template_variables":[],"title":"Test-Create_a_new_dashboard_with_sankey_widget_and_rum_data_source-1767367579","widgets":[{"definition":{"requests":[{"query":{"data_source":"rum","mode":"source","query_string":"@type:view"},"request_type":"sankey"}],"title":"","title_align":"left","title_size":"16","type":"sankey"},"layout":{"height":15,"width":47,"x":0,"y":0}}]}' - headers: - Accept: - - application/json - Content-Type: - - application/json - method: POST - uri: https://api.datadoghq.com/api/v1/dashboard - response: - body: - encoding: UTF-8 - string: '{"id":"pgj-vt6-zeg","title":"Test-Create_a_new_dashboard_with_sankey_widget_and_rum_data_source-1767367579","description":"","author_handle":"sophie.cao@datadoghq.com","author_name":"Sophie - Cao","layout_type":"free","url":"/dashboard/pgj-vt6-zeg/test-createanewdashboardwithsankeywidgetandrumdatasource-1767367579","template_variables":[],"widgets":[{"definition":{"requests":[{"query":{"data_source":"rum","mode":"source","query_string":"@type:view"},"request_type":"sankey"}],"title":"","title_align":"left","title_size":"16","type":"sankey"},"layout":{"height":15,"width":47,"x":0,"y":0},"id":1607494419972582}],"notify_list":[],"created_at":"2026-01-02T15:26:19.817734+00:00","modified_at":"2026-01-02T15:26:19.817734+00:00","restricted_roles":[]}' - headers: - Content-Type: - - application/json - status: - code: 200 - message: OK -- recorded_at: Fri, 02 Jan 2026 15:26:19 GMT - request: - body: null - headers: - Accept: - - application/json - method: DELETE - uri: https://api.datadoghq.com/api/v1/dashboard/pgj-vt6-zeg - response: - body: - encoding: UTF-8 - string: '{"deleted_dashboard_id":"pgj-vt6-zeg"}' - headers: - Content-Type: - - application/json - status: - code: 200 - message: OK -recorded_with: VCR 6.0.0 diff --git a/cassettes/features/v2/metrics/Scalar-cross-product-query-with-RUM-data-source-returns-OK-response.frozen b/cassettes/features/v2/metrics/Scalar-cross-product-query-with-RUM-data-source-returns-OK-response.frozen new file mode 100644 index 000000000000..df0f34970c16 --- /dev/null +++ b/cassettes/features/v2/metrics/Scalar-cross-product-query-with-RUM-data-source-returns-OK-response.frozen @@ -0,0 +1 @@ +2026-06-02T12:32:24.522Z \ No newline at end of file diff --git a/cassettes/features/v2/metrics/Scalar-cross-product-query-with-rum-data-source-returns-OK-response.yml b/cassettes/features/v2/metrics/Scalar-cross-product-query-with-RUM-data-source-returns-OK-response.yml similarity index 70% rename from cassettes/features/v2/metrics/Scalar-cross-product-query-with-rum-data-source-returns-OK-response.yml rename to cassettes/features/v2/metrics/Scalar-cross-product-query-with-RUM-data-source-returns-OK-response.yml index 67c662766c18..aaf582401a04 100644 --- a/cassettes/features/v2/metrics/Scalar-cross-product-query-with-rum-data-source-returns-OK-response.yml +++ b/cassettes/features/v2/metrics/Scalar-cross-product-query-with-RUM-data-source-returns-OK-response.yml @@ -1,9 +1,9 @@ http_interactions: -- recorded_at: Wed, 15 Apr 2026 23:06:39 GMT +- recorded_at: Tue, 02 Jun 2026 12:32:24 GMT request: body: encoding: UTF-8 - string: '{"data":{"attributes":{"formulas":[{"formula":"a","limit":{"count":10,"order":"desc"}}],"from":1776290799000,"queries":[{"compute":{"aggregation":"count"},"data_source":"rum","indexes":["*"],"name":"a","search":{"query":"*"}}],"to":1776294399000},"type":"scalar_request"}}' + string: '{"data":{"attributes":{"formulas":[{"formula":"a","limit":{"count":10,"order":"desc"}}],"from":1780399944000,"queries":[{"compute":{"aggregation":"count"},"data_source":"rum","indexes":["*"],"name":"a","search":{"query":"*"}}],"to":1780403544000},"type":"scalar_request"}}' headers: Accept: - application/json @@ -14,7 +14,7 @@ http_interactions: response: body: encoding: UTF-8 - string: '{"data":{"id":"0","type":"scalar_response","attributes":{"columns":[{"name":"a","values":[338.0],"type":"number","meta":{"unit":null}}]}}}' + string: '{"data":{"id":"0","type":"scalar_response","attributes":{"columns":[{"name":"a","values":[340.0],"type":"number","meta":{"unit":null}}]}}}' headers: Content-Type: - application/vnd.api+json diff --git a/cassettes/features/v2/metrics/Scalar-cross-product-query-with-rum-data-source-returns-OK-response.frozen b/cassettes/features/v2/metrics/Scalar-cross-product-query-with-rum-data-source-returns-OK-response.frozen deleted file mode 100644 index b045cd705c66..000000000000 --- a/cassettes/features/v2/metrics/Scalar-cross-product-query-with-rum-data-source-returns-OK-response.frozen +++ /dev/null @@ -1 +0,0 @@ -2026-04-15T23:06:39.329Z \ No newline at end of file diff --git a/cassettes/features/v2/metrics/Timeseries-cross-product-query-with-RUM-data-source-returns-OK-response.frozen b/cassettes/features/v2/metrics/Timeseries-cross-product-query-with-RUM-data-source-returns-OK-response.frozen new file mode 100644 index 000000000000..301417e8347b --- /dev/null +++ b/cassettes/features/v2/metrics/Timeseries-cross-product-query-with-RUM-data-source-returns-OK-response.frozen @@ -0,0 +1 @@ +2026-06-02T12:32:31.838Z \ No newline at end of file diff --git a/cassettes/features/v2/metrics/Timeseries-cross-product-query-with-rum-data-source-returns-OK-response.yml b/cassettes/features/v2/metrics/Timeseries-cross-product-query-with-RUM-data-source-returns-OK-response.yml similarity index 63% rename from cassettes/features/v2/metrics/Timeseries-cross-product-query-with-rum-data-source-returns-OK-response.yml rename to cassettes/features/v2/metrics/Timeseries-cross-product-query-with-RUM-data-source-returns-OK-response.yml index bdc6c1537ad1..98ed5db6edc7 100644 --- a/cassettes/features/v2/metrics/Timeseries-cross-product-query-with-rum-data-source-returns-OK-response.yml +++ b/cassettes/features/v2/metrics/Timeseries-cross-product-query-with-RUM-data-source-returns-OK-response.yml @@ -1,9 +1,9 @@ http_interactions: -- recorded_at: Wed, 15 Apr 2026 23:06:43 GMT +- recorded_at: Tue, 02 Jun 2026 12:32:31 GMT request: body: encoding: UTF-8 - string: '{"data":{"attributes":{"formulas":[{"formula":"a","limit":{"count":10,"order":"desc"}}],"from":1776290803000,"interval":5000,"queries":[{"compute":{"aggregation":"count"},"data_source":"rum","indexes":["*"],"name":"a","search":{"query":"*"}}],"to":1776294403000},"type":"timeseries_request"}}' + string: '{"data":{"attributes":{"formulas":[{"formula":"a","limit":{"count":10,"order":"desc"}}],"from":1780399951000,"interval":5000,"queries":[{"compute":{"aggregation":"count"},"data_source":"rum","indexes":["*"],"name":"a","search":{"query":"*"}}],"to":1780403551000},"type":"timeseries_request"}}' headers: Accept: - application/json @@ -14,7 +14,7 @@ http_interactions: response: body: encoding: UTF-8 - string: '{"data":{"id":"0","type":"timeseries_response","attributes":{"series":[{"group_tags":[],"query_index":0,"unit":null}],"times":[1776290870000,1776291170000,1776291175000,1776291470000,1776291770000,1776292070000,1776292370000,1776292670000,1776292970000,1776293270000,1776293570000,1776293870000,1776294170000],"values":[[28,30,2,28,30,27,26,26,27,30,28,26,30]]}}} + string: '{"data":{"id":"0","type":"timeseries_response","attributes":{"series":[{"group_tags":[],"query_index":0,"unit":null}],"times":[1780399970000,1780400270000,1780400275000,1780400570000,1780400870000,1780401170000,1780401470000,1780401475000,1780401770000,1780402070000,1780402370000,1780402670000,1780402970000,1780403270000],"values":[[27,22,11,27,27,31,27,2,27,31,26,26,29,27]]}}} ' headers: diff --git a/cassettes/features/v2/metrics/Timeseries-cross-product-query-with-rum-data-source-returns-OK-response.frozen b/cassettes/features/v2/metrics/Timeseries-cross-product-query-with-rum-data-source-returns-OK-response.frozen deleted file mode 100644 index 8d9c1fd4b390..000000000000 --- a/cassettes/features/v2/metrics/Timeseries-cross-product-query-with-rum-data-source-returns-OK-response.frozen +++ /dev/null @@ -1 +0,0 @@ -2026-04-15T23:06:43.715Z \ No newline at end of file diff --git a/cassettes/features/v2/rum_metrics/Create-a-RUM-based-metric-returns-Bad-Request-response.frozen b/cassettes/features/v2/rum_metrics/Create-a-RUM-based-metric-returns-Bad-Request-response.frozen new file mode 100644 index 000000000000..8c183907e297 --- /dev/null +++ b/cassettes/features/v2/rum_metrics/Create-a-RUM-based-metric-returns-Bad-Request-response.frozen @@ -0,0 +1 @@ +2026-06-02T12:32:35.224Z \ No newline at end of file diff --git a/cassettes/features/v2/rum_metrics/Create-a-rum-based-metric-returns-Bad-Request-response.yml b/cassettes/features/v2/rum_metrics/Create-a-RUM-based-metric-returns-Bad-Request-response.yml similarity index 94% rename from cassettes/features/v2/rum_metrics/Create-a-rum-based-metric-returns-Bad-Request-response.yml rename to cassettes/features/v2/rum_metrics/Create-a-RUM-based-metric-returns-Bad-Request-response.yml index 2cb050b221d0..25b0212b50f4 100644 --- a/cassettes/features/v2/rum_metrics/Create-a-rum-based-metric-returns-Bad-Request-response.yml +++ b/cassettes/features/v2/rum_metrics/Create-a-RUM-based-metric-returns-Bad-Request-response.yml @@ -1,5 +1,5 @@ http_interactions: -- recorded_at: Thu, 28 Nov 2024 15:31:17 GMT +- recorded_at: Tue, 02 Jun 2026 12:32:35 GMT request: body: encoding: UTF-8 diff --git a/cassettes/features/v2/rum_metrics/Create-a-RUM-based-metric-returns-Conflict-response.frozen b/cassettes/features/v2/rum_metrics/Create-a-RUM-based-metric-returns-Conflict-response.frozen new file mode 100644 index 000000000000..468c54e97a46 --- /dev/null +++ b/cassettes/features/v2/rum_metrics/Create-a-RUM-based-metric-returns-Conflict-response.frozen @@ -0,0 +1 @@ +2026-06-02T12:32:35.746Z \ No newline at end of file diff --git a/cassettes/features/v2/rum_metrics/Create-a-rum-based-metric-returns-Conflict-response.yml b/cassettes/features/v2/rum_metrics/Create-a-RUM-based-metric-returns-Conflict-response.yml similarity index 77% rename from cassettes/features/v2/rum_metrics/Create-a-rum-based-metric-returns-Conflict-response.yml rename to cassettes/features/v2/rum_metrics/Create-a-RUM-based-metric-returns-Conflict-response.yml index dc832c595904..00714ff4702e 100644 --- a/cassettes/features/v2/rum_metrics/Create-a-rum-based-metric-returns-Conflict-response.yml +++ b/cassettes/features/v2/rum_metrics/Create-a-RUM-based-metric-returns-Conflict-response.yml @@ -1,9 +1,9 @@ http_interactions: -- recorded_at: Thu, 28 Nov 2024 15:31:18 GMT +- recorded_at: Tue, 02 Jun 2026 12:32:35 GMT request: body: encoding: UTF-8 - string: '{"data":{"attributes":{"compute":{"aggregation_type":"distribution","include_percentiles":true,"path":"@duration"},"event_type":"session","filter":{"query":"source:Test-Create_a_rum_based_metric_returns_Conflict_response-1732807878"},"group_by":[{"path":"@browser.name","tag_name":"browser_name"}],"uniqueness":{"when":"match"}},"id":"testcreatearumbasedmetricreturnsconflictresponse1732807878","type":"rum_metrics"}}' + string: '{"data":{"attributes":{"compute":{"aggregation_type":"distribution","include_percentiles":true,"path":"@duration"},"event_type":"session","filter":{"query":"source:Test-Create_a_RUM_based_metric_returns_Conflict_response-1780403555"},"group_by":[{"path":"@browser.name","tag_name":"browser_name"}],"uniqueness":{"when":"match"}},"id":"testcreatearumbasedmetricreturnsconflictresponse1780403555","type":"rum_metrics"}}' headers: Accept: - application/json @@ -14,18 +14,18 @@ http_interactions: response: body: encoding: UTF-8 - string: '{"data":{"id":"testcreatearumbasedmetricreturnsconflictresponse1732807878","type":"rum_metrics","attributes":{"compute":{"aggregation_type":"distribution","include_percentiles":true,"path":"@duration"},"event_type":"session","filter":{"query":"source:Test-Create_a_rum_based_metric_returns_Conflict_response-1732807878"},"group_by":[{"path":"@browser.name","tag_name":"browser_name"}],"uniqueness":{"when":"match"}}}}' + string: '{"data":{"id":"testcreatearumbasedmetricreturnsconflictresponse1780403555","type":"rum_metrics","attributes":{"compute":{"aggregation_type":"distribution","include_percentiles":true,"path":"@duration"},"event_type":"session","filter":{"query":"source:Test-Create_a_RUM_based_metric_returns_Conflict_response-1780403555"},"group_by":[{"path":"@browser.name","tag_name":"browser_name"}],"uniqueness":{"when":"match"}}}}' headers: Content-Type: - application/vnd.api+json status: code: 201 message: Created -- recorded_at: Thu, 28 Nov 2024 15:31:18 GMT +- recorded_at: Tue, 02 Jun 2026 12:32:35 GMT request: body: encoding: UTF-8 - string: '{"data":{"attributes":{"compute":{"aggregation_type":"count"},"event_type":"action"},"id":"testcreatearumbasedmetricreturnsconflictresponse1732807878","type":"rum_metrics"}}' + string: '{"data":{"attributes":{"compute":{"aggregation_type":"count"},"event_type":"action"},"id":"testcreatearumbasedmetricreturnsconflictresponse1780403555","type":"rum_metrics"}}' headers: Accept: - application/json @@ -37,7 +37,7 @@ http_interactions: body: encoding: UTF-8 string: '{"errors":[{"status":"409","title":"Conflict","detail":"conflict(Field - ''data.id'' is invalid: ''testcreatearumbasedmetricreturnsconflictresponse1732807878'' + ''data.id'' is invalid: ''testcreatearumbasedmetricreturnsconflictresponse1780403555'' cannot be used as metric name, a metric already exists with that name)"}]}' headers: Content-Type: @@ -45,14 +45,14 @@ http_interactions: status: code: 409 message: Conflict -- recorded_at: Thu, 28 Nov 2024 15:31:18 GMT +- recorded_at: Tue, 02 Jun 2026 12:32:35 GMT request: body: null headers: Accept: - '*/*' method: DELETE - uri: https://api.datadoghq.com/api/v2/rum/config/metrics/testcreatearumbasedmetricreturnsconflictresponse1732807878 + uri: https://api.datadoghq.com/api/v2/rum/config/metrics/testcreatearumbasedmetricreturnsconflictresponse1780403555 response: body: encoding: UTF-8 diff --git a/cassettes/features/v2/rum_metrics/Create-a-RUM-based-metric-returns-Created-response.frozen b/cassettes/features/v2/rum_metrics/Create-a-RUM-based-metric-returns-Created-response.frozen new file mode 100644 index 000000000000..6ddf8a62765b --- /dev/null +++ b/cassettes/features/v2/rum_metrics/Create-a-RUM-based-metric-returns-Created-response.frozen @@ -0,0 +1 @@ +2026-06-02T12:32:37.019Z \ No newline at end of file diff --git a/cassettes/features/v2/rum_metrics/Create-a-rum-based-metric-returns-Created-response.yml b/cassettes/features/v2/rum_metrics/Create-a-RUM-based-metric-returns-Created-response.yml similarity index 83% rename from cassettes/features/v2/rum_metrics/Create-a-rum-based-metric-returns-Created-response.yml rename to cassettes/features/v2/rum_metrics/Create-a-RUM-based-metric-returns-Created-response.yml index cf446a81341c..b84b23653739 100644 --- a/cassettes/features/v2/rum_metrics/Create-a-rum-based-metric-returns-Created-response.yml +++ b/cassettes/features/v2/rum_metrics/Create-a-RUM-based-metric-returns-Created-response.yml @@ -1,9 +1,9 @@ http_interactions: -- recorded_at: Thu, 22 May 2025 06:41:46 GMT +- recorded_at: Tue, 02 Jun 2026 12:32:37 GMT request: body: encoding: UTF-8 - string: '{"data":{"attributes":{"compute":{"aggregation_type":"distribution","include_percentiles":true,"path":"@duration"},"event_type":"session","filter":{"query":"@service:web-ui"},"group_by":[{"path":"@browser.name","tag_name":"browser_name"}],"uniqueness":{"when":"match"}},"id":"testcreatearumbasedmetricreturnscreatedresponse1747896106","type":"rum_metrics"}}' + string: '{"data":{"attributes":{"compute":{"aggregation_type":"distribution","include_percentiles":true,"path":"@duration"},"event_type":"session","filter":{"query":"@service:web-ui"},"group_by":[{"path":"@browser.name","tag_name":"browser_name"}],"uniqueness":{"when":"match"}},"id":"testcreatearumbasedmetricreturnscreatedresponse1780403557","type":"rum_metrics"}}' headers: Accept: - application/json @@ -14,21 +14,21 @@ http_interactions: response: body: encoding: UTF-8 - string: '{"data":{"id":"testcreatearumbasedmetricreturnscreatedresponse1747896106","type":"rum_metrics","attributes":{"compute":{"aggregation_type":"distribution","include_percentiles":true,"path":"@duration"},"event_type":"session","filter":{"query":"@service:web-ui"},"group_by":[{"path":"@browser.name","tag_name":"browser_name"}],"uniqueness":{"when":"match"}}}}' + string: '{"data":{"id":"testcreatearumbasedmetricreturnscreatedresponse1780403557","type":"rum_metrics","attributes":{"compute":{"aggregation_type":"distribution","include_percentiles":true,"path":"@duration"},"event_type":"session","filter":{"query":"@service:web-ui"},"group_by":[{"path":"@browser.name","tag_name":"browser_name"}],"uniqueness":{"when":"match"}}}}' headers: Content-Type: - application/vnd.api+json status: code: 201 message: Created -- recorded_at: Thu, 22 May 2025 06:41:46 GMT +- recorded_at: Tue, 02 Jun 2026 12:32:37 GMT request: body: null headers: Accept: - '*/*' method: DELETE - uri: https://api.datadoghq.com/api/v2/rum/config/metrics/testcreatearumbasedmetricreturnscreatedresponse1747896106 + uri: https://api.datadoghq.com/api/v2/rum/config/metrics/testcreatearumbasedmetricreturnscreatedresponse1780403557 response: body: encoding: UTF-8 diff --git a/cassettes/features/v2/rum_metrics/Create-a-rum-based-metric-returns-Bad-Request-response.frozen b/cassettes/features/v2/rum_metrics/Create-a-rum-based-metric-returns-Bad-Request-response.frozen deleted file mode 100644 index 68ac266aa8c3..000000000000 --- a/cassettes/features/v2/rum_metrics/Create-a-rum-based-metric-returns-Bad-Request-response.frozen +++ /dev/null @@ -1 +0,0 @@ -2024-11-28T15:31:17.723Z \ No newline at end of file diff --git a/cassettes/features/v2/rum_metrics/Create-a-rum-based-metric-returns-Conflict-response.frozen b/cassettes/features/v2/rum_metrics/Create-a-rum-based-metric-returns-Conflict-response.frozen deleted file mode 100644 index d20e2a92bc4c..000000000000 --- a/cassettes/features/v2/rum_metrics/Create-a-rum-based-metric-returns-Conflict-response.frozen +++ /dev/null @@ -1 +0,0 @@ -2024-11-28T15:31:18.166Z \ No newline at end of file diff --git a/cassettes/features/v2/rum_metrics/Create-a-rum-based-metric-returns-Created-response.frozen b/cassettes/features/v2/rum_metrics/Create-a-rum-based-metric-returns-Created-response.frozen deleted file mode 100644 index 7304d8219a67..000000000000 --- a/cassettes/features/v2/rum_metrics/Create-a-rum-based-metric-returns-Created-response.frozen +++ /dev/null @@ -1 +0,0 @@ -2025-05-22T06:41:46.880Z \ No newline at end of file diff --git a/cassettes/features/v2/rum_metrics/Delete-a-RUM-based-metric-returns-No-Content-response.frozen b/cassettes/features/v2/rum_metrics/Delete-a-RUM-based-metric-returns-No-Content-response.frozen new file mode 100644 index 000000000000..0b000af184da --- /dev/null +++ b/cassettes/features/v2/rum_metrics/Delete-a-RUM-based-metric-returns-No-Content-response.frozen @@ -0,0 +1 @@ +2026-06-02T12:32:38.038Z \ No newline at end of file diff --git a/cassettes/features/v2/rum_metrics/Delete-a-rum-based-metric-returns-No-Content-response.yml b/cassettes/features/v2/rum_metrics/Delete-a-RUM-based-metric-returns-No-Content-response.yml similarity index 75% rename from cassettes/features/v2/rum_metrics/Delete-a-rum-based-metric-returns-No-Content-response.yml rename to cassettes/features/v2/rum_metrics/Delete-a-RUM-based-metric-returns-No-Content-response.yml index 16d390340a23..04a3b161beb2 100644 --- a/cassettes/features/v2/rum_metrics/Delete-a-rum-based-metric-returns-No-Content-response.yml +++ b/cassettes/features/v2/rum_metrics/Delete-a-RUM-based-metric-returns-No-Content-response.yml @@ -1,9 +1,9 @@ http_interactions: -- recorded_at: Thu, 28 Nov 2024 15:31:20 GMT +- recorded_at: Tue, 02 Jun 2026 12:32:38 GMT request: body: encoding: UTF-8 - string: '{"data":{"attributes":{"compute":{"aggregation_type":"distribution","include_percentiles":true,"path":"@duration"},"event_type":"session","filter":{"query":"source:Test-Delete_a_rum_based_metric_returns_No_Content_response-1732807880"},"group_by":[{"path":"@browser.name","tag_name":"browser_name"}],"uniqueness":{"when":"match"}},"id":"testdeletearumbasedmetricreturnsnocontentresponse1732807880","type":"rum_metrics"}}' + string: '{"data":{"attributes":{"compute":{"aggregation_type":"distribution","include_percentiles":true,"path":"@duration"},"event_type":"session","filter":{"query":"source:Test-Delete_a_RUM_based_metric_returns_No_Content_response-1780403558"},"group_by":[{"path":"@browser.name","tag_name":"browser_name"}],"uniqueness":{"when":"match"}},"id":"testdeletearumbasedmetricreturnsnocontentresponse1780403558","type":"rum_metrics"}}' headers: Accept: - application/json @@ -14,21 +14,21 @@ http_interactions: response: body: encoding: UTF-8 - string: '{"data":{"id":"testdeletearumbasedmetricreturnsnocontentresponse1732807880","type":"rum_metrics","attributes":{"compute":{"aggregation_type":"distribution","include_percentiles":true,"path":"@duration"},"event_type":"session","filter":{"query":"source:Test-Delete_a_rum_based_metric_returns_No_Content_response-1732807880"},"group_by":[{"path":"@browser.name","tag_name":"browser_name"}],"uniqueness":{"when":"match"}}}}' + string: '{"data":{"id":"testdeletearumbasedmetricreturnsnocontentresponse1780403558","type":"rum_metrics","attributes":{"compute":{"aggregation_type":"distribution","include_percentiles":true,"path":"@duration"},"event_type":"session","filter":{"query":"source:Test-Delete_a_RUM_based_metric_returns_No_Content_response-1780403558"},"group_by":[{"path":"@browser.name","tag_name":"browser_name"}],"uniqueness":{"when":"match"}}}}' headers: Content-Type: - application/vnd.api+json status: code: 201 message: Created -- recorded_at: Thu, 28 Nov 2024 15:31:20 GMT +- recorded_at: Tue, 02 Jun 2026 12:32:38 GMT request: body: null headers: Accept: - '*/*' method: DELETE - uri: https://api.datadoghq.com/api/v2/rum/config/metrics/testdeletearumbasedmetricreturnsnocontentresponse1732807880 + uri: https://api.datadoghq.com/api/v2/rum/config/metrics/testdeletearumbasedmetricreturnsnocontentresponse1780403558 response: body: encoding: UTF-8 @@ -37,19 +37,19 @@ http_interactions: status: code: 204 message: No Content -- recorded_at: Thu, 28 Nov 2024 15:31:20 GMT +- recorded_at: Tue, 02 Jun 2026 12:32:38 GMT request: body: null headers: Accept: - '*/*' method: DELETE - uri: https://api.datadoghq.com/api/v2/rum/config/metrics/testdeletearumbasedmetricreturnsnocontentresponse1732807880 + uri: https://api.datadoghq.com/api/v2/rum/config/metrics/testdeletearumbasedmetricreturnsnocontentresponse1780403558 response: body: encoding: UTF-8 string: '{"errors":[{"status":"404","title":"Not Found","detail":"not_found(Metric - with name ''testdeletearumbasedmetricreturnsnocontentresponse1732807880'' + with name ''testdeletearumbasedmetricreturnsnocontentresponse1780403558'' not found)"}]}' headers: Content-Type: diff --git a/cassettes/features/v2/rum_metrics/Delete-a-RUM-based-metric-returns-Not-Found-response.frozen b/cassettes/features/v2/rum_metrics/Delete-a-RUM-based-metric-returns-Not-Found-response.frozen new file mode 100644 index 000000000000..734c26d1e6c8 --- /dev/null +++ b/cassettes/features/v2/rum_metrics/Delete-a-RUM-based-metric-returns-Not-Found-response.frozen @@ -0,0 +1 @@ +2026-06-02T12:32:39.442Z \ No newline at end of file diff --git a/cassettes/features/v2/rum_metrics/Delete-a-rum-based-metric-returns-Not-Found-response.yml b/cassettes/features/v2/rum_metrics/Delete-a-RUM-based-metric-returns-Not-Found-response.yml similarity index 69% rename from cassettes/features/v2/rum_metrics/Delete-a-rum-based-metric-returns-Not-Found-response.yml rename to cassettes/features/v2/rum_metrics/Delete-a-RUM-based-metric-returns-Not-Found-response.yml index a493a06cb7d5..c1a21855dacc 100644 --- a/cassettes/features/v2/rum_metrics/Delete-a-rum-based-metric-returns-Not-Found-response.yml +++ b/cassettes/features/v2/rum_metrics/Delete-a-RUM-based-metric-returns-Not-Found-response.yml @@ -1,17 +1,17 @@ http_interactions: -- recorded_at: Thu, 28 Nov 2024 15:31:21 GMT +- recorded_at: Tue, 02 Jun 2026 12:32:39 GMT request: body: null headers: Accept: - '*/*' method: DELETE - uri: https://api.datadoghq.com/api/v2/rum/config/metrics/Test-Delete_a_rum_based_metric_returns_Not_Found_response-1732807881 + uri: https://api.datadoghq.com/api/v2/rum/config/metrics/Test-Delete_a_RUM_based_metric_returns_Not_Found_response-1780403559 response: body: encoding: UTF-8 string: '{"errors":[{"status":"404","title":"Not Found","detail":"not_found(Metric - with name ''Test-Delete_a_rum_based_metric_returns_Not_Found_response-1732807881'' + with name ''Test-Delete_a_RUM_based_metric_returns_Not_Found_response-1780403559'' not found)"}]}' headers: Content-Type: diff --git a/cassettes/features/v2/rum_metrics/Delete-a-rum-based-metric-returns-No-Content-response.frozen b/cassettes/features/v2/rum_metrics/Delete-a-rum-based-metric-returns-No-Content-response.frozen deleted file mode 100644 index dcea2129655a..000000000000 --- a/cassettes/features/v2/rum_metrics/Delete-a-rum-based-metric-returns-No-Content-response.frozen +++ /dev/null @@ -1 +0,0 @@ -2024-11-28T15:31:20.155Z \ No newline at end of file diff --git a/cassettes/features/v2/rum_metrics/Delete-a-rum-based-metric-returns-Not-Found-response.frozen b/cassettes/features/v2/rum_metrics/Delete-a-rum-based-metric-returns-Not-Found-response.frozen deleted file mode 100644 index d1e929c7bedc..000000000000 --- a/cassettes/features/v2/rum_metrics/Delete-a-rum-based-metric-returns-Not-Found-response.frozen +++ /dev/null @@ -1 +0,0 @@ -2024-11-28T15:31:21.433Z \ No newline at end of file diff --git a/cassettes/features/v2/rum_metrics/Get-a-RUM-based-metric-returns-Not-Found-response.frozen b/cassettes/features/v2/rum_metrics/Get-a-RUM-based-metric-returns-Not-Found-response.frozen new file mode 100644 index 000000000000..a572ad420c0b --- /dev/null +++ b/cassettes/features/v2/rum_metrics/Get-a-RUM-based-metric-returns-Not-Found-response.frozen @@ -0,0 +1 @@ +2026-06-02T12:32:39.828Z \ No newline at end of file diff --git a/cassettes/features/v2/rum_metrics/Get-a-rum-based-metric-returns-Not-Found-response.yml b/cassettes/features/v2/rum_metrics/Get-a-RUM-based-metric-returns-Not-Found-response.yml similarity index 70% rename from cassettes/features/v2/rum_metrics/Get-a-rum-based-metric-returns-Not-Found-response.yml rename to cassettes/features/v2/rum_metrics/Get-a-RUM-based-metric-returns-Not-Found-response.yml index 302c5ab21e88..3d30a78b807e 100644 --- a/cassettes/features/v2/rum_metrics/Get-a-rum-based-metric-returns-Not-Found-response.yml +++ b/cassettes/features/v2/rum_metrics/Get-a-RUM-based-metric-returns-Not-Found-response.yml @@ -1,17 +1,17 @@ http_interactions: -- recorded_at: Thu, 28 Nov 2024 15:31:21 GMT +- recorded_at: Tue, 02 Jun 2026 12:32:39 GMT request: body: null headers: Accept: - application/json method: GET - uri: https://api.datadoghq.com/api/v2/rum/config/metrics/Test-Get_a_rum_based_metric_returns_Not_Found_response-1732807881 + uri: https://api.datadoghq.com/api/v2/rum/config/metrics/Test-Get_a_RUM_based_metric_returns_Not_Found_response-1780403559 response: body: encoding: UTF-8 string: '{"errors":[{"status":"404","title":"Not Found","detail":"not_found(Metric - with name ''Test-Get_a_rum_based_metric_returns_Not_Found_response-1732807881'' + with name ''Test-Get_a_RUM_based_metric_returns_Not_Found_response-1780403559'' not found)"}]}' headers: Content-Type: diff --git a/cassettes/features/v2/rum_metrics/Get-a-RUM-based-metric-returns-OK-response.frozen b/cassettes/features/v2/rum_metrics/Get-a-RUM-based-metric-returns-OK-response.frozen new file mode 100644 index 000000000000..fb526bf13d70 --- /dev/null +++ b/cassettes/features/v2/rum_metrics/Get-a-RUM-based-metric-returns-OK-response.frozen @@ -0,0 +1 @@ +2026-06-02T12:32:40.188Z \ No newline at end of file diff --git a/cassettes/features/v2/rum_metrics/Get-a-rum-based-metric-returns-OK-response.yml b/cassettes/features/v2/rum_metrics/Get-a-RUM-based-metric-returns-OK-response.yml similarity index 71% rename from cassettes/features/v2/rum_metrics/Get-a-rum-based-metric-returns-OK-response.yml rename to cassettes/features/v2/rum_metrics/Get-a-RUM-based-metric-returns-OK-response.yml index 6fb648d06f0e..5ef6001c5802 100644 --- a/cassettes/features/v2/rum_metrics/Get-a-rum-based-metric-returns-OK-response.yml +++ b/cassettes/features/v2/rum_metrics/Get-a-RUM-based-metric-returns-OK-response.yml @@ -1,9 +1,9 @@ http_interactions: -- recorded_at: Thu, 28 Nov 2024 15:31:22 GMT +- recorded_at: Tue, 02 Jun 2026 12:32:40 GMT request: body: encoding: UTF-8 - string: '{"data":{"attributes":{"compute":{"aggregation_type":"distribution","include_percentiles":true,"path":"@duration"},"event_type":"session","filter":{"query":"source:Test-Get_a_rum_based_metric_returns_OK_response-1732807882"},"group_by":[{"path":"@browser.name","tag_name":"browser_name"}],"uniqueness":{"when":"match"}},"id":"testgetarumbasedmetricreturnsokresponse1732807882","type":"rum_metrics"}}' + string: '{"data":{"attributes":{"compute":{"aggregation_type":"distribution","include_percentiles":true,"path":"@duration"},"event_type":"session","filter":{"query":"source:Test-Get_a_RUM_based_metric_returns_OK_response-1780403560"},"group_by":[{"path":"@browser.name","tag_name":"browser_name"}],"uniqueness":{"when":"match"}},"id":"testgetarumbasedmetricreturnsokresponse1780403560","type":"rum_metrics"}}' headers: Accept: - application/json @@ -14,39 +14,39 @@ http_interactions: response: body: encoding: UTF-8 - string: '{"data":{"id":"testgetarumbasedmetricreturnsokresponse1732807882","type":"rum_metrics","attributes":{"compute":{"aggregation_type":"distribution","include_percentiles":true,"path":"@duration"},"event_type":"session","filter":{"query":"source:Test-Get_a_rum_based_metric_returns_OK_response-1732807882"},"group_by":[{"path":"@browser.name","tag_name":"browser_name"}],"uniqueness":{"when":"match"}}}}' + string: '{"data":{"id":"testgetarumbasedmetricreturnsokresponse1780403560","type":"rum_metrics","attributes":{"compute":{"aggregation_type":"distribution","include_percentiles":true,"path":"@duration"},"event_type":"session","filter":{"query":"source:Test-Get_a_RUM_based_metric_returns_OK_response-1780403560"},"group_by":[{"path":"@browser.name","tag_name":"browser_name"}],"uniqueness":{"when":"match"}}}}' headers: Content-Type: - application/vnd.api+json status: code: 201 message: Created -- recorded_at: Thu, 28 Nov 2024 15:31:22 GMT +- recorded_at: Tue, 02 Jun 2026 12:32:40 GMT request: body: null headers: Accept: - application/json method: GET - uri: https://api.datadoghq.com/api/v2/rum/config/metrics/testgetarumbasedmetricreturnsokresponse1732807882 + uri: https://api.datadoghq.com/api/v2/rum/config/metrics/testgetarumbasedmetricreturnsokresponse1780403560 response: body: encoding: UTF-8 - string: '{"data":{"id":"testgetarumbasedmetricreturnsokresponse1732807882","type":"rum_metrics","attributes":{"compute":{"aggregation_type":"distribution","include_percentiles":true,"path":"@duration"},"event_type":"session","filter":{"query":"source:Test-Get_a_rum_based_metric_returns_OK_response-1732807882"},"group_by":[{"path":"@browser.name","tag_name":"browser_name"}],"uniqueness":{"when":"match"}}}}' + string: '{"data":{"id":"testgetarumbasedmetricreturnsokresponse1780403560","type":"rum_metrics","attributes":{"compute":{"aggregation_type":"distribution","include_percentiles":true,"path":"@duration"},"event_type":"session","filter":{"query":"source:Test-Get_a_RUM_based_metric_returns_OK_response-1780403560"},"group_by":[{"path":"@browser.name","tag_name":"browser_name"}],"uniqueness":{"when":"match"}}}}' headers: Content-Type: - application/vnd.api+json status: code: 200 message: OK -- recorded_at: Thu, 28 Nov 2024 15:31:22 GMT +- recorded_at: Tue, 02 Jun 2026 12:32:40 GMT request: body: null headers: Accept: - '*/*' method: DELETE - uri: https://api.datadoghq.com/api/v2/rum/config/metrics/testgetarumbasedmetricreturnsokresponse1732807882 + uri: https://api.datadoghq.com/api/v2/rum/config/metrics/testgetarumbasedmetricreturnsokresponse1780403560 response: body: encoding: UTF-8 diff --git a/cassettes/features/v2/rum_metrics/Get-a-rum-based-metric-returns-Not-Found-response.frozen b/cassettes/features/v2/rum_metrics/Get-a-rum-based-metric-returns-Not-Found-response.frozen deleted file mode 100644 index cc0ea2feffef..000000000000 --- a/cassettes/features/v2/rum_metrics/Get-a-rum-based-metric-returns-Not-Found-response.frozen +++ /dev/null @@ -1 +0,0 @@ -2024-11-28T15:31:21.847Z \ No newline at end of file diff --git a/cassettes/features/v2/rum_metrics/Get-a-rum-based-metric-returns-OK-response.frozen b/cassettes/features/v2/rum_metrics/Get-a-rum-based-metric-returns-OK-response.frozen deleted file mode 100644 index 44989b3301fa..000000000000 --- a/cassettes/features/v2/rum_metrics/Get-a-rum-based-metric-returns-OK-response.frozen +++ /dev/null @@ -1 +0,0 @@ -2024-11-28T15:31:22.200Z \ No newline at end of file diff --git a/cassettes/features/v2/rum_metrics/Get-all-RUM-based-metrics-returns-OK-response.frozen b/cassettes/features/v2/rum_metrics/Get-all-RUM-based-metrics-returns-OK-response.frozen new file mode 100644 index 000000000000..d1e67e6228a2 --- /dev/null +++ b/cassettes/features/v2/rum_metrics/Get-all-RUM-based-metrics-returns-OK-response.frozen @@ -0,0 +1 @@ +2026-06-02T12:32:41.286Z \ No newline at end of file diff --git a/cassettes/features/v2/rum_metrics/Get-all-RUM-based-metrics-returns-OK-response.yml b/cassettes/features/v2/rum_metrics/Get-all-RUM-based-metrics-returns-OK-response.yml new file mode 100644 index 000000000000..22bb0dac048d --- /dev/null +++ b/cassettes/features/v2/rum_metrics/Get-all-RUM-based-metrics-returns-OK-response.yml @@ -0,0 +1,20 @@ +http_interactions: +- recorded_at: Tue, 02 Jun 2026 12:32:41 GMT + request: + body: null + headers: + Accept: + - application/json + method: GET + uri: https://api.datadoghq.com/api/v2/rum/config/metrics + response: + body: + encoding: UTF-8 + string: '{"data":[{"id":"tf_TestAccRumMetricAttributes_local_1748953468","type":"rum_metrics","attributes":{"compute":{"aggregation_type":"count"},"event_type":"session","group_by":[],"uniqueness":{"when":"match"}}},{"id":"tf_TestAccRumMetricAttributes_local_1754429067","type":"rum_metrics","attributes":{"compute":{"aggregation_type":"distribution","include_percentiles":false,"path":"@duration"},"event_type":"action","group_by":[]}},{"id":"tf_TestAccRumMetricAttributes_local_1756383271","type":"rum_metrics","attributes":{"compute":{"aggregation_type":"count"},"event_type":"action","filter":{"query":"@service:web-ui"},"group_by":[]}},{"id":"examplegetarumbasedmetricreturnsokresponse1756438670","type":"rum_metrics","attributes":{"compute":{"aggregation_type":"distribution","include_percentiles":true,"path":"@duration"},"event_type":"session","filter":{"query":"source:Example-Get_a_rum_based_metric_returns_OK_response_1756438670"},"group_by":[{"path":"@browser.name","tag_name":"browser_name"}],"uniqueness":{"when":"match"}}},{"id":"testtypescriptupdatearumbasedmetricreturnsnotfoundresponse1759230768","type":"rum_metrics","attributes":{"compute":{"aggregation_type":"distribution","include_percentiles":true,"path":"@duration"},"event_type":"session","filter":{"query":"source:Test-Typescript-Update_a_rum_based_metric_returns_Not_Found_response-1759230768"},"group_by":[{"path":"@browser.name","tag_name":"browser_name"}],"uniqueness":{"when":"match"}}},{"id":"testtypescriptdeletearumbasedmetricreturnsnocontentresponse1760329500","type":"rum_metrics","attributes":{"compute":{"aggregation_type":"distribution","include_percentiles":true,"path":"@duration"},"event_type":"session","filter":{"query":"source:Test-Typescript-Delete_a_rum_based_metric_returns_No_Content_response-1760329500"},"group_by":[{"path":"@browser.name","tag_name":"browser_name"}],"uniqueness":{"when":"match"}}},{"id":"exampleupdatearumbasedmetricreturnsokresponse1760974704","type":"rum_metrics","attributes":{"compute":{"aggregation_type":"distribution","include_percentiles":false,"path":"@duration"},"event_type":"session","filter":{"query":"@service:rum-config"},"group_by":[{"path":"@browser.version","tag_name":"browser_version"}],"uniqueness":{"when":"match"}}},{"id":"testjavaupdatearumbasedmetricreturnsbadrequestresponse1761017953","type":"rum_metrics","attributes":{"compute":{"aggregation_type":"distribution","include_percentiles":true,"path":"@duration"},"event_type":"session","filter":{"query":"source:Test-Java-Update_a_rum_based_metric_returns_Bad_Request_response-1761017953"},"group_by":[{"path":"@browser.name","tag_name":"browser_name"}],"uniqueness":{"when":"match"}}},{"id":"testing_rum_metric_francesco","type":"rum_metrics","attributes":{"compute":{"aggregation_type":"count"},"event_type":"action","group_by":[{"path":"@os","tag_name":"os"},{"path":"@service","tag_name":"service"},{"path":"path_only","tag_name":"path_only"}]}},{"id":"tf_TestAccRumMetricAttributes_local_1762777350","type":"rum_metrics","attributes":{"compute":{"aggregation_type":"count"},"event_type":"action","group_by":[]}},{"id":"exampleupdatearumbasedmetricreturnsokresponse1763393904","type":"rum_metrics","attributes":{"compute":{"aggregation_type":"distribution","include_percentiles":false,"path":"@duration"},"event_type":"session","filter":{"query":"@service:rum-config"},"group_by":[{"path":"@browser.version","tag_name":"browser_version"}],"uniqueness":{"when":"match"}}},{"id":"testtypescriptdeletearumbasedmetricreturnsnocontentresponse1763440561","type":"rum_metrics","attributes":{"compute":{"aggregation_type":"distribution","include_percentiles":true,"path":"@duration"},"event_type":"session","filter":{"query":"source:Test-Typescript-Delete_a_rum_based_metric_returns_No_Content_response-1763440561"},"group_by":[{"path":"@browser.name","tag_name":"browser_name"}],"uniqueness":{"when":"match"}}},{"id":"examplecreatearumbasedmetricreturnscreatedresponse1763580024","type":"rum_metrics","attributes":{"compute":{"aggregation_type":"distribution","include_percentiles":true,"path":"@duration"},"event_type":"session","filter":{"query":"@service:web-ui"},"group_by":[{"path":"@browser.name","tag_name":"browser_name"}],"uniqueness":{"when":"match"}}},{"id":"tf_TestAccRumMetricAttributes_local_1764030439","type":"rum_metrics","attributes":{"compute":{"aggregation_type":"count"},"event_type":"action","group_by":[]}},{"id":"testjavaupdatearumbasedmetricreturnsokresponse1764042240","type":"rum_metrics","attributes":{"compute":{"aggregation_type":"distribution","include_percentiles":true,"path":"@duration"},"event_type":"session","filter":{"query":"source:Test-Java-Update_a_rum_based_metric_returns_OK_response-1764042240"},"group_by":[{"path":"@browser.name","tag_name":"browser_name"}],"uniqueness":{"when":"match"}}},{"id":"tf_TestAccRumMetricAttributes_local_1764203828","type":"rum_metrics","attributes":{"compute":{"aggregation_type":"count"},"event_type":"action","group_by":[{"path":"@os","tag_name":"os"},{"path":"@service","tag_name":"service"},{"path":"path_only","tag_name":"path_only"}]}},{"id":"testtypescriptgetarumbasedmetricreturnsokresponse1765192455","type":"rum_metrics","attributes":{"compute":{"aggregation_type":"distribution","include_percentiles":true,"path":"@duration"},"event_type":"session","filter":{"query":"source:Test-Typescript-Get_a_rum_based_metric_returns_OK_response-1765192455"},"group_by":[{"path":"@browser.name","tag_name":"browser_name"}],"uniqueness":{"when":"match"}}},{"id":"testgogetarumbasedmetricreturnsokresponse1765586988","type":"rum_metrics","attributes":{"compute":{"aggregation_type":"distribution","include_percentiles":true,"path":"@duration"},"event_type":"session","filter":{"query":"source:Test-Go-Get_a_rum_based_metric_returns_OK_response-1765586988"},"group_by":[{"path":"@browser.name","tag_name":"browser_name"}],"uniqueness":{"when":"match"}}},{"id":"testtypescriptgetarumbasedmetricreturnsokresponse1765774021","type":"rum_metrics","attributes":{"compute":{"aggregation_type":"distribution","include_percentiles":true,"path":"@duration"},"event_type":"session","filter":{"query":"source:Test-Typescript-Get_a_rum_based_metric_returns_OK_response-1765774021"},"group_by":[{"path":"@browser.name","tag_name":"browser_name"}],"uniqueness":{"when":"match"}}},{"id":"testtypescriptupdatearumbasedmetricreturnsokresponse1765797324","type":"rum_metrics","attributes":{"compute":{"aggregation_type":"distribution","include_percentiles":true,"path":"@duration"},"event_type":"session","filter":{"query":"source:Test-Typescript-Update_a_rum_based_metric_returns_OK_response-1765797324"},"group_by":[{"path":"@browser.name","tag_name":"browser_name"}],"uniqueness":{"when":"match"}}},{"id":"testrustdeletearumbasedmetricreturnsnocontentresponse1766121984","type":"rum_metrics","attributes":{"compute":{"aggregation_type":"distribution","include_percentiles":true,"path":"@duration"},"event_type":"session","filter":{"query":"source:Test-Rust-Delete_a_rum_based_metric_returns_No_Content_response-1766121984"},"group_by":[{"path":"@browser.name","tag_name":"browser_name"}],"uniqueness":{"when":"match"}}},{"id":"tf_TestAccRumMetricAttributes_local_1766146771","type":"rum_metrics","attributes":{"compute":{"aggregation_type":"count"},"event_type":"action","group_by":[]}},{"id":"exampleupdatearumbasedmetricreturnsokresponse1767123504","type":"rum_metrics","attributes":{"compute":{"aggregation_type":"distribution","include_percentiles":true,"path":"@duration"},"event_type":"session","filter":{"query":"source:Example-Update_a_rum_based_metric_returns_OK_response_1767123504"},"group_by":[{"path":"@browser.name","tag_name":"browser_name"}],"uniqueness":{"when":"match"}}},{"id":"testrustupdatearumbasedmetricreturnsbadrequestresponse1768281919","type":"rum_metrics","attributes":{"compute":{"aggregation_type":"distribution","include_percentiles":true,"path":"@duration"},"event_type":"session","filter":{"query":"source:Test-Rust-Update_a_rum_based_metric_returns_Bad_Request_response-1768281919"},"group_by":[{"path":"@browser.name","tag_name":"browser_name"}],"uniqueness":{"when":"match"}}},{"id":"testgocreatearumbasedmetricreturnscreatedresponse1768352135","type":"rum_metrics","attributes":{"compute":{"aggregation_type":"distribution","include_percentiles":true,"path":"@duration"},"event_type":"session","filter":{"query":"@service:web-ui"},"group_by":[{"path":"@browser.name","tag_name":"browser_name"}],"uniqueness":{"when":"match"}}},{"id":"exampledeletearumbasedmetricreturnsnocontentresponse1769312302","type":"rum_metrics","attributes":{"compute":{"aggregation_type":"distribution","include_percentiles":true,"path":"@duration"},"event_type":"session","filter":{"query":"source:Example-Delete_a_rum_based_metric_returns_No_Content_response_1769312302"},"group_by":[{"path":"@browser.name","tag_name":"browser_name"}],"uniqueness":{"when":"match"}}},{"id":"testtypescriptupdatearumbasedmetricreturnsokresponse1769512735","type":"rum_metrics","attributes":{"compute":{"aggregation_type":"distribution","include_percentiles":true,"path":"@duration"},"event_type":"session","filter":{"query":"source:Test-Typescript-Update_a_rum_based_metric_returns_OK_response-1769512735"},"group_by":[{"path":"@browser.name","tag_name":"browser_name"}],"uniqueness":{"when":"match"}}},{"id":"examplegetarumbasedmetricreturnsokresponse1770305870","type":"rum_metrics","attributes":{"compute":{"aggregation_type":"distribution","include_percentiles":true,"path":"@duration"},"event_type":"session","filter":{"query":"source:Example-Get_a_rum_based_metric_returns_OK_response_1770305870"},"group_by":[{"path":"@browser.name","tag_name":"browser_name"}],"uniqueness":{"when":"match"}}},{"id":"examplegetarumbasedmetricreturnsokresponse1770363470","type":"rum_metrics","attributes":{"compute":{"aggregation_type":"distribution","include_percentiles":true,"path":"@duration"},"event_type":"session","filter":{"query":"source:Example-Get_a_rum_based_metric_returns_OK_response_1770363470"},"group_by":[{"path":"@browser.name","tag_name":"browser_name"}],"uniqueness":{"when":"match"}}},{"id":"testjavacreatearumbasedmetricreturnscreatedresponse1770834693","type":"rum_metrics","attributes":{"compute":{"aggregation_type":"distribution","include_percentiles":true,"path":"@duration"},"event_type":"session","filter":{"query":"@service:web-ui"},"group_by":[{"path":"@browser.name","tag_name":"browser_name"}],"uniqueness":{"when":"match"}}},{"id":"examplegetarumbasedmetricreturnsokresponse1770853070","type":"rum_metrics","attributes":{"compute":{"aggregation_type":"distribution","include_percentiles":true,"path":"@duration"},"event_type":"session","filter":{"query":"source:Example-Get_a_rum_based_metric_returns_OK_response_1770853070"},"group_by":[{"path":"@browser.name","tag_name":"browser_name"}],"uniqueness":{"when":"match"}}},{"id":"testjavacreatearumbasedmetricreturnsconflictresponse1772165946","type":"rum_metrics","attributes":{"compute":{"aggregation_type":"distribution","include_percentiles":true,"path":"@duration"},"event_type":"session","filter":{"query":"source:Test-Java-Create_a_rum_based_metric_returns_Conflict_response-1772165946"},"group_by":[{"path":"@browser.name","tag_name":"browser_name"}],"uniqueness":{"when":"match"}}},{"id":"testrustupdatearumbasedmetricreturnsnotfoundresponse1772344054","type":"rum_metrics","attributes":{"compute":{"aggregation_type":"distribution","include_percentiles":true,"path":"@duration"},"event_type":"session","filter":{"query":"source:Test-Rust-Update_a_rum_based_metric_returns_Not_Found_response-1772344054"},"group_by":[{"path":"@browser.name","tag_name":"browser_name"}],"uniqueness":{"when":"match"}}},{"id":"testtypescriptcreatearumbasedmetricreturnsconflictresponse1773378034","type":"rum_metrics","attributes":{"compute":{"aggregation_type":"distribution","include_percentiles":true,"path":"@duration"},"event_type":"session","filter":{"query":"source:Test-Typescript-Create_a_rum_based_metric_returns_Conflict_response-1773378034"},"group_by":[{"path":"@browser.name","tag_name":"browser_name"}],"uniqueness":{"when":"match"}}},{"id":"examplecreatearumbasedmetricreturnscreatedresponse1775676024","type":"rum_metrics","attributes":{"compute":{"aggregation_type":"distribution","include_percentiles":true,"path":"@duration"},"event_type":"session","filter":{"query":"@service:web-ui"},"group_by":[{"path":"@browser.name","tag_name":"browser_name"}],"uniqueness":{"when":"match"}}},{"id":"testrustupdatearumbasedmetricreturnsbadrequestresponse1776146576","type":"rum_metrics","attributes":{"compute":{"aggregation_type":"distribution","include_percentiles":true,"path":"@duration"},"event_type":"session","filter":{"query":"source:Test-Rust-Update_a_rum_based_metric_returns_Bad_Request_response-1776146576"},"group_by":[{"path":"@browser.name","tag_name":"browser_name"}],"uniqueness":{"when":"match"}}},{"id":"examplegetarumbasedmetricreturnsokresponse1777837070","type":"rum_metrics","attributes":{"compute":{"aggregation_type":"distribution","include_percentiles":true,"path":"@duration"},"event_type":"session","filter":{"query":"source:Example-Get_a_rum_based_metric_returns_OK_response_1777837070"},"group_by":[{"path":"@browser.name","tag_name":"browser_name"}],"uniqueness":{"when":"match"}}},{"id":"testtypescriptgetarumbasedmetricreturnsokresponse1778218442","type":"rum_metrics","attributes":{"compute":{"aggregation_type":"distribution","include_percentiles":true,"path":"@duration"},"event_type":"session","filter":{"query":"source:Test-Typescript-Get_a_rum_based_metric_returns_OK_response-1778218442"},"group_by":[{"path":"@browser.name","tag_name":"browser_name"}],"uniqueness":{"when":"match"}}},{"id":"examplecreatearumbasedmetricreturnscreatedresponse1778239224","type":"rum_metrics","attributes":{"compute":{"aggregation_type":"distribution","include_percentiles":true,"path":"@duration"},"event_type":"session","filter":{"query":"@service:web-ui"},"group_by":[{"path":"@browser.name","tag_name":"browser_name"}],"uniqueness":{"when":"match"}}},{"id":"testrubyupdatearumbasedmetricreturnsconflictresponse1778815556","type":"rum_metrics","attributes":{"compute":{"aggregation_type":"distribution","include_percentiles":true,"path":"@duration"},"event_type":"session","filter":{"query":"source:Test-Ruby-Update_a_rum_based_metric_returns_Conflict_response-1778815556"},"group_by":[{"path":"@browser.name","tag_name":"browser_name"}],"uniqueness":{"when":"match"}}},{"id":"testjavadeletearumbasedmetricreturnsnocontentresponse1778993479","type":"rum_metrics","attributes":{"compute":{"aggregation_type":"distribution","include_percentiles":true,"path":"@duration"},"event_type":"session","filter":{"query":"source:Test-Java-Delete_a_rum_based_metric_returns_No_Content_response-1778993479"},"group_by":[{"path":"@browser.name","tag_name":"browser_name"}],"uniqueness":{"when":"match"}}},{"id":"examplegetarumbasedmetricreturnsokresponse1779176270","type":"rum_metrics","attributes":{"compute":{"aggregation_type":"distribution","include_percentiles":true,"path":"@duration"},"event_type":"session","filter":{"query":"source:Example-Get_a_rum_based_metric_returns_OK_response_1779176270"},"group_by":[{"path":"@browser.name","tag_name":"browser_name"}],"uniqueness":{"when":"match"}}},{"id":"testrubycreatearumbasedmetricreturnsconflictresponse1779334157","type":"rum_metrics","attributes":{"compute":{"aggregation_type":"distribution","include_percentiles":true,"path":"@duration"},"event_type":"session","filter":{"query":"source:Test-Ruby-Create_a_rum_based_metric_returns_Conflict_response-1779334157"},"group_by":[{"path":"@browser.name","tag_name":"browser_name"}],"uniqueness":{"when":"match"}}},{"id":"examplecreatearumbasedmetricreturnscreatedresponse1779434424","type":"rum_metrics","attributes":{"compute":{"aggregation_type":"distribution","include_percentiles":true,"path":"@duration"},"event_type":"session","filter":{"query":"@service:web-ui"},"group_by":[{"path":"@browser.name","tag_name":"browser_name"}],"uniqueness":{"when":"match"}}},{"id":"tf_TestAccRumMetricAttributes_local_1779629264","type":"rum_metrics","attributes":{"compute":{"aggregation_type":"distribution","include_percentiles":true,"path":"@duration"},"event_type":"action","group_by":[]}},{"id":"testrubyupdatearumbasedmetricreturnsokresponse1780025259","type":"rum_metrics","attributes":{"compute":{"aggregation_type":"distribution","include_percentiles":true,"path":"@duration"},"event_type":"session","filter":{"query":"source:Test-Ruby-Update_a_rum_based_metric_returns_OK_response-1780025259"},"group_by":[{"path":"@browser.name","tag_name":"browser_name"}],"uniqueness":{"when":"match"}}},{"id":"tf_TestAccRumMetricAttributes_local_1780063691","type":"rum_metrics","attributes":{"compute":{"aggregation_type":"count"},"event_type":"action","group_by":[]}},{"id":"testcreatearumbasedmetricreturnsconflictresponse1780393737","type":"rum_metrics","attributes":{"compute":{"aggregation_type":"distribution","include_percentiles":true,"path":"@duration"},"event_type":"session","filter":{"query":"source:Test-Create_a_RUM_based_metric_returns_Conflict_response-1780393737"},"group_by":[{"path":"@browser.name","tag_name":"browser_name"}],"uniqueness":{"when":"match"}}}]}' + headers: + Content-Type: + - application/vnd.api+json + status: + code: 200 + message: OK +recorded_with: VCR 6.0.0 diff --git a/cassettes/features/v2/rum_metrics/Get-all-rum-based-metrics-returns-OK-response.frozen b/cassettes/features/v2/rum_metrics/Get-all-rum-based-metrics-returns-OK-response.frozen deleted file mode 100644 index ae9abee582f8..000000000000 --- a/cassettes/features/v2/rum_metrics/Get-all-rum-based-metrics-returns-OK-response.frozen +++ /dev/null @@ -1 +0,0 @@ -2024-11-28T15:31:23.558Z \ No newline at end of file diff --git a/cassettes/features/v2/rum_metrics/Get-all-rum-based-metrics-returns-OK-response.yml b/cassettes/features/v2/rum_metrics/Get-all-rum-based-metrics-returns-OK-response.yml deleted file mode 100644 index 90379f6c352b..000000000000 --- a/cassettes/features/v2/rum_metrics/Get-all-rum-based-metrics-returns-OK-response.yml +++ /dev/null @@ -1,20 +0,0 @@ -http_interactions: -- recorded_at: Thu, 28 Nov 2024 15:31:23 GMT - request: - body: null - headers: - Accept: - - application/json - method: GET - uri: https://api.datadoghq.com/api/v2/rum/config/metrics - response: - body: - encoding: UTF-8 - string: '{"data":[]}' - headers: - Content-Type: - - application/vnd.api+json - status: - code: 200 - message: OK -recorded_with: VCR 6.0.0 diff --git a/cassettes/features/v2/rum_metrics/Update-a-RUM-based-metric-returns-Bad-Request-response.frozen b/cassettes/features/v2/rum_metrics/Update-a-RUM-based-metric-returns-Bad-Request-response.frozen new file mode 100644 index 000000000000..f936fad07956 --- /dev/null +++ b/cassettes/features/v2/rum_metrics/Update-a-RUM-based-metric-returns-Bad-Request-response.frozen @@ -0,0 +1 @@ +2026-06-02T12:32:41.688Z \ No newline at end of file diff --git a/cassettes/features/v2/rum_metrics/Update-a-rum-based-metric-returns-Bad-Request-response.yml b/cassettes/features/v2/rum_metrics/Update-a-RUM-based-metric-returns-Bad-Request-response.yml similarity index 77% rename from cassettes/features/v2/rum_metrics/Update-a-rum-based-metric-returns-Bad-Request-response.yml rename to cassettes/features/v2/rum_metrics/Update-a-RUM-based-metric-returns-Bad-Request-response.yml index 7b1369473214..9e8a9860678a 100644 --- a/cassettes/features/v2/rum_metrics/Update-a-rum-based-metric-returns-Bad-Request-response.yml +++ b/cassettes/features/v2/rum_metrics/Update-a-RUM-based-metric-returns-Bad-Request-response.yml @@ -1,9 +1,9 @@ http_interactions: -- recorded_at: Thu, 28 Nov 2024 15:31:23 GMT +- recorded_at: Tue, 02 Jun 2026 12:32:41 GMT request: body: encoding: UTF-8 - string: '{"data":{"attributes":{"compute":{"aggregation_type":"distribution","include_percentiles":true,"path":"@duration"},"event_type":"session","filter":{"query":"source:Test-Update_a_rum_based_metric_returns_Bad_Request_response-1732807883"},"group_by":[{"path":"@browser.name","tag_name":"browser_name"}],"uniqueness":{"when":"match"}},"id":"testupdatearumbasedmetricreturnsbadrequestresponse1732807883","type":"rum_metrics"}}' + string: '{"data":{"attributes":{"compute":{"aggregation_type":"distribution","include_percentiles":true,"path":"@duration"},"event_type":"session","filter":{"query":"source:Test-Update_a_RUM_based_metric_returns_Bad_Request_response-1780403561"},"group_by":[{"path":"@browser.name","tag_name":"browser_name"}],"uniqueness":{"when":"match"}},"id":"testupdatearumbasedmetricreturnsbadrequestresponse1780403561","type":"rum_metrics"}}' headers: Accept: - application/json @@ -14,14 +14,14 @@ http_interactions: response: body: encoding: UTF-8 - string: '{"data":{"id":"testupdatearumbasedmetricreturnsbadrequestresponse1732807883","type":"rum_metrics","attributes":{"compute":{"aggregation_type":"distribution","include_percentiles":true,"path":"@duration"},"event_type":"session","filter":{"query":"source:Test-Update_a_rum_based_metric_returns_Bad_Request_response-1732807883"},"group_by":[{"path":"@browser.name","tag_name":"browser_name"}],"uniqueness":{"when":"match"}}}}' + string: '{"data":{"id":"testupdatearumbasedmetricreturnsbadrequestresponse1780403561","type":"rum_metrics","attributes":{"compute":{"aggregation_type":"distribution","include_percentiles":true,"path":"@duration"},"event_type":"session","filter":{"query":"source:Test-Update_a_RUM_based_metric_returns_Bad_Request_response-1780403561"},"group_by":[{"path":"@browser.name","tag_name":"browser_name"}],"uniqueness":{"when":"match"}}}}' headers: Content-Type: - application/vnd.api+json status: code: 201 message: Created -- recorded_at: Thu, 28 Nov 2024 15:31:23 GMT +- recorded_at: Tue, 02 Jun 2026 12:32:41 GMT request: body: encoding: UTF-8 @@ -32,7 +32,7 @@ http_interactions: Content-Type: - application/json method: PATCH - uri: https://api.datadoghq.com/api/v2/rum/config/metrics/testupdatearumbasedmetricreturnsbadrequestresponse1732807883 + uri: https://api.datadoghq.com/api/v2/rum/config/metrics/testupdatearumbasedmetricreturnsbadrequestresponse1780403561 response: body: encoding: UTF-8 @@ -44,14 +44,14 @@ http_interactions: status: code: 400 message: Bad Request -- recorded_at: Thu, 28 Nov 2024 15:31:23 GMT +- recorded_at: Tue, 02 Jun 2026 12:32:41 GMT request: body: null headers: Accept: - '*/*' method: DELETE - uri: https://api.datadoghq.com/api/v2/rum/config/metrics/testupdatearumbasedmetricreturnsbadrequestresponse1732807883 + uri: https://api.datadoghq.com/api/v2/rum/config/metrics/testupdatearumbasedmetricreturnsbadrequestresponse1780403561 response: body: encoding: UTF-8 diff --git a/cassettes/features/v2/rum_metrics/Update-a-RUM-based-metric-returns-Conflict-response.frozen b/cassettes/features/v2/rum_metrics/Update-a-RUM-based-metric-returns-Conflict-response.frozen new file mode 100644 index 000000000000..bfc7014f2b7c --- /dev/null +++ b/cassettes/features/v2/rum_metrics/Update-a-RUM-based-metric-returns-Conflict-response.frozen @@ -0,0 +1 @@ +2026-06-02T12:32:42.946Z \ No newline at end of file diff --git a/cassettes/features/v2/rum_metrics/Update-a-rum-based-metric-returns-Conflict-response.yml b/cassettes/features/v2/rum_metrics/Update-a-RUM-based-metric-returns-Conflict-response.yml similarity index 77% rename from cassettes/features/v2/rum_metrics/Update-a-rum-based-metric-returns-Conflict-response.yml rename to cassettes/features/v2/rum_metrics/Update-a-RUM-based-metric-returns-Conflict-response.yml index ca13d6f45cc9..5d43651989d3 100644 --- a/cassettes/features/v2/rum_metrics/Update-a-rum-based-metric-returns-Conflict-response.yml +++ b/cassettes/features/v2/rum_metrics/Update-a-RUM-based-metric-returns-Conflict-response.yml @@ -1,9 +1,9 @@ http_interactions: -- recorded_at: Thu, 28 Nov 2024 15:31:25 GMT +- recorded_at: Tue, 02 Jun 2026 12:32:42 GMT request: body: encoding: UTF-8 - string: '{"data":{"attributes":{"compute":{"aggregation_type":"distribution","include_percentiles":true,"path":"@duration"},"event_type":"session","filter":{"query":"source:Test-Update_a_rum_based_metric_returns_Conflict_response-1732807885"},"group_by":[{"path":"@browser.name","tag_name":"browser_name"}],"uniqueness":{"when":"match"}},"id":"testupdatearumbasedmetricreturnsconflictresponse1732807885","type":"rum_metrics"}}' + string: '{"data":{"attributes":{"compute":{"aggregation_type":"distribution","include_percentiles":true,"path":"@duration"},"event_type":"session","filter":{"query":"source:Test-Update_a_RUM_based_metric_returns_Conflict_response-1780403562"},"group_by":[{"path":"@browser.name","tag_name":"browser_name"}],"uniqueness":{"when":"match"}},"id":"testupdatearumbasedmetricreturnsconflictresponse1780403562","type":"rum_metrics"}}' headers: Accept: - application/json @@ -14,14 +14,14 @@ http_interactions: response: body: encoding: UTF-8 - string: '{"data":{"id":"testupdatearumbasedmetricreturnsconflictresponse1732807885","type":"rum_metrics","attributes":{"compute":{"aggregation_type":"distribution","include_percentiles":true,"path":"@duration"},"event_type":"session","filter":{"query":"source:Test-Update_a_rum_based_metric_returns_Conflict_response-1732807885"},"group_by":[{"path":"@browser.name","tag_name":"browser_name"}],"uniqueness":{"when":"match"}}}}' + string: '{"data":{"id":"testupdatearumbasedmetricreturnsconflictresponse1780403562","type":"rum_metrics","attributes":{"compute":{"aggregation_type":"distribution","include_percentiles":true,"path":"@duration"},"event_type":"session","filter":{"query":"source:Test-Update_a_RUM_based_metric_returns_Conflict_response-1780403562"},"group_by":[{"path":"@browser.name","tag_name":"browser_name"}],"uniqueness":{"when":"match"}}}}' headers: Content-Type: - application/vnd.api+json status: code: 201 message: Created -- recorded_at: Thu, 28 Nov 2024 15:31:25 GMT +- recorded_at: Tue, 02 Jun 2026 12:32:42 GMT request: body: encoding: UTF-8 @@ -32,7 +32,7 @@ http_interactions: Content-Type: - application/json method: PATCH - uri: https://api.datadoghq.com/api/v2/rum/config/metrics/testupdatearumbasedmetricreturnsconflictresponse1732807885 + uri: https://api.datadoghq.com/api/v2/rum/config/metrics/testupdatearumbasedmetricreturnsconflictresponse1780403562 response: body: encoding: UTF-8 @@ -44,14 +44,14 @@ http_interactions: status: code: 409 message: Conflict -- recorded_at: Thu, 28 Nov 2024 15:31:25 GMT +- recorded_at: Tue, 02 Jun 2026 12:32:42 GMT request: body: null headers: Accept: - '*/*' method: DELETE - uri: https://api.datadoghq.com/api/v2/rum/config/metrics/testupdatearumbasedmetricreturnsconflictresponse1732807885 + uri: https://api.datadoghq.com/api/v2/rum/config/metrics/testupdatearumbasedmetricreturnsconflictresponse1780403562 response: body: encoding: UTF-8 diff --git a/cassettes/features/v2/rum_metrics/Update-a-RUM-based-metric-returns-Not-Found-response.frozen b/cassettes/features/v2/rum_metrics/Update-a-RUM-based-metric-returns-Not-Found-response.frozen new file mode 100644 index 000000000000..e256891d8120 --- /dev/null +++ b/cassettes/features/v2/rum_metrics/Update-a-RUM-based-metric-returns-Not-Found-response.frozen @@ -0,0 +1 @@ +2026-06-02T12:32:44.259Z \ No newline at end of file diff --git a/cassettes/features/v2/rum_metrics/Update-a-rum-based-metric-returns-Not-Found-response.yml b/cassettes/features/v2/rum_metrics/Update-a-RUM-based-metric-returns-Not-Found-response.yml similarity index 80% rename from cassettes/features/v2/rum_metrics/Update-a-rum-based-metric-returns-Not-Found-response.yml rename to cassettes/features/v2/rum_metrics/Update-a-RUM-based-metric-returns-Not-Found-response.yml index fca6abbce0dd..738b9b707ae2 100644 --- a/cassettes/features/v2/rum_metrics/Update-a-rum-based-metric-returns-Not-Found-response.yml +++ b/cassettes/features/v2/rum_metrics/Update-a-RUM-based-metric-returns-Not-Found-response.yml @@ -1,9 +1,9 @@ http_interactions: -- recorded_at: Thu, 28 Nov 2024 15:31:26 GMT +- recorded_at: Tue, 02 Jun 2026 12:32:44 GMT request: body: encoding: UTF-8 - string: '{"data":{"attributes":{"compute":{"aggregation_type":"distribution","include_percentiles":true,"path":"@duration"},"event_type":"session","filter":{"query":"source:Test-Update_a_rum_based_metric_returns_Not_Found_response-1732807886"},"group_by":[{"path":"@browser.name","tag_name":"browser_name"}],"uniqueness":{"when":"match"}},"id":"testupdatearumbasedmetricreturnsnotfoundresponse1732807886","type":"rum_metrics"}}' + string: '{"data":{"attributes":{"compute":{"aggregation_type":"distribution","include_percentiles":true,"path":"@duration"},"event_type":"session","filter":{"query":"source:Test-Update_a_RUM_based_metric_returns_Not_Found_response-1780403564"},"group_by":[{"path":"@browser.name","tag_name":"browser_name"}],"uniqueness":{"when":"match"}},"id":"testupdatearumbasedmetricreturnsnotfoundresponse1780403564","type":"rum_metrics"}}' headers: Accept: - application/json @@ -14,14 +14,14 @@ http_interactions: response: body: encoding: UTF-8 - string: '{"data":{"id":"testupdatearumbasedmetricreturnsnotfoundresponse1732807886","type":"rum_metrics","attributes":{"compute":{"aggregation_type":"distribution","include_percentiles":true,"path":"@duration"},"event_type":"session","filter":{"query":"source:Test-Update_a_rum_based_metric_returns_Not_Found_response-1732807886"},"group_by":[{"path":"@browser.name","tag_name":"browser_name"}],"uniqueness":{"when":"match"}}}}' + string: '{"data":{"id":"testupdatearumbasedmetricreturnsnotfoundresponse1780403564","type":"rum_metrics","attributes":{"compute":{"aggregation_type":"distribution","include_percentiles":true,"path":"@duration"},"event_type":"session","filter":{"query":"source:Test-Update_a_RUM_based_metric_returns_Not_Found_response-1780403564"},"group_by":[{"path":"@browser.name","tag_name":"browser_name"}],"uniqueness":{"when":"match"}}}}' headers: Content-Type: - application/vnd.api+json status: code: 201 message: Created -- recorded_at: Thu, 28 Nov 2024 15:31:26 GMT +- recorded_at: Tue, 02 Jun 2026 12:32:44 GMT request: body: encoding: UTF-8 @@ -44,14 +44,14 @@ http_interactions: status: code: 404 message: Not Found -- recorded_at: Thu, 28 Nov 2024 15:31:26 GMT +- recorded_at: Tue, 02 Jun 2026 12:32:44 GMT request: body: null headers: Accept: - '*/*' method: DELETE - uri: https://api.datadoghq.com/api/v2/rum/config/metrics/testupdatearumbasedmetricreturnsnotfoundresponse1732807886 + uri: https://api.datadoghq.com/api/v2/rum/config/metrics/testupdatearumbasedmetricreturnsnotfoundresponse1780403564 response: body: encoding: UTF-8 diff --git a/cassettes/features/v2/rum_metrics/Update-a-RUM-based-metric-returns-OK-response.frozen b/cassettes/features/v2/rum_metrics/Update-a-RUM-based-metric-returns-OK-response.frozen new file mode 100644 index 000000000000..405852dc646c --- /dev/null +++ b/cassettes/features/v2/rum_metrics/Update-a-RUM-based-metric-returns-OK-response.frozen @@ -0,0 +1 @@ +2026-06-02T12:32:46.608Z \ No newline at end of file diff --git a/cassettes/features/v2/rum_metrics/Update-a-rum-based-metric-returns-OK-response.yml b/cassettes/features/v2/rum_metrics/Update-a-RUM-based-metric-returns-OK-response.yml similarity index 76% rename from cassettes/features/v2/rum_metrics/Update-a-rum-based-metric-returns-OK-response.yml rename to cassettes/features/v2/rum_metrics/Update-a-RUM-based-metric-returns-OK-response.yml index 17f202f4ec58..cbc345941640 100644 --- a/cassettes/features/v2/rum_metrics/Update-a-rum-based-metric-returns-OK-response.yml +++ b/cassettes/features/v2/rum_metrics/Update-a-RUM-based-metric-returns-OK-response.yml @@ -1,9 +1,9 @@ http_interactions: -- recorded_at: Thu, 28 Nov 2024 15:31:27 GMT +- recorded_at: Tue, 02 Jun 2026 12:32:46 GMT request: body: encoding: UTF-8 - string: '{"data":{"attributes":{"compute":{"aggregation_type":"distribution","include_percentiles":true,"path":"@duration"},"event_type":"session","filter":{"query":"source:Test-Update_a_rum_based_metric_returns_OK_response-1732807887"},"group_by":[{"path":"@browser.name","tag_name":"browser_name"}],"uniqueness":{"when":"match"}},"id":"testupdatearumbasedmetricreturnsokresponse1732807887","type":"rum_metrics"}}' + string: '{"data":{"attributes":{"compute":{"aggregation_type":"distribution","include_percentiles":true,"path":"@duration"},"event_type":"session","filter":{"query":"source:Test-Update_a_RUM_based_metric_returns_OK_response-1780403566"},"group_by":[{"path":"@browser.name","tag_name":"browser_name"}],"uniqueness":{"when":"match"}},"id":"testupdatearumbasedmetricreturnsokresponse1780403566","type":"rum_metrics"}}' headers: Accept: - application/json @@ -14,43 +14,43 @@ http_interactions: response: body: encoding: UTF-8 - string: '{"data":{"id":"testupdatearumbasedmetricreturnsokresponse1732807887","type":"rum_metrics","attributes":{"compute":{"aggregation_type":"distribution","include_percentiles":true,"path":"@duration"},"event_type":"session","filter":{"query":"source:Test-Update_a_rum_based_metric_returns_OK_response-1732807887"},"group_by":[{"path":"@browser.name","tag_name":"browser_name"}],"uniqueness":{"when":"match"}}}}' + string: '{"data":{"id":"testupdatearumbasedmetricreturnsokresponse1780403566","type":"rum_metrics","attributes":{"compute":{"aggregation_type":"distribution","include_percentiles":true,"path":"@duration"},"event_type":"session","filter":{"query":"source:Test-Update_a_RUM_based_metric_returns_OK_response-1780403566"},"group_by":[{"path":"@browser.name","tag_name":"browser_name"}],"uniqueness":{"when":"match"}}}}' headers: Content-Type: - application/vnd.api+json status: code: 201 message: Created -- recorded_at: Thu, 28 Nov 2024 15:31:27 GMT +- recorded_at: Tue, 02 Jun 2026 12:32:46 GMT request: body: encoding: UTF-8 - string: '{"data":{"attributes":{"compute":{"include_percentiles":false},"filter":{"query":"@service:rum-config"},"group_by":[{"path":"@browser.version","tag_name":"browser_version"}]},"id":"testupdatearumbasedmetricreturnsokresponse1732807887","type":"rum_metrics"}}' + string: '{"data":{"attributes":{"compute":{"include_percentiles":false},"filter":{"query":"@service:rum-config"},"group_by":[{"path":"@browser.version","tag_name":"browser_version"}]},"id":"testupdatearumbasedmetricreturnsokresponse1780403566","type":"rum_metrics"}}' headers: Accept: - application/json Content-Type: - application/json method: PATCH - uri: https://api.datadoghq.com/api/v2/rum/config/metrics/testupdatearumbasedmetricreturnsokresponse1732807887 + uri: https://api.datadoghq.com/api/v2/rum/config/metrics/testupdatearumbasedmetricreturnsokresponse1780403566 response: body: encoding: UTF-8 - string: '{"data":{"id":"testupdatearumbasedmetricreturnsokresponse1732807887","type":"rum_metrics","attributes":{"compute":{"aggregation_type":"distribution","include_percentiles":false,"path":"@duration"},"event_type":"session","filter":{"query":"@service:rum-config"},"group_by":[{"path":"@browser.version","tag_name":"browser_version"}],"uniqueness":{"when":"match"}}}}' + string: '{"data":{"id":"testupdatearumbasedmetricreturnsokresponse1780403566","type":"rum_metrics","attributes":{"compute":{"aggregation_type":"distribution","include_percentiles":false,"path":"@duration"},"event_type":"session","filter":{"query":"@service:rum-config"},"group_by":[{"path":"@browser.version","tag_name":"browser_version"}],"uniqueness":{"when":"match"}}}}' headers: Content-Type: - application/vnd.api+json status: code: 200 message: OK -- recorded_at: Thu, 28 Nov 2024 15:31:27 GMT +- recorded_at: Tue, 02 Jun 2026 12:32:46 GMT request: body: null headers: Accept: - '*/*' method: DELETE - uri: https://api.datadoghq.com/api/v2/rum/config/metrics/testupdatearumbasedmetricreturnsokresponse1732807887 + uri: https://api.datadoghq.com/api/v2/rum/config/metrics/testupdatearumbasedmetricreturnsokresponse1780403566 response: body: encoding: UTF-8 diff --git a/cassettes/features/v2/rum_metrics/Update-a-rum-based-metric-returns-Bad-Request-response.frozen b/cassettes/features/v2/rum_metrics/Update-a-rum-based-metric-returns-Bad-Request-response.frozen deleted file mode 100644 index 72e1a51e58a3..000000000000 --- a/cassettes/features/v2/rum_metrics/Update-a-rum-based-metric-returns-Bad-Request-response.frozen +++ /dev/null @@ -1 +0,0 @@ -2024-11-28T15:31:23.878Z \ No newline at end of file diff --git a/cassettes/features/v2/rum_metrics/Update-a-rum-based-metric-returns-Conflict-response.frozen b/cassettes/features/v2/rum_metrics/Update-a-rum-based-metric-returns-Conflict-response.frozen deleted file mode 100644 index cfe5fc951f10..000000000000 --- a/cassettes/features/v2/rum_metrics/Update-a-rum-based-metric-returns-Conflict-response.frozen +++ /dev/null @@ -1 +0,0 @@ -2024-11-28T15:31:25.162Z \ No newline at end of file diff --git a/cassettes/features/v2/rum_metrics/Update-a-rum-based-metric-returns-Not-Found-response.frozen b/cassettes/features/v2/rum_metrics/Update-a-rum-based-metric-returns-Not-Found-response.frozen deleted file mode 100644 index 619b48a9ebf3..000000000000 --- a/cassettes/features/v2/rum_metrics/Update-a-rum-based-metric-returns-Not-Found-response.frozen +++ /dev/null @@ -1 +0,0 @@ -2024-11-28T15:31:26.276Z \ No newline at end of file diff --git a/cassettes/features/v2/rum_metrics/Update-a-rum-based-metric-returns-OK-response.frozen b/cassettes/features/v2/rum_metrics/Update-a-rum-based-metric-returns-OK-response.frozen deleted file mode 100644 index 60f066284bac..000000000000 --- a/cassettes/features/v2/rum_metrics/Update-a-rum-based-metric-returns-OK-response.frozen +++ /dev/null @@ -1 +0,0 @@ -2024-11-28T15:31:27.438Z \ No newline at end of file diff --git a/examples/v1/dashboards/CreateDashboard_2932151909.rb b/examples/v1/dashboards/CreateDashboard_2844071429.rb similarity index 95% rename from examples/v1/dashboards/CreateDashboard_2932151909.rb rename to examples/v1/dashboards/CreateDashboard_2844071429.rb index 66734e573da7..74452ac59a18 100644 --- a/examples/v1/dashboards/CreateDashboard_2932151909.rb +++ b/examples/v1/dashboards/CreateDashboard_2844071429.rb @@ -1,4 +1,4 @@ -# Create a new dashboard with sankey widget and rum data source +# Create a new dashboard with sankey widget and RUM data source require "datadog_api_client" api_instance = DatadogAPIClient::V1::DashboardsAPI.new diff --git a/examples/v2/metrics/QueryScalarData_2312509843.rb b/examples/v2/metrics/QueryScalarData_2086017331.rb similarity index 94% rename from examples/v2/metrics/QueryScalarData_2312509843.rb rename to examples/v2/metrics/QueryScalarData_2086017331.rb index 1f7321b00e88..57b06de34f05 100644 --- a/examples/v2/metrics/QueryScalarData_2312509843.rb +++ b/examples/v2/metrics/QueryScalarData_2086017331.rb @@ -1,4 +1,4 @@ -# Scalar cross product query with rum data source returns "OK" response +# Scalar cross product query with RUM data source returns "OK" response require "datadog_api_client" api_instance = DatadogAPIClient::V2::MetricsAPI.new diff --git a/examples/v2/metrics/QueryTimeseriesData_123149143.rb b/examples/v2/metrics/QueryTimeseriesData_4190640887.rb similarity index 95% rename from examples/v2/metrics/QueryTimeseriesData_123149143.rb rename to examples/v2/metrics/QueryTimeseriesData_4190640887.rb index a8ffc938ae68..68ab5a4e9a2e 100644 --- a/examples/v2/metrics/QueryTimeseriesData_123149143.rb +++ b/examples/v2/metrics/QueryTimeseriesData_4190640887.rb @@ -1,4 +1,4 @@ -# Timeseries cross product query with rum data source returns "OK" response +# Timeseries cross product query with RUM data source returns "OK" response require "datadog_api_client" api_instance = DatadogAPIClient::V2::MetricsAPI.new diff --git a/examples/v2/rum-metrics/CreateRumMetric.rb b/examples/v2/rum-metrics/CreateRumMetric.rb index c8aebcab5785..68e6ec0ff52a 100644 --- a/examples/v2/rum-metrics/CreateRumMetric.rb +++ b/examples/v2/rum-metrics/CreateRumMetric.rb @@ -1,4 +1,4 @@ -# Create a rum-based metric returns "Created" response +# Create a RUM-based metric returns "Created" response require "datadog_api_client" api_instance = DatadogAPIClient::V2::RumMetricsAPI.new diff --git a/examples/v2/rum-metrics/DeleteRumMetric.rb b/examples/v2/rum-metrics/DeleteRumMetric.rb index a426bd84ae5c..1790931720f2 100644 --- a/examples/v2/rum-metrics/DeleteRumMetric.rb +++ b/examples/v2/rum-metrics/DeleteRumMetric.rb @@ -1,4 +1,4 @@ -# Delete a rum-based metric returns "No Content" response +# Delete a RUM-based metric returns "No Content" response require "datadog_api_client" api_instance = DatadogAPIClient::V2::RumMetricsAPI.new diff --git a/examples/v2/rum-metrics/GetRumMetric.rb b/examples/v2/rum-metrics/GetRumMetric.rb index f751e27dd455..74f773565960 100644 --- a/examples/v2/rum-metrics/GetRumMetric.rb +++ b/examples/v2/rum-metrics/GetRumMetric.rb @@ -1,4 +1,4 @@ -# Get a rum-based metric returns "OK" response +# Get a RUM-based metric returns "OK" response require "datadog_api_client" api_instance = DatadogAPIClient::V2::RumMetricsAPI.new diff --git a/examples/v2/rum-metrics/ListRumMetrics.rb b/examples/v2/rum-metrics/ListRumMetrics.rb index 71f244b36667..6bae33120352 100644 --- a/examples/v2/rum-metrics/ListRumMetrics.rb +++ b/examples/v2/rum-metrics/ListRumMetrics.rb @@ -1,4 +1,4 @@ -# Get all rum-based metrics returns "OK" response +# Get all RUM-based metrics returns "OK" response require "datadog_api_client" api_instance = DatadogAPIClient::V2::RumMetricsAPI.new diff --git a/examples/v2/rum-metrics/UpdateRumMetric.rb b/examples/v2/rum-metrics/UpdateRumMetric.rb index daa74fbd7afe..35faa1162f73 100644 --- a/examples/v2/rum-metrics/UpdateRumMetric.rb +++ b/examples/v2/rum-metrics/UpdateRumMetric.rb @@ -1,4 +1,4 @@ -# Update a rum-based metric returns "OK" response +# Update a RUM-based metric returns "OK" response require "datadog_api_client" api_instance = DatadogAPIClient::V2::RumMetricsAPI.new diff --git a/examples/v2/rum-replay-playlists/AddRumReplaySessionToPlaylist.rb b/examples/v2/rum-replay-playlists/AddRumReplaySessionToPlaylist.rb index beacfc78db98..2d789f792208 100644 --- a/examples/v2/rum-replay-playlists/AddRumReplaySessionToPlaylist.rb +++ b/examples/v2/rum-replay-playlists/AddRumReplaySessionToPlaylist.rb @@ -1,4 +1,4 @@ -# Add rum replay session to playlist returns "OK" response +# Add RUM replay session to playlist returns "OK" response require "datadog_api_client" api_instance = DatadogAPIClient::V2::RumReplayPlaylistsAPI.new diff --git a/examples/v2/rum-replay-playlists/BulkRemoveRumReplayPlaylistSessions.rb b/examples/v2/rum-replay-playlists/BulkRemoveRumReplayPlaylistSessions.rb index 1871722a900c..f41abe8df8f8 100644 --- a/examples/v2/rum-replay-playlists/BulkRemoveRumReplayPlaylistSessions.rb +++ b/examples/v2/rum-replay-playlists/BulkRemoveRumReplayPlaylistSessions.rb @@ -1,4 +1,4 @@ -# Bulk remove rum replay playlist sessions returns "No Content" response +# Bulk remove RUM replay playlist sessions returns "No Content" response require "datadog_api_client" api_instance = DatadogAPIClient::V2::RumReplayPlaylistsAPI.new diff --git a/examples/v2/rum-replay-playlists/CreateRumReplayPlaylist.rb b/examples/v2/rum-replay-playlists/CreateRumReplayPlaylist.rb index 6ab68906d030..2e678346042d 100644 --- a/examples/v2/rum-replay-playlists/CreateRumReplayPlaylist.rb +++ b/examples/v2/rum-replay-playlists/CreateRumReplayPlaylist.rb @@ -1,4 +1,4 @@ -# Create rum replay playlist returns "Created" response +# Create RUM replay playlist returns "Created" response require "datadog_api_client" api_instance = DatadogAPIClient::V2::RumReplayPlaylistsAPI.new diff --git a/examples/v2/rum-replay-playlists/DeleteRumReplayPlaylist.rb b/examples/v2/rum-replay-playlists/DeleteRumReplayPlaylist.rb index 12ebc6dc097a..1310d6e83974 100644 --- a/examples/v2/rum-replay-playlists/DeleteRumReplayPlaylist.rb +++ b/examples/v2/rum-replay-playlists/DeleteRumReplayPlaylist.rb @@ -1,4 +1,4 @@ -# Delete rum replay playlist returns "No Content" response +# Delete RUM replay playlist returns "No Content" response require "datadog_api_client" api_instance = DatadogAPIClient::V2::RumReplayPlaylistsAPI.new diff --git a/examples/v2/rum-replay-playlists/GetRumReplayPlaylist.rb b/examples/v2/rum-replay-playlists/GetRumReplayPlaylist.rb index a2641dcc6dd8..d6c6630dfb7c 100644 --- a/examples/v2/rum-replay-playlists/GetRumReplayPlaylist.rb +++ b/examples/v2/rum-replay-playlists/GetRumReplayPlaylist.rb @@ -1,4 +1,4 @@ -# Get rum replay playlist returns "OK" response +# Get RUM replay playlist returns "OK" response require "datadog_api_client" api_instance = DatadogAPIClient::V2::RumReplayPlaylistsAPI.new diff --git a/examples/v2/rum-replay-playlists/ListRumReplayPlaylistSessions.rb b/examples/v2/rum-replay-playlists/ListRumReplayPlaylistSessions.rb index 19ef91c78264..e0e6ccb4fe75 100644 --- a/examples/v2/rum-replay-playlists/ListRumReplayPlaylistSessions.rb +++ b/examples/v2/rum-replay-playlists/ListRumReplayPlaylistSessions.rb @@ -1,4 +1,4 @@ -# List rum replay playlist sessions returns "OK" response +# List RUM replay playlist sessions returns "OK" response require "datadog_api_client" api_instance = DatadogAPIClient::V2::RumReplayPlaylistsAPI.new diff --git a/examples/v2/rum-replay-playlists/ListRumReplayPlaylists.rb b/examples/v2/rum-replay-playlists/ListRumReplayPlaylists.rb index 394612cfdb6c..8e3bb95322c8 100644 --- a/examples/v2/rum-replay-playlists/ListRumReplayPlaylists.rb +++ b/examples/v2/rum-replay-playlists/ListRumReplayPlaylists.rb @@ -1,4 +1,4 @@ -# List rum replay playlists returns "OK" response +# List RUM replay playlists returns "OK" response require "datadog_api_client" api_instance = DatadogAPIClient::V2::RumReplayPlaylistsAPI.new diff --git a/examples/v2/rum-replay-playlists/RemoveRumReplaySessionFromPlaylist.rb b/examples/v2/rum-replay-playlists/RemoveRumReplaySessionFromPlaylist.rb index d3bbdaa43da8..06e99e53993d 100644 --- a/examples/v2/rum-replay-playlists/RemoveRumReplaySessionFromPlaylist.rb +++ b/examples/v2/rum-replay-playlists/RemoveRumReplaySessionFromPlaylist.rb @@ -1,4 +1,4 @@ -# Remove rum replay session from playlist returns "No Content" response +# Remove RUM replay session from playlist returns "No Content" response require "datadog_api_client" api_instance = DatadogAPIClient::V2::RumReplayPlaylistsAPI.new diff --git a/examples/v2/rum-replay-playlists/UpdateRumReplayPlaylist.rb b/examples/v2/rum-replay-playlists/UpdateRumReplayPlaylist.rb index a7d7112e6a40..1c9e5e1e62a9 100644 --- a/examples/v2/rum-replay-playlists/UpdateRumReplayPlaylist.rb +++ b/examples/v2/rum-replay-playlists/UpdateRumReplayPlaylist.rb @@ -1,4 +1,4 @@ -# Update rum replay playlist returns "OK" response +# Update RUM replay playlist returns "OK" response require "datadog_api_client" api_instance = DatadogAPIClient::V2::RumReplayPlaylistsAPI.new diff --git a/examples/v2/rum-replay-viewership/CreateRumReplaySessionWatch.rb b/examples/v2/rum-replay-viewership/CreateRumReplaySessionWatch.rb index 82b2dc1c468a..bf511cf7519c 100644 --- a/examples/v2/rum-replay-viewership/CreateRumReplaySessionWatch.rb +++ b/examples/v2/rum-replay-viewership/CreateRumReplaySessionWatch.rb @@ -1,4 +1,4 @@ -# Create rum replay session watch returns "Created" response +# Create RUM replay session watch returns "Created" response require "datadog_api_client" api_instance = DatadogAPIClient::V2::RumReplayViewershipAPI.new diff --git a/examples/v2/rum-replay-viewership/DeleteRumReplaySessionWatch.rb b/examples/v2/rum-replay-viewership/DeleteRumReplaySessionWatch.rb index c3861e609d05..e767b9ea4559 100644 --- a/examples/v2/rum-replay-viewership/DeleteRumReplaySessionWatch.rb +++ b/examples/v2/rum-replay-viewership/DeleteRumReplaySessionWatch.rb @@ -1,4 +1,4 @@ -# Delete rum replay session watch returns "No Content" response +# Delete RUM replay session watch returns "No Content" response require "datadog_api_client" api_instance = DatadogAPIClient::V2::RumReplayViewershipAPI.new diff --git a/examples/v2/rum-replay-viewership/ListRumReplaySessionWatchers.rb b/examples/v2/rum-replay-viewership/ListRumReplaySessionWatchers.rb index dad817dc284a..7f78e4daa179 100644 --- a/examples/v2/rum-replay-viewership/ListRumReplaySessionWatchers.rb +++ b/examples/v2/rum-replay-viewership/ListRumReplaySessionWatchers.rb @@ -1,4 +1,4 @@ -# List rum replay session watchers returns "OK" response +# List RUM replay session watchers returns "OK" response require "datadog_api_client" api_instance = DatadogAPIClient::V2::RumReplayViewershipAPI.new diff --git a/examples/v2/rum-replay-viewership/ListRumReplayViewershipHistorySessions.rb b/examples/v2/rum-replay-viewership/ListRumReplayViewershipHistorySessions.rb index 882c3ae0aad5..0f858a04151e 100644 --- a/examples/v2/rum-replay-viewership/ListRumReplayViewershipHistorySessions.rb +++ b/examples/v2/rum-replay-viewership/ListRumReplayViewershipHistorySessions.rb @@ -1,4 +1,4 @@ -# List rum replay viewership history sessions returns "OK" response +# List RUM replay viewership history sessions returns "OK" response require "datadog_api_client" api_instance = DatadogAPIClient::V2::RumReplayViewershipAPI.new diff --git a/features/v1/dashboards.feature b/features/v1/dashboards.feature index 65c4c044abf8..932dc22b0b39 100644 --- a/features/v1/dashboards.feature +++ b/features/v1/dashboards.feature @@ -836,6 +836,18 @@ Feature: Dashboards And the response "widgets[0].definition.workflow_id" is equal to "2e055f16-8b6a-4cdd-b452-17a34c44b160" And the response "widgets[0].definition.inputs[0]" is equal to {"name": "environment", "value": "$env.value"} + @team:DataDog/dashboards-backend + Scenario: Create a new dashboard with sankey widget and RUM data source + Given new "CreateDashboard" request + And body from file "dashboards_json_payload/sankey_rum_widget.json" + When the request is sent + Then the response status is 200 OK + And the response "widgets[0].definition.type" is equal to "sankey" + And the response "widgets[0].definition.requests[0].query.data_source" is equal to "rum" + And the response "widgets[0].definition.requests[0].query.query_string" is equal to "@type:view" + And the response "widgets[0].definition.requests[0].query.mode" is equal to "source" + And the response "widgets[0].definition.requests[0].request_type" is equal to "sankey" + @team:DataDog/dashboards-backend Scenario: Create a new dashboard with sankey widget and network data source Given new "CreateDashboard" request @@ -861,18 +873,6 @@ Feature: Dashboards And the response "widgets[0].definition.requests[0].query.mode" is equal to "source" And the response "widgets[0].definition.requests[0].request_type" is equal to "sankey" - @team:DataDog/dashboards-backend - Scenario: Create a new dashboard with sankey widget and rum data source - Given new "CreateDashboard" request - And body from file "dashboards_json_payload/sankey_rum_widget.json" - When the request is sent - Then the response status is 200 OK - And the response "widgets[0].definition.type" is equal to "sankey" - And the response "widgets[0].definition.requests[0].query.data_source" is equal to "rum" - And the response "widgets[0].definition.requests[0].query.query_string" is equal to "@type:view" - And the response "widgets[0].definition.requests[0].query.mode" is equal to "source" - And the response "widgets[0].definition.requests[0].request_type" is equal to "sankey" - @team:DataDog/dashboards-backend Scenario: Create a new dashboard with scatterplot widget Given new "CreateDashboard" request diff --git a/features/v2/metrics.feature b/features/v2/metrics.feature index 114814e21e20..032b561fc6d9 100644 --- a/features/v2/metrics.feature +++ b/features/v2/metrics.feature @@ -344,6 +344,15 @@ Feature: Metrics And the response "data.type" is equal to "scalar_response" And the response "data.attributes.columns[0].name" is equal to "a" + @skip-validation @team:Datadog/timeseries-query + Scenario: Scalar cross product query with RUM data source returns "OK" response + Given a valid "appKeyAuth" key in the system + And new "QueryScalarData" request + And body with value {"data": {"attributes": {"formulas": [{"formula": "a", "limit": {"count": 10, "order": "desc"}}], "from": {{ timestamp('now - 1h') }}000, "queries": [{"data_source": "rum", "name": "a", "compute": {"aggregation": "count"}, "search": {"query": "*"}, "indexes": ["*"]}], "to": {{ timestamp('now') }}000}, "type": "scalar_request"}} + When the request is sent + Then the response status is 200 OK + And the response "data.type" is equal to "scalar_response" + @skip-validation @team:Datadog/timeseries-query Scenario: Scalar cross product query with apm_dependency_stats data source returns "OK" response Given a valid "appKeyAuth" key in the system @@ -479,15 +488,6 @@ Feature: Metrics Then the response status is 200 OK And the response "data.type" is equal to "scalar_response" - @skip-validation @team:Datadog/timeseries-query - Scenario: Scalar cross product query with rum data source returns "OK" response - Given a valid "appKeyAuth" key in the system - And new "QueryScalarData" request - And body with value {"data": {"attributes": {"formulas": [{"formula": "a", "limit": {"count": 10, "order": "desc"}}], "from": {{ timestamp('now - 1h') }}000, "queries": [{"data_source": "rum", "name": "a", "compute": {"aggregation": "count"}, "search": {"query": "*"}, "indexes": ["*"]}], "to": {{ timestamp('now') }}000}, "type": "scalar_request"}} - When the request is sent - Then the response status is 200 OK - And the response "data.type" is equal to "scalar_response" - @skip-validation @team:Datadog/timeseries-query Scenario: Scalar cross product query with security_signals data source returns "OK" response Given a valid "appKeyAuth" key in the system @@ -586,6 +586,15 @@ Feature: Metrics Then the response status is 200 OK And the response "data.type" is equal to "timeseries_response" + @skip-validation @team:Datadog/timeseries-query + Scenario: Timeseries cross product query with RUM data source returns "OK" response + Given a valid "appKeyAuth" key in the system + And new "QueryTimeseriesData" request + And body with value {"data": {"attributes": {"formulas": [{"formula": "a", "limit": {"count": 10, "order": "desc"}}], "from": {{ timestamp('now - 1h') }}000, "interval": 5000, "queries": [{"data_source": "rum", "name": "a", "compute": {"aggregation": "count"}, "search": {"query": "*"}, "indexes": ["*"]}], "to": {{ timestamp('now') }}000}, "type": "timeseries_request"}} + When the request is sent + Then the response status is 200 OK + And the response "data.type" is equal to "timeseries_response" + @skip-validation @team:Datadog/timeseries-query Scenario: Timeseries cross product query with apm_dependency_stats data source returns "OK" response Given a valid "appKeyAuth" key in the system @@ -721,15 +730,6 @@ Feature: Metrics Then the response status is 200 OK And the response "data.type" is equal to "timeseries_response" - @skip-validation @team:Datadog/timeseries-query - Scenario: Timeseries cross product query with rum data source returns "OK" response - Given a valid "appKeyAuth" key in the system - And new "QueryTimeseriesData" request - And body with value {"data": {"attributes": {"formulas": [{"formula": "a", "limit": {"count": 10, "order": "desc"}}], "from": {{ timestamp('now - 1h') }}000, "interval": 5000, "queries": [{"data_source": "rum", "name": "a", "compute": {"aggregation": "count"}, "search": {"query": "*"}, "indexes": ["*"]}], "to": {{ timestamp('now') }}000}, "type": "timeseries_request"}} - When the request is sent - Then the response status is 200 OK - And the response "data.type" is equal to "timeseries_response" - @skip-validation @team:Datadog/timeseries-query Scenario: Timeseries cross product query with security_signals data source returns "OK" response Given a valid "appKeyAuth" key in the system diff --git a/features/v2/rum_metrics.feature b/features/v2/rum_metrics.feature index 59cff8c7c983..c87b3187ba57 100644 --- a/features/v2/rum_metrics.feature +++ b/features/v2/rum_metrics.feature @@ -1,6 +1,6 @@ @endpoint(rum-metrics) @endpoint(rum-metrics-v2) Feature: Rum Metrics - Manage configuration of [rum-based + Manage configuration of [RUM-based metrics](https://app.datadoghq.com/rum/generate-metrics) for your organization. @@ -10,14 +10,14 @@ Feature: Rum Metrics And an instance of "RumMetrics" API @team:DataDog/rum-backend - Scenario: Create a rum-based metric returns "Bad Request" response + Scenario: Create a RUM-based metric returns "Bad Request" response Given new "CreateRumMetric" request And body with value {"data": {"id": "rum.actions.invalid", "type": "rum_metrics", "attributes": {"event_type": "action", "compute": {"aggregation_type": "count"}, "uniqueness":{"when": "match"}}}} When the request is sent Then the response status is 400 Bad Request @team:DataDog/rum-backend - Scenario: Create a rum-based metric returns "Conflict" response + Scenario: Create a RUM-based metric returns "Conflict" response Given there is a valid "rum_metric" in the system And new "CreateRumMetric" request And body with value {"data": {"id": "{{ rum_metric.data.id }}", "type": "rum_metrics", "attributes": {"compute": {"aggregation_type": "count"}, "event_type": "action"}}} @@ -25,7 +25,7 @@ Feature: Rum Metrics Then the response status is 409 Conflict @team:DataDog/rum-backend - Scenario: Create a rum-based metric returns "Created" response + Scenario: Create a RUM-based metric returns "Created" response Given new "CreateRumMetric" request And body with value {"data": {"attributes": {"compute": {"aggregation_type": "distribution", "include_percentiles": true, "path": "@duration"}, "event_type": "session", "filter": {"query": "@service:web-ui"}, "group_by": [{"path": "@browser.name", "tag_name": "browser_name"}], "uniqueness": {"when": "match"}}, "id": "{{ unique_lower_alnum }}", "type": "rum_metrics"}} When the request is sent @@ -42,7 +42,7 @@ Feature: Rum Metrics And the response "data.attributes.uniqueness.when" is equal to "match" @team:DataDog/rum-backend - Scenario: Delete a rum-based metric returns "No Content" response + Scenario: Delete a RUM-based metric returns "No Content" response Given there is a valid "rum_metric" in the system And new "DeleteRumMetric" request And request contains "metric_id" parameter from "rum_metric.data.id" @@ -50,21 +50,21 @@ Feature: Rum Metrics Then the response status is 204 No Content @team:DataDog/rum-backend - Scenario: Delete a rum-based metric returns "Not Found" response + Scenario: Delete a RUM-based metric returns "Not Found" response Given new "DeleteRumMetric" request And request contains "metric_id" parameter with value "{{ unique }}" When the request is sent Then the response status is 404 Not Found @team:DataDog/rum-backend - Scenario: Get a rum-based metric returns "Not Found" response + Scenario: Get a RUM-based metric returns "Not Found" response Given new "GetRumMetric" request And request contains "metric_id" parameter with value "{{ unique }}" When the request is sent Then the response status is 404 Not Found @team:DataDog/rum-backend - Scenario: Get a rum-based metric returns "OK" response + Scenario: Get a RUM-based metric returns "OK" response Given there is a valid "rum_metric" in the system And new "GetRumMetric" request And request contains "metric_id" parameter from "rum_metric.data.id" @@ -82,13 +82,13 @@ Feature: Rum Metrics And the response "data.attributes.uniqueness.when" has the same value as "rum_metric.data.attributes.uniqueness.when" @team:DataDog/rum-backend - Scenario: Get all rum-based metrics returns "OK" response + Scenario: Get all RUM-based metrics returns "OK" response Given new "ListRumMetrics" request When the request is sent Then the response status is 200 OK @team:DataDog/rum-backend - Scenario: Update a rum-based metric returns "Bad Request" response + Scenario: Update a RUM-based metric returns "Bad Request" response Given there is a valid "rum_metric" in the system And new "UpdateRumMetric" request And request contains "metric_id" parameter from "rum_metric.data.id" @@ -97,7 +97,7 @@ Feature: Rum Metrics Then the response status is 400 Bad Request @team:DataDog/rum-backend - Scenario: Update a rum-based metric returns "Conflict" response + Scenario: Update a RUM-based metric returns "Conflict" response Given there is a valid "rum_metric" in the system And new "UpdateRumMetric" request And request contains "metric_id" parameter from "rum_metric.data.id" @@ -106,7 +106,7 @@ Feature: Rum Metrics Then the response status is 409 Conflict @team:DataDog/rum-backend - Scenario: Update a rum-based metric returns "Not Found" response + Scenario: Update a RUM-based metric returns "Not Found" response Given there is a valid "rum_metric" in the system And new "UpdateRumMetric" request And request contains "metric_id" parameter with value "8fc991bf-967e-4652-8a5b-0711a985abe3" @@ -115,7 +115,7 @@ Feature: Rum Metrics Then the response status is 404 Not Found @team:DataDog/rum-backend - Scenario: Update a rum-based metric returns "OK" response + Scenario: Update a RUM-based metric returns "OK" response Given there is a valid "rum_metric" in the system And new "UpdateRumMetric" request And request contains "metric_id" parameter from "rum_metric.data.id" diff --git a/features/v2/rum_replay_playlists.feature b/features/v2/rum_replay_playlists.feature index 5e5f41d54b3e..2fd317e4df2a 100644 --- a/features/v2/rum_replay_playlists.feature +++ b/features/v2/rum_replay_playlists.feature @@ -9,7 +9,7 @@ Feature: Rum Replay Playlists And an instance of "RumReplayPlaylists" API @generated @skip @team:DataDog/session-replay-backend - Scenario: Add rum replay session to playlist returns "Created" response + Scenario: Add RUM replay session to playlist returns "Created" response Given new "AddRumReplaySessionToPlaylist" request And request contains "ts" parameter from "REPLACE.ME" And request contains "playlist_id" parameter from "REPLACE.ME" @@ -18,7 +18,7 @@ Feature: Rum Replay Playlists Then the response status is 201 Created @generated @skip @team:DataDog/session-replay-backend - Scenario: Add rum replay session to playlist returns "OK" response + Scenario: Add RUM replay session to playlist returns "OK" response Given new "AddRumReplaySessionToPlaylist" request And request contains "ts" parameter from "REPLACE.ME" And request contains "playlist_id" parameter from "REPLACE.ME" @@ -27,7 +27,7 @@ Feature: Rum Replay Playlists Then the response status is 200 OK @generated @skip @team:DataDog/session-replay-backend - Scenario: Bulk remove rum replay playlist sessions returns "No Content" response + Scenario: Bulk remove RUM replay playlist sessions returns "No Content" response Given new "BulkRemoveRumReplayPlaylistSessions" request And request contains "playlist_id" parameter from "REPLACE.ME" And body with value {"data": [{"id": "00000000-0000-0000-0000-000000000001", "type": "rum_replay_session"}]} @@ -35,41 +35,41 @@ Feature: Rum Replay Playlists Then the response status is 204 No Content @generated @skip @team:DataDog/session-replay-backend - Scenario: Create rum replay playlist returns "Created" response + Scenario: Create RUM replay playlist returns "Created" response Given new "CreateRumReplayPlaylist" request And body with value {"data": {"attributes": {"created_by": {"handle": "john.doe@example.com", "id": "00000000-0000-0000-0000-000000000001", "uuid": "00000000-0000-0000-0000-000000000001"}, "name": "My Playlist"}, "type": "rum_replay_playlist"}} When the request is sent Then the response status is 201 Created @generated @skip @team:DataDog/session-replay-backend - Scenario: Delete rum replay playlist returns "No Content" response + Scenario: Delete RUM replay playlist returns "No Content" response Given new "DeleteRumReplayPlaylist" request And request contains "playlist_id" parameter from "REPLACE.ME" When the request is sent Then the response status is 204 No Content @generated @skip @team:DataDog/session-replay-backend - Scenario: Get rum replay playlist returns "OK" response + Scenario: Get RUM replay playlist returns "OK" response Given new "GetRumReplayPlaylist" request And request contains "playlist_id" parameter from "REPLACE.ME" When the request is sent Then the response status is 200 OK @generated @skip @team:DataDog/session-replay-backend - Scenario: List rum replay playlist sessions returns "OK" response + Scenario: List RUM replay playlist sessions returns "OK" response Given new "ListRumReplayPlaylistSessions" request And request contains "playlist_id" parameter from "REPLACE.ME" When the request is sent Then the response status is 200 OK @generated @skip @team:DataDog/session-replay-backend - Scenario: List rum replay playlists returns "OK" response + Scenario: List RUM replay playlists returns "OK" response Given new "ListRumReplayPlaylists" request When the request is sent Then the response status is 200 OK @generated @skip @team:DataDog/session-replay-backend - Scenario: Remove rum replay session from playlist returns "No Content" response + Scenario: Remove RUM replay session from playlist returns "No Content" response Given new "RemoveRumReplaySessionFromPlaylist" request And request contains "playlist_id" parameter from "REPLACE.ME" And request contains "session_id" parameter from "REPLACE.ME" @@ -77,7 +77,7 @@ Feature: Rum Replay Playlists Then the response status is 204 No Content @generated @skip @team:DataDog/session-replay-backend - Scenario: Update rum replay playlist returns "OK" response + Scenario: Update RUM replay playlist returns "OK" response Given new "UpdateRumReplayPlaylist" request And request contains "playlist_id" parameter from "REPLACE.ME" And body with value {"data": {"attributes": {"created_by": {"handle": "john.doe@example.com", "id": "00000000-0000-0000-0000-000000000001", "uuid": "00000000-0000-0000-0000-000000000001"}, "name": "My Playlist"}, "type": "rum_replay_playlist"}} diff --git a/features/v2/rum_replay_viewership.feature b/features/v2/rum_replay_viewership.feature index 216c419e1173..e339e1e5e454 100644 --- a/features/v2/rum_replay_viewership.feature +++ b/features/v2/rum_replay_viewership.feature @@ -9,7 +9,7 @@ Feature: Rum Replay Viewership And an instance of "RumReplayViewership" API @generated @skip @team:DataDog/session-replay-backend - Scenario: Create rum replay session watch returns "Created" response + Scenario: Create RUM replay session watch returns "Created" response Given new "CreateRumReplaySessionWatch" request And request contains "session_id" parameter from "REPLACE.ME" And body with value {"data": {"attributes": {"application_id": "aaaaaaaa-1111-2222-3333-bbbbbbbbbbbb", "event_id": "11111111-2222-3333-4444-555555555555", "timestamp": "2026-01-13T17:15:53.208340Z"}, "type": "rum_replay_watch"}} @@ -17,21 +17,21 @@ Feature: Rum Replay Viewership Then the response status is 201 Created @generated @skip @team:DataDog/session-replay-backend - Scenario: Delete rum replay session watch returns "No Content" response + Scenario: Delete RUM replay session watch returns "No Content" response Given new "DeleteRumReplaySessionWatch" request And request contains "session_id" parameter from "REPLACE.ME" When the request is sent Then the response status is 204 No Content @generated @skip @team:DataDog/session-replay-backend - Scenario: List rum replay session watchers returns "OK" response + Scenario: List RUM replay session watchers returns "OK" response Given new "ListRumReplaySessionWatchers" request And request contains "session_id" parameter from "REPLACE.ME" When the request is sent Then the response status is 200 OK @generated @skip @team:DataDog/session-replay-backend - Scenario: List rum replay viewership history sessions returns "OK" response + Scenario: List RUM replay viewership history sessions returns "OK" response Given new "ListRumReplayViewershipHistorySessions" request When the request is sent Then the response status is 200 OK diff --git a/lib/datadog_api_client/v2/api/rum_metrics_api.rb b/lib/datadog_api_client/v2/api/rum_metrics_api.rb index c18d53b362d4..78efd45d5efd 100644 --- a/lib/datadog_api_client/v2/api/rum_metrics_api.rb +++ b/lib/datadog_api_client/v2/api/rum_metrics_api.rb @@ -23,7 +23,7 @@ def initialize(api_client = DatadogAPIClient::APIClient.default) @api_client = api_client end - # Create a rum-based metric. + # Create a RUM-based metric. # # @see #create_rum_metric_with_http_info def create_rum_metric(body, opts = {}) @@ -31,12 +31,12 @@ def create_rum_metric(body, opts = {}) data end - # Create a rum-based metric. + # Create a RUM-based metric. # # Create a metric based on your organization's RUM data. - # Returns the rum-based metric object from the request body when the request is successful. + # Returns the RUM-based metric object from the request body when the request is successful. # - # @param body [RumMetricCreateRequest] The definition of the new rum-based metric. + # @param body [RumMetricCreateRequest] The definition of the new RUM-based metric. # @param opts [Hash] the optional parameters # @return [Array<(RumMetricResponse, Integer, Hash)>] RumMetricResponse data, response status code and response headers def create_rum_metric_with_http_info(body, opts = {}) @@ -91,7 +91,7 @@ def create_rum_metric_with_http_info(body, opts = {}) return data, status_code, headers end - # Delete a rum-based metric. + # Delete a RUM-based metric. # # @see #delete_rum_metric_with_http_info def delete_rum_metric(metric_id, opts = {}) @@ -99,11 +99,11 @@ def delete_rum_metric(metric_id, opts = {}) nil end - # Delete a rum-based metric. + # Delete a RUM-based metric. # - # Delete a specific rum-based metric from your organization. + # Delete a specific RUM-based metric from your organization. # - # @param metric_id [String] The name of the rum-based metric. + # @param metric_id [String] The name of the RUM-based metric. # @param opts [Hash] the optional parameters # @return [Array<(nil, Integer, Hash)>] nil, response status code and response headers def delete_rum_metric_with_http_info(metric_id, opts = {}) @@ -156,7 +156,7 @@ def delete_rum_metric_with_http_info(metric_id, opts = {}) return data, status_code, headers end - # Get a rum-based metric. + # Get a RUM-based metric. # # @see #get_rum_metric_with_http_info def get_rum_metric(metric_id, opts = {}) @@ -164,11 +164,11 @@ def get_rum_metric(metric_id, opts = {}) data end - # Get a rum-based metric. + # Get a RUM-based metric. # - # Get a specific rum-based metric from your organization. + # Get a specific RUM-based metric from your organization. # - # @param metric_id [String] The name of the rum-based metric. + # @param metric_id [String] The name of the RUM-based metric. # @param opts [Hash] the optional parameters # @return [Array<(RumMetricResponse, Integer, Hash)>] RumMetricResponse data, response status code and response headers def get_rum_metric_with_http_info(metric_id, opts = {}) @@ -221,7 +221,7 @@ def get_rum_metric_with_http_info(metric_id, opts = {}) return data, status_code, headers end - # Get all rum-based metrics. + # Get all RUM-based metrics. # # @see #list_rum_metrics_with_http_info def list_rum_metrics(opts = {}) @@ -229,9 +229,9 @@ def list_rum_metrics(opts = {}) data end - # Get all rum-based metrics. + # Get all RUM-based metrics. # - # Get the list of configured rum-based metrics with their definitions. + # Get the list of configured RUM-based metrics with their definitions. # # @param opts [Hash] the optional parameters # @return [Array<(RumMetricsResponse, Integer, Hash)>] RumMetricsResponse data, response status code and response headers @@ -281,7 +281,7 @@ def list_rum_metrics_with_http_info(opts = {}) return data, status_code, headers end - # Update a rum-based metric. + # Update a RUM-based metric. # # @see #update_rum_metric_with_http_info def update_rum_metric(metric_id, body, opts = {}) @@ -289,13 +289,13 @@ def update_rum_metric(metric_id, body, opts = {}) data end - # Update a rum-based metric. + # Update a RUM-based metric. # - # Update a specific rum-based metric from your organization. - # Returns the rum-based metric object from the request body when the request is successful. + # Update a specific RUM-based metric from your organization. + # Returns the RUM-based metric object from the request body when the request is successful. # - # @param metric_id [String] The name of the rum-based metric. - # @param body [RumMetricUpdateRequest] New definition of the rum-based metric. + # @param metric_id [String] The name of the RUM-based metric. + # @param body [RumMetricUpdateRequest] New definition of the RUM-based metric. # @param opts [Hash] the optional parameters # @return [Array<(RumMetricResponse, Integer, Hash)>] RumMetricResponse data, response status code and response headers def update_rum_metric_with_http_info(metric_id, body, opts = {}) diff --git a/lib/datadog_api_client/v2/api/rum_replay_playlists_api.rb b/lib/datadog_api_client/v2/api/rum_replay_playlists_api.rb index 63304c53509a..cd46b20ad83e 100644 --- a/lib/datadog_api_client/v2/api/rum_replay_playlists_api.rb +++ b/lib/datadog_api_client/v2/api/rum_replay_playlists_api.rb @@ -23,7 +23,7 @@ def initialize(api_client = DatadogAPIClient::APIClient.default) @api_client = api_client end - # Add rum replay session to playlist. + # Add RUM replay session to playlist. # # @see #add_rum_replay_session_to_playlist_with_http_info def add_rum_replay_session_to_playlist(ts, playlist_id, session_id, opts = {}) @@ -31,7 +31,7 @@ def add_rum_replay_session_to_playlist(ts, playlist_id, session_id, opts = {}) data end - # Add rum replay session to playlist. + # Add RUM replay session to playlist. # # Add a session to a playlist. # @@ -101,7 +101,7 @@ def add_rum_replay_session_to_playlist_with_http_info(ts, playlist_id, session_i return data, status_code, headers end - # Bulk remove rum replay playlist sessions. + # Bulk remove RUM replay playlist sessions. # # @see #bulk_remove_rum_replay_playlist_sessions_with_http_info def bulk_remove_rum_replay_playlist_sessions(playlist_id, body, opts = {}) @@ -109,7 +109,7 @@ def bulk_remove_rum_replay_playlist_sessions(playlist_id, body, opts = {}) nil end - # Bulk remove rum replay playlist sessions. + # Bulk remove RUM replay playlist sessions. # # Remove sessions from a playlist. # @@ -173,7 +173,7 @@ def bulk_remove_rum_replay_playlist_sessions_with_http_info(playlist_id, body, o return data, status_code, headers end - # Create rum replay playlist. + # Create RUM replay playlist. # # @see #create_rum_replay_playlist_with_http_info def create_rum_replay_playlist(body, opts = {}) @@ -181,7 +181,7 @@ def create_rum_replay_playlist(body, opts = {}) data end - # Create rum replay playlist. + # Create RUM replay playlist. # # Create a playlist. # @@ -240,7 +240,7 @@ def create_rum_replay_playlist_with_http_info(body, opts = {}) return data, status_code, headers end - # Delete rum replay playlist. + # Delete RUM replay playlist. # # @see #delete_rum_replay_playlist_with_http_info def delete_rum_replay_playlist(playlist_id, opts = {}) @@ -248,7 +248,7 @@ def delete_rum_replay_playlist(playlist_id, opts = {}) nil end - # Delete rum replay playlist. + # Delete RUM replay playlist. # # Delete a playlist. # @@ -305,7 +305,7 @@ def delete_rum_replay_playlist_with_http_info(playlist_id, opts = {}) return data, status_code, headers end - # Get rum replay playlist. + # Get RUM replay playlist. # # @see #get_rum_replay_playlist_with_http_info def get_rum_replay_playlist(playlist_id, opts = {}) @@ -313,7 +313,7 @@ def get_rum_replay_playlist(playlist_id, opts = {}) data end - # Get rum replay playlist. + # Get RUM replay playlist. # # Get a playlist. # @@ -370,7 +370,7 @@ def get_rum_replay_playlist_with_http_info(playlist_id, opts = {}) return data, status_code, headers end - # List rum replay playlists. + # List RUM replay playlists. # # @see #list_rum_replay_playlists_with_http_info def list_rum_replay_playlists(opts = {}) @@ -378,7 +378,7 @@ def list_rum_replay_playlists(opts = {}) data end - # List rum replay playlists. + # List RUM replay playlists. # # List playlists. # @@ -438,7 +438,7 @@ def list_rum_replay_playlists_with_http_info(opts = {}) return data, status_code, headers end - # List rum replay playlist sessions. + # List RUM replay playlist sessions. # # @see #list_rum_replay_playlist_sessions_with_http_info def list_rum_replay_playlist_sessions(playlist_id, opts = {}) @@ -446,7 +446,7 @@ def list_rum_replay_playlist_sessions(playlist_id, opts = {}) data end - # List rum replay playlist sessions. + # List RUM replay playlist sessions. # # List sessions in a playlist. # @@ -507,7 +507,7 @@ def list_rum_replay_playlist_sessions_with_http_info(playlist_id, opts = {}) return data, status_code, headers end - # Remove rum replay session from playlist. + # Remove RUM replay session from playlist. # # @see #remove_rum_replay_session_from_playlist_with_http_info def remove_rum_replay_session_from_playlist(playlist_id, session_id, opts = {}) @@ -515,7 +515,7 @@ def remove_rum_replay_session_from_playlist(playlist_id, session_id, opts = {}) nil end - # Remove rum replay session from playlist. + # Remove RUM replay session from playlist. # # Remove a session from a playlist. # @@ -577,7 +577,7 @@ def remove_rum_replay_session_from_playlist_with_http_info(playlist_id, session_ return data, status_code, headers end - # Update rum replay playlist. + # Update RUM replay playlist. # # @see #update_rum_replay_playlist_with_http_info def update_rum_replay_playlist(playlist_id, body, opts = {}) @@ -585,7 +585,7 @@ def update_rum_replay_playlist(playlist_id, body, opts = {}) data end - # Update rum replay playlist. + # Update RUM replay playlist. # # Update a playlist. # diff --git a/lib/datadog_api_client/v2/api/rum_replay_viewership_api.rb b/lib/datadog_api_client/v2/api/rum_replay_viewership_api.rb index 67486bf2315e..0f8b70f04eeb 100644 --- a/lib/datadog_api_client/v2/api/rum_replay_viewership_api.rb +++ b/lib/datadog_api_client/v2/api/rum_replay_viewership_api.rb @@ -23,7 +23,7 @@ def initialize(api_client = DatadogAPIClient::APIClient.default) @api_client = api_client end - # Create rum replay session watch. + # Create RUM replay session watch. # # @see #create_rum_replay_session_watch_with_http_info def create_rum_replay_session_watch(session_id, body, opts = {}) @@ -31,7 +31,7 @@ def create_rum_replay_session_watch(session_id, body, opts = {}) data end - # Create rum replay session watch. + # Create RUM replay session watch. # # Record a session watch. # @@ -95,7 +95,7 @@ def create_rum_replay_session_watch_with_http_info(session_id, body, opts = {}) return data, status_code, headers end - # Delete rum replay session watch. + # Delete RUM replay session watch. # # @see #delete_rum_replay_session_watch_with_http_info def delete_rum_replay_session_watch(session_id, opts = {}) @@ -103,7 +103,7 @@ def delete_rum_replay_session_watch(session_id, opts = {}) nil end - # Delete rum replay session watch. + # Delete RUM replay session watch. # # Delete session watch history. # @@ -160,7 +160,7 @@ def delete_rum_replay_session_watch_with_http_info(session_id, opts = {}) return data, status_code, headers end - # List rum replay session watchers. + # List RUM replay session watchers. # # @see #list_rum_replay_session_watchers_with_http_info def list_rum_replay_session_watchers(session_id, opts = {}) @@ -168,7 +168,7 @@ def list_rum_replay_session_watchers(session_id, opts = {}) data end - # List rum replay session watchers. + # List RUM replay session watchers. # # List session watchers. # @@ -229,7 +229,7 @@ def list_rum_replay_session_watchers_with_http_info(session_id, opts = {}) return data, status_code, headers end - # List rum replay viewership history sessions. + # List RUM replay viewership history sessions. # # @see #list_rum_replay_viewership_history_sessions_with_http_info def list_rum_replay_viewership_history_sessions(opts = {}) @@ -237,7 +237,7 @@ def list_rum_replay_viewership_history_sessions(opts = {}) data end - # List rum replay viewership history sessions. + # List RUM replay viewership history sessions. # # List watched sessions. # diff --git a/lib/datadog_api_client/v2/models/rum_metric_compute.rb b/lib/datadog_api_client/v2/models/rum_metric_compute.rb index 7b6a7c079a8d..937ae4145210 100644 --- a/lib/datadog_api_client/v2/models/rum_metric_compute.rb +++ b/lib/datadog_api_client/v2/models/rum_metric_compute.rb @@ -17,7 +17,7 @@ require 'time' module DatadogAPIClient::V2 - # The compute rule to compute the rum-based metric. + # The compute rule to compute the RUM-based metric. class RumMetricCompute include BaseGenericModel @@ -28,7 +28,7 @@ class RumMetricCompute # Only present when `aggregation_type` is `distribution`. attr_accessor :include_percentiles - # The path to the value the rum-based metric will aggregate on. + # The path to the value the RUM-based metric will aggregate on. # Only present when `aggregation_type` is `distribution`. attr_accessor :path diff --git a/lib/datadog_api_client/v2/models/rum_metric_create_attributes.rb b/lib/datadog_api_client/v2/models/rum_metric_create_attributes.rb index 4d7d8e93327f..cd2f14debaab 100644 --- a/lib/datadog_api_client/v2/models/rum_metric_create_attributes.rb +++ b/lib/datadog_api_client/v2/models/rum_metric_create_attributes.rb @@ -17,17 +17,17 @@ require 'time' module DatadogAPIClient::V2 - # The object describing the Datadog rum-based metric to create. + # The object describing the Datadog RUM-based metric to create. class RumMetricCreateAttributes include BaseGenericModel - # The compute rule to compute the rum-based metric. + # The compute rule to compute the RUM-based metric. attr_reader :compute # The type of RUM events to filter on. attr_reader :event_type - # The rum-based metric filter. Events matching this filter will be aggregated in this metric. + # The RUM-based metric filter. Events matching this filter will be aggregated in this metric. attr_accessor :filter # The rules for the group by. diff --git a/lib/datadog_api_client/v2/models/rum_metric_create_data.rb b/lib/datadog_api_client/v2/models/rum_metric_create_data.rb index a36fc4a94550..600cb6dec9c8 100644 --- a/lib/datadog_api_client/v2/models/rum_metric_create_data.rb +++ b/lib/datadog_api_client/v2/models/rum_metric_create_data.rb @@ -17,14 +17,14 @@ require 'time' module DatadogAPIClient::V2 - # The new rum-based metric properties. + # The new RUM-based metric properties. class RumMetricCreateData include BaseGenericModel - # The object describing the Datadog rum-based metric to create. + # The object describing the Datadog RUM-based metric to create. attr_reader :attributes - # The name of the rum-based metric. + # The name of the RUM-based metric. attr_reader :id # The type of the resource. The value should always be rum_metrics. diff --git a/lib/datadog_api_client/v2/models/rum_metric_create_request.rb b/lib/datadog_api_client/v2/models/rum_metric_create_request.rb index 0876b1919df0..d0689e4db8b2 100644 --- a/lib/datadog_api_client/v2/models/rum_metric_create_request.rb +++ b/lib/datadog_api_client/v2/models/rum_metric_create_request.rb @@ -17,11 +17,11 @@ require 'time' module DatadogAPIClient::V2 - # The new rum-based metric body. + # The new RUM-based metric body. class RumMetricCreateRequest include BaseGenericModel - # The new rum-based metric properties. + # The new RUM-based metric properties. attr_reader :data attr_accessor :additional_properties diff --git a/lib/datadog_api_client/v2/models/rum_metric_filter.rb b/lib/datadog_api_client/v2/models/rum_metric_filter.rb index 62d613485dea..97643e7a3e88 100644 --- a/lib/datadog_api_client/v2/models/rum_metric_filter.rb +++ b/lib/datadog_api_client/v2/models/rum_metric_filter.rb @@ -17,7 +17,7 @@ require 'time' module DatadogAPIClient::V2 - # The rum-based metric filter. Events matching this filter will be aggregated in this metric. + # The RUM-based metric filter. Events matching this filter will be aggregated in this metric. class RumMetricFilter include BaseGenericModel diff --git a/lib/datadog_api_client/v2/models/rum_metric_group_by.rb b/lib/datadog_api_client/v2/models/rum_metric_group_by.rb index 929c65845a2c..315f71706d76 100644 --- a/lib/datadog_api_client/v2/models/rum_metric_group_by.rb +++ b/lib/datadog_api_client/v2/models/rum_metric_group_by.rb @@ -21,7 +21,7 @@ module DatadogAPIClient::V2 class RumMetricGroupBy include BaseGenericModel - # The path to the value the rum-based metric will be aggregated over. + # The path to the value the RUM-based metric will be aggregated over. attr_reader :path # Eventual name of the tag that gets created. By default, `path` is used as the tag name. diff --git a/lib/datadog_api_client/v2/models/rum_metric_response.rb b/lib/datadog_api_client/v2/models/rum_metric_response.rb index 490b6fbdd9a9..edb57f86e4f6 100644 --- a/lib/datadog_api_client/v2/models/rum_metric_response.rb +++ b/lib/datadog_api_client/v2/models/rum_metric_response.rb @@ -17,11 +17,11 @@ require 'time' module DatadogAPIClient::V2 - # The rum-based metric object. + # The RUM-based metric object. class RumMetricResponse include BaseGenericModel - # The rum-based metric properties. + # The RUM-based metric properties. attr_accessor :data attr_accessor :additional_properties diff --git a/lib/datadog_api_client/v2/models/rum_metric_response_attributes.rb b/lib/datadog_api_client/v2/models/rum_metric_response_attributes.rb index 927cd674cca4..7c275237a76e 100644 --- a/lib/datadog_api_client/v2/models/rum_metric_response_attributes.rb +++ b/lib/datadog_api_client/v2/models/rum_metric_response_attributes.rb @@ -17,17 +17,17 @@ require 'time' module DatadogAPIClient::V2 - # The object describing a Datadog rum-based metric. + # The object describing a Datadog RUM-based metric. class RumMetricResponseAttributes include BaseGenericModel - # The compute rule to compute the rum-based metric. + # The compute rule to compute the RUM-based metric. attr_accessor :compute # The type of RUM events to filter on. attr_accessor :event_type - # The rum-based metric filter. RUM events matching this filter will be aggregated in this metric. + # The RUM-based metric filter. RUM events matching this filter will be aggregated in this metric. attr_accessor :filter # The rules for the group by. diff --git a/lib/datadog_api_client/v2/models/rum_metric_response_compute.rb b/lib/datadog_api_client/v2/models/rum_metric_response_compute.rb index f20397ee2c5b..f08721c694c0 100644 --- a/lib/datadog_api_client/v2/models/rum_metric_response_compute.rb +++ b/lib/datadog_api_client/v2/models/rum_metric_response_compute.rb @@ -17,7 +17,7 @@ require 'time' module DatadogAPIClient::V2 - # The compute rule to compute the rum-based metric. + # The compute rule to compute the RUM-based metric. class RumMetricResponseCompute include BaseGenericModel @@ -28,7 +28,7 @@ class RumMetricResponseCompute # Only present when `aggregation_type` is `distribution`. attr_accessor :include_percentiles - # The path to the value the rum-based metric will aggregate on. + # The path to the value the RUM-based metric will aggregate on. # Only present when `aggregation_type` is `distribution`. attr_accessor :path diff --git a/lib/datadog_api_client/v2/models/rum_metric_response_data.rb b/lib/datadog_api_client/v2/models/rum_metric_response_data.rb index 893f88502c40..9cb142c9451b 100644 --- a/lib/datadog_api_client/v2/models/rum_metric_response_data.rb +++ b/lib/datadog_api_client/v2/models/rum_metric_response_data.rb @@ -17,14 +17,14 @@ require 'time' module DatadogAPIClient::V2 - # The rum-based metric properties. + # The RUM-based metric properties. class RumMetricResponseData include BaseGenericModel - # The object describing a Datadog rum-based metric. + # The object describing a Datadog RUM-based metric. attr_accessor :attributes - # The name of the rum-based metric. + # The name of the RUM-based metric. attr_accessor :id # The type of the resource. The value should always be rum_metrics. diff --git a/lib/datadog_api_client/v2/models/rum_metric_response_filter.rb b/lib/datadog_api_client/v2/models/rum_metric_response_filter.rb index 6432c8d429ec..ebaa3865e7b9 100644 --- a/lib/datadog_api_client/v2/models/rum_metric_response_filter.rb +++ b/lib/datadog_api_client/v2/models/rum_metric_response_filter.rb @@ -17,7 +17,7 @@ require 'time' module DatadogAPIClient::V2 - # The rum-based metric filter. RUM events matching this filter will be aggregated in this metric. + # The RUM-based metric filter. RUM events matching this filter will be aggregated in this metric. class RumMetricResponseFilter include BaseGenericModel diff --git a/lib/datadog_api_client/v2/models/rum_metric_response_group_by.rb b/lib/datadog_api_client/v2/models/rum_metric_response_group_by.rb index 84f2d5af6470..ef8bfdb9d9f6 100644 --- a/lib/datadog_api_client/v2/models/rum_metric_response_group_by.rb +++ b/lib/datadog_api_client/v2/models/rum_metric_response_group_by.rb @@ -21,7 +21,7 @@ module DatadogAPIClient::V2 class RumMetricResponseGroupBy include BaseGenericModel - # The path to the value the rum-based metric will be aggregated over. + # The path to the value the RUM-based metric will be aggregated over. attr_accessor :path # Eventual name of the tag that gets created. By default, `path` is used as the tag name. diff --git a/lib/datadog_api_client/v2/models/rum_metric_update_attributes.rb b/lib/datadog_api_client/v2/models/rum_metric_update_attributes.rb index baefdb00cff7..8d2e052dd585 100644 --- a/lib/datadog_api_client/v2/models/rum_metric_update_attributes.rb +++ b/lib/datadog_api_client/v2/models/rum_metric_update_attributes.rb @@ -17,14 +17,14 @@ require 'time' module DatadogAPIClient::V2 - # The rum-based metric properties that will be updated. + # The RUM-based metric properties that will be updated. class RumMetricUpdateAttributes include BaseGenericModel - # The compute rule to compute the rum-based metric. + # The compute rule to compute the RUM-based metric. attr_accessor :compute - # The rum-based metric filter. Events matching this filter will be aggregated in this metric. + # The RUM-based metric filter. Events matching this filter will be aggregated in this metric. attr_accessor :filter # The rules for the group by. diff --git a/lib/datadog_api_client/v2/models/rum_metric_update_compute.rb b/lib/datadog_api_client/v2/models/rum_metric_update_compute.rb index 2c668245d8e6..17408cc01cda 100644 --- a/lib/datadog_api_client/v2/models/rum_metric_update_compute.rb +++ b/lib/datadog_api_client/v2/models/rum_metric_update_compute.rb @@ -17,7 +17,7 @@ require 'time' module DatadogAPIClient::V2 - # The compute rule to compute the rum-based metric. + # The compute rule to compute the RUM-based metric. class RumMetricUpdateCompute include BaseGenericModel diff --git a/lib/datadog_api_client/v2/models/rum_metric_update_data.rb b/lib/datadog_api_client/v2/models/rum_metric_update_data.rb index 2f526bd5d472..121104ce0578 100644 --- a/lib/datadog_api_client/v2/models/rum_metric_update_data.rb +++ b/lib/datadog_api_client/v2/models/rum_metric_update_data.rb @@ -17,14 +17,14 @@ require 'time' module DatadogAPIClient::V2 - # The new rum-based metric properties. + # The new RUM-based metric properties. class RumMetricUpdateData include BaseGenericModel - # The rum-based metric properties that will be updated. + # The RUM-based metric properties that will be updated. attr_reader :attributes - # The name of the rum-based metric. + # The name of the RUM-based metric. attr_accessor :id # The type of the resource. The value should always be rum_metrics. diff --git a/lib/datadog_api_client/v2/models/rum_metric_update_request.rb b/lib/datadog_api_client/v2/models/rum_metric_update_request.rb index 2727501e7450..bd47c262515f 100644 --- a/lib/datadog_api_client/v2/models/rum_metric_update_request.rb +++ b/lib/datadog_api_client/v2/models/rum_metric_update_request.rb @@ -17,11 +17,11 @@ require 'time' module DatadogAPIClient::V2 - # The new rum-based metric body. + # The new RUM-based metric body. class RumMetricUpdateRequest include BaseGenericModel - # The new rum-based metric properties. + # The new RUM-based metric properties. attr_reader :data attr_accessor :additional_properties diff --git a/lib/datadog_api_client/v2/models/rum_metrics_response.rb b/lib/datadog_api_client/v2/models/rum_metrics_response.rb index 68cf4f7b2237..535e5bdbf6d1 100644 --- a/lib/datadog_api_client/v2/models/rum_metrics_response.rb +++ b/lib/datadog_api_client/v2/models/rum_metrics_response.rb @@ -17,11 +17,11 @@ require 'time' module DatadogAPIClient::V2 - # All the available rum-based metric objects. + # All the available RUM-based metric objects. class RumMetricsResponse include BaseGenericModel - # A list of rum-based metric objects. + # A list of RUM-based metric objects. attr_accessor :data attr_accessor :additional_properties From ed36d8e7e81cbb537a3b8e8001eceb1119534a3c Mon Sep 17 00:00:00 2001 From: "api-clients-generation-pipeline[bot]" <54105614+api-clients-generation-pipeline[bot]@users.noreply.github.com> Date: Wed, 3 Jun 2026 09:53:21 +0000 Subject: [PATCH 6/6] Regenerate client from commit 80606a9 of spec repo (#3420) Co-authored-by: ci.datadog-api-spec --- .generator/schemas/v2/openapi.yaml | 395 ++++++++++++++++++ .../GetHardcodedRetentionFilter.rb | 5 + .../ListHardcodedRetentionFilters.rb | 5 + .../UpdateHardcodedRetentionFilter.rb | 18 + features/scenarios_model_mapping.rb | 12 + .../rum_hardcoded_retention_filters.feature | 59 +++ .../rum_retention_filters_hardcoded.feature | 59 +++ features/v2/undo.json | 18 + lib/datadog_api_client/inflector.rb | 15 + .../rum_retention_filters_hardcoded_api.rb | 241 +++++++++++ .../rum_hardcoded_cross_product_sampling.rb | 172 ++++++++ ...oded_cross_product_sampling_editability.rb | 115 +++++ ...hardcoded_cross_product_sampling_update.rb | 175 ++++++++ ...m_hardcoded_retention_filter_attributes.rb | 187 +++++++++ .../rum_hardcoded_retention_filter_data.rb | 135 ++++++ ...m_hardcoded_retention_filter_event_type.rb | 32 ++ .../rum_hardcoded_retention_filter_meta.rb | 125 ++++++ ..._hardcoded_retention_filter_meta_source.rb | 28 ++ ...rum_hardcoded_retention_filter_response.rb | 105 +++++ .../rum_hardcoded_retention_filter_type.rb | 26 ++ ...oded_retention_filter_update_attributes.rb | 107 +++++ ..._hardcoded_retention_filter_update_data.rb | 166 ++++++++ ...rdcoded_retention_filter_update_request.rb | 123 ++++++ ...um_hardcoded_retention_filters_response.rb | 107 +++++ 24 files changed, 2430 insertions(+) create mode 100644 examples/v2/rum-retention-filters-hardcoded/GetHardcodedRetentionFilter.rb create mode 100644 examples/v2/rum-retention-filters-hardcoded/ListHardcodedRetentionFilters.rb create mode 100644 examples/v2/rum-retention-filters-hardcoded/UpdateHardcodedRetentionFilter.rb create mode 100644 features/v2/rum_hardcoded_retention_filters.feature create mode 100644 features/v2/rum_retention_filters_hardcoded.feature create mode 100644 lib/datadog_api_client/v2/api/rum_retention_filters_hardcoded_api.rb create mode 100644 lib/datadog_api_client/v2/models/rum_hardcoded_cross_product_sampling.rb create mode 100644 lib/datadog_api_client/v2/models/rum_hardcoded_cross_product_sampling_editability.rb create mode 100644 lib/datadog_api_client/v2/models/rum_hardcoded_cross_product_sampling_update.rb create mode 100644 lib/datadog_api_client/v2/models/rum_hardcoded_retention_filter_attributes.rb create mode 100644 lib/datadog_api_client/v2/models/rum_hardcoded_retention_filter_data.rb create mode 100644 lib/datadog_api_client/v2/models/rum_hardcoded_retention_filter_event_type.rb create mode 100644 lib/datadog_api_client/v2/models/rum_hardcoded_retention_filter_meta.rb create mode 100644 lib/datadog_api_client/v2/models/rum_hardcoded_retention_filter_meta_source.rb create mode 100644 lib/datadog_api_client/v2/models/rum_hardcoded_retention_filter_response.rb create mode 100644 lib/datadog_api_client/v2/models/rum_hardcoded_retention_filter_type.rb create mode 100644 lib/datadog_api_client/v2/models/rum_hardcoded_retention_filter_update_attributes.rb create mode 100644 lib/datadog_api_client/v2/models/rum_hardcoded_retention_filter_update_data.rb create mode 100644 lib/datadog_api_client/v2/models/rum_hardcoded_retention_filter_update_request.rb create mode 100644 lib/datadog_api_client/v2/models/rum_hardcoded_retention_filters_response.rb diff --git a/.generator/schemas/v2/openapi.yaml b/.generator/schemas/v2/openapi.yaml index 7b44538aeb1c..62fbf9422f24 100644 --- a/.generator/schemas/v2/openapi.yaml +++ b/.generator/schemas/v2/openapi.yaml @@ -1558,6 +1558,20 @@ components: required: true schema: type: string + RumHardcodedRetentionFilterApplicationIDParameter: + description: RUM application ID. + in: path + name: app_id + required: true + schema: + type: string + RumHardcodedRetentionFilterIDParameter: + description: Hardcoded retention filter ID. + in: path + name: rf_id + required: true + schema: + type: string RumMetricIDParameter: description: The name of the RUM-based metric. in: path @@ -72865,6 +72879,223 @@ components: minimum: 0 type: number type: object + RumHardcodedCrossProductSampling: + description: Cross-product retention settings for a hardcoded retention filter. + properties: + session_replay_enabled: + description: Indicates whether Session Replay cross-product retention is active. + example: true + type: boolean + session_replay_sample_rate: + description: Percentage (0–100) of retained sessions with an ingested replay whose replay data is kept. + example: 50.0 + format: double + maximum: 100 + minimum: 0 + type: number + trace_enabled: + description: Indicates whether Trace cross-product retention is active. + example: true + type: boolean + trace_sample_rate: + description: Percentage (0–100) of retained sessions with ingested traces whose traces are indexed. + example: 25.0 + format: double + maximum: 100 + minimum: 0 + type: number + type: object + RumHardcodedCrossProductSamplingEditability: + description: Flags indicating which `cross_product_sampling` fields can be updated. Read-only. + properties: + session_replay_sample_rate: + description: |- + If `true`, `cross_product_sampling.session_replay_sample_rate` can be updated on this filter. + example: true + type: boolean + trace_sample_rate: + description: If `true`, `cross_product_sampling.trace_sample_rate` can be updated on this filter. + example: false + type: boolean + type: object + RumHardcodedCrossProductSamplingUpdate: + description: |- + Partial update for cross-product retention of a hardcoded retention filter. + Only fields whose matching flag in `cross_product_sampling_editability` is `true` can be updated. + properties: + session_replay_enabled: + description: Controls whether Session Replay cross-product retention is active. Omit to leave unchanged. + example: true + type: boolean + session_replay_sample_rate: + description: |- + Percentage (0–100) of retained sessions with an ingested replay whose replay data is kept. + Omit to leave unchanged. + example: 50.0 + format: double + maximum: 100 + minimum: 0 + type: number + trace_enabled: + description: Controls whether Trace cross-product retention is active. Omit to leave unchanged. + example: true + type: boolean + trace_sample_rate: + description: |- + Percentage (0–100) of retained sessions with ingested traces whose traces are indexed. + Omit to leave unchanged. + example: 25.0 + format: double + maximum: 100 + minimum: 0 + type: number + type: object + RumHardcodedRetentionFilterAttributes: + description: The attributes of a hardcoded retention filter. + properties: + cross_product_sampling: + $ref: "#/components/schemas/RumHardcodedCrossProductSampling" + cross_product_sampling_editability: + $ref: "#/components/schemas/RumHardcodedCrossProductSamplingEditability" + enabled: + description: Indicates whether the hardcoded retention filter is active. Read-only. + example: true + type: boolean + event_type: + $ref: "#/components/schemas/RumHardcodedRetentionFilterEventType" + name: + description: The name of the hardcoded retention filter. Read-only. + example: Replay sessions + type: string + query: + description: The query string for the hardcoded retention filter. Read-only. + example: "@session.has_replay:true" + type: string + sample_rate: + description: The retention sample rate (0–100) for the hardcoded filter. Read-only. + example: 100.0 + format: double + maximum: 100 + minimum: 0 + type: number + type: object + RumHardcodedRetentionFilterData: + description: A hardcoded retention filter. + properties: + attributes: + $ref: "#/components/schemas/RumHardcodedRetentionFilterAttributes" + id: + description: The ID of the hardcoded retention filter. + example: forced_replay_sessions + type: string + meta: + $ref: "#/components/schemas/RumHardcodedRetentionFilterMeta" + type: + $ref: "#/components/schemas/RumHardcodedRetentionFilterType" + type: object + RumHardcodedRetentionFilterEventType: + description: The type of RUM events the hardcoded filter applies to. Read-only. + enum: + - session + - view + - action + - error + - resource + - long_task + - vital + example: session + type: string + x-enum-varnames: + - SESSION + - VIEW + - ACTION + - ERROR + - RESOURCE + - LONG_TASK + - VITAL + RumHardcodedRetentionFilterMeta: + description: Metadata about the hardcoded retention filter. + properties: + source: + $ref: "#/components/schemas/RumHardcodedRetentionFilterMetaSource" + updated_at: + description: Unix epoch (in milliseconds) of the last update. + example: 1735689600000 + format: int64 + type: integer + updated_by_handle: + description: Handle of the user who last updated the filter. + example: jane.doe@example.com + type: string + type: object + RumHardcodedRetentionFilterMetaSource: + description: The source of the last update to a hardcoded retention filter. + enum: + - default + - ui + - terraform + example: ui + type: string + x-enum-varnames: + - DEFAULT + - UI + - TERRAFORM + RumHardcodedRetentionFilterResponse: + description: A hardcoded retention filter response body. + properties: + data: + $ref: "#/components/schemas/RumHardcodedRetentionFilterData" + type: object + RumHardcodedRetentionFilterType: + default: hardcoded_retention_filters + description: The resource type. The value must be `hardcoded_retention_filters`. + enum: + - hardcoded_retention_filters + example: hardcoded_retention_filters + type: string + x-enum-varnames: + - HARDCODED_RETENTION_FILTERS + RumHardcodedRetentionFilterUpdateAttributes: + description: |- + The attributes of a hardcoded retention filter that can be updated. + Only fields whose matching flag in `cross_product_sampling_editability` is `true` can be modified. + properties: + cross_product_sampling: + $ref: "#/components/schemas/RumHardcodedCrossProductSamplingUpdate" + type: object + RumHardcodedRetentionFilterUpdateData: + description: The hardcoded retention filter properties to update. + properties: + attributes: + $ref: "#/components/schemas/RumHardcodedRetentionFilterUpdateAttributes" + id: + description: The ID of the hardcoded retention filter. Must match the `rf_id` path parameter. + example: forced_replay_sessions + type: string + type: + $ref: "#/components/schemas/RumHardcodedRetentionFilterType" + required: + - id + - type + - attributes + type: object + RumHardcodedRetentionFilterUpdateRequest: + description: The hardcoded retention filter body to update. + properties: + data: + $ref: "#/components/schemas/RumHardcodedRetentionFilterUpdateData" + required: + - data + type: object + RumHardcodedRetentionFiltersResponse: + description: All hardcoded retention filters for a RUM application. + properties: + data: + description: A list of hardcoded retention filters. + items: + $ref: "#/components/schemas/RumHardcodedRetentionFilterData" + type: array + type: object RumMetricCompute: description: The compute rule to compute the RUM-based metric. properties: @@ -150275,6 +150506,167 @@ paths: operator: OR permissions: - rum_apps_write + /api/v2/rum/applications/{app_id}/hardcoded_retention_filters: + get: + description: Get the list of hardcoded retention filters for a RUM application. + operationId: ListHardcodedRetentionFilters + parameters: + - $ref: "#/components/parameters/RumHardcodedRetentionFilterApplicationIDParameter" + responses: + "200": + content: + application/json: + examples: + default: + value: + data: + - attributes: + cross_product_sampling: + session_replay_enabled: true + session_replay_sample_rate: 50.0 + trace_enabled: true + trace_sample_rate: 25.0 + cross_product_sampling_editability: + session_replay_sample_rate: true + trace_sample_rate: false + enabled: true + event_type: session + name: Replay sessions + query: "@session.has_replay:true" + sample_rate: 100.0 + id: forced_replay_sessions + meta: + source: ui + updated_at: 1735689600000 + updated_by_handle: jane.doe@example.com + type: hardcoded_retention_filters + schema: + $ref: "#/components/schemas/RumHardcodedRetentionFiltersResponse" + description: OK + "403": + $ref: "#/components/responses/NotAuthorizedResponse" + "429": + $ref: "#/components/responses/TooManyRequestsResponse" + summary: Get all hardcoded retention filters + tags: + - RUM Retention Filters Hardcoded + /api/v2/rum/applications/{app_id}/hardcoded_retention_filters/{rf_id}: + get: + description: Get a single hardcoded retention filter for a RUM application. + operationId: GetHardcodedRetentionFilter + parameters: + - $ref: "#/components/parameters/RumHardcodedRetentionFilterApplicationIDParameter" + - $ref: "#/components/parameters/RumHardcodedRetentionFilterIDParameter" + responses: + "200": + content: + application/json: + examples: + default: + value: + data: + attributes: + cross_product_sampling: + session_replay_enabled: true + session_replay_sample_rate: 50.0 + trace_enabled: true + trace_sample_rate: 25.0 + cross_product_sampling_editability: + session_replay_sample_rate: true + trace_sample_rate: false + enabled: true + event_type: session + name: Replay sessions + query: "@session.has_replay:true" + sample_rate: 100.0 + id: forced_replay_sessions + meta: + source: ui + updated_at: 1735689600000 + updated_by_handle: jane.doe@example.com + type: hardcoded_retention_filters + schema: + $ref: "#/components/schemas/RumHardcodedRetentionFilterResponse" + description: OK + "403": + $ref: "#/components/responses/NotAuthorizedResponse" + "404": + $ref: "#/components/responses/NotFoundResponse" + "429": + $ref: "#/components/responses/TooManyRequestsResponse" + summary: Get a hardcoded retention filter + tags: + - RUM Retention Filters Hardcoded + patch: + description: |- + Update the cross-product sample rates of a hardcoded retention filter for a RUM application. + Only fields whose matching flag in `cross_product_sampling_editability` is `true` can be updated. + Any other field is read-only and cannot be sent in the payload. + Returns the updated hardcoded retention filter when the request is successful. + operationId: UpdateHardcodedRetentionFilter + parameters: + - $ref: "#/components/parameters/RumHardcodedRetentionFilterApplicationIDParameter" + - $ref: "#/components/parameters/RumHardcodedRetentionFilterIDParameter" + requestBody: + content: + application/json: + examples: + default: + value: + data: + attributes: + cross_product_sampling: + session_replay_enabled: true + session_replay_sample_rate: 50.0 + id: forced_replay_sessions + type: hardcoded_retention_filters + schema: + $ref: "#/components/schemas/RumHardcodedRetentionFilterUpdateRequest" + description: New cross-product sample rates for the hardcoded retention filter. + required: true + responses: + "200": + content: + application/json: + examples: + default: + value: + data: + attributes: + cross_product_sampling: + session_replay_enabled: true + session_replay_sample_rate: 50.0 + trace_enabled: true + trace_sample_rate: 25.0 + cross_product_sampling_editability: + session_replay_sample_rate: true + trace_sample_rate: false + enabled: true + event_type: session + name: Replay sessions + query: "@session.has_replay:true" + sample_rate: 100.0 + id: forced_replay_sessions + meta: + source: ui + updated_at: 1735689600000 + updated_by_handle: jane.doe@example.com + type: hardcoded_retention_filters + schema: + $ref: "#/components/schemas/RumHardcodedRetentionFilterResponse" + description: Updated + "400": + $ref: "#/components/responses/BadRequestResponse" + "403": + $ref: "#/components/responses/NotAuthorizedResponse" + "404": + $ref: "#/components/responses/NotFoundResponse" + "429": + $ref: "#/components/responses/TooManyRequestsResponse" + summary: Update a hardcoded retention filter + tags: + - RUM Retention Filters Hardcoded + x-codegen-request-body-name: body /api/v2/rum/applications/{app_id}/relationships/retention_filters: patch: description: |- @@ -175731,6 +176123,9 @@ tags: - description: |- Get insights into the performance of your Real User Monitoring (RUM) applications over HTTP. See the [RUM & Session Replay page](https://docs.datadoghq.com/real_user_monitoring/) for more information name: RUM Insights + - description: |- + Manage hardcoded retention filters through [Manage Applications](https://app.datadoghq.com/rum/list) in RUM. + name: RUM Retention Filters Hardcoded - description: View and manage Reference Tables in your organization. name: Reference Tables - description: |- diff --git a/examples/v2/rum-retention-filters-hardcoded/GetHardcodedRetentionFilter.rb b/examples/v2/rum-retention-filters-hardcoded/GetHardcodedRetentionFilter.rb new file mode 100644 index 000000000000..f8aabcac01ee --- /dev/null +++ b/examples/v2/rum-retention-filters-hardcoded/GetHardcodedRetentionFilter.rb @@ -0,0 +1,5 @@ +# Get a hardcoded retention filter returns "OK" response + +require "datadog_api_client" +api_instance = DatadogAPIClient::V2::RUMRetentionFiltersHardcodedAPI.new +p api_instance.get_hardcoded_retention_filter("Example-RUM-Retention-Filters-Hardcoded", "Example-RUM-Retention-Filters-Hardcoded") diff --git a/examples/v2/rum-retention-filters-hardcoded/ListHardcodedRetentionFilters.rb b/examples/v2/rum-retention-filters-hardcoded/ListHardcodedRetentionFilters.rb new file mode 100644 index 000000000000..cda1c71a3586 --- /dev/null +++ b/examples/v2/rum-retention-filters-hardcoded/ListHardcodedRetentionFilters.rb @@ -0,0 +1,5 @@ +# Get all hardcoded retention filters returns "OK" response + +require "datadog_api_client" +api_instance = DatadogAPIClient::V2::RUMRetentionFiltersHardcodedAPI.new +p api_instance.list_hardcoded_retention_filters("Example-RUM-Retention-Filters-Hardcoded") diff --git a/examples/v2/rum-retention-filters-hardcoded/UpdateHardcodedRetentionFilter.rb b/examples/v2/rum-retention-filters-hardcoded/UpdateHardcodedRetentionFilter.rb new file mode 100644 index 000000000000..06738f8b79b7 --- /dev/null +++ b/examples/v2/rum-retention-filters-hardcoded/UpdateHardcodedRetentionFilter.rb @@ -0,0 +1,18 @@ +# Update a hardcoded retention filter returns "Updated" response + +require "datadog_api_client" +api_instance = DatadogAPIClient::V2::RUMRetentionFiltersHardcodedAPI.new + +body = DatadogAPIClient::V2::RumHardcodedRetentionFilterUpdateRequest.new({ + data: DatadogAPIClient::V2::RumHardcodedRetentionFilterUpdateData.new({ + id: "REPLACE.ME", + type: DatadogAPIClient::V2::RumHardcodedRetentionFilterType::HARDCODED_RETENTION_FILTERS, + attributes: DatadogAPIClient::V2::RumHardcodedRetentionFilterUpdateAttributes.new({ + cross_product_sampling: DatadogAPIClient::V2::RumHardcodedCrossProductSamplingUpdate.new({ + session_replay_sample_rate: 50.0, + session_replay_enabled: true, + }), + }), + }), +}) +p api_instance.update_hardcoded_retention_filter("Example-RUM-Retention-Filters-Hardcoded", "Example-RUM-Retention-Filters-Hardcoded", body) diff --git a/features/scenarios_model_mapping.rb b/features/scenarios_model_mapping.rb index c52c3d791fc7..6a164c9f2987 100644 --- a/features/scenarios_model_mapping.rb +++ b/features/scenarios_model_mapping.rb @@ -4568,6 +4568,18 @@ "v2.SearchRUMEvents" => { "body" => "RUMSearchEventsRequest", }, + "v2.ListHardcodedRetentionFilters" => { + "app_id" => "String", + }, + "v2.GetHardcodedRetentionFilter" => { + "app_id" => "String", + "rf_id" => "String", + }, + "v2.UpdateHardcodedRetentionFilter" => { + "app_id" => "String", + "rf_id" => "String", + "body" => "RumHardcodedRetentionFilterUpdateRequest", + }, "v2.OrderRetentionFilters" => { "app_id" => "String", "body" => "RumRetentionFiltersOrderRequest", diff --git a/features/v2/rum_hardcoded_retention_filters.feature b/features/v2/rum_hardcoded_retention_filters.feature new file mode 100644 index 000000000000..05e942989bf1 --- /dev/null +++ b/features/v2/rum_hardcoded_retention_filters.feature @@ -0,0 +1,59 @@ +@endpoint(rum-hardcoded-retention-filters) @endpoint(rum-hardcoded-retention-filters-v2) +Feature: RUM Retention Filters Hardcoded + Manage hardcoded retention filters through [Manage + Applications](https://app.datadoghq.com/rum/list) in RUM. + + Background: + Given a valid "apiKeyAuth" key in the system + And a valid "appKeyAuth" key in the system + And an instance of "RUMRetentionFiltersHardcoded" API + + @generated @skip @team:DataDog/rum-backend + Scenario: Get a hardcoded retention filter returns "Not Found" response + Given new "GetHardcodedRetentionFilter" request + And request contains "app_id" parameter with value "{{ unique }}" + And request contains "rf_id" parameter with value "{{ unique }}" + When the request is sent + Then the response status is 404 Not Found + + @generated @skip @team:DataDog/rum-backend + Scenario: Get a hardcoded retention filter returns "OK" response + Given new "GetHardcodedRetentionFilter" request + And request contains "app_id" parameter with value "{{ unique }}" + And request contains "rf_id" parameter with value "{{ unique }}" + When the request is sent + Then the response status is 200 OK + + @generated @skip @team:DataDog/rum-backend + Scenario: Get all hardcoded retention filters returns "OK" response + Given new "ListHardcodedRetentionFilters" request + And request contains "app_id" parameter with value "{{ unique }}" + When the request is sent + Then the response status is 200 OK + + @generated @skip @team:DataDog/rum-backend + Scenario: Update a hardcoded retention filter returns "Bad Request" response + Given new "UpdateHardcodedRetentionFilter" request + And request contains "app_id" parameter with value "{{ unique }}" + And request contains "rf_id" parameter with value "{{ unique }}" + And body with value {"data": {"id": "REPLACE.ME", "type": "hardcoded_retention_filters", "attributes": {"cross_product_sampling": {"session_replay_sample_rate": 50.0}}}} + When the request is sent + Then the response status is 400 Bad Request + + @generated @skip @team:DataDog/rum-backend + Scenario: Update a hardcoded retention filter returns "Not Found" response + Given new "UpdateHardcodedRetentionFilter" request + And request contains "app_id" parameter with value "{{ unique }}" + And request contains "rf_id" parameter with value "{{ unique }}" + And body with value {"data": {"id": "REPLACE.ME", "type": "hardcoded_retention_filters", "attributes": {"cross_product_sampling": {"session_replay_sample_rate": 50.0}}}} + When the request is sent + Then the response status is 404 Not Found + + @generated @skip @team:DataDog/rum-backend + Scenario: Update a hardcoded retention filter returns "Updated" response + Given new "UpdateHardcodedRetentionFilter" request + And request contains "app_id" parameter with value "{{ unique }}" + And request contains "rf_id" parameter with value "{{ unique }}" + And body with value {"data": {"id": "REPLACE.ME", "type": "hardcoded_retention_filters", "attributes": {"cross_product_sampling": {"session_replay_sample_rate": 50.0, "session_replay_enabled": true}}}} + When the request is sent + Then the response status is 200 OK diff --git a/features/v2/rum_retention_filters_hardcoded.feature b/features/v2/rum_retention_filters_hardcoded.feature new file mode 100644 index 000000000000..2ce25e7a3a3e --- /dev/null +++ b/features/v2/rum_retention_filters_hardcoded.feature @@ -0,0 +1,59 @@ +@endpoint(rum-retention-filters-hardcoded) @endpoint(rum-retention-filters-hardcoded-v2) +Feature: RUM Retention Filters Hardcoded + Manage hardcoded retention filters through [Manage + Applications](https://app.datadoghq.com/rum/list) in RUM. + + Background: + Given a valid "apiKeyAuth" key in the system + And a valid "appKeyAuth" key in the system + And an instance of "RUMRetentionFiltersHardcoded" API + + @generated @skip @team:DataDog/rum-backend + Scenario: Get a hardcoded retention filter returns "Not Found" response + Given new "GetHardcodedRetentionFilter" request + And request contains "app_id" parameter from "REPLACE.ME" + And request contains "rf_id" parameter from "REPLACE.ME" + When the request is sent + Then the response status is 404 Not Found + + @generated @skip @team:DataDog/rum-backend + Scenario: Get a hardcoded retention filter returns "OK" response + Given new "GetHardcodedRetentionFilter" request + And request contains "app_id" parameter from "REPLACE.ME" + And request contains "rf_id" parameter from "REPLACE.ME" + When the request is sent + Then the response status is 200 OK + + @generated @skip @team:DataDog/rum-backend + Scenario: Get all hardcoded retention filters returns "OK" response + Given new "ListHardcodedRetentionFilters" request + And request contains "app_id" parameter from "REPLACE.ME" + When the request is sent + Then the response status is 200 OK + + @generated @skip @team:DataDog/rum-backend + Scenario: Update a hardcoded retention filter returns "Bad Request" response + Given new "UpdateHardcodedRetentionFilter" request + And request contains "app_id" parameter from "REPLACE.ME" + And request contains "rf_id" parameter from "REPLACE.ME" + And body with value {"data": {"attributes": {"cross_product_sampling": {"session_replay_enabled": true, "session_replay_sample_rate": 50.0, "trace_enabled": true, "trace_sample_rate": 25.0}}, "id": "forced_replay_sessions", "type": "hardcoded_retention_filters"}} + When the request is sent + Then the response status is 400 Bad Request + + @generated @skip @team:DataDog/rum-backend + Scenario: Update a hardcoded retention filter returns "Not Found" response + Given new "UpdateHardcodedRetentionFilter" request + And request contains "app_id" parameter from "REPLACE.ME" + And request contains "rf_id" parameter from "REPLACE.ME" + And body with value {"data": {"attributes": {"cross_product_sampling": {"session_replay_enabled": true, "session_replay_sample_rate": 50.0, "trace_enabled": true, "trace_sample_rate": 25.0}}, "id": "forced_replay_sessions", "type": "hardcoded_retention_filters"}} + When the request is sent + Then the response status is 404 Not Found + + @generated @skip @team:DataDog/rum-backend + Scenario: Update a hardcoded retention filter returns "Updated" response + Given new "UpdateHardcodedRetentionFilter" request + And request contains "app_id" parameter from "REPLACE.ME" + And request contains "rf_id" parameter from "REPLACE.ME" + And body with value {"data": {"attributes": {"cross_product_sampling": {"session_replay_enabled": true, "session_replay_sample_rate": 50.0, "trace_enabled": true, "trace_sample_rate": 25.0}}, "id": "forced_replay_sessions", "type": "hardcoded_retention_filters"}} + When the request is sent + Then the response status is 200 Updated diff --git a/features/v2/undo.json b/features/v2/undo.json index 0ba8d5b4fa3e..417de3d9c81f 100644 --- a/features/v2/undo.json +++ b/features/v2/undo.json @@ -6030,6 +6030,24 @@ "type": "unsafe" } }, + "ListHardcodedRetentionFilters": { + "tag": "RUM Retention Filters Hardcoded", + "undo": { + "type": "safe" + } + }, + "GetHardcodedRetentionFilter": { + "tag": "RUM Retention Filters Hardcoded", + "undo": { + "type": "safe" + } + }, + "UpdateHardcodedRetentionFilter": { + "tag": "RUM Retention Filters Hardcoded", + "undo": { + "type": "idempotent" + } + }, "OrderRetentionFilters": { "tag": "Rum Retention Filters", "undo": { diff --git a/lib/datadog_api_client/inflector.rb b/lib/datadog_api_client/inflector.rb index 608ddaf5fdd2..434eebd8fd75 100644 --- a/lib/datadog_api_client/inflector.rb +++ b/lib/datadog_api_client/inflector.rb @@ -5577,6 +5577,20 @@ def overrides "v2.rum_group_by_histogram" => "RUMGroupByHistogram", "v2.rum_group_by_missing" => "RUMGroupByMissing", "v2.rum_group_by_total" => "RUMGroupByTotal", + "v2.rum_hardcoded_cross_product_sampling" => "RumHardcodedCrossProductSampling", + "v2.rum_hardcoded_cross_product_sampling_editability" => "RumHardcodedCrossProductSamplingEditability", + "v2.rum_hardcoded_cross_product_sampling_update" => "RumHardcodedCrossProductSamplingUpdate", + "v2.rum_hardcoded_retention_filter_attributes" => "RumHardcodedRetentionFilterAttributes", + "v2.rum_hardcoded_retention_filter_data" => "RumHardcodedRetentionFilterData", + "v2.rum_hardcoded_retention_filter_event_type" => "RumHardcodedRetentionFilterEventType", + "v2.rum_hardcoded_retention_filter_meta" => "RumHardcodedRetentionFilterMeta", + "v2.rum_hardcoded_retention_filter_meta_source" => "RumHardcodedRetentionFilterMetaSource", + "v2.rum_hardcoded_retention_filter_response" => "RumHardcodedRetentionFilterResponse", + "v2.rum_hardcoded_retention_filters_response" => "RumHardcodedRetentionFiltersResponse", + "v2.rum_hardcoded_retention_filter_type" => "RumHardcodedRetentionFilterType", + "v2.rum_hardcoded_retention_filter_update_attributes" => "RumHardcodedRetentionFilterUpdateAttributes", + "v2.rum_hardcoded_retention_filter_update_data" => "RumHardcodedRetentionFilterUpdateData", + "v2.rum_hardcoded_retention_filter_update_request" => "RumHardcodedRetentionFilterUpdateRequest", "v2.rum_metric_compute" => "RumMetricCompute", "v2.rum_metric_compute_aggregation_type" => "RumMetricComputeAggregationType", "v2.rum_metric_create_attributes" => "RumMetricCreateAttributes", @@ -7372,6 +7386,7 @@ def overrides "v2.rum_replay_sessions_api" => "RumReplaySessionsAPI", "v2.rum_replay_viewership_api" => "RumReplayViewershipAPI", "v2.rum_retention_filters_api" => "RumRetentionFiltersAPI", + "v2.rum_retention_filters_hardcoded_api" => "RUMRetentionFiltersHardcodedAPI", "v2.salesforce_integration_api" => "SalesforceIntegrationAPI", "v2.scorecards_api" => "ScorecardsAPI", "v2.seats_api" => "SeatsAPI", diff --git a/lib/datadog_api_client/v2/api/rum_retention_filters_hardcoded_api.rb b/lib/datadog_api_client/v2/api/rum_retention_filters_hardcoded_api.rb new file mode 100644 index 000000000000..0a2cb5a23851 --- /dev/null +++ b/lib/datadog_api_client/v2/api/rum_retention_filters_hardcoded_api.rb @@ -0,0 +1,241 @@ +=begin +#Datadog API V2 Collection + +#Collection of all Datadog Public endpoints. + +The version of the OpenAPI document: 1.0 +Contact: support@datadoghq.com +Generated by: https://github.com/DataDog/datadog-api-client-ruby/tree/master/.generator + + Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. + This product includes software developed at Datadog (https://www.datadoghq.com/). + Copyright 2020-Present Datadog, Inc. + +=end + +require 'cgi' + +module DatadogAPIClient::V2 + class RUMRetentionFiltersHardcodedAPI + attr_accessor :api_client + + def initialize(api_client = DatadogAPIClient::APIClient.default) + @api_client = api_client + end + + # Get a hardcoded retention filter. + # + # @see #get_hardcoded_retention_filter_with_http_info + def get_hardcoded_retention_filter(app_id, rf_id, opts = {}) + data, _status_code, _headers = get_hardcoded_retention_filter_with_http_info(app_id, rf_id, opts) + data + end + + # Get a hardcoded retention filter. + # + # Get a single hardcoded retention filter for a RUM application. + # + # @param app_id [String] RUM application ID. + # @param rf_id [String] Hardcoded retention filter ID. + # @param opts [Hash] the optional parameters + # @return [Array<(RumHardcodedRetentionFilterResponse, Integer, Hash)>] RumHardcodedRetentionFilterResponse data, response status code and response headers + def get_hardcoded_retention_filter_with_http_info(app_id, rf_id, opts = {}) + + if @api_client.config.debugging + @api_client.config.logger.debug 'Calling API: RUMRetentionFiltersHardcodedAPI.get_hardcoded_retention_filter ...' + end + # verify the required parameter 'app_id' is set + if @api_client.config.client_side_validation && app_id.nil? + fail ArgumentError, "Missing the required parameter 'app_id' when calling RUMRetentionFiltersHardcodedAPI.get_hardcoded_retention_filter" + end + # verify the required parameter 'rf_id' is set + if @api_client.config.client_side_validation && rf_id.nil? + fail ArgumentError, "Missing the required parameter 'rf_id' when calling RUMRetentionFiltersHardcodedAPI.get_hardcoded_retention_filter" + end + # resource path + local_var_path = '/api/v2/rum/applications/{app_id}/hardcoded_retention_filters/{rf_id}'.sub('{app_id}', CGI.escape(app_id.to_s).gsub('%2F', '/')).sub('{rf_id}', CGI.escape(rf_id.to_s).gsub('%2F', '/')) + + # query parameters + query_params = opts[:query_params] || {} + + # header parameters + header_params = opts[:header_params] || {} + # HTTP header 'Accept' (if needed) + header_params['Accept'] = @api_client.select_header_accept(['application/json']) + + # form parameters + form_params = opts[:form_params] || {} + + # http body (model) + post_body = opts[:debug_body] + + # return_type + return_type = opts[:debug_return_type] || 'RumHardcodedRetentionFilterResponse' + + # auth_names + auth_names = opts[:debug_auth_names] || [:apiKeyAuth, :appKeyAuth] + + new_options = opts.merge( + :operation => :get_hardcoded_retention_filter, + :header_params => header_params, + :query_params => query_params, + :form_params => form_params, + :body => post_body, + :auth_names => auth_names, + :return_type => return_type, + :api_version => "V2" + ) + + data, status_code, headers = @api_client.call_api(Net::HTTP::Get, local_var_path, new_options) + if @api_client.config.debugging + @api_client.config.logger.debug "API called: RUMRetentionFiltersHardcodedAPI#get_hardcoded_retention_filter\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}" + end + return data, status_code, headers + end + + # Get all hardcoded retention filters. + # + # @see #list_hardcoded_retention_filters_with_http_info + def list_hardcoded_retention_filters(app_id, opts = {}) + data, _status_code, _headers = list_hardcoded_retention_filters_with_http_info(app_id, opts) + data + end + + # Get all hardcoded retention filters. + # + # Get the list of hardcoded retention filters for a RUM application. + # + # @param app_id [String] RUM application ID. + # @param opts [Hash] the optional parameters + # @return [Array<(RumHardcodedRetentionFiltersResponse, Integer, Hash)>] RumHardcodedRetentionFiltersResponse data, response status code and response headers + def list_hardcoded_retention_filters_with_http_info(app_id, opts = {}) + + if @api_client.config.debugging + @api_client.config.logger.debug 'Calling API: RUMRetentionFiltersHardcodedAPI.list_hardcoded_retention_filters ...' + end + # verify the required parameter 'app_id' is set + if @api_client.config.client_side_validation && app_id.nil? + fail ArgumentError, "Missing the required parameter 'app_id' when calling RUMRetentionFiltersHardcodedAPI.list_hardcoded_retention_filters" + end + # resource path + local_var_path = '/api/v2/rum/applications/{app_id}/hardcoded_retention_filters'.sub('{app_id}', CGI.escape(app_id.to_s).gsub('%2F', '/')) + + # query parameters + query_params = opts[:query_params] || {} + + # header parameters + header_params = opts[:header_params] || {} + # HTTP header 'Accept' (if needed) + header_params['Accept'] = @api_client.select_header_accept(['application/json']) + + # form parameters + form_params = opts[:form_params] || {} + + # http body (model) + post_body = opts[:debug_body] + + # return_type + return_type = opts[:debug_return_type] || 'RumHardcodedRetentionFiltersResponse' + + # auth_names + auth_names = opts[:debug_auth_names] || [:apiKeyAuth, :appKeyAuth] + + new_options = opts.merge( + :operation => :list_hardcoded_retention_filters, + :header_params => header_params, + :query_params => query_params, + :form_params => form_params, + :body => post_body, + :auth_names => auth_names, + :return_type => return_type, + :api_version => "V2" + ) + + data, status_code, headers = @api_client.call_api(Net::HTTP::Get, local_var_path, new_options) + if @api_client.config.debugging + @api_client.config.logger.debug "API called: RUMRetentionFiltersHardcodedAPI#list_hardcoded_retention_filters\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}" + end + return data, status_code, headers + end + + # Update a hardcoded retention filter. + # + # @see #update_hardcoded_retention_filter_with_http_info + def update_hardcoded_retention_filter(app_id, rf_id, body, opts = {}) + data, _status_code, _headers = update_hardcoded_retention_filter_with_http_info(app_id, rf_id, body, opts) + data + end + + # Update a hardcoded retention filter. + # + # Update the cross-product sample rates of a hardcoded retention filter for a RUM application. + # Only fields whose matching flag in `cross_product_sampling_editability` is `true` can be updated. + # Any other field is read-only and cannot be sent in the payload. + # Returns the updated hardcoded retention filter when the request is successful. + # + # @param app_id [String] RUM application ID. + # @param rf_id [String] Hardcoded retention filter ID. + # @param body [RumHardcodedRetentionFilterUpdateRequest] New cross-product sample rates for the hardcoded retention filter. + # @param opts [Hash] the optional parameters + # @return [Array<(RumHardcodedRetentionFilterResponse, Integer, Hash)>] RumHardcodedRetentionFilterResponse data, response status code and response headers + def update_hardcoded_retention_filter_with_http_info(app_id, rf_id, body, opts = {}) + + if @api_client.config.debugging + @api_client.config.logger.debug 'Calling API: RUMRetentionFiltersHardcodedAPI.update_hardcoded_retention_filter ...' + end + # verify the required parameter 'app_id' is set + if @api_client.config.client_side_validation && app_id.nil? + fail ArgumentError, "Missing the required parameter 'app_id' when calling RUMRetentionFiltersHardcodedAPI.update_hardcoded_retention_filter" + end + # verify the required parameter 'rf_id' is set + if @api_client.config.client_side_validation && rf_id.nil? + fail ArgumentError, "Missing the required parameter 'rf_id' when calling RUMRetentionFiltersHardcodedAPI.update_hardcoded_retention_filter" + end + # verify the required parameter 'body' is set + if @api_client.config.client_side_validation && body.nil? + fail ArgumentError, "Missing the required parameter 'body' when calling RUMRetentionFiltersHardcodedAPI.update_hardcoded_retention_filter" + end + # resource path + local_var_path = '/api/v2/rum/applications/{app_id}/hardcoded_retention_filters/{rf_id}'.sub('{app_id}', CGI.escape(app_id.to_s).gsub('%2F', '/')).sub('{rf_id}', CGI.escape(rf_id.to_s).gsub('%2F', '/')) + + # query parameters + query_params = opts[:query_params] || {} + + # header parameters + header_params = opts[:header_params] || {} + # HTTP header 'Accept' (if needed) + header_params['Accept'] = @api_client.select_header_accept(['application/json']) + # HTTP header 'Content-Type' + header_params['Content-Type'] = @api_client.select_header_content_type(['application/json']) + + # form parameters + form_params = opts[:form_params] || {} + + # http body (model) + post_body = opts[:debug_body] || @api_client.object_to_http_body(body) + + # return_type + return_type = opts[:debug_return_type] || 'RumHardcodedRetentionFilterResponse' + + # auth_names + auth_names = opts[:debug_auth_names] || [:apiKeyAuth, :appKeyAuth] + + new_options = opts.merge( + :operation => :update_hardcoded_retention_filter, + :header_params => header_params, + :query_params => query_params, + :form_params => form_params, + :body => post_body, + :auth_names => auth_names, + :return_type => return_type, + :api_version => "V2" + ) + + data, status_code, headers = @api_client.call_api(Net::HTTP::Patch, local_var_path, new_options) + if @api_client.config.debugging + @api_client.config.logger.debug "API called: RUMRetentionFiltersHardcodedAPI#update_hardcoded_retention_filter\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}" + end + return data, status_code, headers + end + end +end diff --git a/lib/datadog_api_client/v2/models/rum_hardcoded_cross_product_sampling.rb b/lib/datadog_api_client/v2/models/rum_hardcoded_cross_product_sampling.rb new file mode 100644 index 000000000000..7564e1612209 --- /dev/null +++ b/lib/datadog_api_client/v2/models/rum_hardcoded_cross_product_sampling.rb @@ -0,0 +1,172 @@ +=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 + # Cross-product retention settings for a hardcoded retention filter. + class RumHardcodedCrossProductSampling + include BaseGenericModel + + # Indicates whether Session Replay cross-product retention is active. + attr_accessor :session_replay_enabled + + # Percentage (0–100) of retained sessions with an ingested replay whose replay data is kept. + attr_reader :session_replay_sample_rate + + # Indicates whether Trace cross-product retention is active. + attr_accessor :trace_enabled + + # Percentage (0–100) of retained sessions with ingested traces whose traces are indexed. + attr_reader :trace_sample_rate + + attr_accessor :additional_properties + + # Attribute mapping from ruby-style variable name to JSON key. + # @!visibility private + def self.attribute_map + { + :'session_replay_enabled' => :'session_replay_enabled', + :'session_replay_sample_rate' => :'session_replay_sample_rate', + :'trace_enabled' => :'trace_enabled', + :'trace_sample_rate' => :'trace_sample_rate' + } + end + + # Attribute type mapping. + # @!visibility private + def self.openapi_types + { + :'session_replay_enabled' => :'Boolean', + :'session_replay_sample_rate' => :'Float', + :'trace_enabled' => :'Boolean', + :'trace_sample_rate' => :'Float' + } + 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::RumHardcodedCrossProductSampling` 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?(:'session_replay_enabled') + self.session_replay_enabled = attributes[:'session_replay_enabled'] + end + + if attributes.key?(:'session_replay_sample_rate') + self.session_replay_sample_rate = attributes[:'session_replay_sample_rate'] + end + + if attributes.key?(:'trace_enabled') + self.trace_enabled = attributes[:'trace_enabled'] + end + + if attributes.key?(:'trace_sample_rate') + self.trace_sample_rate = attributes[:'trace_sample_rate'] + 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 !@session_replay_sample_rate.nil? && @session_replay_sample_rate > 100 + return false if !@session_replay_sample_rate.nil? && @session_replay_sample_rate < 0 + return false if !@trace_sample_rate.nil? && @trace_sample_rate > 100 + return false if !@trace_sample_rate.nil? && @trace_sample_rate < 0 + true + end + + # Custom attribute writer method with validation + # @param session_replay_sample_rate [Object] Object to be assigned + # @!visibility private + def session_replay_sample_rate=(session_replay_sample_rate) + if !session_replay_sample_rate.nil? && session_replay_sample_rate > 100 + fail ArgumentError, 'invalid value for "session_replay_sample_rate", must be smaller than or equal to 100.' + end + if !session_replay_sample_rate.nil? && session_replay_sample_rate < 0 + fail ArgumentError, 'invalid value for "session_replay_sample_rate", must be greater than or equal to 0.' + end + @session_replay_sample_rate = session_replay_sample_rate + end + + # Custom attribute writer method with validation + # @param trace_sample_rate [Object] Object to be assigned + # @!visibility private + def trace_sample_rate=(trace_sample_rate) + if !trace_sample_rate.nil? && trace_sample_rate > 100 + fail ArgumentError, 'invalid value for "trace_sample_rate", must be smaller than or equal to 100.' + end + if !trace_sample_rate.nil? && trace_sample_rate < 0 + fail ArgumentError, 'invalid value for "trace_sample_rate", must be greater than or equal to 0.' + end + @trace_sample_rate = trace_sample_rate + 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 && + session_replay_enabled == o.session_replay_enabled && + session_replay_sample_rate == o.session_replay_sample_rate && + trace_enabled == o.trace_enabled && + trace_sample_rate == o.trace_sample_rate && + additional_properties == o.additional_properties + end + + # Calculates hash code according to all attributes. + # @return [Integer] Hash code + # @!visibility private + def hash + [session_replay_enabled, session_replay_sample_rate, trace_enabled, trace_sample_rate, additional_properties].hash + end + end +end diff --git a/lib/datadog_api_client/v2/models/rum_hardcoded_cross_product_sampling_editability.rb b/lib/datadog_api_client/v2/models/rum_hardcoded_cross_product_sampling_editability.rb new file mode 100644 index 000000000000..f2c412691e37 --- /dev/null +++ b/lib/datadog_api_client/v2/models/rum_hardcoded_cross_product_sampling_editability.rb @@ -0,0 +1,115 @@ +=begin +#Datadog API V2 Collection + +#Collection of all Datadog Public endpoints. + +The version of the OpenAPI document: 1.0 +Contact: support@datadoghq.com +Generated by: https://github.com/DataDog/datadog-api-client-ruby/tree/master/.generator + + Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. + This product includes software developed at Datadog (https://www.datadoghq.com/). + Copyright 2020-Present Datadog, Inc. + +=end + +require 'date' +require 'time' + +module DatadogAPIClient::V2 + # Flags indicating which `cross_product_sampling` fields can be updated. Read-only. + class RumHardcodedCrossProductSamplingEditability + include BaseGenericModel + + # If `true`, `cross_product_sampling.session_replay_sample_rate` can be updated on this filter. + attr_accessor :session_replay_sample_rate + + # If `true`, `cross_product_sampling.trace_sample_rate` can be updated on this filter. + attr_accessor :trace_sample_rate + + attr_accessor :additional_properties + + # Attribute mapping from ruby-style variable name to JSON key. + # @!visibility private + def self.attribute_map + { + :'session_replay_sample_rate' => :'session_replay_sample_rate', + :'trace_sample_rate' => :'trace_sample_rate' + } + end + + # Attribute type mapping. + # @!visibility private + def self.openapi_types + { + :'session_replay_sample_rate' => :'Boolean', + :'trace_sample_rate' => :'Boolean' + } + 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::RumHardcodedCrossProductSamplingEditability` 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?(:'session_replay_sample_rate') + self.session_replay_sample_rate = attributes[:'session_replay_sample_rate'] + end + + if attributes.key?(:'trace_sample_rate') + self.trace_sample_rate = attributes[:'trace_sample_rate'] + 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 && + session_replay_sample_rate == o.session_replay_sample_rate && + trace_sample_rate == o.trace_sample_rate && + additional_properties == o.additional_properties + end + + # Calculates hash code according to all attributes. + # @return [Integer] Hash code + # @!visibility private + def hash + [session_replay_sample_rate, trace_sample_rate, additional_properties].hash + end + end +end diff --git a/lib/datadog_api_client/v2/models/rum_hardcoded_cross_product_sampling_update.rb b/lib/datadog_api_client/v2/models/rum_hardcoded_cross_product_sampling_update.rb new file mode 100644 index 000000000000..82f02744a8c1 --- /dev/null +++ b/lib/datadog_api_client/v2/models/rum_hardcoded_cross_product_sampling_update.rb @@ -0,0 +1,175 @@ +=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 + # Partial update for cross-product retention of a hardcoded retention filter. + # Only fields whose matching flag in `cross_product_sampling_editability` is `true` can be updated. + class RumHardcodedCrossProductSamplingUpdate + include BaseGenericModel + + # Controls whether Session Replay cross-product retention is active. Omit to leave unchanged. + attr_accessor :session_replay_enabled + + # Percentage (0–100) of retained sessions with an ingested replay whose replay data is kept. + # Omit to leave unchanged. + attr_reader :session_replay_sample_rate + + # Controls whether Trace cross-product retention is active. Omit to leave unchanged. + attr_accessor :trace_enabled + + # Percentage (0–100) of retained sessions with ingested traces whose traces are indexed. + # Omit to leave unchanged. + attr_reader :trace_sample_rate + + attr_accessor :additional_properties + + # Attribute mapping from ruby-style variable name to JSON key. + # @!visibility private + def self.attribute_map + { + :'session_replay_enabled' => :'session_replay_enabled', + :'session_replay_sample_rate' => :'session_replay_sample_rate', + :'trace_enabled' => :'trace_enabled', + :'trace_sample_rate' => :'trace_sample_rate' + } + end + + # Attribute type mapping. + # @!visibility private + def self.openapi_types + { + :'session_replay_enabled' => :'Boolean', + :'session_replay_sample_rate' => :'Float', + :'trace_enabled' => :'Boolean', + :'trace_sample_rate' => :'Float' + } + 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::RumHardcodedCrossProductSamplingUpdate` 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?(:'session_replay_enabled') + self.session_replay_enabled = attributes[:'session_replay_enabled'] + end + + if attributes.key?(:'session_replay_sample_rate') + self.session_replay_sample_rate = attributes[:'session_replay_sample_rate'] + end + + if attributes.key?(:'trace_enabled') + self.trace_enabled = attributes[:'trace_enabled'] + end + + if attributes.key?(:'trace_sample_rate') + self.trace_sample_rate = attributes[:'trace_sample_rate'] + 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 !@session_replay_sample_rate.nil? && @session_replay_sample_rate > 100 + return false if !@session_replay_sample_rate.nil? && @session_replay_sample_rate < 0 + return false if !@trace_sample_rate.nil? && @trace_sample_rate > 100 + return false if !@trace_sample_rate.nil? && @trace_sample_rate < 0 + true + end + + # Custom attribute writer method with validation + # @param session_replay_sample_rate [Object] Object to be assigned + # @!visibility private + def session_replay_sample_rate=(session_replay_sample_rate) + if !session_replay_sample_rate.nil? && session_replay_sample_rate > 100 + fail ArgumentError, 'invalid value for "session_replay_sample_rate", must be smaller than or equal to 100.' + end + if !session_replay_sample_rate.nil? && session_replay_sample_rate < 0 + fail ArgumentError, 'invalid value for "session_replay_sample_rate", must be greater than or equal to 0.' + end + @session_replay_sample_rate = session_replay_sample_rate + end + + # Custom attribute writer method with validation + # @param trace_sample_rate [Object] Object to be assigned + # @!visibility private + def trace_sample_rate=(trace_sample_rate) + if !trace_sample_rate.nil? && trace_sample_rate > 100 + fail ArgumentError, 'invalid value for "trace_sample_rate", must be smaller than or equal to 100.' + end + if !trace_sample_rate.nil? && trace_sample_rate < 0 + fail ArgumentError, 'invalid value for "trace_sample_rate", must be greater than or equal to 0.' + end + @trace_sample_rate = trace_sample_rate + 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 && + session_replay_enabled == o.session_replay_enabled && + session_replay_sample_rate == o.session_replay_sample_rate && + trace_enabled == o.trace_enabled && + trace_sample_rate == o.trace_sample_rate && + additional_properties == o.additional_properties + end + + # Calculates hash code according to all attributes. + # @return [Integer] Hash code + # @!visibility private + def hash + [session_replay_enabled, session_replay_sample_rate, trace_enabled, trace_sample_rate, additional_properties].hash + end + end +end diff --git a/lib/datadog_api_client/v2/models/rum_hardcoded_retention_filter_attributes.rb b/lib/datadog_api_client/v2/models/rum_hardcoded_retention_filter_attributes.rb new file mode 100644 index 000000000000..536ad0155a86 --- /dev/null +++ b/lib/datadog_api_client/v2/models/rum_hardcoded_retention_filter_attributes.rb @@ -0,0 +1,187 @@ +=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 attributes of a hardcoded retention filter. + class RumHardcodedRetentionFilterAttributes + include BaseGenericModel + + # Cross-product retention settings for a hardcoded retention filter. + attr_accessor :cross_product_sampling + + # Flags indicating which `cross_product_sampling` fields can be updated. Read-only. + attr_accessor :cross_product_sampling_editability + + # Indicates whether the hardcoded retention filter is active. Read-only. + attr_accessor :enabled + + # The type of RUM events the hardcoded filter applies to. Read-only. + attr_accessor :event_type + + # The name of the hardcoded retention filter. Read-only. + attr_accessor :name + + # The query string for the hardcoded retention filter. Read-only. + attr_accessor :query + + # The retention sample rate (0–100) for the hardcoded filter. Read-only. + attr_reader :sample_rate + + attr_accessor :additional_properties + + # Attribute mapping from ruby-style variable name to JSON key. + # @!visibility private + def self.attribute_map + { + :'cross_product_sampling' => :'cross_product_sampling', + :'cross_product_sampling_editability' => :'cross_product_sampling_editability', + :'enabled' => :'enabled', + :'event_type' => :'event_type', + :'name' => :'name', + :'query' => :'query', + :'sample_rate' => :'sample_rate' + } + end + + # Attribute type mapping. + # @!visibility private + def self.openapi_types + { + :'cross_product_sampling' => :'RumHardcodedCrossProductSampling', + :'cross_product_sampling_editability' => :'RumHardcodedCrossProductSamplingEditability', + :'enabled' => :'Boolean', + :'event_type' => :'RumHardcodedRetentionFilterEventType', + :'name' => :'String', + :'query' => :'String', + :'sample_rate' => :'Float' + } + 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::RumHardcodedRetentionFilterAttributes` 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?(:'cross_product_sampling') + self.cross_product_sampling = attributes[:'cross_product_sampling'] + end + + if attributes.key?(:'cross_product_sampling_editability') + self.cross_product_sampling_editability = attributes[:'cross_product_sampling_editability'] + end + + if attributes.key?(:'enabled') + self.enabled = attributes[:'enabled'] + end + + if attributes.key?(:'event_type') + self.event_type = attributes[:'event_type'] + end + + if attributes.key?(:'name') + self.name = attributes[:'name'] + end + + if attributes.key?(:'query') + self.query = attributes[:'query'] + end + + if attributes.key?(:'sample_rate') + self.sample_rate = attributes[:'sample_rate'] + 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 !@sample_rate.nil? && @sample_rate > 100 + return false if !@sample_rate.nil? && @sample_rate < 0 + true + end + + # Custom attribute writer method with validation + # @param sample_rate [Object] Object to be assigned + # @!visibility private + def sample_rate=(sample_rate) + if !sample_rate.nil? && sample_rate > 100 + fail ArgumentError, 'invalid value for "sample_rate", must be smaller than or equal to 100.' + end + if !sample_rate.nil? && sample_rate < 0 + fail ArgumentError, 'invalid value for "sample_rate", must be greater than or equal to 0.' + end + @sample_rate = sample_rate + 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 && + cross_product_sampling == o.cross_product_sampling && + cross_product_sampling_editability == o.cross_product_sampling_editability && + enabled == o.enabled && + event_type == o.event_type && + name == o.name && + query == o.query && + sample_rate == o.sample_rate && + additional_properties == o.additional_properties + end + + # Calculates hash code according to all attributes. + # @return [Integer] Hash code + # @!visibility private + def hash + [cross_product_sampling, cross_product_sampling_editability, enabled, event_type, name, query, sample_rate, additional_properties].hash + end + end +end diff --git a/lib/datadog_api_client/v2/models/rum_hardcoded_retention_filter_data.rb b/lib/datadog_api_client/v2/models/rum_hardcoded_retention_filter_data.rb new file mode 100644 index 000000000000..248be0a2e57d --- /dev/null +++ b/lib/datadog_api_client/v2/models/rum_hardcoded_retention_filter_data.rb @@ -0,0 +1,135 @@ +=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 hardcoded retention filter. + class RumHardcodedRetentionFilterData + include BaseGenericModel + + # The attributes of a hardcoded retention filter. + attr_accessor :attributes + + # The ID of the hardcoded retention filter. + attr_accessor :id + + # Metadata about the hardcoded retention filter. + attr_accessor :meta + + # The resource type. The value must be `hardcoded_retention_filters`. + attr_accessor :type + + attr_accessor :additional_properties + + # Attribute mapping from ruby-style variable name to JSON key. + # @!visibility private + def self.attribute_map + { + :'attributes' => :'attributes', + :'id' => :'id', + :'meta' => :'meta', + :'type' => :'type' + } + end + + # Attribute type mapping. + # @!visibility private + def self.openapi_types + { + :'attributes' => :'RumHardcodedRetentionFilterAttributes', + :'id' => :'String', + :'meta' => :'RumHardcodedRetentionFilterMeta', + :'type' => :'RumHardcodedRetentionFilterType' + } + 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::RumHardcodedRetentionFilterData` 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?(:'attributes') + self.attributes = attributes[:'attributes'] + end + + if attributes.key?(:'id') + self.id = attributes[:'id'] + end + + if attributes.key?(:'meta') + self.meta = attributes[:'meta'] + end + + if attributes.key?(:'type') + self.type = attributes[:'type'] + 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 && + attributes == o.attributes && + id == o.id && + meta == o.meta && + type == o.type && + additional_properties == o.additional_properties + end + + # Calculates hash code according to all attributes. + # @return [Integer] Hash code + # @!visibility private + def hash + [attributes, id, meta, type, additional_properties].hash + end + end +end diff --git a/lib/datadog_api_client/v2/models/rum_hardcoded_retention_filter_event_type.rb b/lib/datadog_api_client/v2/models/rum_hardcoded_retention_filter_event_type.rb new file mode 100644 index 000000000000..e3ff7f3679b0 --- /dev/null +++ b/lib/datadog_api_client/v2/models/rum_hardcoded_retention_filter_event_type.rb @@ -0,0 +1,32 @@ +=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 type of RUM events the hardcoded filter applies to. Read-only. + class RumHardcodedRetentionFilterEventType + include BaseEnumModel + + SESSION = "session".freeze + VIEW = "view".freeze + ACTION = "action".freeze + ERROR = "error".freeze + RESOURCE = "resource".freeze + LONG_TASK = "long_task".freeze + VITAL = "vital".freeze + end +end diff --git a/lib/datadog_api_client/v2/models/rum_hardcoded_retention_filter_meta.rb b/lib/datadog_api_client/v2/models/rum_hardcoded_retention_filter_meta.rb new file mode 100644 index 000000000000..1ac0f4b7d99d --- /dev/null +++ b/lib/datadog_api_client/v2/models/rum_hardcoded_retention_filter_meta.rb @@ -0,0 +1,125 @@ +=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 + # Metadata about the hardcoded retention filter. + class RumHardcodedRetentionFilterMeta + include BaseGenericModel + + # The source of the last update to a hardcoded retention filter. + attr_accessor :source + + # Unix epoch (in milliseconds) of the last update. + attr_accessor :updated_at + + # Handle of the user who last updated the filter. + attr_accessor :updated_by_handle + + attr_accessor :additional_properties + + # Attribute mapping from ruby-style variable name to JSON key. + # @!visibility private + def self.attribute_map + { + :'source' => :'source', + :'updated_at' => :'updated_at', + :'updated_by_handle' => :'updated_by_handle' + } + end + + # Attribute type mapping. + # @!visibility private + def self.openapi_types + { + :'source' => :'RumHardcodedRetentionFilterMetaSource', + :'updated_at' => :'Integer', + :'updated_by_handle' => :'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::RumHardcodedRetentionFilterMeta` 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?(:'source') + self.source = attributes[:'source'] + end + + if attributes.key?(:'updated_at') + self.updated_at = attributes[:'updated_at'] + end + + if attributes.key?(:'updated_by_handle') + self.updated_by_handle = attributes[:'updated_by_handle'] + 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 && + source == o.source && + updated_at == o.updated_at && + updated_by_handle == o.updated_by_handle && + additional_properties == o.additional_properties + end + + # Calculates hash code according to all attributes. + # @return [Integer] Hash code + # @!visibility private + def hash + [source, updated_at, updated_by_handle, additional_properties].hash + end + end +end diff --git a/lib/datadog_api_client/v2/models/rum_hardcoded_retention_filter_meta_source.rb b/lib/datadog_api_client/v2/models/rum_hardcoded_retention_filter_meta_source.rb new file mode 100644 index 000000000000..5886605fe183 --- /dev/null +++ b/lib/datadog_api_client/v2/models/rum_hardcoded_retention_filter_meta_source.rb @@ -0,0 +1,28 @@ +=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 source of the last update to a hardcoded retention filter. + class RumHardcodedRetentionFilterMetaSource + include BaseEnumModel + + DEFAULT = "default".freeze + UI = "ui".freeze + TERRAFORM = "terraform".freeze + end +end diff --git a/lib/datadog_api_client/v2/models/rum_hardcoded_retention_filter_response.rb b/lib/datadog_api_client/v2/models/rum_hardcoded_retention_filter_response.rb new file mode 100644 index 000000000000..97040bbd6b2e --- /dev/null +++ b/lib/datadog_api_client/v2/models/rum_hardcoded_retention_filter_response.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 + # A hardcoded retention filter response body. + class RumHardcodedRetentionFilterResponse + include BaseGenericModel + + # A hardcoded retention filter. + attr_accessor :data + + attr_accessor :additional_properties + + # Attribute mapping from ruby-style variable name to JSON key. + # @!visibility private + def self.attribute_map + { + :'data' => :'data' + } + end + + # Attribute type mapping. + # @!visibility private + def self.openapi_types + { + :'data' => :'RumHardcodedRetentionFilterData' + } + 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::RumHardcodedRetentionFilterResponse` 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?(:'data') + self.data = attributes[:'data'] + 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 && + data == o.data && + additional_properties == o.additional_properties + end + + # Calculates hash code according to all attributes. + # @return [Integer] Hash code + # @!visibility private + def hash + [data, additional_properties].hash + end + end +end diff --git a/lib/datadog_api_client/v2/models/rum_hardcoded_retention_filter_type.rb b/lib/datadog_api_client/v2/models/rum_hardcoded_retention_filter_type.rb new file mode 100644 index 000000000000..945a9466cb6c --- /dev/null +++ b/lib/datadog_api_client/v2/models/rum_hardcoded_retention_filter_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 resource type. The value must be `hardcoded_retention_filters`. + class RumHardcodedRetentionFilterType + include BaseEnumModel + + HARDCODED_RETENTION_FILTERS = "hardcoded_retention_filters".freeze + end +end diff --git a/lib/datadog_api_client/v2/models/rum_hardcoded_retention_filter_update_attributes.rb b/lib/datadog_api_client/v2/models/rum_hardcoded_retention_filter_update_attributes.rb new file mode 100644 index 000000000000..60bbfa2a5842 --- /dev/null +++ b/lib/datadog_api_client/v2/models/rum_hardcoded_retention_filter_update_attributes.rb @@ -0,0 +1,107 @@ +=begin +#Datadog API V2 Collection + +#Collection of all Datadog Public endpoints. + +The version of the OpenAPI document: 1.0 +Contact: support@datadoghq.com +Generated by: https://github.com/DataDog/datadog-api-client-ruby/tree/master/.generator + + Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. + This product includes software developed at Datadog (https://www.datadoghq.com/). + Copyright 2020-Present Datadog, Inc. + +=end + +require 'date' +require 'time' + +module DatadogAPIClient::V2 + # The attributes of a hardcoded retention filter that can be updated. + # Only fields whose matching flag in `cross_product_sampling_editability` is `true` can be modified. + class RumHardcodedRetentionFilterUpdateAttributes + include BaseGenericModel + + # Partial update for cross-product retention of a hardcoded retention filter. + # Only fields whose matching flag in `cross_product_sampling_editability` is `true` can be updated. + attr_accessor :cross_product_sampling + + attr_accessor :additional_properties + + # Attribute mapping from ruby-style variable name to JSON key. + # @!visibility private + def self.attribute_map + { + :'cross_product_sampling' => :'cross_product_sampling' + } + end + + # Attribute type mapping. + # @!visibility private + def self.openapi_types + { + :'cross_product_sampling' => :'RumHardcodedCrossProductSamplingUpdate' + } + 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::RumHardcodedRetentionFilterUpdateAttributes` 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?(:'cross_product_sampling') + self.cross_product_sampling = attributes[:'cross_product_sampling'] + 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 && + cross_product_sampling == o.cross_product_sampling && + additional_properties == o.additional_properties + end + + # Calculates hash code according to all attributes. + # @return [Integer] Hash code + # @!visibility private + def hash + [cross_product_sampling, additional_properties].hash + end + end +end diff --git a/lib/datadog_api_client/v2/models/rum_hardcoded_retention_filter_update_data.rb b/lib/datadog_api_client/v2/models/rum_hardcoded_retention_filter_update_data.rb new file mode 100644 index 000000000000..9d02f8ff3e5d --- /dev/null +++ b/lib/datadog_api_client/v2/models/rum_hardcoded_retention_filter_update_data.rb @@ -0,0 +1,166 @@ +=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 hardcoded retention filter properties to update. + class RumHardcodedRetentionFilterUpdateData + include BaseGenericModel + + # The attributes of a hardcoded retention filter that can be updated. + # Only fields whose matching flag in `cross_product_sampling_editability` is `true` can be modified. + attr_reader :attributes + + # The ID of the hardcoded retention filter. Must match the `rf_id` path parameter. + attr_reader :id + + # The resource type. The value must be `hardcoded_retention_filters`. + attr_reader :type + + attr_accessor :additional_properties + + # Attribute mapping from ruby-style variable name to JSON key. + # @!visibility private + def self.attribute_map + { + :'attributes' => :'attributes', + :'id' => :'id', + :'type' => :'type' + } + end + + # Attribute type mapping. + # @!visibility private + def self.openapi_types + { + :'attributes' => :'RumHardcodedRetentionFilterUpdateAttributes', + :'id' => :'String', + :'type' => :'RumHardcodedRetentionFilterType' + } + 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::RumHardcodedRetentionFilterUpdateData` 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?(:'attributes') + self.attributes = attributes[:'attributes'] + end + + if attributes.key?(:'id') + self.id = attributes[:'id'] + 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 @attributes.nil? + return false if @id.nil? + return false if @type.nil? + true + end + + # Custom attribute writer method with validation + # @param attributes [Object] Object to be assigned + # @!visibility private + def attributes=(attributes) + if attributes.nil? + fail ArgumentError, 'invalid value for "attributes", attributes cannot be nil.' + end + @attributes = attributes + 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 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 && + attributes == o.attributes && + id == o.id && + type == o.type && + additional_properties == o.additional_properties + end + + # Calculates hash code according to all attributes. + # @return [Integer] Hash code + # @!visibility private + def hash + [attributes, id, type, additional_properties].hash + end + end +end diff --git a/lib/datadog_api_client/v2/models/rum_hardcoded_retention_filter_update_request.rb b/lib/datadog_api_client/v2/models/rum_hardcoded_retention_filter_update_request.rb new file mode 100644 index 000000000000..bd36cf7bb89f --- /dev/null +++ b/lib/datadog_api_client/v2/models/rum_hardcoded_retention_filter_update_request.rb @@ -0,0 +1,123 @@ +=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 hardcoded retention filter body to update. + class RumHardcodedRetentionFilterUpdateRequest + include BaseGenericModel + + # The hardcoded retention filter properties to update. + attr_reader :data + + attr_accessor :additional_properties + + # Attribute mapping from ruby-style variable name to JSON key. + # @!visibility private + def self.attribute_map + { + :'data' => :'data' + } + end + + # Attribute type mapping. + # @!visibility private + def self.openapi_types + { + :'data' => :'RumHardcodedRetentionFilterUpdateData' + } + 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::RumHardcodedRetentionFilterUpdateRequest` 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?(:'data') + self.data = attributes[:'data'] + 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 @data.nil? + true + end + + # Custom attribute writer method with validation + # @param data [Object] Object to be assigned + # @!visibility private + def data=(data) + if data.nil? + fail ArgumentError, 'invalid value for "data", data cannot be nil.' + end + @data = data + 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 && + data == o.data && + additional_properties == o.additional_properties + end + + # Calculates hash code according to all attributes. + # @return [Integer] Hash code + # @!visibility private + def hash + [data, additional_properties].hash + end + end +end diff --git a/lib/datadog_api_client/v2/models/rum_hardcoded_retention_filters_response.rb b/lib/datadog_api_client/v2/models/rum_hardcoded_retention_filters_response.rb new file mode 100644 index 000000000000..a8ac6ace6f97 --- /dev/null +++ b/lib/datadog_api_client/v2/models/rum_hardcoded_retention_filters_response.rb @@ -0,0 +1,107 @@ +=begin +#Datadog API V2 Collection + +#Collection of all Datadog Public endpoints. + +The version of the OpenAPI document: 1.0 +Contact: support@datadoghq.com +Generated by: https://github.com/DataDog/datadog-api-client-ruby/tree/master/.generator + + Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. + This product includes software developed at Datadog (https://www.datadoghq.com/). + Copyright 2020-Present Datadog, Inc. + +=end + +require 'date' +require 'time' + +module DatadogAPIClient::V2 + # All hardcoded retention filters for a RUM application. + class RumHardcodedRetentionFiltersResponse + include BaseGenericModel + + # A list of hardcoded retention filters. + attr_accessor :data + + attr_accessor :additional_properties + + # Attribute mapping from ruby-style variable name to JSON key. + # @!visibility private + def self.attribute_map + { + :'data' => :'data' + } + end + + # Attribute type mapping. + # @!visibility private + def self.openapi_types + { + :'data' => :'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::RumHardcodedRetentionFiltersResponse` 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?(:'data') + if (value = attributes[:'data']).is_a?(Array) + self.data = 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 && + data == o.data && + additional_properties == o.additional_properties + end + + # Calculates hash code according to all attributes. + # @return [Integer] Hash code + # @!visibility private + def hash + [data, additional_properties].hash + end + end +end