diff --git a/.generator/schemas/v1/openapi.yaml b/.generator/schemas/v1/openapi.yaml index 0d4728f900..0af0eb5f67 100644 --- a/.generator/schemas/v1/openapi.yaml +++ b/.generator/schemas/v1/openapi.yaml @@ -7738,6 +7738,161 @@ components: x-enum-varnames: - DRAFT - PUBLISHED + MonitorFormulaAndFunctionAggregateAugmentQuery: + description: Augment query for aggregate augmented queries. Can be an events + query or a reference table query. + oneOf: + - $ref: '#/components/schemas/MonitorFormulaAndFunctionEventQueryDefinition' + - $ref: '#/components/schemas/MonitorFormulaAndFunctionReferenceTableQueryDefinition' + MonitorFormulaAndFunctionAggregateAugmentedDataSource: + description: Data source for aggregate augmented queries. + enum: + - aggregate_augmented_query + example: aggregate_augmented_query + type: string + x-enum-varnames: + - AGGREGATE_AUGMENTED_QUERY + MonitorFormulaAndFunctionAggregateAugmentedQueryDefinition: + additionalProperties: false + description: A formula and functions aggregate augmented query. Used to enrich + base query results with data from a reference table. + properties: + augment_query: + $ref: '#/components/schemas/MonitorFormulaAndFunctionAggregateAugmentQuery' + base_query: + $ref: '#/components/schemas/MonitorFormulaAndFunctionAggregateBaseQuery' + compute: + description: Compute options for the query. + items: + $ref: '#/components/schemas/MonitorFormulaAndFunctionEventQueryDefinitionCompute' + minItems: 1 + type: array + data_source: + $ref: '#/components/schemas/MonitorFormulaAndFunctionAggregateAugmentedDataSource' + group_by: + description: Group by options for the query. + items: + $ref: '#/components/schemas/MonitorFormulaAndFunctionEventQueryGroupBy' + type: array + join_condition: + $ref: '#/components/schemas/MonitorFormulaAndFunctionAggregateQueryJoinCondition' + name: + description: Name of the query for use in formulas. + example: query1 + type: string + required: + - data_source + - base_query + - augment_query + - join_condition + - compute + - group_by + type: object + MonitorFormulaAndFunctionAggregateBaseQuery: + description: Base query for aggregate queries. Can be an events query or a metrics + query. + oneOf: + - $ref: '#/components/schemas/MonitorFormulaAndFunctionEventQueryDefinition' + - $ref: '#/components/schemas/MonitorFormulaAndFunctionMetricsQueryDefinition' + MonitorFormulaAndFunctionAggregateFilterQuery: + description: Filter query for aggregate filtered queries. Can be an events query + or a reference table query. + oneOf: + - $ref: '#/components/schemas/MonitorFormulaAndFunctionEventQueryDefinition' + - $ref: '#/components/schemas/MonitorFormulaAndFunctionReferenceTableQueryDefinition' + MonitorFormulaAndFunctionAggregateFilteredDataSource: + description: Data source for aggregate filtered queries. + enum: + - aggregate_filtered_query + example: aggregate_filtered_query + type: string + x-enum-varnames: + - AGGREGATE_FILTERED_QUERY + MonitorFormulaAndFunctionAggregateFilteredQueryDefinition: + additionalProperties: false + description: A formula and functions aggregate filtered query. Used to filter + base query results using data from another source. + properties: + base_query: + $ref: '#/components/schemas/MonitorFormulaAndFunctionAggregateBaseQuery' + compute: + description: Compute options for the query. + items: + $ref: '#/components/schemas/MonitorFormulaAndFunctionEventQueryDefinitionCompute' + type: array + data_source: + $ref: '#/components/schemas/MonitorFormulaAndFunctionAggregateFilteredDataSource' + filter_query: + $ref: '#/components/schemas/MonitorFormulaAndFunctionAggregateFilterQuery' + filters: + description: Filter conditions for the query. + items: + $ref: '#/components/schemas/MonitorFormulaAndFunctionAggregateQueryFilter' + type: array + group_by: + description: Group by options for the query. + items: + $ref: '#/components/schemas/MonitorFormulaAndFunctionEventQueryGroupBy' + type: array + name: + description: Name of the query for use in formulas. + example: query1 + type: string + required: + - data_source + - base_query + - filter_query + - filters + type: object + MonitorFormulaAndFunctionAggregateQueryFilter: + additionalProperties: false + description: Filter definition for aggregate filtered queries. + properties: + base_attribute: + description: Attribute from the base query to filter on. + example: org_id + type: string + exclude: + default: false + description: Whether to exclude matching records instead of including them. + type: boolean + filter_attribute: + description: Attribute from the filter query to match against. + example: org_id + type: string + required: + - base_attribute + - filter_attribute + type: object + MonitorFormulaAndFunctionAggregateQueryJoinCondition: + additionalProperties: false + description: Join condition for aggregate augmented queries. + properties: + augment_attribute: + description: Attribute from the augment query to join on. + example: org_id + type: string + base_attribute: + description: Attribute from the base query to join on. + example: org_id + type: string + join_type: + $ref: '#/components/schemas/MonitorFormulaAndFunctionAggregateQueryJoinType' + required: + - base_attribute + - augment_attribute + - join_type + type: object + MonitorFormulaAndFunctionAggregateQueryJoinType: + description: Join type for aggregate query join conditions. + enum: + - inner + - left + example: inner + type: string + x-enum-varnames: + - INNER + - LEFT MonitorFormulaAndFunctionCostAggregator: description: Aggregation methods for metric queries. enum: @@ -7971,6 +8126,11 @@ components: description: Measurable attribute to compute. example: '@duration' type: string + name: + description: The name assigned to this aggregation, when multiple aggregations + are defined for a query. + example: compute_result + type: string required: - aggregation type: object @@ -8040,12 +8200,122 @@ components: - DATABASE_QUERIES - NETWORK - NETWORK_PATH + MonitorFormulaAndFunctionMetricsAggregator: + description: Aggregator for metrics queries. + enum: + - avg + - min + - max + - sum + - last + - mean + - area + - l2norm + - percentile + - stddev + - count_unique + example: avg + type: string + x-enum-varnames: + - AVG + - MIN + - MAX + - SUM + - LAST + - MEAN + - AREA + - L2NORM + - PERCENTILE + - STDDEV + - COUNT_UNIQUE + MonitorFormulaAndFunctionMetricsDataSource: + description: Data source for metrics queries. + enum: + - metrics + - cloud_cost + - datadog_usage + example: metrics + type: string + x-enum-varnames: + - METRICS + - CLOUD_COST + - DATADOG_USAGE + MonitorFormulaAndFunctionMetricsQueryDefinition: + additionalProperties: false + description: A formula and functions metrics query for use in aggregate queries. + properties: + aggregator: + $ref: '#/components/schemas/MonitorFormulaAndFunctionMetricsAggregator' + data_source: + $ref: '#/components/schemas/MonitorFormulaAndFunctionMetricsDataSource' + name: + description: Name of the query for use in formulas. + example: query1 + type: string + query: + description: The metrics query definition. + example: avg:system.cpu.user{*} + type: string + required: + - data_source + - query + type: object MonitorFormulaAndFunctionQueryDefinition: description: A formula and function query. oneOf: - $ref: '#/components/schemas/MonitorFormulaAndFunctionEventQueryDefinition' - $ref: '#/components/schemas/MonitorFormulaAndFunctionCostQueryDefinition' - $ref: '#/components/schemas/MonitorFormulaAndFunctionDataQualityQueryDefinition' + - $ref: '#/components/schemas/MonitorFormulaAndFunctionAggregateAugmentedQueryDefinition' + - $ref: '#/components/schemas/MonitorFormulaAndFunctionAggregateFilteredQueryDefinition' + MonitorFormulaAndFunctionReferenceTableColumn: + additionalProperties: false + description: A column definition for reference table queries. + properties: + alias: + description: Optional alias for the column. + type: string + name: + description: Name of the column. + example: org_id + type: string + required: + - name + type: object + MonitorFormulaAndFunctionReferenceTableDataSource: + description: Data source for reference table queries. + enum: + - reference_table + example: reference_table + type: string + x-enum-varnames: + - REFERENCE_TABLE + MonitorFormulaAndFunctionReferenceTableQueryDefinition: + additionalProperties: false + description: A reference table query for use in aggregate queries. + properties: + columns: + description: List of columns to retrieve from the reference table. + items: + $ref: '#/components/schemas/MonitorFormulaAndFunctionReferenceTableColumn' + type: array + data_source: + $ref: '#/components/schemas/MonitorFormulaAndFunctionReferenceTableDataSource' + name: + description: Name of the query. + example: filter_query + type: string + query_filter: + description: Optional filter expression for the reference table query. + type: string + table_name: + description: Name of the reference table. + example: test_table + type: string + required: + - data_source + - table_name + type: object MonitorGroupSearchResponse: description: The response of a monitor group search. example: diff --git a/docs/datadog_api_client.v1.model.rst b/docs/datadog_api_client.v1.model.rst index 016a2aae8f..1f800ee8d4 100644 --- a/docs/datadog_api_client.v1.model.rst +++ b/docs/datadog_api_client.v1.model.rst @@ -2363,6 +2363,76 @@ datadog\_api\_client.v1.model.monitor\_draft\_status module :members: :show-inheritance: +datadog\_api\_client.v1.model.monitor\_formula\_and\_function\_aggregate\_augment\_query module +----------------------------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v1.model.monitor_formula_and_function_aggregate_augment_query + :members: + :show-inheritance: + +datadog\_api\_client.v1.model.monitor\_formula\_and\_function\_aggregate\_augmented\_data\_source module +-------------------------------------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v1.model.monitor_formula_and_function_aggregate_augmented_data_source + :members: + :show-inheritance: + +datadog\_api\_client.v1.model.monitor\_formula\_and\_function\_aggregate\_augmented\_query\_definition module +------------------------------------------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v1.model.monitor_formula_and_function_aggregate_augmented_query_definition + :members: + :show-inheritance: + +datadog\_api\_client.v1.model.monitor\_formula\_and\_function\_aggregate\_base\_query module +-------------------------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v1.model.monitor_formula_and_function_aggregate_base_query + :members: + :show-inheritance: + +datadog\_api\_client.v1.model.monitor\_formula\_and\_function\_aggregate\_filter\_query module +---------------------------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v1.model.monitor_formula_and_function_aggregate_filter_query + :members: + :show-inheritance: + +datadog\_api\_client.v1.model.monitor\_formula\_and\_function\_aggregate\_filtered\_data\_source module +------------------------------------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v1.model.monitor_formula_and_function_aggregate_filtered_data_source + :members: + :show-inheritance: + +datadog\_api\_client.v1.model.monitor\_formula\_and\_function\_aggregate\_filtered\_query\_definition module +------------------------------------------------------------------------------------------------------------ + +.. automodule:: datadog_api_client.v1.model.monitor_formula_and_function_aggregate_filtered_query_definition + :members: + :show-inheritance: + +datadog\_api\_client.v1.model.monitor\_formula\_and\_function\_aggregate\_query\_filter module +---------------------------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v1.model.monitor_formula_and_function_aggregate_query_filter + :members: + :show-inheritance: + +datadog\_api\_client.v1.model.monitor\_formula\_and\_function\_aggregate\_query\_join\_condition module +------------------------------------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v1.model.monitor_formula_and_function_aggregate_query_join_condition + :members: + :show-inheritance: + +datadog\_api\_client.v1.model.monitor\_formula\_and\_function\_aggregate\_query\_join\_type module +-------------------------------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v1.model.monitor_formula_and_function_aggregate_query_join_type + :members: + :show-inheritance: + datadog\_api\_client.v1.model.monitor\_formula\_and\_function\_cost\_aggregator module -------------------------------------------------------------------------------------- @@ -2461,6 +2531,27 @@ datadog\_api\_client.v1.model.monitor\_formula\_and\_function\_events\_data\_sou :members: :show-inheritance: +datadog\_api\_client.v1.model.monitor\_formula\_and\_function\_metrics\_aggregator module +----------------------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v1.model.monitor_formula_and_function_metrics_aggregator + :members: + :show-inheritance: + +datadog\_api\_client.v1.model.monitor\_formula\_and\_function\_metrics\_data\_source module +------------------------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v1.model.monitor_formula_and_function_metrics_data_source + :members: + :show-inheritance: + +datadog\_api\_client.v1.model.monitor\_formula\_and\_function\_metrics\_query\_definition module +------------------------------------------------------------------------------------------------ + +.. automodule:: datadog_api_client.v1.model.monitor_formula_and_function_metrics_query_definition + :members: + :show-inheritance: + datadog\_api\_client.v1.model.monitor\_formula\_and\_function\_query\_definition module --------------------------------------------------------------------------------------- @@ -2468,6 +2559,27 @@ datadog\_api\_client.v1.model.monitor\_formula\_and\_function\_query\_definition :members: :show-inheritance: +datadog\_api\_client.v1.model.monitor\_formula\_and\_function\_reference\_table\_column module +---------------------------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v1.model.monitor_formula_and_function_reference_table_column + :members: + :show-inheritance: + +datadog\_api\_client.v1.model.monitor\_formula\_and\_function\_reference\_table\_data\_source module +---------------------------------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v1.model.monitor_formula_and_function_reference_table_data_source + :members: + :show-inheritance: + +datadog\_api\_client.v1.model.monitor\_formula\_and\_function\_reference\_table\_query\_definition module +--------------------------------------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v1.model.monitor_formula_and_function_reference_table_query_definition + :members: + :show-inheritance: + datadog\_api\_client.v1.model.monitor\_group\_search\_response module --------------------------------------------------------------------- diff --git a/examples/v1/monitors/CreateMonitor_2082938111.py b/examples/v1/monitors/CreateMonitor_2082938111.py new file mode 100644 index 0000000000..74299b7c69 --- /dev/null +++ b/examples/v1/monitors/CreateMonitor_2082938111.py @@ -0,0 +1,80 @@ +""" +Create a monitor with aggregate filtered query variables returns "OK" response +""" + +from datadog_api_client import ApiClient, Configuration +from datadog_api_client.v1.api.monitors_api import MonitorsApi +from datadog_api_client.v1.model.monitor import Monitor +from datadog_api_client.v1.model.monitor_formula_and_function_aggregate_filtered_data_source import ( + MonitorFormulaAndFunctionAggregateFilteredDataSource, +) +from datadog_api_client.v1.model.monitor_formula_and_function_aggregate_filtered_query_definition import ( + MonitorFormulaAndFunctionAggregateFilteredQueryDefinition, +) +from datadog_api_client.v1.model.monitor_formula_and_function_aggregate_query_filter import ( + MonitorFormulaAndFunctionAggregateQueryFilter, +) +from datadog_api_client.v1.model.monitor_formula_and_function_metrics_data_source import ( + MonitorFormulaAndFunctionMetricsDataSource, +) +from datadog_api_client.v1.model.monitor_formula_and_function_metrics_query_definition import ( + MonitorFormulaAndFunctionMetricsQueryDefinition, +) +from datadog_api_client.v1.model.monitor_formula_and_function_reference_table_column import ( + MonitorFormulaAndFunctionReferenceTableColumn, +) +from datadog_api_client.v1.model.monitor_formula_and_function_reference_table_data_source import ( + MonitorFormulaAndFunctionReferenceTableDataSource, +) +from datadog_api_client.v1.model.monitor_formula_and_function_reference_table_query_definition import ( + MonitorFormulaAndFunctionReferenceTableQueryDefinition, +) +from datadog_api_client.v1.model.monitor_options import MonitorOptions +from datadog_api_client.v1.model.monitor_thresholds import MonitorThresholds +from datadog_api_client.v1.model.monitor_type import MonitorType + +body = Monitor( + name="Example-Monitor", + type=MonitorType.QUERY_ALERT, + query='formula("query1").rollup("sum").last("5m") > 100', + message="test message", + options=MonitorOptions( + thresholds=MonitorThresholds( + critical=100.0, + ), + variables=[ + MonitorFormulaAndFunctionAggregateFilteredQueryDefinition( + data_source=MonitorFormulaAndFunctionAggregateFilteredDataSource.AGGREGATE_FILTERED_QUERY, + name="query1", + base_query=MonitorFormulaAndFunctionMetricsQueryDefinition( + data_source=MonitorFormulaAndFunctionMetricsDataSource.METRICS, + name="query1", + query="max:container.cpu.usage{*} by {kube_cluster_name}.rollup(max)", + ), + filter_query=MonitorFormulaAndFunctionReferenceTableQueryDefinition( + name="filter_query", + data_source=MonitorFormulaAndFunctionReferenceTableDataSource.REFERENCE_TABLE, + table_name="test_table", + columns=[ + MonitorFormulaAndFunctionReferenceTableColumn( + name="cluster_name", + ), + ], + ), + filters=[ + MonitorFormulaAndFunctionAggregateQueryFilter( + base_attribute="kube_cluster_name", + filter_attribute="cluster_name", + ), + ], + ), + ], + ), +) + +configuration = Configuration() +with ApiClient(configuration) as api_client: + api_instance = MonitorsApi(api_client) + response = api_instance.create_monitor(body=body) + + print(response) diff --git a/examples/v1/monitors/CreateMonitor_2608995690.py b/examples/v1/monitors/CreateMonitor_2608995690.py new file mode 100644 index 0000000000..2dd90f75f2 --- /dev/null +++ b/examples/v1/monitors/CreateMonitor_2608995690.py @@ -0,0 +1,108 @@ +""" +Create a monitor with aggregate augmented query variables returns "OK" response +""" + +from datadog_api_client import ApiClient, Configuration +from datadog_api_client.v1.api.monitors_api import MonitorsApi +from datadog_api_client.v1.model.monitor import Monitor +from datadog_api_client.v1.model.monitor_formula_and_function_aggregate_augmented_data_source import ( + MonitorFormulaAndFunctionAggregateAugmentedDataSource, +) +from datadog_api_client.v1.model.monitor_formula_and_function_aggregate_augmented_query_definition import ( + MonitorFormulaAndFunctionAggregateAugmentedQueryDefinition, +) +from datadog_api_client.v1.model.monitor_formula_and_function_aggregate_query_join_condition import ( + MonitorFormulaAndFunctionAggregateQueryJoinCondition, +) +from datadog_api_client.v1.model.monitor_formula_and_function_aggregate_query_join_type import ( + MonitorFormulaAndFunctionAggregateQueryJoinType, +) +from datadog_api_client.v1.model.monitor_formula_and_function_event_aggregation import ( + MonitorFormulaAndFunctionEventAggregation, +) +from datadog_api_client.v1.model.monitor_formula_and_function_event_query_definition_compute import ( + MonitorFormulaAndFunctionEventQueryDefinitionCompute, +) +from datadog_api_client.v1.model.monitor_formula_and_function_event_query_group_by import ( + MonitorFormulaAndFunctionEventQueryGroupBy, +) +from datadog_api_client.v1.model.monitor_formula_and_function_metrics_data_source import ( + MonitorFormulaAndFunctionMetricsDataSource, +) +from datadog_api_client.v1.model.monitor_formula_and_function_metrics_query_definition import ( + MonitorFormulaAndFunctionMetricsQueryDefinition, +) +from datadog_api_client.v1.model.monitor_formula_and_function_reference_table_column import ( + MonitorFormulaAndFunctionReferenceTableColumn, +) +from datadog_api_client.v1.model.monitor_formula_and_function_reference_table_data_source import ( + MonitorFormulaAndFunctionReferenceTableDataSource, +) +from datadog_api_client.v1.model.monitor_formula_and_function_reference_table_query_definition import ( + MonitorFormulaAndFunctionReferenceTableQueryDefinition, +) +from datadog_api_client.v1.model.monitor_options import MonitorOptions +from datadog_api_client.v1.model.monitor_thresholds import MonitorThresholds +from datadog_api_client.v1.model.monitor_type import MonitorType + +body = Monitor( + name="Example-Monitor", + type=MonitorType.QUERY_ALERT, + query='formula("query1").rollup("sum").last("5m") > 124', + message="test message", + options=MonitorOptions( + thresholds=MonitorThresholds( + critical=124.0, + ), + variables=[ + MonitorFormulaAndFunctionAggregateAugmentedQueryDefinition( + data_source=MonitorFormulaAndFunctionAggregateAugmentedDataSource.AGGREGATE_AUGMENTED_QUERY, + name="query1", + group_by=[ + MonitorFormulaAndFunctionEventQueryGroupBy( + facet="org_id", + ), + MonitorFormulaAndFunctionEventQueryGroupBy( + facet="name", + ), + ], + compute=[ + MonitorFormulaAndFunctionEventQueryDefinitionCompute( + name="compute_result", + aggregation=MonitorFormulaAndFunctionEventAggregation.MAX, + ), + ], + augment_query=MonitorFormulaAndFunctionReferenceTableQueryDefinition( + name="filter_query", + data_source=MonitorFormulaAndFunctionReferenceTableDataSource.REFERENCE_TABLE, + table_name="test_table", + columns=[ + MonitorFormulaAndFunctionReferenceTableColumn( + name="org_id", + ), + MonitorFormulaAndFunctionReferenceTableColumn( + name="name", + ), + ], + ), + base_query=MonitorFormulaAndFunctionMetricsQueryDefinition( + data_source=MonitorFormulaAndFunctionMetricsDataSource.METRICS, + name="query1", + query="avg:dd{*} by {org_id}.as_count()", + ), + join_condition=MonitorFormulaAndFunctionAggregateQueryJoinCondition( + augment_attribute="org_id", + base_attribute="org_id", + join_type=MonitorFormulaAndFunctionAggregateQueryJoinType.INNER, + ), + ), + ], + ), +) + +configuration = Configuration() +with ApiClient(configuration) as api_client: + api_instance = MonitorsApi(api_client) + response = api_instance.create_monitor(body=body) + + print(response) diff --git a/src/datadog_api_client/v1/model/monitor_formula_and_function_aggregate_augment_query.py b/src/datadog_api_client/v1/model/monitor_formula_and_function_aggregate_augment_query.py new file mode 100644 index 0000000000..aace6213f5 --- /dev/null +++ b/src/datadog_api_client/v1/model/monitor_formula_and_function_aggregate_augment_query.py @@ -0,0 +1,68 @@ +# 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 MonitorFormulaAndFunctionAggregateAugmentQuery(ModelComposed): + def __init__(self, **kwargs): + """ + Augment query for aggregate augmented queries. Can be an events query or a reference table query. + + :param compute: Compute options. + :type compute: MonitorFormulaAndFunctionEventQueryDefinitionCompute + + :param data_source: Data source for event platform-based queries. + :type data_source: MonitorFormulaAndFunctionEventsDataSource + + :param group_by: Group by options. + :type group_by: [MonitorFormulaAndFunctionEventQueryGroupBy], optional + + :param indexes: An array of index names to query in the stream. Omit or use `[]` to query all indexes at once. + :type indexes: [str], optional + + :param name: Name of the query for use in formulas. + :type name: str + + :param search: Search options. + :type search: MonitorFormulaAndFunctionEventQueryDefinitionSearch, optional + + :param columns: List of columns to retrieve from the reference table. + :type columns: [MonitorFormulaAndFunctionReferenceTableColumn], optional + + :param query_filter: Optional filter expression for the reference table query. + :type query_filter: str, optional + + :param table_name: Name of the reference table. + :type table_name: str + """ + 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.monitor_formula_and_function_event_query_definition import ( + MonitorFormulaAndFunctionEventQueryDefinition, + ) + from datadog_api_client.v1.model.monitor_formula_and_function_reference_table_query_definition import ( + MonitorFormulaAndFunctionReferenceTableQueryDefinition, + ) + + return { + "oneOf": [ + MonitorFormulaAndFunctionEventQueryDefinition, + MonitorFormulaAndFunctionReferenceTableQueryDefinition, + ], + } diff --git a/src/datadog_api_client/v1/model/monitor_formula_and_function_aggregate_augmented_data_source.py b/src/datadog_api_client/v1/model/monitor_formula_and_function_aggregate_augmented_data_source.py new file mode 100644 index 0000000000..8560b8f689 --- /dev/null +++ b/src/datadog_api_client/v1/model/monitor_formula_and_function_aggregate_augmented_data_source.py @@ -0,0 +1,37 @@ +# 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 MonitorFormulaAndFunctionAggregateAugmentedDataSource(ModelSimple): + """ + Data source for aggregate augmented queries. + + :param value: If omitted defaults to "aggregate_augmented_query". Must be one of ["aggregate_augmented_query"]. + :type value: str + """ + + allowed_values = { + "aggregate_augmented_query", + } + AGGREGATE_AUGMENTED_QUERY: ClassVar["MonitorFormulaAndFunctionAggregateAugmentedDataSource"] + + @cached_property + def openapi_types(_): + return { + "value": (str,), + } + + +MonitorFormulaAndFunctionAggregateAugmentedDataSource.AGGREGATE_AUGMENTED_QUERY = ( + MonitorFormulaAndFunctionAggregateAugmentedDataSource("aggregate_augmented_query") +) diff --git a/src/datadog_api_client/v1/model/monitor_formula_and_function_aggregate_augmented_query_definition.py b/src/datadog_api_client/v1/model/monitor_formula_and_function_aggregate_augmented_query_definition.py new file mode 100644 index 0000000000..7bfd3ec309 --- /dev/null +++ b/src/datadog_api_client/v1/model/monitor_formula_and_function_aggregate_augmented_query_definition.py @@ -0,0 +1,150 @@ +# 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.monitor_formula_and_function_aggregate_augment_query import ( + MonitorFormulaAndFunctionAggregateAugmentQuery, + ) + from datadog_api_client.v1.model.monitor_formula_and_function_aggregate_base_query import ( + MonitorFormulaAndFunctionAggregateBaseQuery, + ) + from datadog_api_client.v1.model.monitor_formula_and_function_event_query_definition_compute import ( + MonitorFormulaAndFunctionEventQueryDefinitionCompute, + ) + from datadog_api_client.v1.model.monitor_formula_and_function_aggregate_augmented_data_source import ( + MonitorFormulaAndFunctionAggregateAugmentedDataSource, + ) + from datadog_api_client.v1.model.monitor_formula_and_function_event_query_group_by import ( + MonitorFormulaAndFunctionEventQueryGroupBy, + ) + from datadog_api_client.v1.model.monitor_formula_and_function_aggregate_query_join_condition import ( + MonitorFormulaAndFunctionAggregateQueryJoinCondition, + ) + from datadog_api_client.v1.model.monitor_formula_and_function_event_query_definition import ( + MonitorFormulaAndFunctionEventQueryDefinition, + ) + from datadog_api_client.v1.model.monitor_formula_and_function_reference_table_query_definition import ( + MonitorFormulaAndFunctionReferenceTableQueryDefinition, + ) + from datadog_api_client.v1.model.monitor_formula_and_function_metrics_query_definition import ( + MonitorFormulaAndFunctionMetricsQueryDefinition, + ) + + +class MonitorFormulaAndFunctionAggregateAugmentedQueryDefinition(ModelNormal): + validations = { + "compute": { + "min_items": 1, + }, + } + + @cached_property + def additional_properties_type(_): + return None + + @cached_property + def openapi_types(_): + from datadog_api_client.v1.model.monitor_formula_and_function_aggregate_augment_query import ( + MonitorFormulaAndFunctionAggregateAugmentQuery, + ) + from datadog_api_client.v1.model.monitor_formula_and_function_aggregate_base_query import ( + MonitorFormulaAndFunctionAggregateBaseQuery, + ) + from datadog_api_client.v1.model.monitor_formula_and_function_event_query_definition_compute import ( + MonitorFormulaAndFunctionEventQueryDefinitionCompute, + ) + from datadog_api_client.v1.model.monitor_formula_and_function_aggregate_augmented_data_source import ( + MonitorFormulaAndFunctionAggregateAugmentedDataSource, + ) + from datadog_api_client.v1.model.monitor_formula_and_function_event_query_group_by import ( + MonitorFormulaAndFunctionEventQueryGroupBy, + ) + from datadog_api_client.v1.model.monitor_formula_and_function_aggregate_query_join_condition import ( + MonitorFormulaAndFunctionAggregateQueryJoinCondition, + ) + + return { + "augment_query": (MonitorFormulaAndFunctionAggregateAugmentQuery,), + "base_query": (MonitorFormulaAndFunctionAggregateBaseQuery,), + "compute": ([MonitorFormulaAndFunctionEventQueryDefinitionCompute],), + "data_source": (MonitorFormulaAndFunctionAggregateAugmentedDataSource,), + "group_by": ([MonitorFormulaAndFunctionEventQueryGroupBy],), + "join_condition": (MonitorFormulaAndFunctionAggregateQueryJoinCondition,), + "name": (str,), + } + + attribute_map = { + "augment_query": "augment_query", + "base_query": "base_query", + "compute": "compute", + "data_source": "data_source", + "group_by": "group_by", + "join_condition": "join_condition", + "name": "name", + } + + def __init__( + self_, + augment_query: Union[ + MonitorFormulaAndFunctionAggregateAugmentQuery, + MonitorFormulaAndFunctionEventQueryDefinition, + MonitorFormulaAndFunctionReferenceTableQueryDefinition, + ], + base_query: Union[ + MonitorFormulaAndFunctionAggregateBaseQuery, + MonitorFormulaAndFunctionEventQueryDefinition, + MonitorFormulaAndFunctionMetricsQueryDefinition, + ], + compute: List[MonitorFormulaAndFunctionEventQueryDefinitionCompute], + data_source: MonitorFormulaAndFunctionAggregateAugmentedDataSource, + group_by: List[MonitorFormulaAndFunctionEventQueryGroupBy], + join_condition: MonitorFormulaAndFunctionAggregateQueryJoinCondition, + name: Union[str, UnsetType] = unset, + **kwargs, + ): + """ + A formula and functions aggregate augmented query. Used to enrich base query results with data from a reference table. + + :param augment_query: Augment query for aggregate augmented queries. Can be an events query or a reference table query. + :type augment_query: MonitorFormulaAndFunctionAggregateAugmentQuery + + :param base_query: Base query for aggregate queries. Can be an events query or a metrics query. + :type base_query: MonitorFormulaAndFunctionAggregateBaseQuery + + :param compute: Compute options for the query. + :type compute: [MonitorFormulaAndFunctionEventQueryDefinitionCompute] + + :param data_source: Data source for aggregate augmented queries. + :type data_source: MonitorFormulaAndFunctionAggregateAugmentedDataSource + + :param group_by: Group by options for the query. + :type group_by: [MonitorFormulaAndFunctionEventQueryGroupBy] + + :param join_condition: Join condition for aggregate augmented queries. + :type join_condition: MonitorFormulaAndFunctionAggregateQueryJoinCondition + + :param name: Name of the query for use in formulas. + :type name: str, optional + """ + if name is not unset: + kwargs["name"] = name + super().__init__(kwargs) + + self_.augment_query = augment_query + self_.base_query = base_query + self_.compute = compute + self_.data_source = data_source + self_.group_by = group_by + self_.join_condition = join_condition diff --git a/src/datadog_api_client/v1/model/monitor_formula_and_function_aggregate_base_query.py b/src/datadog_api_client/v1/model/monitor_formula_and_function_aggregate_base_query.py new file mode 100644 index 0000000000..fbba0f2db5 --- /dev/null +++ b/src/datadog_api_client/v1/model/monitor_formula_and_function_aggregate_base_query.py @@ -0,0 +1,65 @@ +# 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 MonitorFormulaAndFunctionAggregateBaseQuery(ModelComposed): + def __init__(self, **kwargs): + """ + Base query for aggregate queries. Can be an events query or a metrics query. + + :param compute: Compute options. + :type compute: MonitorFormulaAndFunctionEventQueryDefinitionCompute + + :param data_source: Data source for event platform-based queries. + :type data_source: MonitorFormulaAndFunctionEventsDataSource + + :param group_by: Group by options. + :type group_by: [MonitorFormulaAndFunctionEventQueryGroupBy], optional + + :param indexes: An array of index names to query in the stream. Omit or use `[]` to query all indexes at once. + :type indexes: [str], optional + + :param name: Name of the query for use in formulas. + :type name: str + + :param search: Search options. + :type search: MonitorFormulaAndFunctionEventQueryDefinitionSearch, optional + + :param aggregator: Aggregator for metrics queries. + :type aggregator: MonitorFormulaAndFunctionMetricsAggregator, optional + + :param query: The metrics query definition. + :type query: str + """ + 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.monitor_formula_and_function_event_query_definition import ( + MonitorFormulaAndFunctionEventQueryDefinition, + ) + from datadog_api_client.v1.model.monitor_formula_and_function_metrics_query_definition import ( + MonitorFormulaAndFunctionMetricsQueryDefinition, + ) + + return { + "oneOf": [ + MonitorFormulaAndFunctionEventQueryDefinition, + MonitorFormulaAndFunctionMetricsQueryDefinition, + ], + } diff --git a/src/datadog_api_client/v1/model/monitor_formula_and_function_aggregate_filter_query.py b/src/datadog_api_client/v1/model/monitor_formula_and_function_aggregate_filter_query.py new file mode 100644 index 0000000000..44cc215fcb --- /dev/null +++ b/src/datadog_api_client/v1/model/monitor_formula_and_function_aggregate_filter_query.py @@ -0,0 +1,68 @@ +# 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 MonitorFormulaAndFunctionAggregateFilterQuery(ModelComposed): + def __init__(self, **kwargs): + """ + Filter query for aggregate filtered queries. Can be an events query or a reference table query. + + :param compute: Compute options. + :type compute: MonitorFormulaAndFunctionEventQueryDefinitionCompute + + :param data_source: Data source for event platform-based queries. + :type data_source: MonitorFormulaAndFunctionEventsDataSource + + :param group_by: Group by options. + :type group_by: [MonitorFormulaAndFunctionEventQueryGroupBy], optional + + :param indexes: An array of index names to query in the stream. Omit or use `[]` to query all indexes at once. + :type indexes: [str], optional + + :param name: Name of the query for use in formulas. + :type name: str + + :param search: Search options. + :type search: MonitorFormulaAndFunctionEventQueryDefinitionSearch, optional + + :param columns: List of columns to retrieve from the reference table. + :type columns: [MonitorFormulaAndFunctionReferenceTableColumn], optional + + :param query_filter: Optional filter expression for the reference table query. + :type query_filter: str, optional + + :param table_name: Name of the reference table. + :type table_name: str + """ + 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.monitor_formula_and_function_event_query_definition import ( + MonitorFormulaAndFunctionEventQueryDefinition, + ) + from datadog_api_client.v1.model.monitor_formula_and_function_reference_table_query_definition import ( + MonitorFormulaAndFunctionReferenceTableQueryDefinition, + ) + + return { + "oneOf": [ + MonitorFormulaAndFunctionEventQueryDefinition, + MonitorFormulaAndFunctionReferenceTableQueryDefinition, + ], + } diff --git a/src/datadog_api_client/v1/model/monitor_formula_and_function_aggregate_filtered_data_source.py b/src/datadog_api_client/v1/model/monitor_formula_and_function_aggregate_filtered_data_source.py new file mode 100644 index 0000000000..8a053a1fb7 --- /dev/null +++ b/src/datadog_api_client/v1/model/monitor_formula_and_function_aggregate_filtered_data_source.py @@ -0,0 +1,37 @@ +# 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 MonitorFormulaAndFunctionAggregateFilteredDataSource(ModelSimple): + """ + Data source for aggregate filtered queries. + + :param value: If omitted defaults to "aggregate_filtered_query". Must be one of ["aggregate_filtered_query"]. + :type value: str + """ + + allowed_values = { + "aggregate_filtered_query", + } + AGGREGATE_FILTERED_QUERY: ClassVar["MonitorFormulaAndFunctionAggregateFilteredDataSource"] + + @cached_property + def openapi_types(_): + return { + "value": (str,), + } + + +MonitorFormulaAndFunctionAggregateFilteredDataSource.AGGREGATE_FILTERED_QUERY = ( + MonitorFormulaAndFunctionAggregateFilteredDataSource("aggregate_filtered_query") +) diff --git a/src/datadog_api_client/v1/model/monitor_formula_and_function_aggregate_filtered_query_definition.py b/src/datadog_api_client/v1/model/monitor_formula_and_function_aggregate_filtered_query_definition.py new file mode 100644 index 0000000000..ac95e738b9 --- /dev/null +++ b/src/datadog_api_client/v1/model/monitor_formula_and_function_aggregate_filtered_query_definition.py @@ -0,0 +1,146 @@ +# 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.monitor_formula_and_function_aggregate_base_query import ( + MonitorFormulaAndFunctionAggregateBaseQuery, + ) + from datadog_api_client.v1.model.monitor_formula_and_function_event_query_definition_compute import ( + MonitorFormulaAndFunctionEventQueryDefinitionCompute, + ) + from datadog_api_client.v1.model.monitor_formula_and_function_aggregate_filtered_data_source import ( + MonitorFormulaAndFunctionAggregateFilteredDataSource, + ) + from datadog_api_client.v1.model.monitor_formula_and_function_aggregate_filter_query import ( + MonitorFormulaAndFunctionAggregateFilterQuery, + ) + from datadog_api_client.v1.model.monitor_formula_and_function_aggregate_query_filter import ( + MonitorFormulaAndFunctionAggregateQueryFilter, + ) + from datadog_api_client.v1.model.monitor_formula_and_function_event_query_group_by import ( + MonitorFormulaAndFunctionEventQueryGroupBy, + ) + from datadog_api_client.v1.model.monitor_formula_and_function_event_query_definition import ( + MonitorFormulaAndFunctionEventQueryDefinition, + ) + from datadog_api_client.v1.model.monitor_formula_and_function_metrics_query_definition import ( + MonitorFormulaAndFunctionMetricsQueryDefinition, + ) + from datadog_api_client.v1.model.monitor_formula_and_function_reference_table_query_definition import ( + MonitorFormulaAndFunctionReferenceTableQueryDefinition, + ) + + +class MonitorFormulaAndFunctionAggregateFilteredQueryDefinition(ModelNormal): + @cached_property + def additional_properties_type(_): + return None + + @cached_property + def openapi_types(_): + from datadog_api_client.v1.model.monitor_formula_and_function_aggregate_base_query import ( + MonitorFormulaAndFunctionAggregateBaseQuery, + ) + from datadog_api_client.v1.model.monitor_formula_and_function_event_query_definition_compute import ( + MonitorFormulaAndFunctionEventQueryDefinitionCompute, + ) + from datadog_api_client.v1.model.monitor_formula_and_function_aggregate_filtered_data_source import ( + MonitorFormulaAndFunctionAggregateFilteredDataSource, + ) + from datadog_api_client.v1.model.monitor_formula_and_function_aggregate_filter_query import ( + MonitorFormulaAndFunctionAggregateFilterQuery, + ) + from datadog_api_client.v1.model.monitor_formula_and_function_aggregate_query_filter import ( + MonitorFormulaAndFunctionAggregateQueryFilter, + ) + from datadog_api_client.v1.model.monitor_formula_and_function_event_query_group_by import ( + MonitorFormulaAndFunctionEventQueryGroupBy, + ) + + return { + "base_query": (MonitorFormulaAndFunctionAggregateBaseQuery,), + "compute": ([MonitorFormulaAndFunctionEventQueryDefinitionCompute],), + "data_source": (MonitorFormulaAndFunctionAggregateFilteredDataSource,), + "filter_query": (MonitorFormulaAndFunctionAggregateFilterQuery,), + "filters": ([MonitorFormulaAndFunctionAggregateQueryFilter],), + "group_by": ([MonitorFormulaAndFunctionEventQueryGroupBy],), + "name": (str,), + } + + attribute_map = { + "base_query": "base_query", + "compute": "compute", + "data_source": "data_source", + "filter_query": "filter_query", + "filters": "filters", + "group_by": "group_by", + "name": "name", + } + + def __init__( + self_, + base_query: Union[ + MonitorFormulaAndFunctionAggregateBaseQuery, + MonitorFormulaAndFunctionEventQueryDefinition, + MonitorFormulaAndFunctionMetricsQueryDefinition, + ], + data_source: MonitorFormulaAndFunctionAggregateFilteredDataSource, + filter_query: Union[ + MonitorFormulaAndFunctionAggregateFilterQuery, + MonitorFormulaAndFunctionEventQueryDefinition, + MonitorFormulaAndFunctionReferenceTableQueryDefinition, + ], + filters: List[MonitorFormulaAndFunctionAggregateQueryFilter], + compute: Union[List[MonitorFormulaAndFunctionEventQueryDefinitionCompute], UnsetType] = unset, + group_by: Union[List[MonitorFormulaAndFunctionEventQueryGroupBy], UnsetType] = unset, + name: Union[str, UnsetType] = unset, + **kwargs, + ): + """ + A formula and functions aggregate filtered query. Used to filter base query results using data from another source. + + :param base_query: Base query for aggregate queries. Can be an events query or a metrics query. + :type base_query: MonitorFormulaAndFunctionAggregateBaseQuery + + :param compute: Compute options for the query. + :type compute: [MonitorFormulaAndFunctionEventQueryDefinitionCompute], optional + + :param data_source: Data source for aggregate filtered queries. + :type data_source: MonitorFormulaAndFunctionAggregateFilteredDataSource + + :param filter_query: Filter query for aggregate filtered queries. Can be an events query or a reference table query. + :type filter_query: MonitorFormulaAndFunctionAggregateFilterQuery + + :param filters: Filter conditions for the query. + :type filters: [MonitorFormulaAndFunctionAggregateQueryFilter] + + :param group_by: Group by options for the query. + :type group_by: [MonitorFormulaAndFunctionEventQueryGroupBy], optional + + :param name: Name of the query for use in formulas. + :type name: str, optional + """ + if compute is not unset: + kwargs["compute"] = compute + if group_by is not unset: + kwargs["group_by"] = group_by + if name is not unset: + kwargs["name"] = name + super().__init__(kwargs) + + self_.base_query = base_query + self_.data_source = data_source + self_.filter_query = filter_query + self_.filters = filters diff --git a/src/datadog_api_client/v1/model/monitor_formula_and_function_aggregate_query_filter.py b/src/datadog_api_client/v1/model/monitor_formula_and_function_aggregate_query_filter.py new file mode 100644 index 0000000000..ec4ef2856f --- /dev/null +++ b/src/datadog_api_client/v1/model/monitor_formula_and_function_aggregate_query_filter.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 + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, + unset, + UnsetType, +) + + +class MonitorFormulaAndFunctionAggregateQueryFilter(ModelNormal): + @cached_property + def additional_properties_type(_): + return None + + @cached_property + def openapi_types(_): + return { + "base_attribute": (str,), + "exclude": (bool,), + "filter_attribute": (str,), + } + + attribute_map = { + "base_attribute": "base_attribute", + "exclude": "exclude", + "filter_attribute": "filter_attribute", + } + + def __init__(self_, base_attribute: str, filter_attribute: str, exclude: Union[bool, UnsetType] = unset, **kwargs): + """ + Filter definition for aggregate filtered queries. + + :param base_attribute: Attribute from the base query to filter on. + :type base_attribute: str + + :param exclude: Whether to exclude matching records instead of including them. + :type exclude: bool, optional + + :param filter_attribute: Attribute from the filter query to match against. + :type filter_attribute: str + """ + if exclude is not unset: + kwargs["exclude"] = exclude + super().__init__(kwargs) + + self_.base_attribute = base_attribute + self_.filter_attribute = filter_attribute diff --git a/src/datadog_api_client/v1/model/monitor_formula_and_function_aggregate_query_join_condition.py b/src/datadog_api_client/v1/model/monitor_formula_and_function_aggregate_query_join_condition.py new file mode 100644 index 0000000000..e8bceac8fe --- /dev/null +++ b/src/datadog_api_client/v1/model/monitor_formula_and_function_aggregate_query_join_condition.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 TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v1.model.monitor_formula_and_function_aggregate_query_join_type import ( + MonitorFormulaAndFunctionAggregateQueryJoinType, + ) + + +class MonitorFormulaAndFunctionAggregateQueryJoinCondition(ModelNormal): + @cached_property + def additional_properties_type(_): + return None + + @cached_property + def openapi_types(_): + from datadog_api_client.v1.model.monitor_formula_and_function_aggregate_query_join_type import ( + MonitorFormulaAndFunctionAggregateQueryJoinType, + ) + + return { + "augment_attribute": (str,), + "base_attribute": (str,), + "join_type": (MonitorFormulaAndFunctionAggregateQueryJoinType,), + } + + attribute_map = { + "augment_attribute": "augment_attribute", + "base_attribute": "base_attribute", + "join_type": "join_type", + } + + def __init__( + self_, + augment_attribute: str, + base_attribute: str, + join_type: MonitorFormulaAndFunctionAggregateQueryJoinType, + **kwargs, + ): + """ + Join condition for aggregate augmented queries. + + :param augment_attribute: Attribute from the augment query to join on. + :type augment_attribute: str + + :param base_attribute: Attribute from the base query to join on. + :type base_attribute: str + + :param join_type: Join type for aggregate query join conditions. + :type join_type: MonitorFormulaAndFunctionAggregateQueryJoinType + """ + super().__init__(kwargs) + + self_.augment_attribute = augment_attribute + self_.base_attribute = base_attribute + self_.join_type = join_type diff --git a/src/datadog_api_client/v1/model/monitor_formula_and_function_aggregate_query_join_type.py b/src/datadog_api_client/v1/model/monitor_formula_and_function_aggregate_query_join_type.py new file mode 100644 index 0000000000..3dbea81d6c --- /dev/null +++ b/src/datadog_api_client/v1/model/monitor_formula_and_function_aggregate_query_join_type.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 MonitorFormulaAndFunctionAggregateQueryJoinType(ModelSimple): + """ + Join type for aggregate query join conditions. + + :param value: Must be one of ["inner", "left"]. + :type value: str + """ + + allowed_values = { + "inner", + "left", + } + INNER: ClassVar["MonitorFormulaAndFunctionAggregateQueryJoinType"] + LEFT: ClassVar["MonitorFormulaAndFunctionAggregateQueryJoinType"] + + @cached_property + def openapi_types(_): + return { + "value": (str,), + } + + +MonitorFormulaAndFunctionAggregateQueryJoinType.INNER = MonitorFormulaAndFunctionAggregateQueryJoinType("inner") +MonitorFormulaAndFunctionAggregateQueryJoinType.LEFT = MonitorFormulaAndFunctionAggregateQueryJoinType("left") diff --git a/src/datadog_api_client/v1/model/monitor_formula_and_function_event_query_definition_compute.py b/src/datadog_api_client/v1/model/monitor_formula_and_function_event_query_definition_compute.py index 4f5b81c6e4..9d178337a9 100644 --- a/src/datadog_api_client/v1/model/monitor_formula_and_function_event_query_definition_compute.py +++ b/src/datadog_api_client/v1/model/monitor_formula_and_function_event_query_definition_compute.py @@ -30,12 +30,14 @@ def openapi_types(_): "aggregation": (MonitorFormulaAndFunctionEventAggregation,), "interval": (int,), "metric": (str,), + "name": (str,), } attribute_map = { "aggregation": "aggregation", "interval": "interval", "metric": "metric", + "name": "name", } def __init__( @@ -43,6 +45,7 @@ def __init__( aggregation: MonitorFormulaAndFunctionEventAggregation, interval: Union[int, UnsetType] = unset, metric: Union[str, UnsetType] = unset, + name: Union[str, UnsetType] = unset, **kwargs, ): """ @@ -56,11 +59,16 @@ def __init__( :param metric: Measurable attribute to compute. :type metric: str, optional + + :param name: The name assigned to this aggregation, when multiple aggregations are defined for a query. + :type name: str, optional """ if interval is not unset: kwargs["interval"] = interval if metric is not unset: kwargs["metric"] = metric + if name is not unset: + kwargs["name"] = name super().__init__(kwargs) self_.aggregation = aggregation diff --git a/src/datadog_api_client/v1/model/monitor_formula_and_function_metrics_aggregator.py b/src/datadog_api_client/v1/model/monitor_formula_and_function_metrics_aggregator.py new file mode 100644 index 0000000000..c548bfb12d --- /dev/null +++ b/src/datadog_api_client/v1/model/monitor_formula_and_function_metrics_aggregator.py @@ -0,0 +1,65 @@ +# 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 MonitorFormulaAndFunctionMetricsAggregator(ModelSimple): + """ + Aggregator for metrics queries. + + :param value: Must be one of ["avg", "min", "max", "sum", "last", "mean", "area", "l2norm", "percentile", "stddev", "count_unique"]. + :type value: str + """ + + allowed_values = { + "avg", + "min", + "max", + "sum", + "last", + "mean", + "area", + "l2norm", + "percentile", + "stddev", + "count_unique", + } + AVG: ClassVar["MonitorFormulaAndFunctionMetricsAggregator"] + MIN: ClassVar["MonitorFormulaAndFunctionMetricsAggregator"] + MAX: ClassVar["MonitorFormulaAndFunctionMetricsAggregator"] + SUM: ClassVar["MonitorFormulaAndFunctionMetricsAggregator"] + LAST: ClassVar["MonitorFormulaAndFunctionMetricsAggregator"] + MEAN: ClassVar["MonitorFormulaAndFunctionMetricsAggregator"] + AREA: ClassVar["MonitorFormulaAndFunctionMetricsAggregator"] + L2NORM: ClassVar["MonitorFormulaAndFunctionMetricsAggregator"] + PERCENTILE: ClassVar["MonitorFormulaAndFunctionMetricsAggregator"] + STDDEV: ClassVar["MonitorFormulaAndFunctionMetricsAggregator"] + COUNT_UNIQUE: ClassVar["MonitorFormulaAndFunctionMetricsAggregator"] + + @cached_property + def openapi_types(_): + return { + "value": (str,), + } + + +MonitorFormulaAndFunctionMetricsAggregator.AVG = MonitorFormulaAndFunctionMetricsAggregator("avg") +MonitorFormulaAndFunctionMetricsAggregator.MIN = MonitorFormulaAndFunctionMetricsAggregator("min") +MonitorFormulaAndFunctionMetricsAggregator.MAX = MonitorFormulaAndFunctionMetricsAggregator("max") +MonitorFormulaAndFunctionMetricsAggregator.SUM = MonitorFormulaAndFunctionMetricsAggregator("sum") +MonitorFormulaAndFunctionMetricsAggregator.LAST = MonitorFormulaAndFunctionMetricsAggregator("last") +MonitorFormulaAndFunctionMetricsAggregator.MEAN = MonitorFormulaAndFunctionMetricsAggregator("mean") +MonitorFormulaAndFunctionMetricsAggregator.AREA = MonitorFormulaAndFunctionMetricsAggregator("area") +MonitorFormulaAndFunctionMetricsAggregator.L2NORM = MonitorFormulaAndFunctionMetricsAggregator("l2norm") +MonitorFormulaAndFunctionMetricsAggregator.PERCENTILE = MonitorFormulaAndFunctionMetricsAggregator("percentile") +MonitorFormulaAndFunctionMetricsAggregator.STDDEV = MonitorFormulaAndFunctionMetricsAggregator("stddev") +MonitorFormulaAndFunctionMetricsAggregator.COUNT_UNIQUE = MonitorFormulaAndFunctionMetricsAggregator("count_unique") diff --git a/src/datadog_api_client/v1/model/monitor_formula_and_function_metrics_data_source.py b/src/datadog_api_client/v1/model/monitor_formula_and_function_metrics_data_source.py new file mode 100644 index 0000000000..8c659f3c0e --- /dev/null +++ b/src/datadog_api_client/v1/model/monitor_formula_and_function_metrics_data_source.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 MonitorFormulaAndFunctionMetricsDataSource(ModelSimple): + """ + Data source for metrics queries. + + :param value: Must be one of ["metrics", "cloud_cost", "datadog_usage"]. + :type value: str + """ + + allowed_values = { + "metrics", + "cloud_cost", + "datadog_usage", + } + METRICS: ClassVar["MonitorFormulaAndFunctionMetricsDataSource"] + CLOUD_COST: ClassVar["MonitorFormulaAndFunctionMetricsDataSource"] + DATADOG_USAGE: ClassVar["MonitorFormulaAndFunctionMetricsDataSource"] + + @cached_property + def openapi_types(_): + return { + "value": (str,), + } + + +MonitorFormulaAndFunctionMetricsDataSource.METRICS = MonitorFormulaAndFunctionMetricsDataSource("metrics") +MonitorFormulaAndFunctionMetricsDataSource.CLOUD_COST = MonitorFormulaAndFunctionMetricsDataSource("cloud_cost") +MonitorFormulaAndFunctionMetricsDataSource.DATADOG_USAGE = MonitorFormulaAndFunctionMetricsDataSource("datadog_usage") diff --git a/src/datadog_api_client/v1/model/monitor_formula_and_function_metrics_query_definition.py b/src/datadog_api_client/v1/model/monitor_formula_and_function_metrics_query_definition.py new file mode 100644 index 0000000000..1bb9b4487b --- /dev/null +++ b/src/datadog_api_client/v1/model/monitor_formula_and_function_metrics_query_definition.py @@ -0,0 +1,83 @@ +# 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.monitor_formula_and_function_metrics_aggregator import ( + MonitorFormulaAndFunctionMetricsAggregator, + ) + from datadog_api_client.v1.model.monitor_formula_and_function_metrics_data_source import ( + MonitorFormulaAndFunctionMetricsDataSource, + ) + + +class MonitorFormulaAndFunctionMetricsQueryDefinition(ModelNormal): + @cached_property + def additional_properties_type(_): + return None + + @cached_property + def openapi_types(_): + from datadog_api_client.v1.model.monitor_formula_and_function_metrics_aggregator import ( + MonitorFormulaAndFunctionMetricsAggregator, + ) + from datadog_api_client.v1.model.monitor_formula_and_function_metrics_data_source import ( + MonitorFormulaAndFunctionMetricsDataSource, + ) + + return { + "aggregator": (MonitorFormulaAndFunctionMetricsAggregator,), + "data_source": (MonitorFormulaAndFunctionMetricsDataSource,), + "name": (str,), + "query": (str,), + } + + attribute_map = { + "aggregator": "aggregator", + "data_source": "data_source", + "name": "name", + "query": "query", + } + + def __init__( + self_, + data_source: MonitorFormulaAndFunctionMetricsDataSource, + query: str, + aggregator: Union[MonitorFormulaAndFunctionMetricsAggregator, UnsetType] = unset, + name: Union[str, UnsetType] = unset, + **kwargs, + ): + """ + A formula and functions metrics query for use in aggregate queries. + + :param aggregator: Aggregator for metrics queries. + :type aggregator: MonitorFormulaAndFunctionMetricsAggregator, optional + + :param data_source: Data source for metrics queries. + :type data_source: MonitorFormulaAndFunctionMetricsDataSource + + :param name: Name of the query for use in formulas. + :type name: str, optional + + :param query: The metrics query definition. + :type query: str + """ + if aggregator is not unset: + kwargs["aggregator"] = aggregator + if name is not unset: + kwargs["name"] = name + super().__init__(kwargs) + + self_.data_source = data_source + self_.query = query diff --git a/src/datadog_api_client/v1/model/monitor_formula_and_function_query_definition.py b/src/datadog_api_client/v1/model/monitor_formula_and_function_query_definition.py index 94048f9815..0399385079 100644 --- a/src/datadog_api_client/v1/model/monitor_formula_and_function_query_definition.py +++ b/src/datadog_api_client/v1/model/monitor_formula_and_function_query_definition.py @@ -57,6 +57,21 @@ def __init__(self, **kwargs): :param scope: Optional scoping expression to further filter metrics. Uses metrics filter syntax. This is useful when an entity has been configured to emit metrics with additional tags. :type scope: str, optional + + :param augment_query: Augment query for aggregate augmented queries. Can be an events query or a reference table query. + :type augment_query: MonitorFormulaAndFunctionAggregateAugmentQuery + + :param base_query: Base query for aggregate queries. Can be an events query or a metrics query. + :type base_query: MonitorFormulaAndFunctionAggregateBaseQuery + + :param join_condition: Join condition for aggregate augmented queries. + :type join_condition: MonitorFormulaAndFunctionAggregateQueryJoinCondition + + :param filter_query: Filter query for aggregate filtered queries. Can be an events query or a reference table query. + :type filter_query: MonitorFormulaAndFunctionAggregateFilterQuery + + :param filters: Filter conditions for the query. + :type filters: [MonitorFormulaAndFunctionAggregateQueryFilter] """ super().__init__(kwargs) @@ -78,11 +93,19 @@ def _composed_schemas(_): from datadog_api_client.v1.model.monitor_formula_and_function_data_quality_query_definition import ( MonitorFormulaAndFunctionDataQualityQueryDefinition, ) + from datadog_api_client.v1.model.monitor_formula_and_function_aggregate_augmented_query_definition import ( + MonitorFormulaAndFunctionAggregateAugmentedQueryDefinition, + ) + from datadog_api_client.v1.model.monitor_formula_and_function_aggregate_filtered_query_definition import ( + MonitorFormulaAndFunctionAggregateFilteredQueryDefinition, + ) return { "oneOf": [ MonitorFormulaAndFunctionEventQueryDefinition, MonitorFormulaAndFunctionCostQueryDefinition, MonitorFormulaAndFunctionDataQualityQueryDefinition, + MonitorFormulaAndFunctionAggregateAugmentedQueryDefinition, + MonitorFormulaAndFunctionAggregateFilteredQueryDefinition, ], } diff --git a/src/datadog_api_client/v1/model/monitor_formula_and_function_reference_table_column.py b/src/datadog_api_client/v1/model/monitor_formula_and_function_reference_table_column.py new file mode 100644 index 0000000000..183b6fabd0 --- /dev/null +++ b/src/datadog_api_client/v1/model/monitor_formula_and_function_reference_table_column.py @@ -0,0 +1,47 @@ +# 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 + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, + unset, + UnsetType, +) + + +class MonitorFormulaAndFunctionReferenceTableColumn(ModelNormal): + @cached_property + def additional_properties_type(_): + return None + + @cached_property + def openapi_types(_): + return { + "alias": (str,), + "name": (str,), + } + + attribute_map = { + "alias": "alias", + "name": "name", + } + + def __init__(self_, name: str, alias: Union[str, UnsetType] = unset, **kwargs): + """ + A column definition for reference table queries. + + :param alias: Optional alias for the column. + :type alias: str, optional + + :param name: Name of the column. + :type name: str + """ + if alias is not unset: + kwargs["alias"] = alias + super().__init__(kwargs) + + self_.name = name diff --git a/src/datadog_api_client/v1/model/monitor_formula_and_function_reference_table_data_source.py b/src/datadog_api_client/v1/model/monitor_formula_and_function_reference_table_data_source.py new file mode 100644 index 0000000000..aeaf842827 --- /dev/null +++ b/src/datadog_api_client/v1/model/monitor_formula_and_function_reference_table_data_source.py @@ -0,0 +1,37 @@ +# 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 MonitorFormulaAndFunctionReferenceTableDataSource(ModelSimple): + """ + Data source for reference table queries. + + :param value: If omitted defaults to "reference_table". Must be one of ["reference_table"]. + :type value: str + """ + + allowed_values = { + "reference_table", + } + REFERENCE_TABLE: ClassVar["MonitorFormulaAndFunctionReferenceTableDataSource"] + + @cached_property + def openapi_types(_): + return { + "value": (str,), + } + + +MonitorFormulaAndFunctionReferenceTableDataSource.REFERENCE_TABLE = MonitorFormulaAndFunctionReferenceTableDataSource( + "reference_table" +) diff --git a/src/datadog_api_client/v1/model/monitor_formula_and_function_reference_table_query_definition.py b/src/datadog_api_client/v1/model/monitor_formula_and_function_reference_table_query_definition.py new file mode 100644 index 0000000000..8c293e1949 --- /dev/null +++ b/src/datadog_api_client/v1/model/monitor_formula_and_function_reference_table_query_definition.py @@ -0,0 +1,91 @@ +# 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.monitor_formula_and_function_reference_table_column import ( + MonitorFormulaAndFunctionReferenceTableColumn, + ) + from datadog_api_client.v1.model.monitor_formula_and_function_reference_table_data_source import ( + MonitorFormulaAndFunctionReferenceTableDataSource, + ) + + +class MonitorFormulaAndFunctionReferenceTableQueryDefinition(ModelNormal): + @cached_property + def additional_properties_type(_): + return None + + @cached_property + def openapi_types(_): + from datadog_api_client.v1.model.monitor_formula_and_function_reference_table_column import ( + MonitorFormulaAndFunctionReferenceTableColumn, + ) + from datadog_api_client.v1.model.monitor_formula_and_function_reference_table_data_source import ( + MonitorFormulaAndFunctionReferenceTableDataSource, + ) + + return { + "columns": ([MonitorFormulaAndFunctionReferenceTableColumn],), + "data_source": (MonitorFormulaAndFunctionReferenceTableDataSource,), + "name": (str,), + "query_filter": (str,), + "table_name": (str,), + } + + attribute_map = { + "columns": "columns", + "data_source": "data_source", + "name": "name", + "query_filter": "query_filter", + "table_name": "table_name", + } + + def __init__( + self_, + data_source: MonitorFormulaAndFunctionReferenceTableDataSource, + table_name: str, + columns: Union[List[MonitorFormulaAndFunctionReferenceTableColumn], UnsetType] = unset, + name: Union[str, UnsetType] = unset, + query_filter: Union[str, UnsetType] = unset, + **kwargs, + ): + """ + A reference table query for use in aggregate queries. + + :param columns: List of columns to retrieve from the reference table. + :type columns: [MonitorFormulaAndFunctionReferenceTableColumn], optional + + :param data_source: Data source for reference table queries. + :type data_source: MonitorFormulaAndFunctionReferenceTableDataSource + + :param name: Name of the query. + :type name: str, optional + + :param query_filter: Optional filter expression for the reference table query. + :type query_filter: str, optional + + :param table_name: Name of the reference table. + :type table_name: str + """ + if columns is not unset: + kwargs["columns"] = columns + if name is not unset: + kwargs["name"] = name + if query_filter is not unset: + kwargs["query_filter"] = query_filter + super().__init__(kwargs) + + self_.data_source = data_source + self_.table_name = table_name diff --git a/src/datadog_api_client/v1/model/monitor_options.py b/src/datadog_api_client/v1/model/monitor_options.py index a1119a0d47..9bdd86c3eb 100644 --- a/src/datadog_api_client/v1/model/monitor_options.py +++ b/src/datadog_api_client/v1/model/monitor_options.py @@ -35,6 +35,12 @@ from datadog_api_client.v1.model.monitor_formula_and_function_data_quality_query_definition import ( MonitorFormulaAndFunctionDataQualityQueryDefinition, ) + from datadog_api_client.v1.model.monitor_formula_and_function_aggregate_augmented_query_definition import ( + MonitorFormulaAndFunctionAggregateAugmentedQueryDefinition, + ) + from datadog_api_client.v1.model.monitor_formula_and_function_aggregate_filtered_query_definition import ( + MonitorFormulaAndFunctionAggregateFilteredQueryDefinition, + ) class MonitorOptions(ModelNormal): @@ -177,6 +183,8 @@ def __init__( MonitorFormulaAndFunctionEventQueryDefinition, MonitorFormulaAndFunctionCostQueryDefinition, MonitorFormulaAndFunctionDataQualityQueryDefinition, + MonitorFormulaAndFunctionAggregateAugmentedQueryDefinition, + MonitorFormulaAndFunctionAggregateFilteredQueryDefinition, ] ], UnsetType, diff --git a/src/datadog_api_client/v1/models/__init__.py b/src/datadog_api_client/v1/models/__init__.py index e9cf8028ab..c033f3c9e0 100644 --- a/src/datadog_api_client/v1/models/__init__.py +++ b/src/datadog_api_client/v1/models/__init__.py @@ -375,6 +375,36 @@ from datadog_api_client.v1.model.monitor_asset_resource_type import MonitorAssetResourceType from datadog_api_client.v1.model.monitor_device_id import MonitorDeviceID from datadog_api_client.v1.model.monitor_draft_status import MonitorDraftStatus +from datadog_api_client.v1.model.monitor_formula_and_function_aggregate_augment_query import ( + MonitorFormulaAndFunctionAggregateAugmentQuery, +) +from datadog_api_client.v1.model.monitor_formula_and_function_aggregate_augmented_data_source import ( + MonitorFormulaAndFunctionAggregateAugmentedDataSource, +) +from datadog_api_client.v1.model.monitor_formula_and_function_aggregate_augmented_query_definition import ( + MonitorFormulaAndFunctionAggregateAugmentedQueryDefinition, +) +from datadog_api_client.v1.model.monitor_formula_and_function_aggregate_base_query import ( + MonitorFormulaAndFunctionAggregateBaseQuery, +) +from datadog_api_client.v1.model.monitor_formula_and_function_aggregate_filter_query import ( + MonitorFormulaAndFunctionAggregateFilterQuery, +) +from datadog_api_client.v1.model.monitor_formula_and_function_aggregate_filtered_data_source import ( + MonitorFormulaAndFunctionAggregateFilteredDataSource, +) +from datadog_api_client.v1.model.monitor_formula_and_function_aggregate_filtered_query_definition import ( + MonitorFormulaAndFunctionAggregateFilteredQueryDefinition, +) +from datadog_api_client.v1.model.monitor_formula_and_function_aggregate_query_filter import ( + MonitorFormulaAndFunctionAggregateQueryFilter, +) +from datadog_api_client.v1.model.monitor_formula_and_function_aggregate_query_join_condition import ( + MonitorFormulaAndFunctionAggregateQueryJoinCondition, +) +from datadog_api_client.v1.model.monitor_formula_and_function_aggregate_query_join_type import ( + MonitorFormulaAndFunctionAggregateQueryJoinType, +) from datadog_api_client.v1.model.monitor_formula_and_function_cost_aggregator import ( MonitorFormulaAndFunctionCostAggregator, ) @@ -417,9 +447,27 @@ from datadog_api_client.v1.model.monitor_formula_and_function_events_data_source import ( MonitorFormulaAndFunctionEventsDataSource, ) +from datadog_api_client.v1.model.monitor_formula_and_function_metrics_aggregator import ( + MonitorFormulaAndFunctionMetricsAggregator, +) +from datadog_api_client.v1.model.monitor_formula_and_function_metrics_data_source import ( + MonitorFormulaAndFunctionMetricsDataSource, +) +from datadog_api_client.v1.model.monitor_formula_and_function_metrics_query_definition import ( + MonitorFormulaAndFunctionMetricsQueryDefinition, +) from datadog_api_client.v1.model.monitor_formula_and_function_query_definition import ( MonitorFormulaAndFunctionQueryDefinition, ) +from datadog_api_client.v1.model.monitor_formula_and_function_reference_table_column import ( + MonitorFormulaAndFunctionReferenceTableColumn, +) +from datadog_api_client.v1.model.monitor_formula_and_function_reference_table_data_source import ( + MonitorFormulaAndFunctionReferenceTableDataSource, +) +from datadog_api_client.v1.model.monitor_formula_and_function_reference_table_query_definition import ( + MonitorFormulaAndFunctionReferenceTableQueryDefinition, +) from datadog_api_client.v1.model.monitor_group_search_response import MonitorGroupSearchResponse from datadog_api_client.v1.model.monitor_group_search_response_counts import MonitorGroupSearchResponseCounts from datadog_api_client.v1.model.monitor_group_search_result import MonitorGroupSearchResult @@ -1494,6 +1542,16 @@ "MonitorAssetResourceType", "MonitorDeviceID", "MonitorDraftStatus", + "MonitorFormulaAndFunctionAggregateAugmentQuery", + "MonitorFormulaAndFunctionAggregateAugmentedDataSource", + "MonitorFormulaAndFunctionAggregateAugmentedQueryDefinition", + "MonitorFormulaAndFunctionAggregateBaseQuery", + "MonitorFormulaAndFunctionAggregateFilterQuery", + "MonitorFormulaAndFunctionAggregateFilteredDataSource", + "MonitorFormulaAndFunctionAggregateFilteredQueryDefinition", + "MonitorFormulaAndFunctionAggregateQueryFilter", + "MonitorFormulaAndFunctionAggregateQueryJoinCondition", + "MonitorFormulaAndFunctionAggregateQueryJoinType", "MonitorFormulaAndFunctionCostAggregator", "MonitorFormulaAndFunctionCostDataSource", "MonitorFormulaAndFunctionCostQueryDefinition", @@ -1508,7 +1566,13 @@ "MonitorFormulaAndFunctionEventQueryGroupBy", "MonitorFormulaAndFunctionEventQueryGroupBySort", "MonitorFormulaAndFunctionEventsDataSource", + "MonitorFormulaAndFunctionMetricsAggregator", + "MonitorFormulaAndFunctionMetricsDataSource", + "MonitorFormulaAndFunctionMetricsQueryDefinition", "MonitorFormulaAndFunctionQueryDefinition", + "MonitorFormulaAndFunctionReferenceTableColumn", + "MonitorFormulaAndFunctionReferenceTableDataSource", + "MonitorFormulaAndFunctionReferenceTableQueryDefinition", "MonitorGroupSearchResponse", "MonitorGroupSearchResponseCounts", "MonitorGroupSearchResult", diff --git a/tests/v1/cassettes/test_scenarios/test_create_a_monitor_with_aggregate_augmented_query_variables_returns_ok_response.frozen b/tests/v1/cassettes/test_scenarios/test_create_a_monitor_with_aggregate_augmented_query_variables_returns_ok_response.frozen new file mode 100644 index 0000000000..db745b4fe7 --- /dev/null +++ b/tests/v1/cassettes/test_scenarios/test_create_a_monitor_with_aggregate_augmented_query_variables_returns_ok_response.frozen @@ -0,0 +1 @@ +2026-03-04T20:59:52.837Z \ No newline at end of file diff --git a/tests/v1/cassettes/test_scenarios/test_create_a_monitor_with_aggregate_augmented_query_variables_returns_ok_response.yaml b/tests/v1/cassettes/test_scenarios/test_create_a_monitor_with_aggregate_augmented_query_variables_returns_ok_response.yaml new file mode 100644 index 0000000000..ce62ed76f0 --- /dev/null +++ b/tests/v1/cassettes/test_scenarios/test_create_a_monitor_with_aggregate_augmented_query_variables_returns_ok_response.yaml @@ -0,0 +1,46 @@ +interactions: +- request: + body: '{"message":"test message","name":"Test-Create_a_monitor_with_aggregate_augmented_query_variables_returns_OK_response-1772657992","options":{"thresholds":{"critical":124},"variables":[{"augment_query":{"columns":[{"name":"org_id"},{"name":"name"}],"data_source":"reference_table","name":"filter_query","table_name":"test_table"},"base_query":{"data_source":"metrics","name":"query1","query":"avg:dd{*} + by {org_id}.as_count()"},"compute":[{"aggregation":"max","name":"compute_result"}],"data_source":"aggregate_augmented_query","group_by":[{"facet":"org_id"},{"facet":"name"}],"join_condition":{"augment_attribute":"org_id","base_attribute":"org_id","join_type":"inner"},"name":"query1"}]},"query":"formula(\"query1\").rollup(\"sum\").last(\"5m\") + > 124","type":"query alert"}' + headers: + accept: + - application/json + content-type: + - application/json + method: POST + uri: https://api.datadoghq.com/api/v1/monitor + response: + body: + string: '{"id":263469923,"org_id":321813,"type":"metric alert","name":"Test-Create_a_monitor_with_aggregate_augmented_query_variables_returns_OK_response-1772657992","message":"test + message","tags":[],"query":"formula(\"query1\").rollup(\"sum\").last(\"5m\") + > 124","options":{"thresholds":{"critical":124.0},"variables":[{"augment_query":{"columns":[{"name":"org_id"},{"name":"name"}],"data_source":"reference_table","name":"filter_query","table_name":"test_table"},"base_query":{"data_source":"metrics","name":"query1","query":"avg:dd{*} + by {org_id}.as_count()"},"compute":[{"aggregation":"max","name":"compute_result"}],"data_source":"aggregate_augmented_query","group_by":[{"facet":"org_id"},{"facet":"name"}],"join_condition":{"augment_attribute":"org_id","base_attribute":"org_id","join_type":"inner"},"name":"query1"}],"notify_no_data":false,"notify_audit":false,"new_host_delay":300,"include_tags":true,"silenced":{}},"multi":false,"created_at":1772657993000,"created":"2026-03-04T20:59:53.048028+00:00","modified":"2026-03-04T20:59:53.048028+00:00","deleted":null,"priority":null,"restricted_roles":null,"restriction_policy":null,"draft_status":"published","assets":[],"overall_state_modified":null,"overall_state":"No + Data","creator":{"name":"frog","handle":"frog@datadoghq.com","email":"frog@datadoghq.com","id":1445416}} + + ' + 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/monitor/263469923 + response: + body: + string: '{"deleted_monitor_id":263469923} + + ' + headers: + content-type: + - application/json + status: + code: 200 + message: OK +version: 1 diff --git a/tests/v1/cassettes/test_scenarios/test_create_a_monitor_with_aggregate_filtered_query_variables_returns_ok_response.frozen b/tests/v1/cassettes/test_scenarios/test_create_a_monitor_with_aggregate_filtered_query_variables_returns_ok_response.frozen new file mode 100644 index 0000000000..4e8c8fe311 --- /dev/null +++ b/tests/v1/cassettes/test_scenarios/test_create_a_monitor_with_aggregate_filtered_query_variables_returns_ok_response.frozen @@ -0,0 +1 @@ +2026-03-03T19:33:24.886Z \ No newline at end of file diff --git a/tests/v1/cassettes/test_scenarios/test_create_a_monitor_with_aggregate_filtered_query_variables_returns_ok_response.yaml b/tests/v1/cassettes/test_scenarios/test_create_a_monitor_with_aggregate_filtered_query_variables_returns_ok_response.yaml new file mode 100644 index 0000000000..3c716ca9c7 --- /dev/null +++ b/tests/v1/cassettes/test_scenarios/test_create_a_monitor_with_aggregate_filtered_query_variables_returns_ok_response.yaml @@ -0,0 +1,46 @@ +interactions: +- request: + body: '{"message":"test message","name":"Test-Create_a_monitor_with_aggregate_filtered_query_variables_returns_OK_response-1772566404","options":{"thresholds":{"critical":100},"variables":[{"base_query":{"data_source":"metrics","name":"query1","query":"max:container.cpu.usage{*} + by {kube_cluster_name}.rollup(max)"},"data_source":"aggregate_filtered_query","filter_query":{"columns":[{"name":"cluster_name"}],"data_source":"reference_table","name":"filter_query","table_name":"test_table"},"filters":[{"base_attribute":"kube_cluster_name","filter_attribute":"cluster_name"}],"name":"query1"}]},"query":"formula(\"query1\").rollup(\"sum\").last(\"5m\") + > 100","type":"query alert"}' + headers: + accept: + - application/json + content-type: + - application/json + method: POST + uri: https://api.datadoghq.com/api/v1/monitor + response: + body: + string: '{"id":263171329,"org_id":321813,"type":"metric alert","name":"Test-Create_a_monitor_with_aggregate_filtered_query_variables_returns_OK_response-1772566404","message":"test + message","tags":[],"query":"formula(\"query1\").rollup(\"sum\").last(\"5m\") + > 100","options":{"thresholds":{"critical":100.0},"variables":[{"base_query":{"data_source":"metrics","name":"query1","query":"max:container.cpu.usage{*} + by {kube_cluster_name}.rollup(max)"},"data_source":"aggregate_filtered_query","filter_query":{"columns":[{"name":"cluster_name"}],"data_source":"reference_table","name":"filter_query","table_name":"test_table"},"filters":[{"base_attribute":"kube_cluster_name","filter_attribute":"cluster_name"}],"name":"query1"}],"notify_no_data":false,"notify_audit":false,"new_host_delay":300,"include_tags":true,"silenced":{}},"multi":false,"created_at":1772566405000,"created":"2026-03-03T19:33:25.076678+00:00","modified":"2026-03-03T19:33:25.076678+00:00","deleted":null,"priority":null,"restricted_roles":null,"restriction_policy":null,"draft_status":"published","assets":[],"overall_state_modified":null,"overall_state":"No + Data","creator":{"name":"frog","handle":"frog@datadoghq.com","email":"frog@datadoghq.com","id":1445416}} + + ' + 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/monitor/263171329 + response: + body: + string: '{"deleted_monitor_id":263171329} + + ' + headers: + content-type: + - application/json + status: + code: 200 + message: OK +version: 1 diff --git a/tests/v1/features/monitors.feature b/tests/v1/features/monitors.feature index af8d4522e9..63bb9f16b9 100644 --- a/tests/v1/features/monitors.feature +++ b/tests/v1/features/monitors.feature @@ -140,6 +140,26 @@ Feature: Monitors And the response "type" is equal to "log alert" And the response "query" is equal to "logs(\"service:foo AND type:error\").index(\"main\").rollup(\"count\").by(\"source\").last(\"5m\") > 2" + @team:DataDog/monitor-app + Scenario: Create a monitor with aggregate augmented query variables returns "OK" response + Given new "CreateMonitor" request + And body with value {"name":"{{ unique }}","type":"query alert","query":"formula(\"query1\").rollup(\"sum\").last(\"5m\") > 124","message":"test message","options":{"thresholds":{"critical":124},"variables":[{"data_source":"aggregate_augmented_query","name":"query1","group_by":[{"facet":"org_id"},{"facet":"name"}],"compute":[{"name":"compute_result","aggregation":"max"}],"augment_query":{"name":"filter_query","data_source":"reference_table","table_name":"test_table","columns":[{"name":"org_id"},{"name":"name"}]},"base_query":{"data_source":"metrics","name":"query1","query":"avg:dd{*} by {org_id}.as_count()"},"join_condition":{"augment_attribute":"org_id","base_attribute":"org_id","join_type":"inner"}}]}} + When the request is sent + Then the response status is 200 OK + And the response "name" is equal to "{{ unique }}" + And the response "options.variables[0].data_source" is equal to "aggregate_augmented_query" + And the response "options.variables[0].join_condition.join_type" is equal to "inner" + + @team:DataDog/monitor-app + Scenario: Create a monitor with aggregate filtered query variables returns "OK" response + Given new "CreateMonitor" request + And body with value {"name":"{{ unique }}","type":"query alert","query":"formula(\"query1\").rollup(\"sum\").last(\"5m\") > 100","message":"test message","options":{"thresholds":{"critical":100},"variables":[{"data_source":"aggregate_filtered_query","name":"query1","base_query":{"data_source":"metrics","name":"query1","query":"max:container.cpu.usage{*} by {kube_cluster_name}.rollup(max)"},"filter_query":{"name":"filter_query","data_source":"reference_table","table_name":"test_table","columns":[{"name":"cluster_name"}]},"filters":[{"base_attribute":"kube_cluster_name","filter_attribute":"cluster_name"}]}]}} + When the request is sent + Then the response status is 200 OK + And the response "name" is equal to "{{ unique }}" + And the response "options.variables[0].data_source" is equal to "aggregate_filtered_query" + And the response "options.variables[0].filters[0].base_attribute" is equal to "kube_cluster_name" + @team:DataDog/monitor-app Scenario: Create a monitor with assets returns "OK" response Given new "CreateMonitor" request @@ -190,7 +210,7 @@ Feature: Monitors Scenario: Edit a monitor returns "Bad Request" response Given new "UpdateMonitor" request And request contains "monitor_id" parameter from "REPLACE.ME" - And body with value {"assets": [{"category": "runbook", "name": "Monitor Runbook", "resource_key": "12345", "resource_type": "notebook", "url": "/notebooks/12345"}], "draft_status": "published", "options": {"evaluation_delay": null, "include_tags": true, "min_failure_duration": 0, "min_location_failed": 1, "new_group_delay": null, "new_host_delay": 300, "no_data_timeframe": null, "notification_preset_name": "show_all", "notify_audit": false, "notify_by": [], "on_missing_data": "default", "renotify_interval": null, "renotify_occurrences": null, "renotify_statuses": ["alert"], "scheduling_options": {"custom_schedule": {"recurrences": [{"rrule": "FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR", "start": "2023-08-31T16:30:00", "timezone": "Europe/Paris"}]}, "evaluation_window": {"day_starts": "04:00", "hour_starts": 0, "month_starts": 1, "timezone": "Europe/Paris"}}, "synthetics_check_id": null, "threshold_windows": {"recovery_window": null, "trigger_window": null}, "thresholds": {"critical_recovery": null, "ok": null, "unknown": null, "warning": null, "warning_recovery": null}, "timeout_h": null, "variables": [{"compute": {"aggregation": "avg", "interval": 60000, "metric": "@duration"}, "data_source": "rum", "group_by": [{"facet": "status", "limit": 10, "sort": {"aggregation": "avg", "order": "desc"}}], "indexes": ["days-3", "days-7"], "name": "query_errors", "search": {"query": "service:query"}}]}, "priority": null, "restricted_roles": [], "tags": [], "type": "query alert"} + And body with value {"assets": [{"category": "runbook", "name": "Monitor Runbook", "resource_key": "12345", "resource_type": "notebook", "url": "/notebooks/12345"}], "draft_status": "published", "options": {"evaluation_delay": null, "include_tags": true, "min_failure_duration": 0, "min_location_failed": 1, "new_group_delay": null, "new_host_delay": 300, "no_data_timeframe": null, "notification_preset_name": "show_all", "notify_audit": false, "notify_by": [], "on_missing_data": "default", "renotify_interval": null, "renotify_occurrences": null, "renotify_statuses": ["alert"], "scheduling_options": {"custom_schedule": {"recurrences": [{"rrule": "FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR", "start": "2023-08-31T16:30:00", "timezone": "Europe/Paris"}]}, "evaluation_window": {"day_starts": "04:00", "hour_starts": 0, "month_starts": 1, "timezone": "Europe/Paris"}}, "synthetics_check_id": null, "threshold_windows": {"recovery_window": null, "trigger_window": null}, "thresholds": {"critical_recovery": null, "ok": null, "unknown": null, "warning": null, "warning_recovery": null}, "timeout_h": null, "variables": [{"compute": {"aggregation": "avg", "interval": 60000, "metric": "@duration", "name": "compute_result"}, "data_source": "rum", "group_by": [{"facet": "status", "limit": 10, "sort": {"aggregation": "avg", "order": "desc"}}], "indexes": ["days-3", "days-7"], "name": "query_errors", "search": {"query": "service:query"}}]}, "priority": null, "restricted_roles": [], "tags": [], "type": "query alert"} When the request is sent Then the response status is 400 Bad Request