Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
37 changes: 31 additions & 6 deletions .generator/schemas/v1/openapi.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -3448,9 +3448,10 @@ components:
$ref: '#/components/schemas/WidgetCustomLink'
type: array
requests:
description: 'Array of one request object to display in the widget. The
request must contain a `group-by` tag whose value is a country ISO code.

description: 'Array of request objects to display in the widget. May include
an optional request for the region layer and/or an optional request for
the points layer. Region layer requests must contain a `group-by` tag
whose value is a country ISO code.

See the [Request JSON schema documentation](https://docs.datadoghq.com/dashboards/graphing_json/request_json)

Expand All @@ -3461,7 +3462,7 @@ components:
query: <METRIC_1>{<SCOPE_1>}
items:
$ref: '#/components/schemas/GeomapWidgetRequest'
maxItems: 1
maxItems: 2
minItems: 1
type: array
style:
Expand Down Expand Up @@ -3519,8 +3520,9 @@ components:
focus: WORLD
properties:
focus:
description: The 2-letter ISO code of a country to focus the map on. Or
`WORLD`.
description: The 2-letter ISO code of a country to focus the map on, or
`WORLD` for global view, or a region (`EMEA`, `APAC`, `LATAM`), or a continent
(`NORTH_AMERICA`, `SOUTH_AMERICA`, `EUROPE`, `AFRICA`, `ASIA`, `OCEANIA`).
example: WORLD
type: string
required:
Expand All @@ -3539,6 +3541,12 @@ components:
items:
$ref: '#/components/schemas/ListStreamColumn'
type: array
conditional_formats:
description: Threshold (numeric) conditional formatting rules may be used
by a regions layer.
items:
$ref: '#/components/schemas/WidgetConditionalFormat'
type: array
formulas:
description: List of formulas that operate on queries.
items:
Expand All @@ -3564,6 +3572,23 @@ components:
$ref: '#/components/schemas/LogQueryDefinition'
sort:
$ref: '#/components/schemas/WidgetSortBy'
style:
$ref: '#/components/schemas/GeomapWidgetRequestStyle'
text_formats:
description: Text formatting rules may be used by a points layer.
items:
$ref: '#/components/schemas/TableWidgetTextFormatRule'
type: array
type: object
GeomapWidgetRequestStyle:
description: The style to apply to the request for points layer.
example:
color_by: status
properties:
color_by:
description: The category to color the points by.
example: status
type: string
type: object
GraphSnapshot:
description: Object representing a graph snapshot.
Expand Down
7 changes: 7 additions & 0 deletions docs/datadog_api_client.v1.model.rst
Original file line number Diff line number Diff line change
Expand Up @@ -1096,6 +1096,13 @@ datadog\_api\_client.v1.model.geomap\_widget\_request module
:members:
:show-inheritance:

datadog\_api\_client.v1.model.geomap\_widget\_request\_style module
-------------------------------------------------------------------

.. automodule:: datadog_api_client.v1.model.geomap_widget_request_style
:members:
:show-inheritance:

datadog\_api\_client.v1.model.graph\_snapshot module
----------------------------------------------------

Expand Down
165 changes: 165 additions & 0 deletions examples/v1/dashboards/CreateDashboard_9836563.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,165 @@
"""
Create a geomap widget with conditional formats and text formats
"""

from datadog_api_client import ApiClient, Configuration
from datadog_api_client.v1.api.dashboards_api import DashboardsApi
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.dashboard_reflow_type import DashboardReflowType
from datadog_api_client.v1.model.formula_and_function_event_aggregation import FormulaAndFunctionEventAggregation
from datadog_api_client.v1.model.formula_and_function_event_query_definition import (
FormulaAndFunctionEventQueryDefinition,
)
from datadog_api_client.v1.model.formula_and_function_event_query_definition_compute import (
FormulaAndFunctionEventQueryDefinitionCompute,
)
from datadog_api_client.v1.model.formula_and_function_event_query_definition_search import (
FormulaAndFunctionEventQueryDefinitionSearch,
)
from datadog_api_client.v1.model.formula_and_function_events_data_source import FormulaAndFunctionEventsDataSource
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.geomap_widget_definition import GeomapWidgetDefinition
from datadog_api_client.v1.model.geomap_widget_definition_style import GeomapWidgetDefinitionStyle
from datadog_api_client.v1.model.geomap_widget_definition_type import GeomapWidgetDefinitionType
from datadog_api_client.v1.model.geomap_widget_definition_view import GeomapWidgetDefinitionView
from datadog_api_client.v1.model.geomap_widget_request import GeomapWidgetRequest
from datadog_api_client.v1.model.geomap_widget_request_style import GeomapWidgetRequestStyle
from datadog_api_client.v1.model.list_stream_column import ListStreamColumn
from datadog_api_client.v1.model.list_stream_column_width import ListStreamColumnWidth
from datadog_api_client.v1.model.list_stream_query import ListStreamQuery
from datadog_api_client.v1.model.list_stream_source import ListStreamSource
from datadog_api_client.v1.model.table_widget_text_format_match import TableWidgetTextFormatMatch
from datadog_api_client.v1.model.table_widget_text_format_match_type import TableWidgetTextFormatMatchType
from datadog_api_client.v1.model.table_widget_text_format_palette import TableWidgetTextFormatPalette
from datadog_api_client.v1.model.table_widget_text_format_rule import TableWidgetTextFormatRule
from datadog_api_client.v1.model.widget import Widget
from datadog_api_client.v1.model.widget_comparator import WidgetComparator
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.widget_formula_sort import WidgetFormulaSort
from datadog_api_client.v1.model.widget_layout import WidgetLayout
from datadog_api_client.v1.model.widget_palette import WidgetPalette
from datadog_api_client.v1.model.widget_sort import WidgetSort
from datadog_api_client.v1.model.widget_sort_by import WidgetSortBy

body = Dashboard(
title="Example-Dashboard",
description="Example-Dashboard",
widgets=[
Widget(
definition=GeomapWidgetDefinition(
title="Log Count by Service and Source",
type=GeomapWidgetDefinitionType.GEOMAP,
requests=[
GeomapWidgetRequest(
response_format=FormulaAndFunctionResponseFormat.SCALAR,
queries=[
FormulaAndFunctionEventQueryDefinition(
data_source=FormulaAndFunctionEventsDataSource.RUM,
name="query1",
search=FormulaAndFunctionEventQueryDefinitionSearch(
query="@type:session",
),
indexes=[
"*",
],
compute=FormulaAndFunctionEventQueryDefinitionCompute(
aggregation=FormulaAndFunctionEventAggregation.COUNT,
),
group_by=[],
),
],
conditional_formats=[
WidgetConditionalFormat(
comparator=WidgetComparator.GREATER_THAN,
value=1000.0,
palette=WidgetPalette.WHITE_ON_GREEN,
),
],
formulas=[
WidgetFormula(
formula="query1",
),
],
sort=WidgetSortBy(
count=250,
order_by=[
WidgetFormulaSort(
type=FormulaType.FORMULA,
index=0,
order=WidgetSort.DESCENDING,
),
],
),
),
GeomapWidgetRequest(
response_format=FormulaAndFunctionResponseFormat.EVENT_LIST,
query=ListStreamQuery(
data_source=ListStreamSource.LOGS_STREAM,
query_string="",
indexes=[],
storage="hot",
),
columns=[
ListStreamColumn(
field="@network.client.geoip.location.latitude",
width=ListStreamColumnWidth.AUTO,
),
ListStreamColumn(
field="@network.client.geoip.location.longitude",
width=ListStreamColumnWidth.AUTO,
),
ListStreamColumn(
field="@network.client.geoip.country.iso_code",
width=ListStreamColumnWidth.AUTO,
),
ListStreamColumn(
field="@network.client.geoip.subdivision.name",
width=ListStreamColumnWidth.AUTO,
),
],
style=GeomapWidgetRequestStyle(
color_by="status",
),
text_formats=[
TableWidgetTextFormatRule(
match=TableWidgetTextFormatMatch(
type=TableWidgetTextFormatMatchType.IS,
value="error",
),
palette=TableWidgetTextFormatPalette.WHITE_ON_RED,
),
],
),
],
style=GeomapWidgetDefinitionStyle(
palette="hostmap_blues",
palette_flip=False,
),
view=GeomapWidgetDefinitionView(
focus="NORTH_AMERICA",
),
),
layout=WidgetLayout(
x=0,
y=0,
width=12,
height=6,
),
),
],
template_variables=[],
layout_type=DashboardLayoutType.ORDERED,
notify_list=[],
reflow_type=DashboardReflowType.FIXED,
tags=[],
)

configuration = Configuration()
with ApiClient(configuration) as api_client:
api_instance = DashboardsApi(api_client)
response = api_instance.create_dashboard(body=body)

print(response)
5 changes: 2 additions & 3 deletions src/datadog_api_client/v1/model/geomap_widget_definition.py
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@
class GeomapWidgetDefinition(ModelNormal):
validations = {
"requests": {
"max_items": 1,
"max_items": 2,
"min_items": 1,
},
}
Expand Down Expand Up @@ -87,8 +87,7 @@ def __init__(
:param custom_links: A list of custom links.
:type custom_links: [WidgetCustomLink], optional

:param requests: Array of one request object to display in the widget. The request must contain a ``group-by`` tag whose value is a country ISO code.

:param requests: Array of request objects to display in the widget. May include an optional request for the region layer and/or an optional request for the points layer. Region layer requests must contain a ``group-by`` tag whose value is a country ISO code.
See the `Request JSON schema documentation <https://docs.datadoghq.com/dashboards/graphing_json/request_json>`_
for information about building the ``REQUEST_SCHEMA``.
:type requests: [GeomapWidgetRequest]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ def __init__(self_, focus: str, **kwargs):
"""
The view of the world that the map should render.

:param focus: The 2-letter ISO code of a country to focus the map on. Or ``WORLD``.
:param focus: The 2-letter ISO code of a country to focus the map on, or ``WORLD`` for global view, or a region ( ``EMEA`` , ``APAC`` , ``LATAM`` ), or a continent ( ``NORTH_AMERICA`` , ``SOUTH_AMERICA`` , ``EUROPE`` , ``AFRICA`` , ``ASIA`` , ``OCEANIA`` ).
:type focus: str
"""
super().__init__(kwargs)
Expand Down
30 changes: 30 additions & 0 deletions src/datadog_api_client/v1/model/geomap_widget_request.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,12 +15,15 @@

if TYPE_CHECKING:
from datadog_api_client.v1.model.list_stream_column import ListStreamColumn
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.log_query_definition import LogQueryDefinition
from datadog_api_client.v1.model.formula_and_function_query_definition import FormulaAndFunctionQueryDefinition
from datadog_api_client.v1.model.list_stream_query import ListStreamQuery
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.geomap_widget_request_style import GeomapWidgetRequestStyle
from datadog_api_client.v1.model.table_widget_text_format_rule import TableWidgetTextFormatRule
from datadog_api_client.v1.model.formula_and_function_metric_query_definition import (
FormulaAndFunctionMetricQueryDefinition,
)
Expand Down Expand Up @@ -48,15 +51,19 @@ class GeomapWidgetRequest(ModelNormal):
@cached_property
def openapi_types(_):
from datadog_api_client.v1.model.list_stream_column import ListStreamColumn
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.log_query_definition import LogQueryDefinition
from datadog_api_client.v1.model.formula_and_function_query_definition import FormulaAndFunctionQueryDefinition
from datadog_api_client.v1.model.list_stream_query import ListStreamQuery
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.geomap_widget_request_style import GeomapWidgetRequestStyle
from datadog_api_client.v1.model.table_widget_text_format_rule import TableWidgetTextFormatRule

return {
"columns": ([ListStreamColumn],),
"conditional_formats": ([WidgetConditionalFormat],),
"formulas": ([WidgetFormula],),
"log_query": (LogQueryDefinition,),
"q": (str,),
Expand All @@ -66,10 +73,13 @@ def openapi_types(_):
"rum_query": (LogQueryDefinition,),
"security_query": (LogQueryDefinition,),
"sort": (WidgetSortBy,),
"style": (GeomapWidgetRequestStyle,),
"text_formats": ([TableWidgetTextFormatRule],),
}

attribute_map = {
"columns": "columns",
"conditional_formats": "conditional_formats",
"formulas": "formulas",
"log_query": "log_query",
"q": "q",
Expand All @@ -79,11 +89,14 @@ def openapi_types(_):
"rum_query": "rum_query",
"security_query": "security_query",
"sort": "sort",
"style": "style",
"text_formats": "text_formats",
}

def __init__(
self_,
columns: Union[List[ListStreamColumn], UnsetType] = unset,
conditional_formats: Union[List[WidgetConditionalFormat], UnsetType] = unset,
formulas: Union[List[WidgetFormula], UnsetType] = unset,
log_query: Union[LogQueryDefinition, UnsetType] = unset,
q: Union[str, UnsetType] = unset,
Expand All @@ -107,6 +120,8 @@ def __init__(
rum_query: Union[LogQueryDefinition, UnsetType] = unset,
security_query: Union[LogQueryDefinition, UnsetType] = unset,
sort: Union[WidgetSortBy, UnsetType] = unset,
style: Union[GeomapWidgetRequestStyle, UnsetType] = unset,
text_formats: Union[List[TableWidgetTextFormatRule], UnsetType] = unset,
**kwargs,
):
"""
Expand All @@ -115,6 +130,9 @@ def __init__(
:param columns: Widget columns.
:type columns: [ListStreamColumn], optional

:param conditional_formats: Threshold (numeric) conditional formatting rules may be used by a regions layer.
:type conditional_formats: [WidgetConditionalFormat], optional

:param formulas: List of formulas that operate on queries.
:type formulas: [WidgetFormula], optional

Expand All @@ -141,9 +159,17 @@ def __init__(

:param sort: The controls for sorting the widget.
:type sort: WidgetSortBy, optional

:param style: The style to apply to the request for points layer.
:type style: GeomapWidgetRequestStyle, optional

:param text_formats: Text formatting rules may be used by a points layer.
:type text_formats: [TableWidgetTextFormatRule], optional
"""
if columns is not unset:
kwargs["columns"] = columns
if conditional_formats is not unset:
kwargs["conditional_formats"] = conditional_formats
if formulas is not unset:
kwargs["formulas"] = formulas
if log_query is not unset:
Expand All @@ -162,4 +188,8 @@ def __init__(
kwargs["security_query"] = security_query
if sort is not unset:
kwargs["sort"] = sort
if style is not unset:
kwargs["style"] = style
if text_formats is not unset:
kwargs["text_formats"] = text_formats
super().__init__(kwargs)
Loading