diff --git a/.generator/schemas/v1/openapi.yaml b/.generator/schemas/v1/openapi.yaml index 8c4bbdb218..d3016c41cb 100644 --- a/.generator/schemas/v1/openapi.yaml +++ b/.generator/schemas/v1/openapi.yaml @@ -7534,6 +7534,104 @@ components: - data_source - query type: object + MonitorFormulaAndFunctionDataQualityDataSource: + description: Data source for data quality queries. + enum: + - data_quality_metrics + example: data_quality_metrics + type: string + x-enum-varnames: + - DATA_QUALITY_METRICS + MonitorFormulaAndFunctionDataQualityMeasure: + description: 'The data quality measure to query. Common values include: + + `bytes`, `cardinality`, `custom`, `freshness`, `max`, `mean`, `min`, + + `nullness`, `percent_negative`, `percent_zero`, `row_count`, `stddev`, + + `sum`, `uniqueness`. Additional values may be supported.' + example: row_count + type: string + MonitorFormulaAndFunctionDataQualityModelTypeOverride: + description: Override for the model type used in anomaly detection. + enum: + - freshness + - percentage + - any + type: string + x-enum-varnames: + - FRESHNESS + - PERCENTAGE + - ANY + MonitorFormulaAndFunctionDataQualityMonitorOptions: + description: Monitor configuration options for data quality queries. + properties: + crontab_override: + description: Crontab expression to override the default schedule. + example: '* * * 10' + type: string + custom_sql: + description: Custom SQL query for the monitor. + example: SELECT COUNT(*) FROM users AS dd_value + type: string + custom_where: + description: Custom WHERE clause for the query. + example: USER_ID = 123 + type: string + group_by_columns: + description: Columns to group results by. + example: + - col1 + - col2 + items: + type: string + type: array + model_type_override: + $ref: '#/components/schemas/MonitorFormulaAndFunctionDataQualityModelTypeOverride' + type: object + MonitorFormulaAndFunctionDataQualityQueryDefinition: + description: A formula and functions data quality query. + properties: + data_source: + $ref: '#/components/schemas/MonitorFormulaAndFunctionDataQualityDataSource' + filter: + description: Filter expression used to match on data entities. Uses Aastra + query syntax. + example: search for column where `database:production AND table:users` + type: string + group_by: + description: Optional grouping fields for aggregation. + example: + - entity_id + items: + type: string + type: array + measure: + $ref: '#/components/schemas/MonitorFormulaAndFunctionDataQualityMeasure' + monitor_options: + $ref: '#/components/schemas/MonitorFormulaAndFunctionDataQualityMonitorOptions' + name: + description: Name of the query for use in formulas. + example: query1 + type: string + schema_version: + description: Schema version for the data quality query. + example: 0.0.1 + type: string + scope: + description: '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.' + example: env:production + type: string + required: + - name + - data_source + - measure + - filter + type: object MonitorFormulaAndFunctionEventAggregation: description: Aggregation methods for event platform queries. enum: @@ -7685,6 +7783,7 @@ components: oneOf: - $ref: '#/components/schemas/MonitorFormulaAndFunctionEventQueryDefinition' - $ref: '#/components/schemas/MonitorFormulaAndFunctionCostQueryDefinition' + - $ref: '#/components/schemas/MonitorFormulaAndFunctionDataQualityQueryDefinition' MonitorGroupSearchResponse: description: The response of a monitor group search. example: @@ -8523,6 +8622,7 @@ components: - database-monitoring alert - network-performance alert - cost alert + - data-quality alert example: query alert type: string x-enum-varnames: @@ -8545,6 +8645,7 @@ components: - DATABASE_MONITORING_ALERT - NETWORK_PERFORMANCE_ALERT - COST_ALERT + - DATA_QUALITY_ALERT MonitorUpdateRequest: description: Object describing a monitor update request. properties: diff --git a/docs/datadog_api_client.v1.model.rst b/docs/datadog_api_client.v1.model.rst index 551a66106e..44af98fe91 100644 --- a/docs/datadog_api_client.v1.model.rst +++ b/docs/datadog_api_client.v1.model.rst @@ -2293,6 +2293,34 @@ datadog\_api\_client.v1.model.monitor\_formula\_and\_function\_cost\_query\_defi :members: :show-inheritance: +datadog\_api\_client.v1.model.monitor\_formula\_and\_function\_data\_quality\_data\_source module +------------------------------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v1.model.monitor_formula_and_function_data_quality_data_source + :members: + :show-inheritance: + +datadog\_api\_client.v1.model.monitor\_formula\_and\_function\_data\_quality\_model\_type\_override module +---------------------------------------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v1.model.monitor_formula_and_function_data_quality_model_type_override + :members: + :show-inheritance: + +datadog\_api\_client.v1.model.monitor\_formula\_and\_function\_data\_quality\_monitor\_options module +----------------------------------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v1.model.monitor_formula_and_function_data_quality_monitor_options + :members: + :show-inheritance: + +datadog\_api\_client.v1.model.monitor\_formula\_and\_function\_data\_quality\_query\_definition module +------------------------------------------------------------------------------------------------------ + +.. automodule:: datadog_api_client.v1.model.monitor_formula_and_function_data_quality_query_definition + :members: + :show-inheritance: + datadog\_api\_client.v1.model.monitor\_formula\_and\_function\_event\_aggregation module ---------------------------------------------------------------------------------------- diff --git a/examples/v1/monitors/CreateMonitor_3626832481.py b/examples/v1/monitors/CreateMonitor_3626832481.py new file mode 100644 index 0000000000..91661aa34c --- /dev/null +++ b/examples/v1/monitors/CreateMonitor_3626832481.py @@ -0,0 +1,51 @@ +""" +Create a Data Quality monitor 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_data_quality_data_source import ( + MonitorFormulaAndFunctionDataQualityDataSource, +) +from datadog_api_client.v1.model.monitor_formula_and_function_data_quality_query_definition import ( + MonitorFormulaAndFunctionDataQualityQueryDefinition, +) +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.DATA_QUALITY_ALERT, + query='formula("query1").last("5m") > 100', + message="Data quality alert triggered", + tags=[ + "test:examplemonitor", + "env:ci", + ], + priority=3, + options=MonitorOptions( + thresholds=MonitorThresholds( + critical=100.0, + ), + variables=[ + MonitorFormulaAndFunctionDataQualityQueryDefinition( + name="query1", + data_source=MonitorFormulaAndFunctionDataQualityDataSource.DATA_QUALITY_METRICS, + measure="row_count", + filter="search for column where `database:production AND table:users`", + group_by=[ + "entity_id", + ], + ), + ], + ), +) + +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_data_quality_data_source.py b/src/datadog_api_client/v1/model/monitor_formula_and_function_data_quality_data_source.py new file mode 100644 index 0000000000..a1670fc3d3 --- /dev/null +++ b/src/datadog_api_client/v1/model/monitor_formula_and_function_data_quality_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 MonitorFormulaAndFunctionDataQualityDataSource(ModelSimple): + """ + Data source for data quality queries. + + :param value: If omitted defaults to "data_quality_metrics". Must be one of ["data_quality_metrics"]. + :type value: str + """ + + allowed_values = { + "data_quality_metrics", + } + DATA_QUALITY_METRICS: ClassVar["MonitorFormulaAndFunctionDataQualityDataSource"] + + @cached_property + def openapi_types(_): + return { + "value": (str,), + } + + +MonitorFormulaAndFunctionDataQualityDataSource.DATA_QUALITY_METRICS = MonitorFormulaAndFunctionDataQualityDataSource( + "data_quality_metrics" +) diff --git a/src/datadog_api_client/v1/model/monitor_formula_and_function_data_quality_model_type_override.py b/src/datadog_api_client/v1/model/monitor_formula_and_function_data_quality_model_type_override.py new file mode 100644 index 0000000000..3f1ac0c5de --- /dev/null +++ b/src/datadog_api_client/v1/model/monitor_formula_and_function_data_quality_model_type_override.py @@ -0,0 +1,45 @@ +# 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 MonitorFormulaAndFunctionDataQualityModelTypeOverride(ModelSimple): + """ + Override for the model type used in anomaly detection. + + :param value: Must be one of ["freshness", "percentage", "any"]. + :type value: str + """ + + allowed_values = { + "freshness", + "percentage", + "any", + } + FRESHNESS: ClassVar["MonitorFormulaAndFunctionDataQualityModelTypeOverride"] + PERCENTAGE: ClassVar["MonitorFormulaAndFunctionDataQualityModelTypeOverride"] + ANY: ClassVar["MonitorFormulaAndFunctionDataQualityModelTypeOverride"] + + @cached_property + def openapi_types(_): + return { + "value": (str,), + } + + +MonitorFormulaAndFunctionDataQualityModelTypeOverride.FRESHNESS = MonitorFormulaAndFunctionDataQualityModelTypeOverride( + "freshness" +) +MonitorFormulaAndFunctionDataQualityModelTypeOverride.PERCENTAGE = ( + MonitorFormulaAndFunctionDataQualityModelTypeOverride("percentage") +) +MonitorFormulaAndFunctionDataQualityModelTypeOverride.ANY = MonitorFormulaAndFunctionDataQualityModelTypeOverride("any") diff --git a/src/datadog_api_client/v1/model/monitor_formula_and_function_data_quality_monitor_options.py b/src/datadog_api_client/v1/model/monitor_formula_and_function_data_quality_monitor_options.py new file mode 100644 index 0000000000..383f2e8ea8 --- /dev/null +++ b/src/datadog_api_client/v1/model/monitor_formula_and_function_data_quality_monitor_options.py @@ -0,0 +1,82 @@ +# 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_data_quality_model_type_override import ( + MonitorFormulaAndFunctionDataQualityModelTypeOverride, + ) + + +class MonitorFormulaAndFunctionDataQualityMonitorOptions(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v1.model.monitor_formula_and_function_data_quality_model_type_override import ( + MonitorFormulaAndFunctionDataQualityModelTypeOverride, + ) + + return { + "crontab_override": (str,), + "custom_sql": (str,), + "custom_where": (str,), + "group_by_columns": ([str],), + "model_type_override": (MonitorFormulaAndFunctionDataQualityModelTypeOverride,), + } + + attribute_map = { + "crontab_override": "crontab_override", + "custom_sql": "custom_sql", + "custom_where": "custom_where", + "group_by_columns": "group_by_columns", + "model_type_override": "model_type_override", + } + + def __init__( + self_, + crontab_override: Union[str, UnsetType] = unset, + custom_sql: Union[str, UnsetType] = unset, + custom_where: Union[str, UnsetType] = unset, + group_by_columns: Union[List[str], UnsetType] = unset, + model_type_override: Union[MonitorFormulaAndFunctionDataQualityModelTypeOverride, UnsetType] = unset, + **kwargs, + ): + """ + Monitor configuration options for data quality queries. + + :param crontab_override: Crontab expression to override the default schedule. + :type crontab_override: str, optional + + :param custom_sql: Custom SQL query for the monitor. + :type custom_sql: str, optional + + :param custom_where: Custom WHERE clause for the query. + :type custom_where: str, optional + + :param group_by_columns: Columns to group results by. + :type group_by_columns: [str], optional + + :param model_type_override: Override for the model type used in anomaly detection. + :type model_type_override: MonitorFormulaAndFunctionDataQualityModelTypeOverride, optional + """ + if crontab_override is not unset: + kwargs["crontab_override"] = crontab_override + if custom_sql is not unset: + kwargs["custom_sql"] = custom_sql + if custom_where is not unset: + kwargs["custom_where"] = custom_where + if group_by_columns is not unset: + kwargs["group_by_columns"] = group_by_columns + if model_type_override is not unset: + kwargs["model_type_override"] = model_type_override + super().__init__(kwargs) diff --git a/src/datadog_api_client/v1/model/monitor_formula_and_function_data_quality_query_definition.py b/src/datadog_api_client/v1/model/monitor_formula_and_function_data_quality_query_definition.py new file mode 100644 index 0000000000..ef57341eaa --- /dev/null +++ b/src/datadog_api_client/v1/model/monitor_formula_and_function_data_quality_query_definition.py @@ -0,0 +1,113 @@ +# 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_data_quality_data_source import ( + MonitorFormulaAndFunctionDataQualityDataSource, + ) + from datadog_api_client.v1.model.monitor_formula_and_function_data_quality_monitor_options import ( + MonitorFormulaAndFunctionDataQualityMonitorOptions, + ) + + +class MonitorFormulaAndFunctionDataQualityQueryDefinition(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v1.model.monitor_formula_and_function_data_quality_data_source import ( + MonitorFormulaAndFunctionDataQualityDataSource, + ) + from datadog_api_client.v1.model.monitor_formula_and_function_data_quality_monitor_options import ( + MonitorFormulaAndFunctionDataQualityMonitorOptions, + ) + + return { + "data_source": (MonitorFormulaAndFunctionDataQualityDataSource,), + "filter": (str,), + "group_by": ([str],), + "measure": (str,), + "monitor_options": (MonitorFormulaAndFunctionDataQualityMonitorOptions,), + "name": (str,), + "schema_version": (str,), + "scope": (str,), + } + + attribute_map = { + "data_source": "data_source", + "filter": "filter", + "group_by": "group_by", + "measure": "measure", + "monitor_options": "monitor_options", + "name": "name", + "schema_version": "schema_version", + "scope": "scope", + } + + def __init__( + self_, + data_source: MonitorFormulaAndFunctionDataQualityDataSource, + filter: str, + measure: str, + name: str, + group_by: Union[List[str], UnsetType] = unset, + monitor_options: Union[MonitorFormulaAndFunctionDataQualityMonitorOptions, UnsetType] = unset, + schema_version: Union[str, UnsetType] = unset, + scope: Union[str, UnsetType] = unset, + **kwargs, + ): + """ + A formula and functions data quality query. + + :param data_source: Data source for data quality queries. + :type data_source: MonitorFormulaAndFunctionDataQualityDataSource + + :param filter: Filter expression used to match on data entities. Uses Aastra query syntax. + :type filter: str + + :param group_by: Optional grouping fields for aggregation. + :type group_by: [str], optional + + :param measure: The data quality measure to query. Common values include: + ``bytes`` , ``cardinality`` , ``custom`` , ``freshness`` , ``max`` , ``mean`` , ``min`` , + ``nullness`` , ``percent_negative`` , ``percent_zero`` , ``row_count`` , ``stddev`` , + ``sum`` , ``uniqueness``. Additional values may be supported. + :type measure: str + + :param monitor_options: Monitor configuration options for data quality queries. + :type monitor_options: MonitorFormulaAndFunctionDataQualityMonitorOptions, optional + + :param name: Name of the query for use in formulas. + :type name: str + + :param schema_version: Schema version for the data quality query. + :type schema_version: str, optional + + :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 + """ + if group_by is not unset: + kwargs["group_by"] = group_by + if monitor_options is not unset: + kwargs["monitor_options"] = monitor_options + if schema_version is not unset: + kwargs["schema_version"] = schema_version + if scope is not unset: + kwargs["scope"] = scope + super().__init__(kwargs) + + self_.data_source = data_source + self_.filter = filter + self_.measure = measure + self_.name = name 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 3e02197ec9..94048f9815 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 @@ -38,6 +38,25 @@ def __init__(self, **kwargs): :param query: The monitor query. :type query: str + + :param filter: Filter expression used to match on data entities. Uses Aastra query syntax. + :type filter: str + + :param measure: The data quality measure to query. Common values include: + `bytes`, `cardinality`, `custom`, `freshness`, `max`, `mean`, `min`, + `nullness`, `percent_negative`, `percent_zero`, `row_count`, `stddev`, + `sum`, `uniqueness`. Additional values may be supported. + :type measure: str + + :param monitor_options: Monitor configuration options for data quality queries. + :type monitor_options: MonitorFormulaAndFunctionDataQualityMonitorOptions, optional + + :param schema_version: Schema version for the data quality query. + :type schema_version: str, optional + + :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 """ super().__init__(kwargs) @@ -56,10 +75,14 @@ def _composed_schemas(_): from datadog_api_client.v1.model.monitor_formula_and_function_cost_query_definition import ( MonitorFormulaAndFunctionCostQueryDefinition, ) + from datadog_api_client.v1.model.monitor_formula_and_function_data_quality_query_definition import ( + MonitorFormulaAndFunctionDataQualityQueryDefinition, + ) return { "oneOf": [ MonitorFormulaAndFunctionEventQueryDefinition, MonitorFormulaAndFunctionCostQueryDefinition, + MonitorFormulaAndFunctionDataQualityQueryDefinition, ], } diff --git a/src/datadog_api_client/v1/model/monitor_options.py b/src/datadog_api_client/v1/model/monitor_options.py index 62bf15a399..a1119a0d47 100644 --- a/src/datadog_api_client/v1/model/monitor_options.py +++ b/src/datadog_api_client/v1/model/monitor_options.py @@ -32,6 +32,9 @@ from datadog_api_client.v1.model.monitor_formula_and_function_cost_query_definition import ( MonitorFormulaAndFunctionCostQueryDefinition, ) + from datadog_api_client.v1.model.monitor_formula_and_function_data_quality_query_definition import ( + MonitorFormulaAndFunctionDataQualityQueryDefinition, + ) class MonitorOptions(ModelNormal): @@ -173,6 +176,7 @@ def __init__( MonitorFormulaAndFunctionQueryDefinition, MonitorFormulaAndFunctionEventQueryDefinition, MonitorFormulaAndFunctionCostQueryDefinition, + MonitorFormulaAndFunctionDataQualityQueryDefinition, ] ], UnsetType, diff --git a/src/datadog_api_client/v1/model/monitor_type.py b/src/datadog_api_client/v1/model/monitor_type.py index ffaf2b0317..1a6e1a32a7 100644 --- a/src/datadog_api_client/v1/model/monitor_type.py +++ b/src/datadog_api_client/v1/model/monitor_type.py @@ -16,7 +16,7 @@ class MonitorType(ModelSimple): """ The type of the monitor. For more information about `type`, see the [monitor options](https://docs.datadoghq.com/monitors/guide/monitor_api_options/) docs. - :param value: Must be one of ["composite", "event alert", "log alert", "metric alert", "process alert", "query alert", "rum alert", "service check", "synthetics alert", "trace-analytics alert", "slo alert", "event-v2 alert", "audit alert", "ci-pipelines alert", "ci-tests alert", "error-tracking alert", "database-monitoring alert", "network-performance alert", "cost alert"]. + :param value: Must be one of ["composite", "event alert", "log alert", "metric alert", "process alert", "query alert", "rum alert", "service check", "synthetics alert", "trace-analytics alert", "slo alert", "event-v2 alert", "audit alert", "ci-pipelines alert", "ci-tests alert", "error-tracking alert", "database-monitoring alert", "network-performance alert", "cost alert", "data-quality alert"]. :type value: str """ @@ -40,6 +40,7 @@ class MonitorType(ModelSimple): "database-monitoring alert", "network-performance alert", "cost alert", + "data-quality alert", } COMPOSITE: ClassVar["MonitorType"] EVENT_ALERT: ClassVar["MonitorType"] @@ -60,6 +61,7 @@ class MonitorType(ModelSimple): DATABASE_MONITORING_ALERT: ClassVar["MonitorType"] NETWORK_PERFORMANCE_ALERT: ClassVar["MonitorType"] COST_ALERT: ClassVar["MonitorType"] + DATA_QUALITY_ALERT: ClassVar["MonitorType"] @cached_property def openapi_types(_): @@ -87,3 +89,4 @@ def openapi_types(_): MonitorType.DATABASE_MONITORING_ALERT = MonitorType("database-monitoring alert") MonitorType.NETWORK_PERFORMANCE_ALERT = MonitorType("network-performance alert") MonitorType.COST_ALERT = MonitorType("cost alert") +MonitorType.DATA_QUALITY_ALERT = MonitorType("data-quality alert") diff --git a/src/datadog_api_client/v1/models/__init__.py b/src/datadog_api_client/v1/models/__init__.py index 7dda7f9989..49ae92dfed 100644 --- a/src/datadog_api_client/v1/models/__init__.py +++ b/src/datadog_api_client/v1/models/__init__.py @@ -369,6 +369,18 @@ from datadog_api_client.v1.model.monitor_formula_and_function_cost_query_definition import ( MonitorFormulaAndFunctionCostQueryDefinition, ) +from datadog_api_client.v1.model.monitor_formula_and_function_data_quality_data_source import ( + MonitorFormulaAndFunctionDataQualityDataSource, +) +from datadog_api_client.v1.model.monitor_formula_and_function_data_quality_model_type_override import ( + MonitorFormulaAndFunctionDataQualityModelTypeOverride, +) +from datadog_api_client.v1.model.monitor_formula_and_function_data_quality_monitor_options import ( + MonitorFormulaAndFunctionDataQualityMonitorOptions, +) +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_event_aggregation import ( MonitorFormulaAndFunctionEventAggregation, ) @@ -1451,6 +1463,10 @@ "MonitorFormulaAndFunctionCostAggregator", "MonitorFormulaAndFunctionCostDataSource", "MonitorFormulaAndFunctionCostQueryDefinition", + "MonitorFormulaAndFunctionDataQualityDataSource", + "MonitorFormulaAndFunctionDataQualityModelTypeOverride", + "MonitorFormulaAndFunctionDataQualityMonitorOptions", + "MonitorFormulaAndFunctionDataQualityQueryDefinition", "MonitorFormulaAndFunctionEventAggregation", "MonitorFormulaAndFunctionEventQueryDefinition", "MonitorFormulaAndFunctionEventQueryDefinitionCompute", diff --git a/tests/v1/cassettes/test_scenarios/test_create_a_data_quality_monitor_returns_ok_response.frozen b/tests/v1/cassettes/test_scenarios/test_create_a_data_quality_monitor_returns_ok_response.frozen new file mode 100644 index 0000000000..46cc74fab7 --- /dev/null +++ b/tests/v1/cassettes/test_scenarios/test_create_a_data_quality_monitor_returns_ok_response.frozen @@ -0,0 +1 @@ +2026-01-12T17:23:49.629Z \ No newline at end of file diff --git a/tests/v1/cassettes/test_scenarios/test_create_a_data_quality_monitor_returns_ok_response.yaml b/tests/v1/cassettes/test_scenarios/test_create_a_data_quality_monitor_returns_ok_response.yaml new file mode 100644 index 0000000000..eacb001961 --- /dev/null +++ b/tests/v1/cassettes/test_scenarios/test_create_a_data_quality_monitor_returns_ok_response.yaml @@ -0,0 +1,47 @@ +interactions: +- request: + body: '{"message":"Data quality alert triggered","name":"Test-Create_a_Data_Quality_monitor_returns_OK_response-1768238629","options":{"thresholds":{"critical":100},"variables":[{"data_source":"data_quality_metrics","filter":"search + for column where `database:production AND table:users`","group_by":["entity_id"],"measure":"row_count","name":"query1"}]},"priority":3,"query":"formula(\"query1\").last(\"5m\") + > 100","tags":["test:testcreateadataqualitymonitorreturnsokresponse1768238629","env:ci"],"type":"data-quality + alert"}' + headers: + accept: + - application/json + content-type: + - application/json + method: POST + uri: https://api.datadoghq.com/api/v1/monitor + response: + body: + string: '{"id":250323411,"org_id":321813,"type":"data-quality alert","name":"Test-Create_a_Data_Quality_monitor_returns_OK_response-1768238629","message":"Data + quality alert triggered","tags":["test:testcreateadataqualitymonitorreturnsokresponse1768238629","env:ci"],"query":"formula(\"query1\").last(\"5m\") + > 100","options":{"thresholds":{"critical":100.0},"variables":[{"data_source":"data_quality_metrics","filter":"search + for column where `database:production AND table:users`","group_by":["entity_id"],"measure":"row_count","name":"query1"}],"notify_no_data":false,"notify_audit":false,"new_host_delay":300,"include_tags":true,"silenced":{}},"multi":false,"created_at":1768238629000,"created":"2026-01-12T17:23:49.782143+00:00","modified":"2026-01-12T17:23:49.782143+00:00","deleted":null,"priority":3,"restricted_roles":null,"restriction_policy":null,"draft_status":"published","assets":[],"overall_state_modified":null,"overall_state":"No + Data","creator":{"name":"CI Account","handle":"9919ec9b-ebc7-49ee-8dc8-03626e717cca","email":"team-intg-tools-libs-spam@datadoghq.com","id":2320499}} + + ' + 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/250323411 + response: + body: + string: '{"deleted_monitor_id":250323411} + + ' + 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 75a681927b..af8d4522e9 100644 --- a/tests/v1/features/monitors.feature +++ b/tests/v1/features/monitors.feature @@ -42,6 +42,15 @@ Feature: Monitors When the request is sent Then the response status is 200 OK + @team:DataDog/monitor-app + Scenario: Create a Data Quality monitor returns "OK" response + Given new "CreateMonitor" request + And body with value {"name": "{{ unique }}", "type": "data-quality alert", "query": "formula(\"query1\").last(\"5m\") > 100", "message": "Data quality alert triggered", "tags": ["test:{{ unique_lower_alnum }}", "env:ci"], "priority": 3, "options": {"thresholds": {"critical": 100}, "variables": [{"name": "query1", "data_source": "data_quality_metrics", "measure": "row_count", "filter": "search for column where `database:production AND table:users`", "group_by": ["entity_id"]}]}} + When the request is sent + Then the response status is 200 OK + And the response "name" is equal to "{{ unique }}" + And the response "type" is equal to "data-quality alert" + @team:DataDog/monitor-app Scenario: Create a RUM formula and functions monitor returns "OK" response Given new "CreateMonitor" request