From b8a885558b5793484b7e21dfd09c4661ea488951 Mon Sep 17 00:00:00 2001 From: "ci.datadog-api-spec" Date: Tue, 17 Feb 2026 00:11:58 +0000 Subject: [PATCH] Regenerate client from commit e22d968 of spec repo --- .generator/schemas/v1/openapi.yaml | 37 ++++ features/v1/dashboards.feature | 6 +- lib/datadog_api_client/inflector.rb | 1 + lib/datadog_api_client/v1/models/dashboard.rb | 26 ++- .../v1/models/dashboard_tab.rb | 175 ++++++++++++++++++ 5 files changed, 241 insertions(+), 4 deletions(-) create mode 100644 lib/datadog_api_client/v1/models/dashboard_tab.rb diff --git a/.generator/schemas/v1/openapi.yaml b/.generator/schemas/v1/openapi.yaml index 3e86f3a82c2d..87bad04350b9 100644 --- a/.generator/schemas/v1/openapi.yaml +++ b/.generator/schemas/v1/openapi.yaml @@ -1390,6 +1390,13 @@ components: description: A role UUID. type: string type: array + tabs: + description: List of tabs for organizing dashboard widgets into groups. + items: + $ref: '#/components/schemas/DashboardTab' + maxItems: 100 + nullable: true + type: array tags: description: List of team names representing ownership of a dashboard. items: @@ -1681,6 +1688,36 @@ components: description: URL of the dashboard. type: string type: object + DashboardTab: + description: Dashboard tab for organizing widgets. + properties: + id: + description: UUID of the tab. + example: '' + format: uuid + type: string + name: + description: Name of the tab. + example: L + maxLength: 100 + minLength: 1 + type: string + widget_ids: + description: List of widget IDs belonging to this tab. The backend also + accepts positional references in @N format (1-indexed) as a convenience + for Terraform and other declarative tools. + example: + - 0 + items: + description: Widget ID. + format: int64 + type: integer + type: array + required: + - id + - name + - widget_ids + type: object DashboardTemplateVariable: description: Template variable. properties: diff --git a/features/v1/dashboards.feature b/features/v1/dashboards.feature index 349f7de6f9d7..180d587a837b 100644 --- a/features/v1/dashboards.feature +++ b/features/v1/dashboards.feature @@ -91,7 +91,7 @@ Feature: Dashboards @generated @skip @team:DataDog/dashboards-backend Scenario: Create a new dashboard returns "Bad Request" response Given new "CreateDashboard" request - And body with value {"description": null, "is_read_only": false, "layout_type": "ordered", "notify_list": [], "reflow_type": "auto", "restricted_roles": [], "tags": [], "template_variable_presets": [{"template_variables": [{"values": []}]}], "template_variables": [{"available_values": ["my-host", "host1", "host2"], "default": "my-host", "defaults": ["my-host-1", "my-host-2"], "name": "host1", "prefix": "host", "type": "group"}], "title": "", "widgets": [{"definition": {"requests": {"fill": {"q": "avg:system.cpu.user{*}"}}, "type": "hostmap"}}]} + And body with value {"description": null, "is_read_only": false, "layout_type": "ordered", "notify_list": [], "reflow_type": "auto", "restricted_roles": [], "tabs": [{"id": "", "name": "L", "widget_ids": [0]}], "tags": [], "template_variable_presets": [{"template_variables": [{"values": []}]}], "template_variables": [{"available_values": ["my-host", "host1", "host2"], "default": "my-host", "defaults": ["my-host-1", "my-host-2"], "name": "host1", "prefix": "host", "type": "group"}], "title": "", "widgets": [{"definition": {"requests": {"fill": {"q": "avg:system.cpu.user{*}"}}, "type": "hostmap"}}]} When the request is sent Then the response status is 400 Bad Request @@ -1342,7 +1342,7 @@ Feature: Dashboards Scenario: Update a dashboard returns "Bad Request" response Given new "UpdateDashboard" request And request contains "dashboard_id" parameter from "REPLACE.ME" - And body with value {"description": null, "is_read_only": false, "layout_type": "ordered", "notify_list": [], "reflow_type": "auto", "restricted_roles": [], "tags": [], "template_variable_presets": [{"template_variables": [{"values": []}]}], "template_variables": [{"available_values": ["my-host", "host1", "host2"], "default": "my-host", "defaults": ["my-host-1", "my-host-2"], "name": "host1", "prefix": "host", "type": "group"}], "title": "", "widgets": [{"definition": {"requests": {"fill": {"q": "avg:system.cpu.user{*}"}}, "type": "hostmap"}}]} + And body with value {"description": null, "is_read_only": false, "layout_type": "ordered", "notify_list": [], "reflow_type": "auto", "restricted_roles": [], "tabs": [{"id": "", "name": "L", "widget_ids": [0]}], "tags": [], "template_variable_presets": [{"template_variables": [{"values": []}]}], "template_variables": [{"available_values": ["my-host", "host1", "host2"], "default": "my-host", "defaults": ["my-host-1", "my-host-2"], "name": "host1", "prefix": "host", "type": "group"}], "title": "", "widgets": [{"definition": {"requests": {"fill": {"q": "avg:system.cpu.user{*}"}}, "type": "hostmap"}}]} When the request is sent Then the response status is 400 Bad Request @@ -1350,7 +1350,7 @@ Feature: Dashboards Scenario: Update a dashboard returns "Item Not Found" response Given new "UpdateDashboard" request And request contains "dashboard_id" parameter from "REPLACE.ME" - And body with value {"description": null, "is_read_only": false, "layout_type": "ordered", "notify_list": [], "reflow_type": "auto", "restricted_roles": [], "tags": [], "template_variable_presets": [{"template_variables": [{"values": []}]}], "template_variables": [{"available_values": ["my-host", "host1", "host2"], "default": "my-host", "defaults": ["my-host-1", "my-host-2"], "name": "host1", "prefix": "host", "type": "group"}], "title": "", "widgets": [{"definition": {"requests": {"fill": {"q": "avg:system.cpu.user{*}"}}, "type": "hostmap"}}]} + And body with value {"description": null, "is_read_only": false, "layout_type": "ordered", "notify_list": [], "reflow_type": "auto", "restricted_roles": [], "tabs": [{"id": "", "name": "L", "widget_ids": [0]}], "tags": [], "template_variable_presets": [{"template_variables": [{"values": []}]}], "template_variables": [{"available_values": ["my-host", "host1", "host2"], "default": "my-host", "defaults": ["my-host-1", "my-host-2"], "name": "host1", "prefix": "host", "type": "group"}], "title": "", "widgets": [{"definition": {"requests": {"fill": {"q": "avg:system.cpu.user{*}"}}, "type": "hostmap"}}]} When the request is sent Then the response status is 404 Item Not Found diff --git a/lib/datadog_api_client/inflector.rb b/lib/datadog_api_client/inflector.rb index 4a0ac91fa81b..ee31148fb27e 100644 --- a/lib/datadog_api_client/inflector.rb +++ b/lib/datadog_api_client/inflector.rb @@ -94,6 +94,7 @@ def overrides "v1.dashboard_share_type" => "DashboardShareType", "v1.dashboard_summary" => "DashboardSummary", "v1.dashboard_summary_definition" => "DashboardSummaryDefinition", + "v1.dashboard_tab" => "DashboardTab", "v1.dashboard_template_variable" => "DashboardTemplateVariable", "v1.dashboard_template_variable_preset" => "DashboardTemplateVariablePreset", "v1.dashboard_template_variable_preset_value" => "DashboardTemplateVariablePresetValue", diff --git a/lib/datadog_api_client/v1/models/dashboard.rb b/lib/datadog_api_client/v1/models/dashboard.rb index 24370d30204d..b6d8a58748ba 100644 --- a/lib/datadog_api_client/v1/models/dashboard.rb +++ b/lib/datadog_api_client/v1/models/dashboard.rb @@ -59,6 +59,9 @@ class Dashboard # A list of role identifiers. Only the author and users associated with at least one of these roles can edit this dashboard. attr_accessor :restricted_roles + # List of tabs for organizing dashboard widgets into groups. + attr_reader :tabs + # List of team names representing ownership of a dashboard. attr_reader :tags @@ -94,6 +97,7 @@ def self.attribute_map :'notify_list' => :'notify_list', :'reflow_type' => :'reflow_type', :'restricted_roles' => :'restricted_roles', + :'tabs' => :'tabs', :'tags' => :'tags', :'template_variable_presets' => :'template_variable_presets', :'template_variables' => :'template_variables', @@ -118,6 +122,7 @@ def self.openapi_types :'notify_list' => :'Array', :'reflow_type' => :'DashboardReflowType', :'restricted_roles' => :'Array', + :'tabs' => :'Array', :'tags' => :'Array', :'template_variable_presets' => :'Array', :'template_variables' => :'Array', @@ -134,6 +139,7 @@ def self.openapi_nullable :'author_name', :'description', :'notify_list', + :'tabs', :'tags', :'template_variable_presets', :'template_variables', @@ -206,6 +212,12 @@ def initialize(attributes = {}) end end + if attributes.key?(:'tabs') + if (value = attributes[:'tabs']).is_a?(Array) + self.tabs = value + end + end + if attributes.key?(:'tags') if (value = attributes[:'tags']).is_a?(Array) self.tags = value @@ -244,6 +256,7 @@ def initialize(attributes = {}) # @!visibility private def valid? return false if @layout_type.nil? + return false if !@tabs.nil? && @tabs.length > 100 return false if !@tags.nil? && @tags.length > 5 return false if @title.nil? return false if @widgets.nil? @@ -260,6 +273,16 @@ def layout_type=(layout_type) @layout_type = layout_type end + # Custom attribute writer method with validation + # @param tabs [Object] Object to be assigned + # @!visibility private + def tabs=(tabs) + if !tabs.nil? && tabs.length > 100 + fail ArgumentError, 'invalid value for "tabs", number of items must be less than or equal to 100.' + end + @tabs = tabs + end + # Custom attribute writer method with validation # @param tags [Object] Object to be assigned # @!visibility private @@ -327,6 +350,7 @@ def ==(o) notify_list == o.notify_list && reflow_type == o.reflow_type && restricted_roles == o.restricted_roles && + tabs == o.tabs && tags == o.tags && template_variable_presets == o.template_variable_presets && template_variables == o.template_variables && @@ -340,7 +364,7 @@ def ==(o) # @return [Integer] Hash code # @!visibility private def hash - [author_handle, author_name, created_at, description, id, is_read_only, layout_type, modified_at, notify_list, reflow_type, restricted_roles, tags, template_variable_presets, template_variables, title, url, widgets, additional_properties].hash + [author_handle, author_name, created_at, description, id, is_read_only, layout_type, modified_at, notify_list, reflow_type, restricted_roles, tabs, tags, template_variable_presets, template_variables, title, url, widgets, additional_properties].hash end end end diff --git a/lib/datadog_api_client/v1/models/dashboard_tab.rb b/lib/datadog_api_client/v1/models/dashboard_tab.rb new file mode 100644 index 000000000000..2231651883e2 --- /dev/null +++ b/lib/datadog_api_client/v1/models/dashboard_tab.rb @@ -0,0 +1,175 @@ +=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 + # Dashboard tab for organizing widgets. + class DashboardTab + include BaseGenericModel + + # UUID of the tab. + attr_reader :id + + # Name of the tab. + attr_reader :name + + # List of widget IDs belonging to this tab. The backend also accepts positional references in @N format (1-indexed) as a convenience for Terraform and other declarative tools. + attr_reader :widget_ids + + attr_accessor :additional_properties + + # Attribute mapping from ruby-style variable name to JSON key. + # @!visibility private + def self.attribute_map + { + :'id' => :'id', + :'name' => :'name', + :'widget_ids' => :'widget_ids' + } + end + + # Attribute type mapping. + # @!visibility private + def self.openapi_types + { + :'id' => :'UUID', + :'name' => :'String', + :'widget_ids' => :'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::V1::DashboardTab` initialize method" + end + + self.additional_properties = {} + # check to see if the attribute exists and convert string to symbol for hash key + attributes = attributes.each_with_object({}) { |(k, v), h| + if (!self.class.attribute_map.key?(k.to_sym)) + self.additional_properties[k.to_sym] = v + else + h[k.to_sym] = v + end + } + + if attributes.key?(:'id') + self.id = attributes[:'id'] + end + + if attributes.key?(:'name') + self.name = attributes[:'name'] + end + + if attributes.key?(:'widget_ids') + if (value = attributes[:'widget_ids']).is_a?(Array) + self.widget_ids = 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 @id.nil? + return false if @name.nil? + return false if @name.to_s.length > 100 + return false if @name.to_s.length < 1 + return false if @widget_ids.nil? + true + end + + # Custom attribute writer method with validation + # @param id [Object] Object to be assigned + # @!visibility private + def id=(id) + if id.nil? + fail ArgumentError, 'invalid value for "id", id cannot be nil.' + end + @id = id + end + + # Custom attribute writer method with validation + # @param name [Object] Object to be assigned + # @!visibility private + def name=(name) + if name.nil? + fail ArgumentError, 'invalid value for "name", name cannot be nil.' + end + if name.to_s.length > 100 + fail ArgumentError, 'invalid value for "name", the character length must be smaller than or equal to 100.' + end + if name.to_s.length < 1 + fail ArgumentError, 'invalid value for "name", the character length must be great than or equal to 1.' + end + @name = name + end + + # Custom attribute writer method with validation + # @param widget_ids [Object] Object to be assigned + # @!visibility private + def widget_ids=(widget_ids) + if widget_ids.nil? + fail ArgumentError, 'invalid value for "widget_ids", widget_ids cannot be nil.' + end + @widget_ids = widget_ids + end + + # Returns the object in the form of hash, with additionalProperties support. + # @return [Hash] Returns the object in the form of hash + # @!visibility private + def to_hash + hash = {} + self.class.attribute_map.each_pair do |attr, param| + value = self.send(attr) + if value.nil? + is_nullable = self.class.openapi_nullable.include?(attr) + next if !is_nullable || (is_nullable && !instance_variable_defined?(:"@#{attr}")) + end + + hash[param] = _to_hash(value) + end + self.additional_properties.each_pair do |attr, value| + hash[attr] = value + end + hash + end + + # Checks equality by comparing each attribute. + # @param o [Object] Object to be compared + # @!visibility private + def ==(o) + return true if self.equal?(o) + self.class == o.class && + id == o.id && + name == o.name && + widget_ids == o.widget_ids && + additional_properties == o.additional_properties + end + + # Calculates hash code according to all attributes. + # @return [Integer] Hash code + # @!visibility private + def hash + [id, name, widget_ids, additional_properties].hash + end + end +end