diff --git a/.generator/schemas/v1/openapi.yaml b/.generator/schemas/v1/openapi.yaml index d9bb88a10f..a0b2429945 100644 --- a/.generator/schemas/v1/openapi.yaml +++ b/.generator/schemas/v1/openapi.yaml @@ -895,6 +895,174 @@ components: items: $ref: '#/components/schemas/AzureAccount' type: array + BarChartWidgetDefinition: + description: The bar chart visualization displays categorical data using vertical + bars, allowing you to compare values across different groups. + properties: + custom_links: + description: List of custom links. + items: + $ref: '#/components/schemas/WidgetCustomLink' + type: array + requests: + description: List of bar chart widget requests. + example: + - q: system.load.1 + items: + $ref: '#/components/schemas/BarChartWidgetRequest' + maxItems: 1 + minItems: 1 + type: array + style: + $ref: '#/components/schemas/BarChartWidgetStyle' + time: + $ref: '#/components/schemas/WidgetTime' + title: + description: Title of your widget. + type: string + title_align: + $ref: '#/components/schemas/WidgetTextAlign' + title_size: + description: Size of the title. + type: string + type: + $ref: '#/components/schemas/BarChartWidgetDefinitionType' + required: + - type + - requests + type: object + BarChartWidgetDefinitionType: + default: bar_chart + description: Type of the bar chart widget. + enum: + - bar_chart + example: bar_chart + type: string + x-enum-varnames: + - BAR_CHART + BarChartWidgetDisplay: + description: Bar chart widget display options. + oneOf: + - $ref: '#/components/schemas/BarChartWidgetStacked' + - $ref: '#/components/schemas/BarChartWidgetFlat' + BarChartWidgetFlat: + description: Bar chart widget flat display. + properties: + type: + $ref: '#/components/schemas/BarChartWidgetFlatType' + required: + - type + type: object + BarChartWidgetFlatType: + default: flat + description: Bar chart widget flat display type. + enum: + - flat + example: flat + type: string + x-enum-varnames: + - FLAT + BarChartWidgetLegend: + description: Bar chart widget stacked legend behavior. + enum: + - automatic + - inline + - none + example: automatic + type: string + x-enum-varnames: + - AUTOMATIC + - INLINE + - NONE + BarChartWidgetRequest: + description: Updated bar chart widget. + properties: + apm_query: + $ref: '#/components/schemas/LogQueryDefinition' + audit_query: + $ref: '#/components/schemas/LogQueryDefinition' + conditional_formats: + description: List of conditional formats. + example: + - comparator: '>=' + palette: blue + value: 1.0 + items: + $ref: '#/components/schemas/WidgetConditionalFormat' + type: array + event_query: + $ref: '#/components/schemas/LogQueryDefinition' + formulas: + description: List of formulas that operate on queries. + items: + $ref: '#/components/schemas/WidgetFormula' + type: array + log_query: + $ref: '#/components/schemas/LogQueryDefinition' + network_query: + $ref: '#/components/schemas/LogQueryDefinition' + process_query: + $ref: '#/components/schemas/ProcessQueryDefinition' + profile_metrics_query: + $ref: '#/components/schemas/LogQueryDefinition' + q: + description: Widget query. + type: string + queries: + description: List of queries that can be returned directly or used in formulas. + items: + $ref: '#/components/schemas/FormulaAndFunctionQueryDefinition' + type: array + response_format: + $ref: '#/components/schemas/FormulaAndFunctionResponseFormat' + rum_query: + $ref: '#/components/schemas/LogQueryDefinition' + security_query: + $ref: '#/components/schemas/LogQueryDefinition' + sort: + $ref: '#/components/schemas/WidgetSortBy' + style: + $ref: '#/components/schemas/WidgetRequestStyle' + type: object + BarChartWidgetScaling: + description: Bar chart widget scaling definition. + enum: + - absolute + - relative + type: string + x-enum-varnames: + - ABSOLUTE + - RELATIVE + BarChartWidgetStacked: + description: Bar chart widget stacked display options. + properties: + legend: + $ref: '#/components/schemas/BarChartWidgetLegend' + type: + $ref: '#/components/schemas/BarChartWidgetStackedType' + required: + - type + type: object + BarChartWidgetStackedType: + default: stacked + description: Bar chart widget stacked display type. + enum: + - stacked + example: stacked + type: string + x-enum-varnames: + - STACKED + BarChartWidgetStyle: + description: Style customization for a bar chart widget. + properties: + display: + $ref: '#/components/schemas/BarChartWidgetDisplay' + palette: + description: Color palette to apply to the widget. + type: string + scaling: + $ref: '#/components/schemas/BarChartWidgetScaling' + type: object CancelDowntimesByScopeRequest: description: Cancel downtimes according to scope. properties: @@ -14338,6 +14506,7 @@ components: SplitGraphSourceWidgetDefinition: description: The original widget we are splitting on. oneOf: + - $ref: '#/components/schemas/BarChartWidgetDefinition' - $ref: '#/components/schemas/ChangeWidgetDefinition' - $ref: '#/components/schemas/GeomapWidgetDefinition' - $ref: '#/components/schemas/QueryValueWidgetDefinition' @@ -24829,6 +24998,7 @@ components: oneOf: - $ref: '#/components/schemas/AlertGraphWidgetDefinition' - $ref: '#/components/schemas/AlertValueWidgetDefinition' + - $ref: '#/components/schemas/BarChartWidgetDefinition' - $ref: '#/components/schemas/ChangeWidgetDefinition' - $ref: '#/components/schemas/CheckStatusWidgetDefinition' - $ref: '#/components/schemas/DistributionWidgetDefinition' diff --git a/docs/datadog_api_client.v1.model.rst b/docs/datadog_api_client.v1.model.rst index 60a000a874..ac7aa536b2 100644 --- a/docs/datadog_api_client.v1.model.rst +++ b/docs/datadog_api_client.v1.model.rst @@ -319,6 +319,83 @@ datadog\_api\_client.v1.model.azure\_account\_list\_response module :members: :show-inheritance: +datadog\_api\_client.v1.model.bar\_chart\_widget\_definition module +------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v1.model.bar_chart_widget_definition + :members: + :show-inheritance: + +datadog\_api\_client.v1.model.bar\_chart\_widget\_definition\_type module +------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v1.model.bar_chart_widget_definition_type + :members: + :show-inheritance: + +datadog\_api\_client.v1.model.bar\_chart\_widget\_display module +---------------------------------------------------------------- + +.. automodule:: datadog_api_client.v1.model.bar_chart_widget_display + :members: + :show-inheritance: + +datadog\_api\_client.v1.model.bar\_chart\_widget\_flat module +------------------------------------------------------------- + +.. automodule:: datadog_api_client.v1.model.bar_chart_widget_flat + :members: + :show-inheritance: + +datadog\_api\_client.v1.model.bar\_chart\_widget\_flat\_type module +------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v1.model.bar_chart_widget_flat_type + :members: + :show-inheritance: + +datadog\_api\_client.v1.model.bar\_chart\_widget\_legend module +--------------------------------------------------------------- + +.. automodule:: datadog_api_client.v1.model.bar_chart_widget_legend + :members: + :show-inheritance: + +datadog\_api\_client.v1.model.bar\_chart\_widget\_request module +---------------------------------------------------------------- + +.. automodule:: datadog_api_client.v1.model.bar_chart_widget_request + :members: + :show-inheritance: + +datadog\_api\_client.v1.model.bar\_chart\_widget\_scaling module +---------------------------------------------------------------- + +.. automodule:: datadog_api_client.v1.model.bar_chart_widget_scaling + :members: + :show-inheritance: + +datadog\_api\_client.v1.model.bar\_chart\_widget\_stacked module +---------------------------------------------------------------- + +.. automodule:: datadog_api_client.v1.model.bar_chart_widget_stacked + :members: + :show-inheritance: + +datadog\_api\_client.v1.model.bar\_chart\_widget\_stacked\_type module +---------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v1.model.bar_chart_widget_stacked_type + :members: + :show-inheritance: + +datadog\_api\_client.v1.model.bar\_chart\_widget\_style module +-------------------------------------------------------------- + +.. automodule:: datadog_api_client.v1.model.bar_chart_widget_style + :members: + :show-inheritance: + datadog\_api\_client.v1.model.cancel\_downtimes\_by\_scope\_request module -------------------------------------------------------------------------- diff --git a/examples/v1/dashboards/CreateDashboard_1712853070.py b/examples/v1/dashboards/CreateDashboard_1712853070.py new file mode 100644 index 0000000000..93730a14cc --- /dev/null +++ b/examples/v1/dashboards/CreateDashboard_1712853070.py @@ -0,0 +1,99 @@ +""" +Create a new dashboard with bar_chart widget +""" + +from datadog_api_client import ApiClient, Configuration +from datadog_api_client.v1.api.dashboards_api import DashboardsApi +from datadog_api_client.v1.model.bar_chart_widget_definition import BarChartWidgetDefinition +from datadog_api_client.v1.model.bar_chart_widget_definition_type import BarChartWidgetDefinitionType +from datadog_api_client.v1.model.bar_chart_widget_legend import BarChartWidgetLegend +from datadog_api_client.v1.model.bar_chart_widget_request import BarChartWidgetRequest +from datadog_api_client.v1.model.bar_chart_widget_scaling import BarChartWidgetScaling +from datadog_api_client.v1.model.bar_chart_widget_stacked import BarChartWidgetStacked +from datadog_api_client.v1.model.bar_chart_widget_stacked_type import BarChartWidgetStackedType +from datadog_api_client.v1.model.bar_chart_widget_style import BarChartWidgetStyle +from datadog_api_client.v1.model.dashboard import Dashboard +from datadog_api_client.v1.model.dashboard_layout_type import DashboardLayoutType +from datadog_api_client.v1.model.formula_and_function_metric_aggregation import FormulaAndFunctionMetricAggregation +from datadog_api_client.v1.model.formula_and_function_metric_data_source import FormulaAndFunctionMetricDataSource +from datadog_api_client.v1.model.formula_and_function_metric_query_definition import ( + FormulaAndFunctionMetricQueryDefinition, +) +from datadog_api_client.v1.model.formula_and_function_response_format import FormulaAndFunctionResponseFormat +from datadog_api_client.v1.model.formula_type import FormulaType +from datadog_api_client.v1.model.widget import Widget +from datadog_api_client.v1.model.widget_formula import WidgetFormula +from datadog_api_client.v1.model.widget_formula_sort import WidgetFormulaSort +from datadog_api_client.v1.model.widget_layout import WidgetLayout +from datadog_api_client.v1.model.widget_legacy_live_span import WidgetLegacyLiveSpan +from datadog_api_client.v1.model.widget_sort import WidgetSort +from datadog_api_client.v1.model.widget_sort_by import WidgetSortBy +from datadog_api_client.v1.model.widget_text_align import WidgetTextAlign + +body = Dashboard( + title="Example-Dashboard", + description="", + widgets=[ + Widget( + layout=WidgetLayout( + x=0, + y=0, + width=47, + height=15, + ), + definition=BarChartWidgetDefinition( + title="", + title_size="16", + title_align=WidgetTextAlign.LEFT, + time=WidgetLegacyLiveSpan(), + style=BarChartWidgetStyle( + display=BarChartWidgetStacked( + type=BarChartWidgetStackedType.STACKED, + legend=BarChartWidgetLegend.INLINE, + ), + scaling=BarChartWidgetScaling.RELATIVE, + palette="dog_classic", + ), + type=BarChartWidgetDefinitionType.BAR_CHART, + requests=[ + BarChartWidgetRequest( + queries=[ + FormulaAndFunctionMetricQueryDefinition( + data_source=FormulaAndFunctionMetricDataSource.METRICS, + name="query1", + query="avg:system.cpu.user{*} by {service}", + aggregator=FormulaAndFunctionMetricAggregation.AVG, + ), + ], + formulas=[ + WidgetFormula( + formula="query1", + ), + ], + sort=WidgetSortBy( + count=10, + order_by=[ + WidgetFormulaSort( + type=FormulaType.FORMULA, + index=0, + order=WidgetSort.DESCENDING, + ), + ], + ), + response_format=FormulaAndFunctionResponseFormat.SCALAR, + ), + ], + ), + ), + ], + template_variables=[], + layout_type=DashboardLayoutType.FREE, + notify_list=[], +) + +configuration = Configuration() +with ApiClient(configuration) as api_client: + api_instance = DashboardsApi(api_client) + response = api_instance.create_dashboard(body=body) + + print(response) diff --git a/examples/v1/dashboards/CreateDashboard_2345541687.py b/examples/v1/dashboards/CreateDashboard_2345541687.py new file mode 100644 index 0000000000..cb62ce8fe2 --- /dev/null +++ b/examples/v1/dashboards/CreateDashboard_2345541687.py @@ -0,0 +1,97 @@ +""" +Create a new dashboard with a bar_chart widget with stacked type and no legend specified +""" + +from datadog_api_client import ApiClient, Configuration +from datadog_api_client.v1.api.dashboards_api import DashboardsApi +from datadog_api_client.v1.model.bar_chart_widget_definition import BarChartWidgetDefinition +from datadog_api_client.v1.model.bar_chart_widget_definition_type import BarChartWidgetDefinitionType +from datadog_api_client.v1.model.bar_chart_widget_request import BarChartWidgetRequest +from datadog_api_client.v1.model.bar_chart_widget_scaling import BarChartWidgetScaling +from datadog_api_client.v1.model.bar_chart_widget_stacked import BarChartWidgetStacked +from datadog_api_client.v1.model.bar_chart_widget_stacked_type import BarChartWidgetStackedType +from datadog_api_client.v1.model.bar_chart_widget_style import BarChartWidgetStyle +from datadog_api_client.v1.model.dashboard import Dashboard +from datadog_api_client.v1.model.dashboard_layout_type import DashboardLayoutType +from datadog_api_client.v1.model.formula_and_function_metric_aggregation import FormulaAndFunctionMetricAggregation +from datadog_api_client.v1.model.formula_and_function_metric_data_source import FormulaAndFunctionMetricDataSource +from datadog_api_client.v1.model.formula_and_function_metric_query_definition import ( + FormulaAndFunctionMetricQueryDefinition, +) +from datadog_api_client.v1.model.formula_and_function_response_format import FormulaAndFunctionResponseFormat +from datadog_api_client.v1.model.group_type import GroupType +from datadog_api_client.v1.model.widget import Widget +from datadog_api_client.v1.model.widget_formula import WidgetFormula +from datadog_api_client.v1.model.widget_group_sort import WidgetGroupSort +from datadog_api_client.v1.model.widget_layout import WidgetLayout +from datadog_api_client.v1.model.widget_legacy_live_span import WidgetLegacyLiveSpan +from datadog_api_client.v1.model.widget_sort import WidgetSort +from datadog_api_client.v1.model.widget_sort_by import WidgetSortBy +from datadog_api_client.v1.model.widget_text_align import WidgetTextAlign + +body = Dashboard( + title="Example-Dashboard", + description="", + widgets=[ + Widget( + layout=WidgetLayout( + x=0, + y=0, + width=47, + height=15, + ), + definition=BarChartWidgetDefinition( + title="", + title_size="16", + title_align=WidgetTextAlign.LEFT, + time=WidgetLegacyLiveSpan(), + style=BarChartWidgetStyle( + display=BarChartWidgetStacked( + type=BarChartWidgetStackedType.STACKED, + ), + scaling=BarChartWidgetScaling.RELATIVE, + palette="dog_classic", + ), + type=BarChartWidgetDefinitionType.BAR_CHART, + requests=[ + BarChartWidgetRequest( + queries=[ + FormulaAndFunctionMetricQueryDefinition( + data_source=FormulaAndFunctionMetricDataSource.METRICS, + name="query1", + query="avg:system.cpu.user{*} by {service}", + aggregator=FormulaAndFunctionMetricAggregation.AVG, + ), + ], + formulas=[ + WidgetFormula( + formula="query1", + ), + ], + sort=WidgetSortBy( + count=10, + order_by=[ + WidgetGroupSort( + type=GroupType.GROUP, + name="service", + order=WidgetSort.ASCENDING, + ), + ], + ), + response_format=FormulaAndFunctionResponseFormat.SCALAR, + ), + ], + ), + ), + ], + template_variables=[], + layout_type=DashboardLayoutType.FREE, + notify_list=[], +) + +configuration = Configuration() +with ApiClient(configuration) as api_client: + api_instance = DashboardsApi(api_client) + response = api_instance.create_dashboard(body=body) + + print(response) diff --git a/examples/v1/dashboards/CreateDashboard_2617251399.py b/examples/v1/dashboards/CreateDashboard_2617251399.py new file mode 100644 index 0000000000..6b16203ebc --- /dev/null +++ b/examples/v1/dashboards/CreateDashboard_2617251399.py @@ -0,0 +1,99 @@ +""" +Create a new dashboard with bar_chart widget sorted by group +""" + +from datadog_api_client import ApiClient, Configuration +from datadog_api_client.v1.api.dashboards_api import DashboardsApi +from datadog_api_client.v1.model.bar_chart_widget_definition import BarChartWidgetDefinition +from datadog_api_client.v1.model.bar_chart_widget_definition_type import BarChartWidgetDefinitionType +from datadog_api_client.v1.model.bar_chart_widget_legend import BarChartWidgetLegend +from datadog_api_client.v1.model.bar_chart_widget_request import BarChartWidgetRequest +from datadog_api_client.v1.model.bar_chart_widget_scaling import BarChartWidgetScaling +from datadog_api_client.v1.model.bar_chart_widget_stacked import BarChartWidgetStacked +from datadog_api_client.v1.model.bar_chart_widget_stacked_type import BarChartWidgetStackedType +from datadog_api_client.v1.model.bar_chart_widget_style import BarChartWidgetStyle +from datadog_api_client.v1.model.dashboard import Dashboard +from datadog_api_client.v1.model.dashboard_layout_type import DashboardLayoutType +from datadog_api_client.v1.model.formula_and_function_metric_aggregation import FormulaAndFunctionMetricAggregation +from datadog_api_client.v1.model.formula_and_function_metric_data_source import FormulaAndFunctionMetricDataSource +from datadog_api_client.v1.model.formula_and_function_metric_query_definition import ( + FormulaAndFunctionMetricQueryDefinition, +) +from datadog_api_client.v1.model.formula_and_function_response_format import FormulaAndFunctionResponseFormat +from datadog_api_client.v1.model.group_type import GroupType +from datadog_api_client.v1.model.widget import Widget +from datadog_api_client.v1.model.widget_formula import WidgetFormula +from datadog_api_client.v1.model.widget_group_sort import WidgetGroupSort +from datadog_api_client.v1.model.widget_layout import WidgetLayout +from datadog_api_client.v1.model.widget_legacy_live_span import WidgetLegacyLiveSpan +from datadog_api_client.v1.model.widget_sort import WidgetSort +from datadog_api_client.v1.model.widget_sort_by import WidgetSortBy +from datadog_api_client.v1.model.widget_text_align import WidgetTextAlign + +body = Dashboard( + title="Example-Dashboard", + description="", + widgets=[ + Widget( + layout=WidgetLayout( + x=0, + y=0, + width=47, + height=15, + ), + definition=BarChartWidgetDefinition( + title="", + title_size="16", + title_align=WidgetTextAlign.LEFT, + time=WidgetLegacyLiveSpan(), + style=BarChartWidgetStyle( + display=BarChartWidgetStacked( + type=BarChartWidgetStackedType.STACKED, + legend=BarChartWidgetLegend.INLINE, + ), + scaling=BarChartWidgetScaling.RELATIVE, + palette="dog_classic", + ), + type=BarChartWidgetDefinitionType.BAR_CHART, + requests=[ + BarChartWidgetRequest( + queries=[ + FormulaAndFunctionMetricQueryDefinition( + data_source=FormulaAndFunctionMetricDataSource.METRICS, + name="query1", + query="avg:system.cpu.user{*} by {service}", + aggregator=FormulaAndFunctionMetricAggregation.AVG, + ), + ], + formulas=[ + WidgetFormula( + formula="query1", + ), + ], + sort=WidgetSortBy( + count=10, + order_by=[ + WidgetGroupSort( + type=GroupType.GROUP, + name="service", + order=WidgetSort.ASCENDING, + ), + ], + ), + response_format=FormulaAndFunctionResponseFormat.SCALAR, + ), + ], + ), + ), + ], + template_variables=[], + layout_type=DashboardLayoutType.FREE, + notify_list=[], +) + +configuration = Configuration() +with ApiClient(configuration) as api_client: + api_instance = DashboardsApi(api_client) + response = api_instance.create_dashboard(body=body) + + print(response) diff --git a/src/datadog_api_client/v1/model/bar_chart_widget_definition.py b/src/datadog_api_client/v1/model/bar_chart_widget_definition.py new file mode 100644 index 0000000000..5ff6a47cc7 --- /dev/null +++ b/src/datadog_api_client/v1/model/bar_chart_widget_definition.py @@ -0,0 +1,121 @@ +# 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 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import List, Union, TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, + unset, + UnsetType, +) + + +if TYPE_CHECKING: + from datadog_api_client.v1.model.widget_custom_link import WidgetCustomLink + from datadog_api_client.v1.model.bar_chart_widget_request import BarChartWidgetRequest + from datadog_api_client.v1.model.bar_chart_widget_style import BarChartWidgetStyle + from datadog_api_client.v1.model.widget_time import WidgetTime + from datadog_api_client.v1.model.widget_text_align import WidgetTextAlign + from datadog_api_client.v1.model.bar_chart_widget_definition_type import BarChartWidgetDefinitionType + from datadog_api_client.v1.model.widget_legacy_live_span import WidgetLegacyLiveSpan + from datadog_api_client.v1.model.widget_new_live_span import WidgetNewLiveSpan + from datadog_api_client.v1.model.widget_new_fixed_span import WidgetNewFixedSpan + + +class BarChartWidgetDefinition(ModelNormal): + validations = { + "requests": { + "max_items": 1, + "min_items": 1, + }, + } + + @cached_property + def openapi_types(_): + from datadog_api_client.v1.model.widget_custom_link import WidgetCustomLink + from datadog_api_client.v1.model.bar_chart_widget_request import BarChartWidgetRequest + from datadog_api_client.v1.model.bar_chart_widget_style import BarChartWidgetStyle + from datadog_api_client.v1.model.widget_time import WidgetTime + from datadog_api_client.v1.model.widget_text_align import WidgetTextAlign + from datadog_api_client.v1.model.bar_chart_widget_definition_type import BarChartWidgetDefinitionType + + return { + "custom_links": ([WidgetCustomLink],), + "requests": ([BarChartWidgetRequest],), + "style": (BarChartWidgetStyle,), + "time": (WidgetTime,), + "title": (str,), + "title_align": (WidgetTextAlign,), + "title_size": (str,), + "type": (BarChartWidgetDefinitionType,), + } + + attribute_map = { + "custom_links": "custom_links", + "requests": "requests", + "style": "style", + "time": "time", + "title": "title", + "title_align": "title_align", + "title_size": "title_size", + "type": "type", + } + + def __init__( + self_, + requests: List[BarChartWidgetRequest], + type: BarChartWidgetDefinitionType, + custom_links: Union[List[WidgetCustomLink], UnsetType] = unset, + style: Union[BarChartWidgetStyle, UnsetType] = unset, + time: Union[WidgetTime, WidgetLegacyLiveSpan, WidgetNewLiveSpan, WidgetNewFixedSpan, UnsetType] = unset, + title: Union[str, UnsetType] = unset, + title_align: Union[WidgetTextAlign, UnsetType] = unset, + title_size: Union[str, UnsetType] = unset, + **kwargs, + ): + """ + The bar chart visualization displays categorical data using vertical bars, allowing you to compare values across different groups. + + :param custom_links: List of custom links. + :type custom_links: [WidgetCustomLink], optional + + :param requests: List of bar chart widget requests. + :type requests: [BarChartWidgetRequest] + + :param style: Style customization for a bar chart widget. + :type style: BarChartWidgetStyle, optional + + :param time: Time setting for the widget. + :type time: WidgetTime, optional + + :param title: Title of your widget. + :type title: str, optional + + :param title_align: How to align the text on the widget. + :type title_align: WidgetTextAlign, optional + + :param title_size: Size of the title. + :type title_size: str, optional + + :param type: Type of the bar chart widget. + :type type: BarChartWidgetDefinitionType + """ + if custom_links is not unset: + kwargs["custom_links"] = custom_links + if style is not unset: + kwargs["style"] = style + if time is not unset: + kwargs["time"] = time + if title is not unset: + kwargs["title"] = title + if title_align is not unset: + kwargs["title_align"] = title_align + if title_size is not unset: + kwargs["title_size"] = title_size + super().__init__(kwargs) + + self_.requests = requests + self_.type = type diff --git a/src/datadog_api_client/v1/model/bar_chart_widget_definition_type.py b/src/datadog_api_client/v1/model/bar_chart_widget_definition_type.py new file mode 100644 index 0000000000..26ac36286f --- /dev/null +++ b/src/datadog_api_client/v1/model/bar_chart_widget_definition_type.py @@ -0,0 +1,35 @@ +# 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 2019-Present Datadog, Inc. +from __future__ import annotations + + +from datadog_api_client.model_utils import ( + ModelSimple, + cached_property, +) + +from typing import ClassVar + + +class BarChartWidgetDefinitionType(ModelSimple): + """ + Type of the bar chart widget. + + :param value: If omitted defaults to "bar_chart". Must be one of ["bar_chart"]. + :type value: str + """ + + allowed_values = { + "bar_chart", + } + BAR_CHART: ClassVar["BarChartWidgetDefinitionType"] + + @cached_property + def openapi_types(_): + return { + "value": (str,), + } + + +BarChartWidgetDefinitionType.BAR_CHART = BarChartWidgetDefinitionType("bar_chart") diff --git a/src/datadog_api_client/v1/model/bar_chart_widget_display.py b/src/datadog_api_client/v1/model/bar_chart_widget_display.py new file mode 100644 index 0000000000..c0e16bd097 --- /dev/null +++ b/src/datadog_api_client/v1/model/bar_chart_widget_display.py @@ -0,0 +1,43 @@ +# 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 2019-Present Datadog, Inc. +from __future__ import annotations + + +from datadog_api_client.model_utils import ( + ModelComposed, + cached_property, +) + + +class BarChartWidgetDisplay(ModelComposed): + def __init__(self, **kwargs): + """ + Bar chart widget display options. + + :param legend: Bar chart widget stacked legend behavior. + :type legend: BarChartWidgetLegend, optional + + :param type: Bar chart widget stacked display type. + :type type: BarChartWidgetStackedType + """ + super().__init__(kwargs) + + @cached_property + def _composed_schemas(_): + # we need this here to make our import statements work + # we must store _composed_schemas in here so the code is only run + # when we invoke this method. If we kept this at the class + # level we would get an error because the class level + # code would be run when this module is imported, and these composed + # classes don't exist yet because their module has not finished + # loading + from datadog_api_client.v1.model.bar_chart_widget_stacked import BarChartWidgetStacked + from datadog_api_client.v1.model.bar_chart_widget_flat import BarChartWidgetFlat + + return { + "oneOf": [ + BarChartWidgetStacked, + BarChartWidgetFlat, + ], + } diff --git a/src/datadog_api_client/v1/model/bar_chart_widget_flat.py b/src/datadog_api_client/v1/model/bar_chart_widget_flat.py new file mode 100644 index 0000000000..d56446e55b --- /dev/null +++ b/src/datadog_api_client/v1/model/bar_chart_widget_flat.py @@ -0,0 +1,40 @@ +# 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 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v1.model.bar_chart_widget_flat_type import BarChartWidgetFlatType + + +class BarChartWidgetFlat(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v1.model.bar_chart_widget_flat_type import BarChartWidgetFlatType + + return { + "type": (BarChartWidgetFlatType,), + } + + attribute_map = { + "type": "type", + } + + def __init__(self_, type: BarChartWidgetFlatType, **kwargs): + """ + Bar chart widget flat display. + + :param type: Bar chart widget flat display type. + :type type: BarChartWidgetFlatType + """ + super().__init__(kwargs) + + self_.type = type diff --git a/src/datadog_api_client/v1/model/bar_chart_widget_flat_type.py b/src/datadog_api_client/v1/model/bar_chart_widget_flat_type.py new file mode 100644 index 0000000000..24f8c65028 --- /dev/null +++ b/src/datadog_api_client/v1/model/bar_chart_widget_flat_type.py @@ -0,0 +1,35 @@ +# 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 2019-Present Datadog, Inc. +from __future__ import annotations + + +from datadog_api_client.model_utils import ( + ModelSimple, + cached_property, +) + +from typing import ClassVar + + +class BarChartWidgetFlatType(ModelSimple): + """ + Bar chart widget flat display type. + + :param value: If omitted defaults to "flat". Must be one of ["flat"]. + :type value: str + """ + + allowed_values = { + "flat", + } + FLAT: ClassVar["BarChartWidgetFlatType"] + + @cached_property + def openapi_types(_): + return { + "value": (str,), + } + + +BarChartWidgetFlatType.FLAT = BarChartWidgetFlatType("flat") diff --git a/src/datadog_api_client/v1/model/bar_chart_widget_legend.py b/src/datadog_api_client/v1/model/bar_chart_widget_legend.py new file mode 100644 index 0000000000..1a0e9cd017 --- /dev/null +++ b/src/datadog_api_client/v1/model/bar_chart_widget_legend.py @@ -0,0 +1,41 @@ +# 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 2019-Present Datadog, Inc. +from __future__ import annotations + + +from datadog_api_client.model_utils import ( + ModelSimple, + cached_property, +) + +from typing import ClassVar + + +class BarChartWidgetLegend(ModelSimple): + """ + Bar chart widget stacked legend behavior. + + :param value: Must be one of ["automatic", "inline", "none"]. + :type value: str + """ + + allowed_values = { + "automatic", + "inline", + "none", + } + AUTOMATIC: ClassVar["BarChartWidgetLegend"] + INLINE: ClassVar["BarChartWidgetLegend"] + NONE: ClassVar["BarChartWidgetLegend"] + + @cached_property + def openapi_types(_): + return { + "value": (str,), + } + + +BarChartWidgetLegend.AUTOMATIC = BarChartWidgetLegend("automatic") +BarChartWidgetLegend.INLINE = BarChartWidgetLegend("inline") +BarChartWidgetLegend.NONE = BarChartWidgetLegend("none") diff --git a/src/datadog_api_client/v1/model/bar_chart_widget_request.py b/src/datadog_api_client/v1/model/bar_chart_widget_request.py new file mode 100644 index 0000000000..efe1bf9ed6 --- /dev/null +++ b/src/datadog_api_client/v1/model/bar_chart_widget_request.py @@ -0,0 +1,215 @@ +# 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 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import List, Union, TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, + unset, + UnsetType, +) + + +if TYPE_CHECKING: + from datadog_api_client.v1.model.log_query_definition import LogQueryDefinition + from datadog_api_client.v1.model.widget_conditional_format import WidgetConditionalFormat + from datadog_api_client.v1.model.widget_formula import WidgetFormula + from datadog_api_client.v1.model.process_query_definition import ProcessQueryDefinition + from datadog_api_client.v1.model.formula_and_function_query_definition import FormulaAndFunctionQueryDefinition + from datadog_api_client.v1.model.formula_and_function_response_format import FormulaAndFunctionResponseFormat + from datadog_api_client.v1.model.widget_sort_by import WidgetSortBy + from datadog_api_client.v1.model.widget_request_style import WidgetRequestStyle + from datadog_api_client.v1.model.formula_and_function_metric_query_definition import ( + FormulaAndFunctionMetricQueryDefinition, + ) + from datadog_api_client.v1.model.formula_and_function_event_query_definition import ( + FormulaAndFunctionEventQueryDefinition, + ) + from datadog_api_client.v1.model.formula_and_function_process_query_definition import ( + FormulaAndFunctionProcessQueryDefinition, + ) + from datadog_api_client.v1.model.formula_and_function_apm_dependency_stats_query_definition import ( + FormulaAndFunctionApmDependencyStatsQueryDefinition, + ) + from datadog_api_client.v1.model.formula_and_function_apm_resource_stats_query_definition import ( + FormulaAndFunctionApmResourceStatsQueryDefinition, + ) + from datadog_api_client.v1.model.formula_and_function_slo_query_definition import ( + FormulaAndFunctionSLOQueryDefinition, + ) + from datadog_api_client.v1.model.formula_and_function_cloud_cost_query_definition import ( + FormulaAndFunctionCloudCostQueryDefinition, + ) + + +class BarChartWidgetRequest(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v1.model.log_query_definition import LogQueryDefinition + from datadog_api_client.v1.model.widget_conditional_format import WidgetConditionalFormat + from datadog_api_client.v1.model.widget_formula import WidgetFormula + from datadog_api_client.v1.model.process_query_definition import ProcessQueryDefinition + from datadog_api_client.v1.model.formula_and_function_query_definition import FormulaAndFunctionQueryDefinition + from datadog_api_client.v1.model.formula_and_function_response_format import FormulaAndFunctionResponseFormat + from datadog_api_client.v1.model.widget_sort_by import WidgetSortBy + from datadog_api_client.v1.model.widget_request_style import WidgetRequestStyle + + return { + "apm_query": (LogQueryDefinition,), + "audit_query": (LogQueryDefinition,), + "conditional_formats": ([WidgetConditionalFormat],), + "event_query": (LogQueryDefinition,), + "formulas": ([WidgetFormula],), + "log_query": (LogQueryDefinition,), + "network_query": (LogQueryDefinition,), + "process_query": (ProcessQueryDefinition,), + "profile_metrics_query": (LogQueryDefinition,), + "q": (str,), + "queries": ([FormulaAndFunctionQueryDefinition],), + "response_format": (FormulaAndFunctionResponseFormat,), + "rum_query": (LogQueryDefinition,), + "security_query": (LogQueryDefinition,), + "sort": (WidgetSortBy,), + "style": (WidgetRequestStyle,), + } + + attribute_map = { + "apm_query": "apm_query", + "audit_query": "audit_query", + "conditional_formats": "conditional_formats", + "event_query": "event_query", + "formulas": "formulas", + "log_query": "log_query", + "network_query": "network_query", + "process_query": "process_query", + "profile_metrics_query": "profile_metrics_query", + "q": "q", + "queries": "queries", + "response_format": "response_format", + "rum_query": "rum_query", + "security_query": "security_query", + "sort": "sort", + "style": "style", + } + + def __init__( + self_, + apm_query: Union[LogQueryDefinition, UnsetType] = unset, + audit_query: Union[LogQueryDefinition, UnsetType] = unset, + conditional_formats: Union[List[WidgetConditionalFormat], UnsetType] = unset, + event_query: Union[LogQueryDefinition, UnsetType] = unset, + formulas: Union[List[WidgetFormula], UnsetType] = unset, + log_query: Union[LogQueryDefinition, UnsetType] = unset, + network_query: Union[LogQueryDefinition, UnsetType] = unset, + process_query: Union[ProcessQueryDefinition, UnsetType] = unset, + profile_metrics_query: Union[LogQueryDefinition, UnsetType] = unset, + q: Union[str, UnsetType] = unset, + queries: Union[ + List[ + Union[ + FormulaAndFunctionQueryDefinition, + FormulaAndFunctionMetricQueryDefinition, + FormulaAndFunctionEventQueryDefinition, + FormulaAndFunctionProcessQueryDefinition, + FormulaAndFunctionApmDependencyStatsQueryDefinition, + FormulaAndFunctionApmResourceStatsQueryDefinition, + FormulaAndFunctionSLOQueryDefinition, + FormulaAndFunctionCloudCostQueryDefinition, + ] + ], + UnsetType, + ] = unset, + response_format: Union[FormulaAndFunctionResponseFormat, UnsetType] = unset, + rum_query: Union[LogQueryDefinition, UnsetType] = unset, + security_query: Union[LogQueryDefinition, UnsetType] = unset, + sort: Union[WidgetSortBy, UnsetType] = unset, + style: Union[WidgetRequestStyle, UnsetType] = unset, + **kwargs, + ): + """ + Updated bar chart widget. + + :param apm_query: The log query. + :type apm_query: LogQueryDefinition, optional + + :param audit_query: The log query. + :type audit_query: LogQueryDefinition, optional + + :param conditional_formats: List of conditional formats. + :type conditional_formats: [WidgetConditionalFormat], optional + + :param event_query: The log query. + :type event_query: LogQueryDefinition, optional + + :param formulas: List of formulas that operate on queries. + :type formulas: [WidgetFormula], optional + + :param log_query: The log query. + :type log_query: LogQueryDefinition, optional + + :param network_query: The log query. + :type network_query: LogQueryDefinition, optional + + :param process_query: The process query to use in the widget. + :type process_query: ProcessQueryDefinition, optional + + :param profile_metrics_query: The log query. + :type profile_metrics_query: LogQueryDefinition, optional + + :param q: Widget query. + :type q: str, optional + + :param queries: List of queries that can be returned directly or used in formulas. + :type queries: [FormulaAndFunctionQueryDefinition], optional + + :param response_format: Timeseries, scalar, or event list response. Event list response formats are supported by Geomap widgets. + :type response_format: FormulaAndFunctionResponseFormat, optional + + :param rum_query: The log query. + :type rum_query: LogQueryDefinition, optional + + :param security_query: The log query. + :type security_query: LogQueryDefinition, optional + + :param sort: The controls for sorting the widget. + :type sort: WidgetSortBy, optional + + :param style: Define request widget style. + :type style: WidgetRequestStyle, optional + """ + if apm_query is not unset: + kwargs["apm_query"] = apm_query + if audit_query is not unset: + kwargs["audit_query"] = audit_query + if conditional_formats is not unset: + kwargs["conditional_formats"] = conditional_formats + if event_query is not unset: + kwargs["event_query"] = event_query + if formulas is not unset: + kwargs["formulas"] = formulas + if log_query is not unset: + kwargs["log_query"] = log_query + if network_query is not unset: + kwargs["network_query"] = network_query + if process_query is not unset: + kwargs["process_query"] = process_query + if profile_metrics_query is not unset: + kwargs["profile_metrics_query"] = profile_metrics_query + if q is not unset: + kwargs["q"] = q + if queries is not unset: + kwargs["queries"] = queries + if response_format is not unset: + kwargs["response_format"] = response_format + if rum_query is not unset: + kwargs["rum_query"] = rum_query + if security_query is not unset: + kwargs["security_query"] = security_query + if sort is not unset: + kwargs["sort"] = sort + if style is not unset: + kwargs["style"] = style + super().__init__(kwargs) diff --git a/src/datadog_api_client/v1/model/bar_chart_widget_scaling.py b/src/datadog_api_client/v1/model/bar_chart_widget_scaling.py new file mode 100644 index 0000000000..c544977e0f --- /dev/null +++ b/src/datadog_api_client/v1/model/bar_chart_widget_scaling.py @@ -0,0 +1,38 @@ +# 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 2019-Present Datadog, Inc. +from __future__ import annotations + + +from datadog_api_client.model_utils import ( + ModelSimple, + cached_property, +) + +from typing import ClassVar + + +class BarChartWidgetScaling(ModelSimple): + """ + Bar chart widget scaling definition. + + :param value: Must be one of ["absolute", "relative"]. + :type value: str + """ + + allowed_values = { + "absolute", + "relative", + } + ABSOLUTE: ClassVar["BarChartWidgetScaling"] + RELATIVE: ClassVar["BarChartWidgetScaling"] + + @cached_property + def openapi_types(_): + return { + "value": (str,), + } + + +BarChartWidgetScaling.ABSOLUTE = BarChartWidgetScaling("absolute") +BarChartWidgetScaling.RELATIVE = BarChartWidgetScaling("relative") diff --git a/src/datadog_api_client/v1/model/bar_chart_widget_stacked.py b/src/datadog_api_client/v1/model/bar_chart_widget_stacked.py new file mode 100644 index 0000000000..949625d185 --- /dev/null +++ b/src/datadog_api_client/v1/model/bar_chart_widget_stacked.py @@ -0,0 +1,53 @@ +# 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 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import Union, TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, + unset, + UnsetType, +) + + +if TYPE_CHECKING: + from datadog_api_client.v1.model.bar_chart_widget_legend import BarChartWidgetLegend + from datadog_api_client.v1.model.bar_chart_widget_stacked_type import BarChartWidgetStackedType + + +class BarChartWidgetStacked(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v1.model.bar_chart_widget_legend import BarChartWidgetLegend + from datadog_api_client.v1.model.bar_chart_widget_stacked_type import BarChartWidgetStackedType + + return { + "legend": (BarChartWidgetLegend,), + "type": (BarChartWidgetStackedType,), + } + + attribute_map = { + "legend": "legend", + "type": "type", + } + + def __init__( + self_, type: BarChartWidgetStackedType, legend: Union[BarChartWidgetLegend, UnsetType] = unset, **kwargs + ): + """ + Bar chart widget stacked display options. + + :param legend: Bar chart widget stacked legend behavior. + :type legend: BarChartWidgetLegend, optional + + :param type: Bar chart widget stacked display type. + :type type: BarChartWidgetStackedType + """ + if legend is not unset: + kwargs["legend"] = legend + super().__init__(kwargs) + + self_.type = type diff --git a/src/datadog_api_client/v1/model/bar_chart_widget_stacked_type.py b/src/datadog_api_client/v1/model/bar_chart_widget_stacked_type.py new file mode 100644 index 0000000000..b0a810d68a --- /dev/null +++ b/src/datadog_api_client/v1/model/bar_chart_widget_stacked_type.py @@ -0,0 +1,35 @@ +# 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 2019-Present Datadog, Inc. +from __future__ import annotations + + +from datadog_api_client.model_utils import ( + ModelSimple, + cached_property, +) + +from typing import ClassVar + + +class BarChartWidgetStackedType(ModelSimple): + """ + Bar chart widget stacked display type. + + :param value: If omitted defaults to "stacked". Must be one of ["stacked"]. + :type value: str + """ + + allowed_values = { + "stacked", + } + STACKED: ClassVar["BarChartWidgetStackedType"] + + @cached_property + def openapi_types(_): + return { + "value": (str,), + } + + +BarChartWidgetStackedType.STACKED = BarChartWidgetStackedType("stacked") diff --git a/src/datadog_api_client/v1/model/bar_chart_widget_style.py b/src/datadog_api_client/v1/model/bar_chart_widget_style.py new file mode 100644 index 0000000000..cbba765a01 --- /dev/null +++ b/src/datadog_api_client/v1/model/bar_chart_widget_style.py @@ -0,0 +1,66 @@ +# 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 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import Union, TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, + unset, + UnsetType, +) + + +if TYPE_CHECKING: + from datadog_api_client.v1.model.bar_chart_widget_display import BarChartWidgetDisplay + from datadog_api_client.v1.model.bar_chart_widget_scaling import BarChartWidgetScaling + from datadog_api_client.v1.model.bar_chart_widget_stacked import BarChartWidgetStacked + from datadog_api_client.v1.model.bar_chart_widget_flat import BarChartWidgetFlat + + +class BarChartWidgetStyle(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v1.model.bar_chart_widget_display import BarChartWidgetDisplay + from datadog_api_client.v1.model.bar_chart_widget_scaling import BarChartWidgetScaling + + return { + "display": (BarChartWidgetDisplay,), + "palette": (str,), + "scaling": (BarChartWidgetScaling,), + } + + attribute_map = { + "display": "display", + "palette": "palette", + "scaling": "scaling", + } + + def __init__( + self_, + display: Union[BarChartWidgetDisplay, BarChartWidgetStacked, BarChartWidgetFlat, UnsetType] = unset, + palette: Union[str, UnsetType] = unset, + scaling: Union[BarChartWidgetScaling, UnsetType] = unset, + **kwargs, + ): + """ + Style customization for a bar chart widget. + + :param display: Bar chart widget display options. + :type display: BarChartWidgetDisplay, optional + + :param palette: Color palette to apply to the widget. + :type palette: str, optional + + :param scaling: Bar chart widget scaling definition. + :type scaling: BarChartWidgetScaling, optional + """ + if display is not unset: + kwargs["display"] = display + if palette is not unset: + kwargs["palette"] = palette + if scaling is not unset: + kwargs["scaling"] = scaling + super().__init__(kwargs) diff --git a/src/datadog_api_client/v1/model/split_graph_source_widget_definition.py b/src/datadog_api_client/v1/model/split_graph_source_widget_definition.py index 531a31e2df..7409ed90fb 100644 --- a/src/datadog_api_client/v1/model/split_graph_source_widget_definition.py +++ b/src/datadog_api_client/v1/model/split_graph_source_widget_definition.py @@ -18,16 +18,16 @@ def __init__(self, **kwargs): :param custom_links: List of custom links. :type custom_links: [WidgetCustomLink], optional - :param requests: Array of one request object to display in the widget. + :param requests: List of bar chart widget requests. + :type requests: [BarChartWidgetRequest] - See the dedicated [Request JSON schema documentation](https://docs.datadoghq.com/dashboards/graphing_json/request_json) - to learn how to build the `REQUEST_SCHEMA`. - :type requests: [ChangeWidgetRequest] + :param style: Style customization for a bar chart widget. + :type style: BarChartWidgetStyle, optional :param time: Time setting for the widget. :type time: WidgetTime, optional - :param title: Title of the widget. + :param title: Title of your widget. :type title: str, optional :param title_align: How to align the text on the widget. @@ -36,11 +36,8 @@ def __init__(self, **kwargs): :param title_size: Size of the title. :type title_size: str, optional - :param type: Type of the change widget. - :type type: ChangeWidgetDefinitionType - - :param style: The style to apply to the widget. - :type style: GeomapWidgetDefinitionStyle + :param type: Type of the bar chart widget. + :type type: BarChartWidgetDefinitionType :param view: The view of the world that the map should render. :type view: GeomapWidgetDefinitionView @@ -119,6 +116,7 @@ def _composed_schemas(_): # code would be run when this module is imported, and these composed # classes don't exist yet because their module has not finished # loading + from datadog_api_client.v1.model.bar_chart_widget_definition import BarChartWidgetDefinition from datadog_api_client.v1.model.change_widget_definition import ChangeWidgetDefinition from datadog_api_client.v1.model.geomap_widget_definition import GeomapWidgetDefinition from datadog_api_client.v1.model.query_value_widget_definition import QueryValueWidgetDefinition @@ -131,6 +129,7 @@ def _composed_schemas(_): return { "oneOf": [ + BarChartWidgetDefinition, ChangeWidgetDefinition, GeomapWidgetDefinition, QueryValueWidgetDefinition, diff --git a/src/datadog_api_client/v1/model/split_graph_widget_definition.py b/src/datadog_api_client/v1/model/split_graph_widget_definition.py index 56f2ea175a..7238cc3eda 100644 --- a/src/datadog_api_client/v1/model/split_graph_widget_definition.py +++ b/src/datadog_api_client/v1/model/split_graph_widget_definition.py @@ -19,6 +19,7 @@ from datadog_api_client.v1.model.split_config import SplitConfig from datadog_api_client.v1.model.widget_time import WidgetTime from datadog_api_client.v1.model.split_graph_widget_definition_type import SplitGraphWidgetDefinitionType + from datadog_api_client.v1.model.bar_chart_widget_definition import BarChartWidgetDefinition from datadog_api_client.v1.model.change_widget_definition import ChangeWidgetDefinition from datadog_api_client.v1.model.geomap_widget_definition import GeomapWidgetDefinition from datadog_api_client.v1.model.query_value_widget_definition import QueryValueWidgetDefinition @@ -67,6 +68,7 @@ def __init__( size: SplitGraphVizSize, source_widget_definition: Union[ SplitGraphSourceWidgetDefinition, + BarChartWidgetDefinition, ChangeWidgetDefinition, GeomapWidgetDefinition, QueryValueWidgetDefinition, diff --git a/src/datadog_api_client/v1/model/widget.py b/src/datadog_api_client/v1/model/widget.py index b12ad3913c..40f07d7985 100644 --- a/src/datadog_api_client/v1/model/widget.py +++ b/src/datadog_api_client/v1/model/widget.py @@ -18,6 +18,7 @@ from datadog_api_client.v1.model.widget_layout import WidgetLayout from datadog_api_client.v1.model.alert_graph_widget_definition import AlertGraphWidgetDefinition from datadog_api_client.v1.model.alert_value_widget_definition import AlertValueWidgetDefinition + from datadog_api_client.v1.model.bar_chart_widget_definition import BarChartWidgetDefinition from datadog_api_client.v1.model.change_widget_definition import ChangeWidgetDefinition from datadog_api_client.v1.model.check_status_widget_definition import CheckStatusWidgetDefinition from datadog_api_client.v1.model.distribution_widget_definition import DistributionWidgetDefinition @@ -76,6 +77,7 @@ def __init__( WidgetDefinition, AlertGraphWidgetDefinition, AlertValueWidgetDefinition, + BarChartWidgetDefinition, ChangeWidgetDefinition, CheckStatusWidgetDefinition, DistributionWidgetDefinition, diff --git a/src/datadog_api_client/v1/model/widget_definition.py b/src/datadog_api_client/v1/model/widget_definition.py index b0115fdb7e..60f406a0cd 100644 --- a/src/datadog_api_client/v1/model/widget_definition.py +++ b/src/datadog_api_client/v1/model/widget_definition.py @@ -48,11 +48,11 @@ def __init__(self, **kwargs): :param custom_links: List of custom links. :type custom_links: [WidgetCustomLink], optional - :param requests: Array of one request object to display in the widget. + :param requests: List of bar chart widget requests. + :type requests: [BarChartWidgetRequest] - See the dedicated [Request JSON schema documentation](https://docs.datadoghq.com/dashboards/graphing_json/request_json) - to learn how to build the `REQUEST_SCHEMA`. - :type requests: [ChangeWidgetRequest] + :param style: Style customization for a bar chart widget. + :type style: BarChartWidgetStyle, optional :param check: Name of the check to use in the widget. :type check: str @@ -102,9 +102,6 @@ def __init__(self, **kwargs): :param text: Text to display. :type text: str - :param style: The style to apply to the widget. - :type style: GeomapWidgetDefinitionStyle - :param view: The view of the world that the map should render. :type view: GeomapWidgetDefinitionView @@ -354,6 +351,7 @@ def _composed_schemas(_): # loading from datadog_api_client.v1.model.alert_graph_widget_definition import AlertGraphWidgetDefinition from datadog_api_client.v1.model.alert_value_widget_definition import AlertValueWidgetDefinition + from datadog_api_client.v1.model.bar_chart_widget_definition import BarChartWidgetDefinition from datadog_api_client.v1.model.change_widget_definition import ChangeWidgetDefinition from datadog_api_client.v1.model.check_status_widget_definition import CheckStatusWidgetDefinition from datadog_api_client.v1.model.distribution_widget_definition import DistributionWidgetDefinition @@ -391,6 +389,7 @@ def _composed_schemas(_): "oneOf": [ AlertGraphWidgetDefinition, AlertValueWidgetDefinition, + BarChartWidgetDefinition, ChangeWidgetDefinition, CheckStatusWidgetDefinition, DistributionWidgetDefinition, diff --git a/src/datadog_api_client/v1/models/__init__.py b/src/datadog_api_client/v1/models/__init__.py index 062b19bebe..3ce0376846 100644 --- a/src/datadog_api_client/v1/models/__init__.py +++ b/src/datadog_api_client/v1/models/__init__.py @@ -43,6 +43,17 @@ from datadog_api_client.v1.model.authentication_validation_response import AuthenticationValidationResponse from datadog_api_client.v1.model.azure_account import AzureAccount from datadog_api_client.v1.model.azure_account_list_response import AzureAccountListResponse +from datadog_api_client.v1.model.bar_chart_widget_definition import BarChartWidgetDefinition +from datadog_api_client.v1.model.bar_chart_widget_definition_type import BarChartWidgetDefinitionType +from datadog_api_client.v1.model.bar_chart_widget_display import BarChartWidgetDisplay +from datadog_api_client.v1.model.bar_chart_widget_flat import BarChartWidgetFlat +from datadog_api_client.v1.model.bar_chart_widget_flat_type import BarChartWidgetFlatType +from datadog_api_client.v1.model.bar_chart_widget_legend import BarChartWidgetLegend +from datadog_api_client.v1.model.bar_chart_widget_request import BarChartWidgetRequest +from datadog_api_client.v1.model.bar_chart_widget_scaling import BarChartWidgetScaling +from datadog_api_client.v1.model.bar_chart_widget_stacked import BarChartWidgetStacked +from datadog_api_client.v1.model.bar_chart_widget_stacked_type import BarChartWidgetStackedType +from datadog_api_client.v1.model.bar_chart_widget_style import BarChartWidgetStyle from datadog_api_client.v1.model.cancel_downtimes_by_scope_request import CancelDowntimesByScopeRequest from datadog_api_client.v1.model.canceled_downtimes_ids import CanceledDowntimesIds from datadog_api_client.v1.model.change_widget_definition import ChangeWidgetDefinition @@ -1168,6 +1179,17 @@ "AuthenticationValidationResponse", "AzureAccount", "AzureAccountListResponse", + "BarChartWidgetDefinition", + "BarChartWidgetDefinitionType", + "BarChartWidgetDisplay", + "BarChartWidgetFlat", + "BarChartWidgetFlatType", + "BarChartWidgetLegend", + "BarChartWidgetRequest", + "BarChartWidgetScaling", + "BarChartWidgetStacked", + "BarChartWidgetStackedType", + "BarChartWidgetStyle", "CancelDowntimesByScopeRequest", "CanceledDowntimesIds", "ChangeWidgetDefinition", diff --git a/tests/v1/cassettes/test_scenarios/test_create_a_new_dashboard_with_a_bar_chart_widget_with_stacked_type_and_no_legend_specified.frozen b/tests/v1/cassettes/test_scenarios/test_create_a_new_dashboard_with_a_bar_chart_widget_with_stacked_type_and_no_legend_specified.frozen new file mode 100644 index 0000000000..84e3901971 --- /dev/null +++ b/tests/v1/cassettes/test_scenarios/test_create_a_new_dashboard_with_a_bar_chart_widget_with_stacked_type_and_no_legend_specified.frozen @@ -0,0 +1 @@ +2025-12-15T21:25:35.069Z \ No newline at end of file diff --git a/tests/v1/cassettes/test_scenarios/test_create_a_new_dashboard_with_a_bar_chart_widget_with_stacked_type_and_no_legend_specified.yaml b/tests/v1/cassettes/test_scenarios/test_create_a_new_dashboard_with_a_bar_chart_widget_with_stacked_type_and_no_legend_specified.yaml new file mode 100644 index 0000000000..d9acf94ea3 --- /dev/null +++ b/tests/v1/cassettes/test_scenarios/test_create_a_new_dashboard_with_a_bar_chart_widget_with_stacked_type_and_no_legend_specified.yaml @@ -0,0 +1,39 @@ +interactions: +- request: + body: '{"description":"","layout_type":"free","notify_list":[],"template_variables":[],"title":"Test-Create_a_new_dashboard_with_a_bar_chart_widget_with_stacked_type_and_no_legend_specified-1765833935","widgets":[{"definition":{"requests":[{"formulas":[{"formula":"query1"}],"queries":[{"aggregator":"avg","data_source":"metrics","name":"query1","query":"avg:system.cpu.user{*} + by {service}"}],"response_format":"scalar","sort":{"count":10,"order_by":[{"name":"service","order":"asc","type":"group"}]}}],"style":{"display":{"type":"stacked"},"palette":"dog_classic","scaling":"relative"},"time":{},"title":"","title_align":"left","title_size":"16","type":"bar_chart"},"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: + string: '{"id":"6yv-ayr-nyv","title":"Test-Create_a_new_dashboard_with_a_bar_chart_widget_with_stacked_type_and_no_legend_specified-1765833935","description":"","author_handle":"jessica.sylvester@datadoghq.com","author_name":"Jessica + Sylvester","layout_type":"free","url":"/dashboard/6yv-ayr-nyv/test-createanewdashboardwithabarchartwidgetwithstackedtypeandnolegendspecified-1","template_variables":[],"widgets":[{"definition":{"requests":[{"formulas":[{"formula":"query1"}],"queries":[{"aggregator":"avg","data_source":"metrics","name":"query1","query":"avg:system.cpu.user{*} + by {service}"}],"response_format":"scalar","sort":{"count":10,"order_by":[{"name":"service","order":"asc","type":"group"}]}}],"style":{"display":{"type":"stacked"},"palette":"dog_classic","scaling":"relative"},"time":{},"title":"","title_align":"left","title_size":"16","type":"bar_chart"},"layout":{"height":15,"width":47,"x":0,"y":0},"id":747608743840054}],"notify_list":[],"created_at":"2025-12-15T21:25:35.211465+00:00","modified_at":"2025-12-15T21:25:35.211465+00:00","restricted_roles":[]}' + headers: + content-type: + - application/json + status: + code: 200 + message: OK +- request: + body: null + headers: + accept: + - application/json + method: DELETE + uri: https://api.datadoghq.com/api/v1/dashboard/6yv-ayr-nyv + response: + body: + string: '{"deleted_dashboard_id":"6yv-ayr-nyv"}' + headers: + content-type: + - application/json + status: + code: 200 + message: OK +version: 1 diff --git a/tests/v1/cassettes/test_scenarios/test_create_a_new_dashboard_with_bar_chart_widget.frozen b/tests/v1/cassettes/test_scenarios/test_create_a_new_dashboard_with_bar_chart_widget.frozen new file mode 100644 index 0000000000..cbf1cd9917 --- /dev/null +++ b/tests/v1/cassettes/test_scenarios/test_create_a_new_dashboard_with_bar_chart_widget.frozen @@ -0,0 +1 @@ +2025-12-15T21:26:18.139Z \ No newline at end of file diff --git a/tests/v1/cassettes/test_scenarios/test_create_a_new_dashboard_with_bar_chart_widget.yaml b/tests/v1/cassettes/test_scenarios/test_create_a_new_dashboard_with_bar_chart_widget.yaml new file mode 100644 index 0000000000..4eb4cbb9af --- /dev/null +++ b/tests/v1/cassettes/test_scenarios/test_create_a_new_dashboard_with_bar_chart_widget.yaml @@ -0,0 +1,39 @@ +interactions: +- request: + body: '{"description":"","layout_type":"free","notify_list":[],"template_variables":[],"title":"Test-Create_a_new_dashboard_with_bar_chart_widget-1765833978","widgets":[{"definition":{"requests":[{"formulas":[{"formula":"query1"}],"queries":[{"aggregator":"avg","data_source":"metrics","name":"query1","query":"avg:system.cpu.user{*} + by {service}"}],"response_format":"scalar","sort":{"count":10,"order_by":[{"index":0,"order":"desc","type":"formula"}]}}],"style":{"display":{"legend":"inline","type":"stacked"},"palette":"dog_classic","scaling":"relative"},"time":{},"title":"","title_align":"left","title_size":"16","type":"bar_chart"},"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: + string: '{"id":"jnt-fik-esx","title":"Test-Create_a_new_dashboard_with_bar_chart_widget-1765833978","description":"","author_handle":"jessica.sylvester@datadoghq.com","author_name":"Jessica + Sylvester","layout_type":"free","url":"/dashboard/jnt-fik-esx/test-createanewdashboardwithbarchartwidget-1765833978","template_variables":[],"widgets":[{"definition":{"requests":[{"formulas":[{"formula":"query1"}],"queries":[{"aggregator":"avg","data_source":"metrics","name":"query1","query":"avg:system.cpu.user{*} + by {service}"}],"response_format":"scalar","sort":{"count":10,"order_by":[{"index":0,"order":"desc","type":"formula"}]}}],"style":{"display":{"legend":"inline","type":"stacked"},"palette":"dog_classic","scaling":"relative"},"time":{},"title":"","title_align":"left","title_size":"16","type":"bar_chart"},"layout":{"height":15,"width":47,"x":0,"y":0},"id":4318878693632821}],"notify_list":[],"created_at":"2025-12-15T21:26:18.283708+00:00","modified_at":"2025-12-15T21:26:18.283708+00:00","restricted_roles":[]}' + headers: + content-type: + - application/json + status: + code: 200 + message: OK +- request: + body: null + headers: + accept: + - application/json + method: DELETE + uri: https://api.datadoghq.com/api/v1/dashboard/jnt-fik-esx + response: + body: + string: '{"deleted_dashboard_id":"jnt-fik-esx"}' + headers: + content-type: + - application/json + status: + code: 200 + message: OK +version: 1 diff --git a/tests/v1/cassettes/test_scenarios/test_create_a_new_dashboard_with_bar_chart_widget_sorted_by_group.frozen b/tests/v1/cassettes/test_scenarios/test_create_a_new_dashboard_with_bar_chart_widget_sorted_by_group.frozen new file mode 100644 index 0000000000..66da6ecb4a --- /dev/null +++ b/tests/v1/cassettes/test_scenarios/test_create_a_new_dashboard_with_bar_chart_widget_sorted_by_group.frozen @@ -0,0 +1 @@ +2025-12-15T21:26:29.455Z \ No newline at end of file diff --git a/tests/v1/cassettes/test_scenarios/test_create_a_new_dashboard_with_bar_chart_widget_sorted_by_group.yaml b/tests/v1/cassettes/test_scenarios/test_create_a_new_dashboard_with_bar_chart_widget_sorted_by_group.yaml new file mode 100644 index 0000000000..b7814dbd7a --- /dev/null +++ b/tests/v1/cassettes/test_scenarios/test_create_a_new_dashboard_with_bar_chart_widget_sorted_by_group.yaml @@ -0,0 +1,39 @@ +interactions: +- request: + body: '{"description":"","layout_type":"free","notify_list":[],"template_variables":[],"title":"Test-Create_a_new_dashboard_with_bar_chart_widget_sorted_by_group-1765833989","widgets":[{"definition":{"requests":[{"formulas":[{"formula":"query1"}],"queries":[{"aggregator":"avg","data_source":"metrics","name":"query1","query":"avg:system.cpu.user{*} + by {service}"}],"response_format":"scalar","sort":{"count":10,"order_by":[{"name":"service","order":"asc","type":"group"}]}}],"style":{"display":{"legend":"inline","type":"stacked"},"palette":"dog_classic","scaling":"relative"},"time":{},"title":"","title_align":"left","title_size":"16","type":"bar_chart"},"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: + string: '{"id":"d7t-dfe-vuh","title":"Test-Create_a_new_dashboard_with_bar_chart_widget_sorted_by_group-1765833989","description":"","author_handle":"jessica.sylvester@datadoghq.com","author_name":"Jessica + Sylvester","layout_type":"free","url":"/dashboard/d7t-dfe-vuh/test-createanewdashboardwithbarchartwidgetsortedbygroup-1765833989","template_variables":[],"widgets":[{"definition":{"requests":[{"formulas":[{"formula":"query1"}],"queries":[{"aggregator":"avg","data_source":"metrics","name":"query1","query":"avg:system.cpu.user{*} + by {service}"}],"response_format":"scalar","sort":{"count":10,"order_by":[{"name":"service","order":"asc","type":"group"}]}}],"style":{"display":{"legend":"inline","type":"stacked"},"palette":"dog_classic","scaling":"relative"},"time":{},"title":"","title_align":"left","title_size":"16","type":"bar_chart"},"layout":{"height":15,"width":47,"x":0,"y":0},"id":3540992741229512}],"notify_list":[],"created_at":"2025-12-15T21:26:29.666161+00:00","modified_at":"2025-12-15T21:26:29.666161+00:00","restricted_roles":[]}' + headers: + content-type: + - application/json + status: + code: 200 + message: OK +- request: + body: null + headers: + accept: + - application/json + method: DELETE + uri: https://api.datadoghq.com/api/v1/dashboard/d7t-dfe-vuh + response: + body: + string: '{"deleted_dashboard_id":"d7t-dfe-vuh"}' + headers: + content-type: + - application/json + status: + code: 200 + message: OK +version: 1 diff --git a/tests/v1/features/dashboards.feature b/tests/v1/features/dashboards.feature index 588c609ced..43640d8a82 100644 --- a/tests/v1/features/dashboards.feature +++ b/tests/v1/features/dashboards.feature @@ -106,6 +106,19 @@ Feature: Dashboards And the response "widgets[0].definition.requests[0].profile_metrics_query.compute.facet" is equal to "@prof_core_cpu_cores" And the response "widgets[0].definition.requests[0].profile_metrics_query.compute.aggregation" is equal to "sum" + @skip-terraform-config @skip-typescript @team:DataDog/dashboards-backend + Scenario: Create a new dashboard with a bar_chart widget with stacked type and no legend specified + Given new "CreateDashboard" request + And body with value {"title":"{{ unique }}","description":"","widgets":[{"layout":{"x":0,"y":0,"width":47,"height":15},"definition":{"title":"","title_size":"16","title_align":"left","time":{},"style":{"display": {"type": "stacked"},"scaling": "relative","palette": "dog_classic"},"type":"bar_chart","requests":[{"queries":[{"data_source":"metrics","name":"query1","query":"avg:system.cpu.user{*} by {service}","aggregator":"avg"}],"formulas":[{"formula":"query1"}],"sort":{"count":10,"order_by":[{"type":"group","name":"service","order":"asc"}]},"response_format":"scalar"}]}}],"template_variables":[],"layout_type":"free","notify_list":[]} + When the request is sent + Then the response status is 200 OK + And the response "widgets[0].definition.type" is equal to "bar_chart" + And the response "widgets[0].definition.requests[0].sort.order_by[0].order" is equal to "asc" + And the response "widgets[0].definition.requests[0].sort.order_by[0].type" is equal to "group" + And the response "widgets[0].definition.requests[0].sort.order_by[0].name" is equal to "service" + And the response "widgets[0].definition.style.display.type" is equal to "stacked" + And the response "widgets[0].definition.style.display" does not have field "legend" + @team:DataDog/dashboards-backend Scenario: Create a new dashboard with a change widget using formulas and functions slo query Given there is a valid "slo" in the system @@ -336,6 +349,28 @@ Feature: Dashboards And the response "widgets[0].definition.requests[0].columns[0].width" is equal to "auto" And the response "widgets[0].definition.requests[0].query.data_source" is equal to "apm_issue_stream" + @team:DataDog/dashboards-backend + Scenario: Create a new dashboard with bar_chart widget + Given new "CreateDashboard" request + And body from file "dashboards_json_payload/bar_chart_widget.json" + When the request is sent + Then the response status is 200 OK + And the response "widgets[0].definition.type" is equal to "bar_chart" + And the response "widgets[0].definition.requests[0].sort.order_by[0].order" is equal to "desc" + And the response "widgets[0].definition.requests[0].sort.order_by[0].type" is equal to "formula" + And the response "widgets[0].definition.requests[0].sort.order_by[0].index" is equal to 0 + + @team:DataDog/dashboards-backend + Scenario: Create a new dashboard with bar_chart widget sorted by group + Given new "CreateDashboard" request + And body with value {"title":"{{ unique }}","description":"","widgets":[{"layout":{"x":0,"y":0,"width":47,"height":15},"definition":{"title":"","title_size":"16","title_align":"left","time":{},"style":{"display": {"type": "stacked","legend": "inline"},"scaling": "relative","palette": "dog_classic"},"type":"bar_chart","requests":[{"queries":[{"data_source":"metrics","name":"query1","query":"avg:system.cpu.user{*} by {service}","aggregator":"avg"}],"formulas":[{"formula":"query1"}],"sort":{"count":10,"order_by":[{"type":"group","name":"service","order":"asc"}]},"response_format":"scalar"}]}}],"template_variables":[],"layout_type":"free","notify_list":[]} + When the request is sent + Then the response status is 200 OK + And the response "widgets[0].definition.type" is equal to "bar_chart" + And the response "widgets[0].definition.requests[0].sort.order_by[0].order" is equal to "asc" + And the response "widgets[0].definition.requests[0].sort.order_by[0].type" is equal to "group" + And the response "widgets[0].definition.requests[0].sort.order_by[0].name" is equal to "service" + @team:DataDog/dashboards-backend Scenario: Create a new dashboard with check_status widget Given new "CreateDashboard" request diff --git a/tests/v1/features/dashboards_json_payload/bar_chart_widget.json b/tests/v1/features/dashboards_json_payload/bar_chart_widget.json new file mode 100644 index 0000000000..0fac4d091b --- /dev/null +++ b/tests/v1/features/dashboards_json_payload/bar_chart_widget.json @@ -0,0 +1,66 @@ +{ + "title":"{{ unique }}", + "description":"", + "widgets":[ + { + "layout":{ + "x":0, + "y":0, + "width":47, + "height":15 + }, + "definition":{ + "title":"", + "title_size":"16", + "title_align":"left", + "time":{ + + }, + "style":{ + "display": { + "type": "stacked", + "legend": "inline" + }, + "scaling": "relative", + "palette": "dog_classic" + }, + "type":"bar_chart", + "requests":[ + { + "queries":[ + { + "data_source":"metrics", + "name":"query1", + "query":"avg:system.cpu.user{*} by {service}", + "aggregator":"avg" + } + ], + "formulas":[ + { + "formula":"query1" + } + ], + "sort": { + "count":10, + "order_by":[ + { + "type":"formula", + "index":0, + "order":"desc" + } + ] + }, + "response_format":"scalar" + } + ] + } + } + ], + "template_variables":[ + + ], + "layout_type":"free", + "notify_list":[ + + ] +}